Difference between revisions of "Suff:Algo"

From JimboWiki
Jump to: navigation, search
Line 17: Line 17:
 
*Development
 
*Development
 
**Cycling '74's Max
 
**Cycling '74's Max
*Data Storage
+
 
**Single Note
+
*Real Time Algorithm
***Start time
+
**Calculations
***Expected duration/end time
+
***Rhythm
***Instrument
+
****Calculate by previous note and placement in measure - ex. one triplet is most likely to be followed by 2 other triplets
**Phrase / riff
+
****Or - Random using natural note event probabilities (see [[Suff:Progs]])
***List of notes
+
***Pitch
***Used as a guideline - possibly have the ability to randomize or interact with other instruments' lines
+
****Recalculate probabilities each time a note is played - Base on proper music theory
***Possibly generate a bunch of phrases before the song is "written"
+
****Allow for key changes and progressive chord movement
***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
+
***Velocity
**Phrase Order
+
****Calculate by placement in measure/phrase
***Have a way to organize the song
+
**Data Storage
***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
+
***Rhythm
*Process Flow
+
****Consider storing a basic rhythm line for repetition later - this might break the "computerized" style, so it might not be desirable
**working on it...
+
***Pitch
 +
****Store possible pitch values in a table
 +
****Associate with probability
 +
***Velocity
 +
****No storage required - calculate by known values
 +
**Process Flow
 +
**#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)
 +
**#Select velocity
 +
**#*Calculate by position in measure.  1,3 accented, off beats not so much.
 +
**#Select Pitch (and trigger "noteon" object)
 +
**#*How?  Need to figure a way to make the probability table work and stay updated
 +
**#End Note at duration end
 +
**#*Duration end from "advmetro" (see [[Suff:Progs]]) triggers note end
 +
**#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==
 
==Links==
 
<references />
 
<references />

Revision as of 04:52, 28 March 2007

 · 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)
      • 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