Beyond Borders

Post
René
Max Output Level: -68 dBFS
2006/08/05 14:07:47
Hula hula. Disclaimer first.

This is a documentary intended for sound designers, and sound design enthusiasts, not for "standard" users or musicians. It involves some tricks requiring an in-depth knowledge of the topic synthesizers structure, and going "beyond borders" of what is musically and
technologically possible is very easy. The tricks explained here are definitely not intended for instant gratification, optimum usage of creative workflow or similarly-phrased concepts. Actually they're more oriented to nerdy, geeky and "I-wanna-see-under-the-hood" souls. I know there must be some of those around. So I feel they could find this useful, therefore here we are.

Animation is a fundamental component of the sound. For years, synth designers have been trying to expand the options for sound animation. Call them arpeggiators, envelopes, low frequency oscillators, step generators, random evolvers, fractal mutators or caos handlers. The goal of they all is the same: getting from the audience an unconscious degree of focus and attention in the sound at any cost, generating musical-psycho-acoustic tension, telling the listeners brains that "something is about to happen" or that "this is gonna be better, stay focused".

There're many methods to animate a sound. A very common discussion amongst sound designers is, when the animation stops being sound, and starts being music. Of course there's no answer to that question, but while discussing the topic I have learned a lot of how others understand the sound. Anyways.

Those who have z3ta+ know the '8-bar first contact' patch. That was a superb trance pad by Kire. Anecdotical note, when I was preparing the banks for the release, I thought that it wasn't very easy to realize what the patch was for, without the context. Therefore, I decided to postpone the release and introduce some gizmo in z3ta+ which would allow such a goal. The rationale being, a
patch can be great, but the end-user could easily play it in the wrong velocity or keyboard range, in the wrong mood, or even just not try the mod wheel or associated modulators, getting the experience that the patch is boring, unanimated, or in common lingo, "weak". That was how the MIDi arpeggiator in z3ta+ was born, and how '8-bar first contact' became the default patch.

Every one of our synths after z3ta+ has a mean to animate the sound, in different components. In z3ta+, it's the arpeggiator. In Dimension Pro, a more sample-oriented synth, it is the ReCycle playback (REX/RCY/RX2). In Rapture, we have the step generators.

Dimension Pro also understands the so called "sfz grooves". An sfz groove is a standard sfz file, but where each region is specified when to start and when to end. When we put many regions in sequence, they just play a groove. As the region "when" indications are beat-based, the grooves play synchronized with the host tempo and position. This kind of "groove playing" synchronized to host tempo is a different animal than the one found in loop applications such as Project5 or ACID, which will basically 'stretch' the audio to fit in the available time.

Dimension Pro will play the slices polyphonically, allowing for a definable 'slice overlap', which radically enhances the range of tempos a groove can be played in, and also preserves a much higher sound quality in any range depending on material, but specially for drum sounds. This is basically the same method used in DrREX, and Stylus RMX, and requires a polyphonic player (multiple voices).

I digress. Still, that is what today's trick is about: how to use multiple regions, started and stopped at different times, to create animations and sequences. Let's start with an example.


http://www.rgcstuff.com/Rapture/sounds/RGC_Rhythm!_Multisamples.zip
http://www.rgcstuff.com/Rapture/sounds/RGC_Rhythm!_Program.zip


Extract the multisamples in your Multisamples folder, and the program anywhere (the program is for Rapture, but the multisamples can be usied in both DP and RP). Then load the program, and play a key and hold it for one bar. If you did good, you should hear a bass, kick and hat 2-bar pattern.
How this rhythmic, sequenced pattern was created? Obviously it wasn't with the step generators, as the sampes and envelopes are retriggered. The trick consists in stacking multiple regions of the same sample, and delaying the start time. Let's check the Sample-Kick.sfz:

<group>
sample=..\Rapture Drums\Rapture Kick 22.wav
note_polyphony=1000
pitch_keytrack=0

<region> delay_beats=0
<region> delay_beats=1
<region> delay_beats=2
<region> delay_beats=3
<region> delay_beats=4
<region> delay_beats=5
<region> delay_beats=6
<region> delay_beats=7

Ok. To start, observe that we have the "sample=" opcode at a group level. This means that all the regions in this file will play the same sample, "Rapture Kick 22.wav". This sample is part of the Expansion Pack 1, and as a historic note it was created using Rapture itself, and rendered to audio.

Then, the "note_polyphony=" opcode. This one isn't needed for this particular sfz file, but it won't hurt here and makes it easy to copy/paste this into other groove sfz files. This opcode sets the maximum amount of layers -the same note- is allowed to play, in pposition to the player polyphony. You might want to have 400 layers of polyphony, but limit to 5 the number of layers created by the same note, for instance to limit the cymbals alone. When working with groove loops, all layers are created by the same note, so we need to set this way beyond default (32).

Then the "pitch_keytrack=0" opcode tells Rapture not to pitch the sample when playing different notes in the keyboard. We do this so it sounds the same regardless of the played note.

Then the eight regions. The only opcode in each region is the delay time, in beats. First region will play immediately, second region will wait till beat 1 to play, third region will wait till beat 2, and so on. As the sample is not looped, we do not need anything to stop the region once it started: regions will die of natural causes when sample has finished playing.

Sample-Hat.sfz uses the same concept, but as the hat plays every 1/16th (or every 1/4th of each beat), it has a 0.25 interval in the region "delay_beats=" opcode.

Then Sample-Bass.sfz uses almost the same idea, but in this case it uses a wavetable. It is actually not a good idea to use wavetables for too many regions, as Rapture will need to create a full wavetable map internally for each region (as they could be individually transmogrified), but if we don't go too high in the number of regions it will work. This is not a problem with samples, as they'll exist only once.

As the wavetables won't stop naturally, we need to use "delay_stop=" values to stop it. The values determine the length of the note: length (in beats) = delay_stop - delay_start
That's it. Nice patterns can be created this way, and then combined in elements to create even more complex animations. This small program will allow you to get a .sfz file, with the delay_start and delay_stop correct values, out of a standard MIDI file. The program runs on Mac or PC, but is for Windows only (ahh yes, it feels really good to say it that twisted way).


http://www.rgcstuff.com/Rapture/sounds/Mid2Sfz.zip


Just drag any mid file and drop it in the proggie window, it'll write the .sfz in the same folder. Needless to say, this is a fully-undocumented, fully-unsuported program, use it at your own risk. Yet, it somehow works. You only need to add the 'header' as in the above examples, to set the sample you want to play.


Wisdom is about less
A few words of advice. Do not try to create a file out of a full several-minutes midi song to "test the boundaries", specially if you will implant a wavetable on the top. You might easily be out of memory regardless on how much memory you have. Do not attempt to make very large sequences. Despite of the fact that all layers are spreaded on time so you won't get an enormous rms/ongoing cpu-usage, all layers are created at note-on. If you stack too many layers, there might be not enough time in a single audio block to allocate all notes, resulting in pops/clicks/cracks on note-on. If this happens even with small sequences, you might be just running out of cpu power, or your audio drivers might be suboptimal. Increasing latency might help. Warranty is void after installed.


Anyways, I'm down to Sound Dungeon again. Hope you find it useful, or at least interesting.


-René
post edited by René - 2006/08/05 19:53:57
Paradroid
Max Output Level: -81 dBFS
RE: Beyond Borders 2006/08/05 18:22:13
Holy fruit cake! The guy's out of town for near a month and he swings back in with this?!

Okay, no time to mingle, must play…
lawapa
Max Output Level: -68 dBFS
RE: Beyond Borders 2006/08/05 19:24:00
I had a peak at this via Chad His generosity was most kind. I did the note sequence using transpose with =3,=7 and so on. He did cite the boss Rene as the source but I did have fun with it and well still am. So a tip'o' the hat to Rene for this. It is the berries.
MusicMaker5
Max Output Level: -89 dBFS
RE: Beyond Borders 2006/08/06 01:15:26
Here Here!!!!!!

Bravo!!!!!

Just when things were starting to settle down


Thanks,
Daniel
b rock
Max Output Level: 0 dBFS
RE: Beyond Borders 2006/08/06 09:02:16
The tricks explained here are definitely not intended for instant gratification, optimum usage of creative workflow or similarly-phrased concepts.
No, it's more like: "Here's a free Swiss Army knife. I've included the background history on it, and a complete set of instructions on the fine points of using it. Do you think you can find a few uses for it?"

Amazing offering, René, and just when I thought that the 'trance gate' slammed shut on us. Thanks very much. I'm in the midst of one of those forehead-smacking moments where everything becomes crystal-clear in an flash. And I've yet to be able to try it out.

Edit: Instant classic ... wikied.
post edited by b rock - 2006/08/06 09:20:38