Browsing projects by Tag(s)

Select a tag to browse associated projects and drill deeper into the tag cloud.

Showing page 1 of 1

h1ccupaxiomatic reasoning about music theorythis project is for realtime algorithmic composition and harmonic analysis. its goal is to facilitate visualization, understanding, and manipulation of harmonic structure. it intends to provide an environment for the formal expression of laws of ... [More] functional progression and voice leading at the most abstract and least redundant level possible. common practice serves as a baseline, but the goal is to both generalize to eg jazz theory as well as allow exploration of nontraditional theories (eg microtonal pitch class sets). ultimately, the vision is an interactive environment allowing one to navigate through chord space (probably using graphviz), highlighting functional relationships and legal transitions among chords. this project is specifically juxtaposed against projects that attempt to learn syntactic rules or probabilistic relations from a corpus. it also does not admit an optimization model of music theory; structures are allowed or disallowed, not scored. music theory is not contingent. it is an algebra, not biology (and i'm a biologist!). it is governed by the overtone series, not cultural or individual preferences. i am not claiming that aesthetic preferences and cultural dialogs are not important in music -- only that these (subjective and stochstic) processes rest on top of a foundation of admissibility and explicability, which are physical and inviolate. it is this foundation that this project endeavors to model. h1ccup uses only free, open source, cross platform software (portmedia, pyportmidi, pyswip, lilypond, pil). it is under development and not ready for any kind of release. that said, the basics are stable and documented (prolog docs haskell docs) (incl installation instructions). moreover, performance is good enough to support realtime application. the main project is in prolog. currently most common practice functional harmony and voice leading is implemented. there is a python project that interfaces to the prolog engine and produces a gui and realtime midi output, so far just at a very crude demo stage. current directions: i am currently learning CLP(FD), a constraint propagation framework with implementations available in prolog. constraints allow an even more natural expression of music theoretic axioms. i am also learning haskell, a statically typed lazy functional language. i am porting the engine to haskell to see what advantages are to be had from thinking this way. i'm already relatively convinced that prolog is the way to go for one reason -- predicate parameters are bidirectional. this means that relationships need only be described once, rather than once in each direction. but i am still having fun learning haskell. monadic constraints in haskell curry, haskell-based functional constraint language here are my thoughts and resources on prolog and haskell -- why they are the right way to do this, and how to think about/learn them. python is fine for glue. included in the repository are some ancillary realtime audio/midi manipulation experiments that are distantly (if at all) related to the aims of the project. the most interesting generates a realtime jazz combo rhythm section for a given set of changes. it uses mingus to resolve chord symbols. a demo can be heard here. none of this is canned, the algorithms are my best understanding of the mental processes that go on in a real rhythm section, with two exceptions. 1) i have not yet implemented interplayer communication -- the only shared state is rhythmic location. 2) the comp does not yet use any voicing theory. the algorithms are roughly: kit - hat on the backbeat, ride stochastically drops upbeats, kick and snare never co-occur, intensity (likelihood of notes and their dynamics) and instrument choices change rare stochastically, preferentially at chorus boundaries. bass - chord tones on down beats, move stepwise monotonic with rare jumps that prefer to change direction. (this algorithm is the most applicable to solos.) comp - block closed position in a one-octave range that does a random walk. rarely stochastically switch between two states, playing all chord tones vs. color tones only. allow ties across measure boundaries where the chord doesn't change. everyone plays in a strict 2/3 1/3 swing, with lightly stochastic dynamics that accent upbeats. 2nd triplet never played without the 3rd. most people would expect this to sound stilted, to me it grooves pretty hard. there is a gui (tk - ugh!) that shows the changes, blinky highlights the current location, and allows tempo control. a parser for reading in changes (in functional format) is 90% done. each instrument gets its own thread, runs realtime with 0% proc. the output is midi, i routed it (internally, same machine) to the nice instruments in logic (bass and kit are sample based, rhodes is physically modeled). recorded totally dry (iirc). the next thing to add is a shared memory for riffs, expressed in some form abstracted from local chords (ie, in terms of scale degrees, or more likely, their derivative, to prevent melodic jumps at chord boundaries), that can be played and/or mutated by players. [Less]

0
 
  0 reviews  |  0 users  |  7,204 lines of code  |  0 current contributors  |  Analyzed 3 days ago
 
 

PRObabilistic COntext-free GRAmmar Music generation.

0
 
  0 reviews  |  0 users  |  500 lines of code  |  2 current contributors  |  Analyzed 9 days ago
 
 
 
 

Creative Commons License Copyright © 2013 Black Duck Software, Inc. and its contributors, Some Rights Reserved. Unless otherwise marked, this work is licensed under a Creative Commons Attribution 3.0 Unported License . Ohloh ® and the Ohloh logo are trademarks of Black Duck Software, Inc. in the United States and/or other jurisdictions. All other trademarks are the property of their respective holders.