"Song granulator" question

lundi 2 juin 2014

I recently attended MIDI Hack here in Stockholm and made a very cool "Song Granulator" with Mobius hosted inside Ableton Live. Now I need help to implement this functionality as a Mobius script.



What I did in Live was to set up a number of MIDI clips that play through as a loop following the tempo set by Mobius first recorded loop. These MIDI clips are all two bars long (representing one cycle in Mobius) and contain an event that is assigned to Mobius Sustain Substitute command. Now, the event is located at different positions inside each MIDI loop in a way that no subcycles of the Mobius audio loop will be overwritten until every damn subcycle has been filled up with a chunk of substituting audio.



The performance technique is to simply play a song while it is all running and experience a two bar granular loop being built over time in the background; a generative granulation process.



I managed to come up with a script that keeps running and substituting subcycles but what I failed at was how to implement the changes of position inside the loop, as the substitute command has to be given at a new position for each new loop round.



If we can hack together this in Mobius scripting based on subcycle granules it will be even more powerful in performance than using looped Ableton Live MIDI control clips. This is because the user can apply the script at any state of the subcycle resolution (more musically playable). A setting as "subcycles=16" may result in a typical rhythmic groove on eight note beats while a setting as "subcycles=312" would end up bordering to granular synthesis (sound-wise that is).



Below is my failed attempt.

Here's hoping someone can suggest a better approach.


Quote:








!name Generative Granulation

Message Generating Granules

# based on Groove Track



!autoload



end



Label click

Variable global PartRevActive

# toggle state

if PartRevActive == true

set PartRevActive false

else

set PartRevActive true

endif



# the actual function

Wait cycle

while PartRevActive == true

wait subcycles 1

Substitute

wait subcycles 1

Substitute

next

end



Label endClick



Variable global PartRevActive

# toggle state

if PartRevActive == true

set PartRevActive false

else

set PartRevActive true

endif



# the actual function

Wait cycle

while PartRevActive == true

wait subcycles 1

Substitute

wait subcycles 1

Substitute

next

end







0 commentaires:

Enregistrer un commentaire

 

Lorem

Ipsum

Dolor