Difference between revisions of "Suff:Algo"
From JimboWiki
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
- Rhythm
- 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
- Rhythm
- 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)
- How?
- 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
- Select duration
- Calculations
- 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
- Single Note
- Process Flow
- working on it...
- Data Storage