YBaCuO
12-20-2004, 01:22 AM
Algorithmic performance: Does your sequencer do this? It should. I wish mine did. Demos below.
WARNING: most readers will want to just skip to the demos at the bottom, and if you like what you hear, petition the powers-at-be that you want it (my daughters just throw a tantrum, it works sometimes ...).
Here are some "quick-and-dirty" demos that feature two relatively simple algorithmic techniques to improve midi performances. Hopefully, these crude demos will encourage software vendors to implement similar ideas. I am practically shouting for them to do something. It must not be difficult to do, because I was able to rather easily, albeit messily, program them in the free KeyKit language (http://nosuch.com/keykit/).
These two ideas, which I'll call algorithmic tempo maps and "v-swell w/peak shift" expression/modulation control (v-swell for short), were featured in the old SuperConductor program headed by Dr. Manfred Clynes. I do not want to discuss this program but "more" info can be found here http://www.microsoundmusic.com/home.htm and purchased through here www.seermusic.com.
The v-swell algorithm is quite simple: hill-like expression/modulation midi data is applied to each note (except short/fast notes, which usually do not need it). Then the peak of this hill is shifted depending on the next note (in a continuous phrase). If the pitch of the next note is higher, then the peak of this hill is shifted towards the next note (to the right) with a greater peak shift for greater interval distances. Similarly, if the pitch of the next note is lower, then the peak of this hill is shifted away from the next note (to the left). In general, it is nice to have controls to create different hill shapes and/or peak shifts for different occasions or different note characteristics (duration mainly, velocity, host tempo, bar location, ends of phrases, note gap sizes, etc.).
However in these crude examples, simply ONE hill shape w/peak shift was applied to all notes for all instruments! Of course, slightly better results could be achieved if more shapes were used.
The algorithmic tempo maps are more complex and really beyond the scope of this post. One concept is the pulse, which is a sort of combination meta and micro rhythm structure and which Dr. Clynes refers to as a hierarchical Pulse. Different positions in the bar or among bars, get different tempos and amplitudes (faster and louder, slower and quieter, etc.). Dr. Clynes' research showed that performances of music by the masters could be approximated with this system. Each composer seemed to favor different kinds of pulses. Mozart preferred a strong-weak-strong-weak map, Beethoven strong-weak-strong-strong, Franck weak-strong-strong-weak, Schumann weak-strong-weak-strong and most of the others a variation of strong-weakest-less weak-strong. Programming such a pulse is straight-forward by creating a tempo map with user-selectable duration/amplitude sliders. However, applying a tempo map that makes musical sense is extremely difficult - part of the "mystery of the arts."
Most of the demos below use tempo maps that were created by Dr. Clynes. But notice that two demos used tempo maps created by myself. For Mozart's wind partita K.361, I simply used the standard Mozart pulse. For the original flute and tuba composition by TriestaOrange, I used a pulse similar to Franck (weak-strong-strong-weak), which suits so perfectly that the listener is not even aware that it exists.
Beyond the pulse described above, the SuperConductor program has some other nice features like crescendos/diminuendos and accelerandos/ritardandos that follow curves. And there were easy-to-use tools to manipulate these curves. The effect was intuitive and beautiful. And I ask, may we please have similar tools in our notation/sequencer programs?? Pretty please with lots of money on top ...
There are lots of small little tiny details that were necessary to interface all this different technologies together. And I also wish sequencer/notation programs would implement similar time saving features. In the demos, continuous lines of notes without a durational pause were automatically considered "slurred" and the appropriate pedal controller midi data were created (whether it was appropriate or not! The data was deleted only in the Bach demo). The program also detected short durational notes for the string sections and generated the appropriate keyswitch notes for the string sections (which seemed to only manifest itself in the Beethoven symphony demo). Some attempt was made to lessen the machine gun effect for repeated notes: some random note on/off variations, velocity, var1 and var2 midi data were automatically generated. Honestly, this last part did not seem to help much. But again, I want my sequencer/notation program to do this for me. And there were variables to adjust note lengths (so notes weren't end to end) and generate length parameter midi data. Sigh, why can't this be done automatically too (actually most sequencers can be set up to do this).
This algorithmic performance is straightforward to use, but tedious. My simple KeyKit program is text based (can you say batch file?) and although the SuperConductor program has a GUI, where-you-are-in-the-score is still text based. That makes all difficult to use.
DEMOS HERE:
The following excerpts are all algorithmic-based SuperConductor performances
by Dr. Manfred Clynes (except where noted), converted using a homemade
KeyKit program, mixed in the Muzys sequencer using the free 350seat or
1800seat impulses from www.noisevault.com and SIR. All instruments are from
Garritan Personal Orchestra (GPO).
DISCLAIMER: These are NOT intended to be polished demos. Instead, the intent is to demonstrate two simple algorithms for enhancing computer performance: algorithmic tempo maps and "v-swell w/peak shift" expression/modulation control.
Flute and Tuba: original composition by TriestaOrange, KeyKit performance
http://www.wusik.com/song.php?id=270
Cello and Piano: Brahms Cello Sonata
http://www.wusik.com/song.php?id=361
Violin and Piano: Franck Violin Sonata
http://www.wusik.com/song.php?id=362
Piano, Violin, Cello: Schubert Piano Trio
http://www.wusik.com/song.php?id=363
String Quartet: Haydn Quartet from Op.76
http://www.wusik.com/song.php?id=364
Wind Ensemble: Mozart Grand Partita K.361, KeyKit performance
http://www.wusik.com/song.php?id=365
Ensemble: Bach Brandenburg Concerto #1, mov. 1
http://www.wusik.com/song.php?id=375
Violin Concerto: Mozart
http://www.wusik.com/song.php?id=372
Violin Concerto: Mendelsohnn
http://www.wusik.com/song.php?id=366
Orchestra (slow): Schubert's Unfinished Symphony No.8, mov.1
http://www.wusik.com/song.php?id=367
Orchestra (fast): Beethoven Symphony No.3, mov.1
http://www.wusik.com/song.php?id=368
Enough performing for me now, back to my research
YBaCuO
WARNING: most readers will want to just skip to the demos at the bottom, and if you like what you hear, petition the powers-at-be that you want it (my daughters just throw a tantrum, it works sometimes ...).
Here are some "quick-and-dirty" demos that feature two relatively simple algorithmic techniques to improve midi performances. Hopefully, these crude demos will encourage software vendors to implement similar ideas. I am practically shouting for them to do something. It must not be difficult to do, because I was able to rather easily, albeit messily, program them in the free KeyKit language (http://nosuch.com/keykit/).
These two ideas, which I'll call algorithmic tempo maps and "v-swell w/peak shift" expression/modulation control (v-swell for short), were featured in the old SuperConductor program headed by Dr. Manfred Clynes. I do not want to discuss this program but "more" info can be found here http://www.microsoundmusic.com/home.htm and purchased through here www.seermusic.com.
The v-swell algorithm is quite simple: hill-like expression/modulation midi data is applied to each note (except short/fast notes, which usually do not need it). Then the peak of this hill is shifted depending on the next note (in a continuous phrase). If the pitch of the next note is higher, then the peak of this hill is shifted towards the next note (to the right) with a greater peak shift for greater interval distances. Similarly, if the pitch of the next note is lower, then the peak of this hill is shifted away from the next note (to the left). In general, it is nice to have controls to create different hill shapes and/or peak shifts for different occasions or different note characteristics (duration mainly, velocity, host tempo, bar location, ends of phrases, note gap sizes, etc.).
However in these crude examples, simply ONE hill shape w/peak shift was applied to all notes for all instruments! Of course, slightly better results could be achieved if more shapes were used.
The algorithmic tempo maps are more complex and really beyond the scope of this post. One concept is the pulse, which is a sort of combination meta and micro rhythm structure and which Dr. Clynes refers to as a hierarchical Pulse. Different positions in the bar or among bars, get different tempos and amplitudes (faster and louder, slower and quieter, etc.). Dr. Clynes' research showed that performances of music by the masters could be approximated with this system. Each composer seemed to favor different kinds of pulses. Mozart preferred a strong-weak-strong-weak map, Beethoven strong-weak-strong-strong, Franck weak-strong-strong-weak, Schumann weak-strong-weak-strong and most of the others a variation of strong-weakest-less weak-strong. Programming such a pulse is straight-forward by creating a tempo map with user-selectable duration/amplitude sliders. However, applying a tempo map that makes musical sense is extremely difficult - part of the "mystery of the arts."
Most of the demos below use tempo maps that were created by Dr. Clynes. But notice that two demos used tempo maps created by myself. For Mozart's wind partita K.361, I simply used the standard Mozart pulse. For the original flute and tuba composition by TriestaOrange, I used a pulse similar to Franck (weak-strong-strong-weak), which suits so perfectly that the listener is not even aware that it exists.
Beyond the pulse described above, the SuperConductor program has some other nice features like crescendos/diminuendos and accelerandos/ritardandos that follow curves. And there were easy-to-use tools to manipulate these curves. The effect was intuitive and beautiful. And I ask, may we please have similar tools in our notation/sequencer programs?? Pretty please with lots of money on top ...
There are lots of small little tiny details that were necessary to interface all this different technologies together. And I also wish sequencer/notation programs would implement similar time saving features. In the demos, continuous lines of notes without a durational pause were automatically considered "slurred" and the appropriate pedal controller midi data were created (whether it was appropriate or not! The data was deleted only in the Bach demo). The program also detected short durational notes for the string sections and generated the appropriate keyswitch notes for the string sections (which seemed to only manifest itself in the Beethoven symphony demo). Some attempt was made to lessen the machine gun effect for repeated notes: some random note on/off variations, velocity, var1 and var2 midi data were automatically generated. Honestly, this last part did not seem to help much. But again, I want my sequencer/notation program to do this for me. And there were variables to adjust note lengths (so notes weren't end to end) and generate length parameter midi data. Sigh, why can't this be done automatically too (actually most sequencers can be set up to do this).
This algorithmic performance is straightforward to use, but tedious. My simple KeyKit program is text based (can you say batch file?) and although the SuperConductor program has a GUI, where-you-are-in-the-score is still text based. That makes all difficult to use.
DEMOS HERE:
The following excerpts are all algorithmic-based SuperConductor performances
by Dr. Manfred Clynes (except where noted), converted using a homemade
KeyKit program, mixed in the Muzys sequencer using the free 350seat or
1800seat impulses from www.noisevault.com and SIR. All instruments are from
Garritan Personal Orchestra (GPO).
DISCLAIMER: These are NOT intended to be polished demos. Instead, the intent is to demonstrate two simple algorithms for enhancing computer performance: algorithmic tempo maps and "v-swell w/peak shift" expression/modulation control.
Flute and Tuba: original composition by TriestaOrange, KeyKit performance
http://www.wusik.com/song.php?id=270
Cello and Piano: Brahms Cello Sonata
http://www.wusik.com/song.php?id=361
Violin and Piano: Franck Violin Sonata
http://www.wusik.com/song.php?id=362
Piano, Violin, Cello: Schubert Piano Trio
http://www.wusik.com/song.php?id=363
String Quartet: Haydn Quartet from Op.76
http://www.wusik.com/song.php?id=364
Wind Ensemble: Mozart Grand Partita K.361, KeyKit performance
http://www.wusik.com/song.php?id=365
Ensemble: Bach Brandenburg Concerto #1, mov. 1
http://www.wusik.com/song.php?id=375
Violin Concerto: Mozart
http://www.wusik.com/song.php?id=372
Violin Concerto: Mendelsohnn
http://www.wusik.com/song.php?id=366
Orchestra (slow): Schubert's Unfinished Symphony No.8, mov.1
http://www.wusik.com/song.php?id=367
Orchestra (fast): Beethoven Symphony No.3, mov.1
http://www.wusik.com/song.php?id=368
Enough performing for me now, back to my research
YBaCuO