Pump up the volume! Copyright: Dr Alexander J Turner All Rights Reserved |
I am a big believer in creativity being derived form limitation. Given the near infinite pallet of sound creating techniques which a blank Sonic Field patch offers I just sit and think 'what should I do'. To create Jam In A Junk Yard Beginning I gave myself one sound generating patch and said 'you can only make sounds with this by altering its controls, stereo placement or resampling'. That much more restrictive environment lead to the creation of an interesting set of very metallic sounds (I hope).
To see and hear the piece on Youtube go here. Please listen/view in HD for get good quality. Also note that this piece uses some seriously low notes so laptop speakers will not play it properly.
So - what is this sub-patch from hell? It is a simple enough additive subtractive, FM thing with some feedback delay. Really, it is not that complex so lets have a look at it:
( (?length,?pitch)SinWave MakeTriangle dbs+6, (?length,(?pitch,2)/)SinWave MakeTriangle dbs-6, (?length,(?pitch,4)/)SinWave MakeTriangle dbs-6, (?length,(?pitch,8)/)SinWave MakeTriangle )Mix Normalise !signal
This is the source of the sound; it is a simple addition of triangle waves which are in unusual magnitudes. Effectively, it contains sub-harmonics because the lower signals we much weaker then the high. Triangle waves only have odd harmonic overtones and I added even sub-harmonics; this thickens out the sound without creating any even harmonics from overlaying. The result in a big fat sound which is just right for subtraction and frequency modulation.
Some of those sub-harmonics become infra-sound for low notes so I filter out that then apply a band pass filter which is shaped. This means the lower and upper shoulders of the filter vary over time using two envolopes. I apply the filter three times to make it really sharp. This is numerically more stable than trying to apply a very steep filter in one go.
Now we have a sound the timbre of which varies over time. The envelope (shape) for these filters is generated thus:
So the sound starts with very little filtering and then narrows to one width and then narrows again to a very tight filter. That is at least the way I use it; the patch is complex enough to allow the filter to widen towards the end if that effect was desired. The width and positioning of these points are parameters for the patch.
Next I hit it with frequency modulation and overdrive. This makes it sound like a mike over loading listening to a piece of metal being hit - which is where the junk yard sound comes from:
Finally some feed back delay (like guitarists use but with more layers) is applied to give resonance to the sound and some post filtering to help control the brilliance (to give dull thuds and sharper clangs) and cut low rumble is added.
All this processing can result in the zero point of the signal moving away from true zero. ClipToSafe removes any annoying clicks which this would produce in the mix.
The result of the patch creates sounds to make a rhythm. With some suggestions form my wonderful wife, this version of Jam In A Junk Yard messes with that rhythm. The piece is generated twice with very slightly different beats. One is at 750 milliseconds and the other at 760. The stereo mix is inverted in the two versions. It is the result of this which is passed into a simple and slightly claustrophobic reverb' effect. My messing with the rhythm timing this way, the two generations move through one another. Listening to the sounds produces (in me) the interesting effect that just as I think I am getting used to it the rhythms move enough to create a noticeably different pattern and I am drawn back into the piece. I would not say it captures my attention for all 21 minutes (hardly!) but as something in the background which reaches forward into the foreground every so often - it is quite surprising. The most obvious place to hear this effect is around 15 minutes in where the two rhythms line up and the Haas effect makes the sounds appear wide instead of distinct left and right channels; then, over the next minute or so the rhythms slowly separate.
I hope to make a release of Sonic Field which has the newly working filter in it later this week.
Some of those sub-harmonics become infra-sound for low notes so I filter out that then apply a band pass filter which is shaped. This means the lower and upper shoulders of the filter vary over time using two envolopes. I apply the filter three times to make it really sharp. This is numerically more stable than trying to apply a very steep filter in one go.
(>signal,15,2)DirectHighPass !signal (>signal,?low-shape,?high-shape,?order)ShapedBandPass Normalise !signal (>signal,?low-shape,?high-shape,?order)ShapedBandPass Normalise !signal (>signal,>low-shape,>high-shape,?order)ShapedBandPass Normalise !signal
Now we have a sound the timbre of which varies over time. The envelope (shape) for these filters is generated thus:
(?pitch,8)/ !bass ((0,?bass),(?wide-point,?bass),(?narrow-point,(?pitch,?narrow-amount)*),(?length,(?pitch,0.95)*))NumericShape !low-shape ((0,1000) ,(?wide-point,1000) ,(?narrow-point,(?pitch,?narrow-amount)/),(?length,(?pitch,0.95)*))NumericShape !high-shape
So the sound starts with very little filtering and then narrows to one width and then narrows again to a very tight filter. That is at least the way I use it; the patch is complex enough to allow the filter to widen towards the end if that effect was desired. The width and positioning of these points are parameters for the patch.
Next I hit it with frequency modulation and overdrive. This makes it sound like a mike over loading listening to a piece of metal being hit - which is where the junk yard sound comes from:
( >signal, ( ( ?length, (?pitch,1.2)* )SinWave, ?modulation-index )Volume )FrequencyModulate !signal (( (?a,?b,?c,?d,?e)NumericShape, >signal )Multiply Normalise,?over-drive)Volume Saturate Normalise !signal
Finally some feed back delay (like guitarists use but with more layers) is applied to give resonance to the sound and some post filtering to help control the brilliance (to give dull thuds and sharper clangs) and cut low rumble is added.
(?length,2000)/ !res-scale ( (?signal,4000 Silence)Concatenate, ( (-14,((160,?pitch Period)+,?res-scale)* Prime), (-15,((190,?pitch Period)+,?res-scale)* Prime), (-14,((320,?pitch Period)+,?res-scale)* Prime), (-15,((355,?pitch Period)+,?res-scale)* Prime), (-17,((380,?pitch Period)+,?res-scale)* Prime) ) ) DirectResonate Normalise !wet ( >wet, ?signal Invert )Mix !wet ( >signal, >wet Normalise )Mix Normalise !signal (>signal,?post-cut-low,3 )DirectLowPass Normalise !signal (>signal,?post-cut-high,2)DirectHighPass Normalise !signal >signal ClipToSafe
All this processing can result in the zero point of the signal moving away from true zero. ClipToSafe removes any annoying clicks which this would produce in the mix.
The result of the patch creates sounds to make a rhythm. With some suggestions form my wonderful wife, this version of Jam In A Junk Yard messes with that rhythm. The piece is generated twice with very slightly different beats. One is at 750 milliseconds and the other at 760. The stereo mix is inverted in the two versions. It is the result of this which is passed into a simple and slightly claustrophobic reverb' effect. My messing with the rhythm timing this way, the two generations move through one another. Listening to the sounds produces (in me) the interesting effect that just as I think I am getting used to it the rhythms move enough to create a noticeably different pattern and I am drawn back into the piece. I would not say it captures my attention for all 21 minutes (hardly!) but as something in the background which reaches forward into the foreground every so often - it is quite surprising. The most obvious place to hear this effect is around 15 minutes in where the two rhythms line up and the Haas effect makes the sounds appear wide instead of distinct left and right channels; then, over the next minute or so the rhythms slowly separate.
I hope to make a release of Sonic Field which has the newly working filter in it later this week.
Note that this patch and the music its creates is Copyright Dr Alexander J Turner 2012 and I license it under theCreative Commons Attribution 3.0 license. To use the patch or any music derived from it etc, please attribute Sonic Field, myself and this original work.
{ (?pitch,8)/ !bass ((0,?bass),(?wide-point,?bass),(?narrow-point,(?pitch,?narrow-amount)*),(?length,(?pitch,0.95)*))NumericShape !low-shape ((0,1000) ,(?wide-point,1000) ,(?narrow-point,(?pitch,?narrow-amount)/),(?length,(?pitch,0.95)*))NumericShape !high-shape ( (?length,?pitch)SinWave MakeTriangle dbs+6, (?length,(?pitch,2)/)SinWave MakeTriangle dbs-6, (?length,(?pitch,4)/)SinWave MakeTriangle dbs-6, (?length,(?pitch,8)/)SinWave MakeTriangle )Mix Normalise !signal (>signal,15,2)DirectHighPass !signal (>signal,?low-shape,?high-shape,?order)ShapedBandPass Normalise !signal (>signal,?low-shape,?high-shape,?order)ShapedBandPass Normalise !signal (>signal,>low-shape,>high-shape,?order)ShapedBandPass Normalise !signal ( >signal, ( ( ?length, (?pitch,1.2)* )SinWave, ?modulation-index )Volume )FrequencyModulate !signal (( (?a,?b,?c,?d,?e)NumericShape, >signal )Multiply Normalise,?over-drive)Volume Saturate Normalise !signal (?length,2000)/ !res-scale ( (?signal,4000 Silence)Concatenate, ( (-14,((160,?pitch Period)+,?res-scale)* Prime), (-15,((190,?pitch Period)+,?res-scale)* Prime), (-14,((320,?pitch Period)+,?res-scale)* Prime), (-15,((355,?pitch Period)+,?res-scale)* Prime), (-17,((380,?pitch Period)+,?res-scale)* Prime) ) ) DirectResonate Normalise !wet ( >wet, ?signal Invert )Mix !wet ( >signal, >wet Normalise )Mix Normalise !signal (>signal,?post-cut-low,3 )DirectLowPass Normalise !signal (>signal,?post-cut-high,2)DirectHighPass Normalise !signal >signal ClipToSafe } !clang { 0 !time 2000 !length 2 !order "e0b" note !pitch 200 !wide-point 600 !narrow-point 0.7 !narrow-amount (1.0,0) !a (1,500) !b (1000,0.5) !c (1850,0.25) !d (?length,0) !e "e4b" Note !post-cut-low 15 !post-cut-high 0 !modulation-index 24 !over-drive ?clang Do !1 36 !over-drive "e1b" note !pitch 0.99 !narrow-amount ?clang Do !2 ?clang Do !3 0.9 !narrow-amount "b1b" note !pitch 12 !modulation-index ?clang Do !4 ( (>1 Done dbs+6 !1,?time), (>2 Done !2,(?beat,>time)+ !time), (>3 Done !3,(?beat,>time)+ !time), (>4 Done !4,(?beat,>time)+ !time) )MixAt !low-rhyth ( 1,400, { ( (>low-rhyth,0), (?1,(?beat,>time)+ !time), (?2,(?beat,>time)+ !time), (?3,(?beat,>time)+ !time), (?4,(?beat,>time)+ !time) )MixAt !low-rhyth } )Repeat >low-rhyth Normalise !signal [ Dong low ] 1000 !length 3 !order "g4" note !pitch 500 !wide-point 600 !narrow-point 0.8 !narrow-amount (1.5,0) !a (1,2000) !b (750,0.5) !c (950,0.25) !d (?length,0) !e 24 !modulation-index 24 !over-drive ?clang Do !b1 0 Silence !left !right !centre (?beat,4)* !time ( (>centre,0), (>b1 Done dbs-6 !b1,(>time,(?beat,8)*)+ !time) )MixAt !centre ( 1,200, { ( (>centre,0), (?b1, (>time,(?beat,8)*)+ !time) )MixAt !centre } )Repeat [ clang medium ] 750 !length 3 !order "b6b" note !pitch 200 !wide-point 500 !narrow-point 0.7 !narrow-amount (1,0) !a (1,2000) !b (300,0.5) !c (400,0.25) !d (?length,0) !e 12 !modulation-index 3 !over-drive 2500 !post-cut-low "b4b" Note !post-cut-high ?clang Do Done !b2 ( (?b2,0), (?b2,50) )MixAt Normalise dbs-18 !b2 (?beat,21)* !time ( 1,200, { ( (>centre,0), (?b2,(>time,(?beat,8)*)+ !time) )MixAt !centre ( (>left,0), (?b2,?time) )MixAt !left } )Repeat [ clang high ] 750 !length 3 !order "b6b" note !pitch 100 !wide-point 200 !narrow-point 0.9 !narrow-amount (1,0) !a (1,2000) !b (300,0.5) !c (400,0.25) !d (?length,0) !e 12 !modulation-index 3 !over-drive 5000 !post-cut-low "b6b" Note !post-cut-high ?clang Do Done !b2 ( (?b2,0), (?b2,50) )MixAt Normalise dbs-24 !b3 (?beat,29.5)* !time ( 1,200, { ( (>centre,0), (?b3,(>time,(?beat,8)*)+ !time) )MixAt !centre ( (>right,0), (?b3,?time) )MixAt !right } )Repeat (>b3,0.75)DirectRelength !b3 (?beat,62.75)* !time ( 1,200, { ( (>centre,0), (?b3 dbs-3,(>time,(?beat,8)*)+ !time) )MixAt !centre ( (>right,0), (?b3 dbs+3,(?time,30)-) )MixAt !right } )Repeat [ high dong in middle ] (?b1,1.5)DirectReLength !b4 (?beat,40)* !time ( 1,20, { ( (>centre,0), (?b4,(>time,(?beat,8)*)+ !time) )MixAt !centre } )Repeat (?b1,(5,3)/)DirectReLength !b5 (?beat,49)* !time ( 1,200, { ( (>centre,0), (?b5 dbs-6,(>time,(?beat,8)*)+ !time) )MixAt !centre ( (>left,0), (?b5,?time) )MixAt !left } )Repeat [ ting te te te high ] 8000 !length 2 !order "b1b" note !pitch 1000 !wide-point 1500 !narrow-point 0.9 !narrow-amount (1.5,0) !a (1,1000) !b (5000,0.5) !c (7000,0.25) !d (?length,0) !e 18 !modulation-index 6 !over-drive 5000 !post-cut-low 32 !post-cut-high ?clang Do Done !b6 (>b6,16)DirectRelength !b6 !b6-source (?beat,4)/ !qbeat ( (?b6 dbs+6,0), (?b6 ,?qbeat), (?b6 ,(?qbeat,2)*), (?b6 ,(?qbeat,3)*) )MixAt Normalise dbs-12 !b6 (?beat,58.1)* !time ( 1,200, { ( (>right,0), (?b6 dbs-6,(>time,(?beat,8)*)+ !time) )MixAt !right ( (>left,0), (?b6,(?time,30)+) )MixAt !left ( (>centre,0), (?b6,?time) )MixAt !centre } )Repeat [ Dong massive ] (?beat,62.9)* !time 1500 !length 3 !order "f3" note !pitch 1000 !wide-point 1300 !narrow-point 0.95 !narrow-amount (2.5,0) !a (1,500) !b ( 750,0.25) !c (1400,0.25) !d (?length,0) !e 12 !modulation-index 36 !over-drive "f5" Note !post-cut-high "f1" Note !post-cut-low ?clang Do Done !b7 ( 1,200, { ( (>centre,0), (?b7 ,(>time,(?beat,8)*)+ !time) )MixAt !centre } )Repeat (>b6-source,(2,3)/)DirectRelength !b8 (?beat,4)/ !qbeat ( (?b8 dbs+6,0), (?b8 ,?qbeat), (?b8 ,(?qbeat,2)*), (?b8 ,(?qbeat,3)*) )MixAt Normalise dbs-12 !b8 (?beat,(60,16)+)* !time ( 1,200, { ( (>right,0), (?b8 dbs-6,(>time,(?beat,8)*)+ !time) )MixAt !right ( (>centre,0), (?b8,(?time,30)+) )MixAt !centre } )Repeat [ Stich it all together ] ( (>left,0), (?signal,50), (?centre,0) )MixAt Normalise !left ( (>right,0), (>signal,0), (>centre,0) )MixAt Normalise !right (>left,>right) } !play 750 !beat ?play Do !750 760 !beat ?play Do !800 >750 Done !bus1 >800 Done !bus2 ( ?bus1 GetStart, ?bus2 GetRest GetStart )Mix Normalise !left ( ?bus1 GetRest GetStart, ?bus2 GetStart )Mix Normalise !right [ ( ((48,?beat)*,?left length,?left)Cut, ((48,?beat)*,?right length,?right)Cut )StereoMonitor ] ( 1,12, { !t {((30,(?t,10)*)+ Silence,?left)Concatenate } Do !nlTask {((40,(?t,10)*)+ Silence,?right)Concatenate} Do !nrTask {((?nlTask Done, -18)Volume,2000,1)DirectLowPass} Do !nlTask {((?nrTask Done, -18)Volume,2000,1)DirectLowPass} Do !nrTask {(?nlTask Done, ?left) Mix Normalise} Do !nlTask {(?nrTask Done, ?right)Mix Normalise} Do !nrTask ?nlTask Done !left ?nrTask Done !right } )Repeat ((>left,>right),"temp/tone.wav")WriteFile32
I really liked your Information. Keep up the good work. Junk Yard
ReplyDelete