Suff:Algo

From JimboWiki
Revision as of 04:59, 28 March 2007 by J (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

 · Suff Home  · Style Research  · Functional Requirements  · Algorithm  · Patches  ·


Previously developed similar software

  • "Sharle" - Chong Yu, MIT 1996 [1]
    • Java source available[2]
    • Uses objects and hierarchy heavily - can Max handle this sort of computation?
    • Uses expert system decision making
    • Uses weighted probabilities
  • "Experiments in Musical Intellegence" - David Cope, 1981-2006 [3]
    • Attempts to replicate composers' styles by mimicing rhythmic patterns
    • Utilizes LISP heavily
    • Supposedly artificially intelligent - sounds pretty much like identical rhythmic patterns used with different notes
    • Clearly not as random as the goal application

My Design

  • Development
    • Cycling '74's Max
  • Real Time Algorithm
    • Calculations
      • Rhythm
        • Calculate by previous note and placement in measure - ex. one triplet is most likely to be followed by 2 other triplets
        • Or - Random using natural note event probabilities (see Suff:Progs)
        • Rest calculation - when, how long, how often? need to find a way to do this...
      • Pitch
        • Recalculate probabilities each time a note is played - Base on proper music theory
        • Allow for key changes and progressive chord movement
      • Velocity
        • Calculate by placement in measure/phrase
    • Data Storage
      • Rhythm
        • Consider storing a basic rhythm line for repetition later - this might break the "computerized" style, so it might not be desirable
      • Pitch
        • Store possible pitch values in a table
        • Associate with probability
      • Velocity
        • No storage required - calculate by known values
    • Process Flow
      1. Select duration
        • How?
          • Random using natural note event probabilities? (see Suff:Progs)
          • Calculated using probability table? (2 triplets probably follow 1 triplet played on beat)
      2. Select velocity
        • Calculate by position in measure. 1,3 accented, off beats not so much.
      3. Select Pitch (and trigger "noteon" object)
        • How? Need to figure a way to make the probability table work and stay updated
      4. End Note at duration end
        • Duration end from "advmetro" (see Suff:Progs) triggers note end
      5. Trigger next note
        • Triggered at same time as note end
  • Pre Process Algorithm
    • Data Storage
      • Single Note
        • Start time
        • Expected duration/end time
        • Instrument
      • Phrase / riff
        • List of notes
        • Used as a guideline - possibly have the ability to randomize or interact with other instruments' lines
        • Possibly generate a bunch of phrases before the song is "written"
        • Possibly don't tie phrases to "real notes" - instead use "relative notes" so phrases can be applied to whatever key the song is in when the phrase is used
      • Phrase Order
        • Have a way to organize the song
        • For instance, maybe a chorus happens ever 8 bars in a particular song. The song ends in 48 bars. There's a beginning phrase and an ending phrase that need to be played on time
    • Process Flow
      • working on it...

Links

  1. http://brainop.media.mit.edu/online/net-music/net-instrument/Thesis.html
  2. http://home.comcast.net/~chtongyu/sharle/
  3. http://arts.ucsc.edu/faculty/cope/experiments.htm