Skip to content

HeavenlyBerserker/Midireader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

###Converting melody/chords in existing music to ragtime

Version 1 Algorithm (Winter Comet):

Each unique rhythm pattern in the ragpat dataset [Koops et al.] is given a frequency number that is its frequency over the total frequency of all patterns with that number of onsets. Patterns are half-measures represented by strings of 16 I's and O's, which represent onsets and non-onsets, respectivally.

For each unique rhythmic half-measure of the song, a rhythmic pattern from the ragpat dataset is randomly chosen, weighted by the pattern's frequency numbers. Both of these rhythms form a transformation rule to be applied to each occurrence of the original rhythm in the song. Because our initial songs are so simple and because un-syncopated half-measures are so common in the dataset, rules that would change nothing are rewritten until they would. Additionally, rules that would shift onsets by a total of 10 or more positions are rewritten to prevent changes too drastic such as a note at the beginning of a half-measure being shifted to the end.

Syncopalooza Algorithm:

Each measure is desyced and resynced according to the algorithm described in Syncopalooza.

Future Version 2 Algorithm (Bronze Zebra):

Each unique rhythm pattern in the RAG Collection of over 11,000 songs is given a frequency number as well as transitional probabilities to each pattern that ever directly follows it. This rhythmic data is generated by using the skyline algorithm on streams produced by Temperley's Streamer algorithm to obtain monophonic melodies. A markov chain builds a song's newly generated rhythm measure for measure using this data and an edit distance metric to the original measure's rhythm.

The Syncopalooza algorithm may be evaluated and used in training or as a metric. Alternately, we may use an algorithm similar to that in Syncopalooza but with rhythmic shifts happening left or right, depending on the decision made by a trained system or markov model as in above.

Additionally, the ragpat dataset used in Version 1 can be compared with our non-transitional results from the RAG Collection and the Streamer algorithm. Conclusions may be hard to draw from this comparison since either algorithm could systematically produce different results without being necessarily 'wrong'. High similarity leads to potentially interesting new data on rhythm in the ragtime genre.

Passing tones and other notes may be added using this data at some point.

Releases

No releases published

Packages

No packages published