concept: simple performance patch
this is a re-recorded version of the patch i did for flash crash (the original performance was shaky due to my nerves, the recording seem to have some timing issues and the screens aren’t very readable). i initially considered doing something unusual, like creating some special ops or hacking the firmware in some other manner, but what i really wanted to demonstrate is that you don’t need to use a lot of ops or complicated techniques to get something going.
there is also nothing particularly special about 2 teletypes - could probably do the same with one but it made it easier to separate voices. the left teletype controls the left disting ex via i2c, which is used as a drum sample player (sd triggers algorithm). it’s further processed by mimeophone. the right teletype controls telexo / just friends / another disting ex (running augustus loop delay).
the crossfader is mainly used to mix drums and just friends output. i initially planned to do something interesting by controlling teletypes with it by patching the crossfader CV to teletype inputs and using that voltage to control various script aspects, similar idea to octatrack, but ended up not using it that much.
here is the breakdown of what’s happening:
00:09
i start by initializing the synth mode on JF. i also wanted to show you can get so much variation by simply playing the same 6 notes (you’ll see below i partially failed to do that even in this re-recorded patch).
JF.MODE
L 1 6: JF.NOTE N P I V 5
i populate patch bank 0 with 6 notes and send them to JF with the above loop. from now on the only pitch change that will happen will be through transposition.
00:40
create a counter using variable T
to simply step through the 6 notes:
T % + 1 T 6; J + T 1
JF.NOTE N P T V 5
first mistake here, J
should be used instead of T
on the 2nd line. T % + 1 T 6
means: “add 1 to T
, then wrap it back to 0…5 range using the modulo operation”. since i’m using pattern values 1-6, i needed to shift this range to 1…6, which is what J
was for.
01:26
add some JF modulation using telexo LFO:
TO.OSC.CYC 2 15000
TO.CV 2 V 5
this will start an LFO on output 2 with cycle of 15sec and -5…+5V voltage range.
01:48
create a super simple trigger sequencer with grid ops:
G.BTX 0 0 0 1 1 1 0 0 16 8
this creates a block of 1x1 grid buttons in a 16x8 block - 8 tracks with 16 steps each. adding this to the metro to highlight the active step:
T % + 1 T 16
G.CLR; G.REC T 0 1 6 -2 -2
tracks 1-6 will be used to trigger drums 1-6 on the left disting:
L 1 6: SCRIPT 7
and this is script 7:
J + T * - I 1 16
IF G.BTN.V J: EX.TV I PARAM
G.BTN.V
will tell us if a grid button is pressed or not. since the buttons started with id 0 (1st parameter to G.BTX
) and they are given ids that increase left to right then top to bottom, we can calculate the button number for the current track (which is stored in variable I
when script 7 is called from the metro) and the current step (stored in variable T
) by using the formula above.
if the button is pressed, G.BTN.V J
will return 1, so the IF
statement executes. EX.TV
is a disting op that triggers the drum voice passed as the 1st parameter. the 2nd parameter is loudness, and by using PARAM
i can use the teletype knob to control drum volume.
03:53
i also want to use tracks 6-8 to send triggers to teletype #2, so i copy script 7 to script 6 and modify it to send triggers: IF G.BTN.V J: TR.P - I 5
(we have to subtract 5 so that tracks 6-8 translate into trigger outputs 1-3).
i patch teletype #1 trigger output 1 to trigger input 1 on teletype #2. i stop the metronome on the 2nd teletype, and instead call the metro script from script 1. i also clock the augustus loop algorithm on the right disting with EX.AL.CLK
.
i also connect trigger output 2 to trigger input 2. now script 2 on teletype #2 is also sequenced from the trigger sequencer. i will use it later to transpose the sequence.
06:05
instead of stepping through individual notes i change it to a chord stab:
L 1 6: JF.VTR I V 5
JF.VTR
has 2 useful aspects - it triggers JF voices using the last pitch received, but you can still change the volume of each voice.
06:33
syncing mimeophone to teletype #1 metronome by using trigger output 4
07:05
adding further variation by transposing the whole JF chord:
C % + 1 C 4
JF.SHIFT N PN 1 C
JF makes this kind of thing very easy!
08:04
i spend a couple of minutes here trying to set up a telexo voice as the bass. first, enable envelope and choose a waveform:
TO.ENV.ACT 1 1
TO.OSC.WAVE 1 2400
then trigger the voice and set the volume using the param knob:
TO.ENV.TRIG 1
TO.CV / PARAM 10
there is no sound because the current pitch is 0 - which is very low.
10:24
the bass finally drops! always remember to shift by several octaves up for telexo. i use the same notes i used for transposing the chord for the bass.
11:06
drums are pretty static - let’s add some variation on each 8th step. in metro:
EVERY 8: SCRIPT 4
which is simply a way to call script 5 in a loop (i only want to modify drums 2-5):
L 2 5: SCRIPT 5
and script 5:
J + 1 * I 3
EX.P + 7 I RRND J + J 5
this needs some unpacking. i prepared drum samples specifically for this patch by collecting 6 samples for each of 6 voices and naming them so that kick would be files 0-5, snare - files 6-11 etc etc. J
will give me the number of the 1st sample in the group, and RRND J + J 5
will select a random sample from within that group (except that i made another mistake here and I
should be multiplied by 6). i then use EX.P
op to change assigned sample to the randomly selected one (side note: changing folders is not instantaneous, so i wouldn’t try to change it live, but changing individual samples seems to be fine!).
12:15
add random modulation for mimeophone - i typically use CV RND V 10
as a super quick way to generate stepped random voltage. CV.SLEW
could also be very useful here.
12:47
further JF variation - instead of playing a chord, i change it to play a random note. there is a mistake in the line - instead of JF.VTR RRND 1 6 V 2 V 7
it should be JF.VTR RRND 1 6 RRND V 2 V 7
, so that in addition to playing a random note it should also use a random volume for it, but since i didn’t include RRND
it just takes V 2
as the volume parameter, resulting in me trying to figure out why JF is so quiet all of a sudden.
13:44
add another random stepped modulation for JF
14:31
one more random stepped modulation - but for this one i use script 3, which is triggered from the trigger sequencer track #8 - this is a good way to sync modulation changes.
15:48
mute bass drum by changing the loop that triggers drums.
16:55
change back from individual notes to a chord stab. i’m still missing RRND
in front of V 2 V 7
here, which is a bummer because one of the cool things to do with JF is to play the same chord stab but vary volume of individual notes - you get really nice organic changes.
18:12
i finally do something with the crossfader - simply modulating the position with a random voltage generated by teletype, which adds more variation to the drum track.
that’s it! the only remaining thing to mention is that just friends is an incredible sound source - which is bad for practicing, because you get lost in all the sweet spots!