Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/jtauber/sebastian
Browse files Browse the repository at this point in the history
  • Loading branch information
Caleb Smith committed Mar 18, 2013
2 parents 233c42b + 7366f23 commit 19b52b3
Show file tree
Hide file tree
Showing 18 changed files with 453 additions and 36 deletions.
4 changes: 4 additions & 0 deletions AUTHORS
@@ -0,0 +1,4 @@
James Tauber <jtauber@jtauber.com>
Nicholas Tollervey <ntoll@ntoll.org>
David Baumgold <david@davidbaumgold.com>

4 changes: 2 additions & 2 deletions LICENSE
@@ -1,4 +1,4 @@
# Copyright (c) 2005-2012 James Tauber and contributors
# Copyright (c) 2005-2013 James Tauber and contributors
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
Expand All @@ -16,4 +16,4 @@
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
# THE SOFTWARE.
23 changes: 0 additions & 23 deletions README

This file was deleted.

31 changes: 31 additions & 0 deletions README.md
@@ -0,0 +1,31 @@
# Sebastian

**Sebastian** is a symbolic music analysis and composition library written in
Python.

I partly think of it as being a "Mathematica for music". By symbolic, I mean
that it is focused more on the sorts of abstractions made by music notation
and theories of harmony and counterpoint than lower level numerical
operations that one might use in, say, music synthesis.

I hope it to be very practical as an analysis tool for existing compositions
(especially from the common practice period) and also a tool for
computer-assisted composition. It will also be a bit of a test bed for ideas
I've had for a while around applying linguistics and abstract algebra to
music.

## PyCon 2013 Talk

I spoke about Sebastian at PyCon 2013 and my slides are available at:

<https://speakerdeck.com/jtauber/music-theory-and-performance-analysis-with-sebastian-and-czerny>

A video of the talk should be available shortly.

## Mailing List

You can join the Sebastian mailing list by emailing `sebastian@librelist.com`

## License

Sebastian is open source under an MIT license. See the LICENSE file.
5 changes: 5 additions & 0 deletions datastructure_notes.txt
@@ -1,3 +1,8 @@
[ed: this are some notes I wrote in 2009; I'm keeping them here as they
explain pretty well the original thinking behind the datastructures we
now have in Sebastian.]


The primary datastructure I've been thinking about for Sebastian is a sequence
of feature structures (or a set of feature structures with time offsets)

Expand Down
2 changes: 1 addition & 1 deletion example.py
Expand Up @@ -26,7 +26,7 @@
write_midi.write("seq5.mid", [seq5])

# contruct a horizontal sequence of scale degrees
seq6 = HSeq([Point(degree=degree) for degree in [1, 2, 3, 2, 1]])
seq6 = HSeq(Point(degree=degree) for degree in [1, 2, 3, 2, 1])

# put that sequence into C major, octave 4 quavers
C_MAJOR = Key("C", major_scale)
Expand Down
6 changes: 3 additions & 3 deletions experimental/alberti.py
Expand Up @@ -15,12 +15,12 @@ def alberti(triad):
takes a VSeq of 3 notes and returns an HSeq of those notes in an
alberti figuration.
"""

return HSeq([triad[0], triad[2], triad[1], triad[2]])
return HSeq(triad[i] for i in [0, 2, 1, 2])


# an abstract VSeq of 3 notes in root position (degree 1, 3 and 5)
root_triad = VSeq(Point(degree=1), Point(degree=3), Point(degree=5))
root_triad = VSeq(Point(degree=n) for n in [1, 3, 5])


quaver_point = Point({DURATION_64: 8})

Expand Down
2 changes: 2 additions & 0 deletions projects/mozart_k545/.gitignore
@@ -0,0 +1,2 @@
K545-1.midi
K545-1.pdf

0 comments on commit 19b52b3

Please sign in to comment.