A visualisation of Sonic Field's rendering 'Bells Of Time' |
Sonic Field has stabilised enough to be released under AGPL-3. It is still very rough, but can do some very complex programmatic compositions, synthesises and audio processes. It is time to let others see the code I have written (gulp).
It is true that there are many software, programming language based audio processing systems out there already. Supercollider is a famous example of the genre. However, I do feel that the area of arbitrary complexity non real time processing and synthesis is neglected. Further, the current batch of such systems are largely written in C or C++ and come from a single threaded, non distributed computational paradigm.
Sonic Field has a full multi-threaded, parallel programming model and is written entirely in cross platform, pure Java. Sonic Field uses the Spring Framework for services and it is my aim to create a web/html5 based UI for it using Spring MVC (work in progress as we speak).
For more information on Sonic Field, check out the blog I have create for it! This will become the main place for documentation for Sonic Field. There is no point supporting a full documentation system and useful commenting system (even if anyone uses it) when blogger does it all for you! You can download Sonic Field from the main Sonic Field website:
So what can Sonic Field Really Do?
My favourite piece from Sonic Field (so far) is Acceptance. I like it because I hand crafted each note rather than use some form of automatic envelope and pitch system based on lists of notes as I have in other compositions.
So, to finish this post, here is the patch which creates Acceptance:
[Absolute brick wall at 20KHz] (20000 Period,50)SincShape NormaliseArea !brick { (>signal,>brick)Convolve Normalise }!brick-wall-filter { (>length,2)* !length (?length,(?pitch,2)-)SinWave !signal1 (?length,(?pitch,2)+)SinWave !signal2 (?length,(?pitch,1.2)*)SinWave dbs+48 !fm1 (?length,(?pitch,1.3)*)SinWave dbs+12 !fm2 ( ( ?signal1, >fm1 )FrequencyModulate, ( >signal2 dbs-24, >fm2 )FrequencyModulate, )Mix Normalise !signal ( >signal, ( (100 WhiteNoise,?pitch,2)DirectLowPass, ( (0,0), (20,1), (100,0) )NumericShape )Multiply )Mix Normalise !signal ( (0,-99), (50,0), (?length,-99) )SimpleShape !env ( >signal, >env )Multiply !signal (>signal,(?pitch,2)*,2)DirectHighPass !signal (>signal,(?pitch,1)*,?dullness)DirectlowPass !signal }!play-bell { (?sample,1000,5)DirectLowPass !sampleL (?sample,3000,2)DirectLowPass !sampleN (?sample,1000,4)DirectHighPass !sampleH (>sampleH,5000,2)DirectLowPass !sampleH (?sample,((?first ,?offset)+ Prime Silence,(?sample,-13)Volume)Concatenate)Mix !wet ( 1,2, { !z (>first,1.2)* Prime !first (>wet,(((?first,30)-,?offset)- Silence,(?sampleL,(-10,?z)-)Volume)Concatenate)Mix !wet (>wet,(((?first,30)+,?offset)- Silence,(?sampleN,(-6, ?z)-)Volume)Concatenate)Mix !wet (>wet,((?first ,?offset)- Silence,(?sampleH,(-10,?z)-)Volume)Concatenate)Mix !wet } )Repeat (?sampleL,1000,1)DirectLowPass !sampleL (?sampleN,1000,1)DirectLowPass !sampleN (?sampleH,2000,1)DirectLowPass !sampleH ( (0,0), ((?wet Length,3)/,1), (?wet Length,0) )NumericShape !env ( 3,20, { !z (?z,2)/ !z (>first,1.1)* Prime !first (>wet,(((?first,30)-,?offset)- Silence,((?sampleL,(-7,?z)-)Volume,?env)Multiply)Concatenate)Mix !wet (>wet,(((?first,30)+,?offset)- Silence,((?sampleN,(-4,?z)-)Volume,?env)Multiply)Concatenate)Mix !wet (>wet,((?first ,?offset)- Silence,((?sampleH,(-7,?z)-)Volume,?env)Multiply)Concatenate)Mix !wet } )Repeat ( 20,40, { !z (?z,3)/ !z (>first,1.05)* Prime !first (>wet,(((?first,30)-,?offset)- Silence,(((?sampleL,(-7,?z)-)Volume,?env)Multiply,500,2)DirectLowPass)Concatenate)Mix !wet (>wet,(((?first,30)+,?offset)- Silence,(((?sampleN,(-4,?z)-)Volume,?env)Multiply,500,2)DirectLowPass)Concatenate)Mix !wet (>wet,((?first ,?offset)- Silence,(((?sampleH,(-7,?z)-)Volume,?env)Multiply,500,2)DirectLowPass)Concatenate)Mix !wet } )Repeat >wet } !reflector { (?length,(?pitch,((Random,0.5)-,5)*)-,Random)PhasedSinWave !signal ?wave-shape Do Done !signal (((?length,500)/ WhiteNoise,2500,6)DirectLowPass,0.001)DirectRelength Normalise !multi (0,?signal Length,>multi)Cut !multi ( (1,>multi pcnt+2 )DirectMix, >signal )Resample !signal (>signal,(?pitch,4)*,1)DirectLowPass Normalise } !string { >signal MakeTriangle } !triangle-shape { >signal MakeSawTooth } !saw-tooth-shape { { (?pitch,4)/ !pitch (?length,4)* !length ( { ?triangle-shape !wave-shape ?string Do Done }, { ?triangle-shape !wave-shape ?string Do Done }, { ?triangle-shape !wave-shape ?string Do Done }, { ?triangle-shape !wave-shape ?string Do Done }, { ?saw-tooth-shape !wave-shape ?string Do Done }, { ?saw-tooth-shape !wave-shape ?string Do Done }, { ?saw-tooth-shape !wave-shape ?string Do Done } )DoAll Mix Normalise !base (>base,4)DirectRelength Normalise } Do Done !sample (>sample,(?pitch,5)*,2)DirectLowPass !sample ((?length WhiteNoise,500,6)DirectLowPass,0.01)DirectResample Normalise !multi (>multi,(?pitch,2)/,6)DirectHighPass Normalise !multi ( (0.5,?multi pcnt+5)DirectMix, >sample )Multiply Normalise !sample (>sample,(?pitch,2)/,6)DirectHighPass Normalise !sample ( ( (0,-99), (150,0), ((?sample Length,2)/,0), (?sample Length,-99) )SimpleShape, >sample )Multiply Normalise } !play-strings [ Parameters for play-strings =========================== length pitch Forwards ======== A signal ] { { (?pitchLocal,((Random,0.5)-,6)*)+ !pitch (?lengthLocal,?pitch,Random)PhasedSinWave MakeSawTooth !signal [?brick-wall-filter Do Done !signal] ( ( (?signal Length,1.5)* WhiteNoise, (500,?over-sample)/, 6 )DirectLowPass, 0.01 )DirectResample Normalise !multi (0,?signal Length,>multi)cut !multi (0.5,>multi Normalise pcnt+45)DirectMix !shape ?brick-wall-filter Do Done !signal (>signal,>shape)ShapedThreshold Normalise !signal (>signal,(10000,?over-sample)/,6)DirectLowPass }!horn (1,(?pitch,100)/)Min !over-sample (?pitch,?over-sample)/ !pitchLocal (?length,?over-sample)* !lengthLocal ( ?horn, ?horn, ?horn, ?horn, ?horn, ?horn, ?horn, ?horn )DoAll Mix Normalise !signal (>signal,?over-sample)DirectRelength Normalise !signal ?signal Length !length ( (0,0.1), ((?length,2)/,0.5), (?length,0.1) )NumericShape !resonance ( (0,?pitch), ((?length,2)/,(?pitch,4)*), (?length,?pitch) )NumericShape !cutoff ( >signal, >cutoff, >resonance )ShapedLadderFilter !signal ( (0,0), (?attack,(1,?softness)-), ( ((?attack,4)*,(?length,2)/)Min, -10 ), ( ((?attack,4)*,(?length,0.8)*)Min, -10 ), (?length,0) )NumericShape !envelope (>signal,12,1)DirectHighPass Normalise !signal ( >signal, >envelope )Multiply Normalise !signal-horn [Add softness] ( (0, (?pitch,8)/), (?attack,(?pitch,4)/), (?length,12) )NumericShape !cutoff ( (0,0.25), (?attack,0.5), (?length,0) )NumericShape !resonance ( (?length WhiteNoise,(?pitch,1)*,(?pitch,4)*,?filter-factor)DirectBandPass, >cutoff, >resonance )ShapedLadderFilter !signal-soft ( (0,-60), ((?attack,4)/,-6), (?attack,0), ( ((?attack,4)*,(?length,2)/)Min, -10 ), (?length,-60) )SimpleShape !envelope (?signal-soft,0.95,0.15,?pitch Period)ResonantFilter Normalise !signal-soft (>signal-soft,(?pitch,1)*,1)DirectLowPass !signal-soft (>signal-soft,12,1)DirectHighPass Normalise !signal-soft ( >signal-soft, >envelope )Multiply !signal-soft (>signal-soft,?softness)NumericVolume !signal-soft ( >signal-horn, >signal-soft )Mix Normalise } !play-horn [ Parameters for play-horn: ========================= length pitch softness [0 to 1] attack filter-factor [1 to 4] Forwards ======== A signal ] { (((?signal, ?drive-left )NumericVolume,?delay-left ))MixAt !left (((?signal, ?drive-right)NumericVolume,?delay-right))MixAt !right ( (?left pcnt+40,0), (?right pcnt+2,(?room-size,0.5)*), (?right pcnt+2,(?room-size,0.75)*), (?right pcnt+2,?room-size) )MixAt !left ( (?right pcnt+90,0), (?left pcnt+2,(?room-size,0.5)*), (?left pcnt+2,(?room-size,0.75)*), (?left pcnt+2,?room-size) )MixAt !right ( (?right pcnt+5,(?room-size,2)/), (?left pcnt+5,(?room-size,2)/) )MixAt !middle ( ?left, ?middle )Mix Normalise !left ( ?right, ?middle )Mix Normalise !right [ Remove any initial click ] ( ( (0,-99), (100,0), (?right Length,0) )SimpleShape, >right )Multiply !right ( ( (0,-99), (100,0), (?left Length,0) )SimpleShape, >left )Multiply !left (>left,>right) }!place-in-room [ Parameters For place-in-room ============================ delay-left drive-left delay-right drive-right room-size signal Forwards ======== left right bunch ] [ (100000,(10,(2,0.5)**)* )SinWave !sqrt2-samples (100000,(10,(3,0.5)**)* )SinWave !sqrt3-samples (100000,(10,(5,0.5)**)* )SinWave !sqrt5-samples (100000,(10,(7,0.5)**)* )SinWave !sqrt7-samples ] { ?place-in-room Do Done !bus ?bus GetStart !leftTone >bus GetRest GetStart !rightTone ((>left, 0),((>leftTone,?volume)Volume, ?pos))MixAt !left ((>right,0),((>rightTone,?volume)Volume,?pos))MixAt !right }!mix-in 1 Silence !left !right 0 !pos 1500 !beat 0 !volume [ Start -=======- ] [ Note 1 Bar 1 Beat 1] (?beat,2)/ !length "e4b" Note !pitch 0.8 !softness 250 !attack 2 !filter-factor ?play-horn Do Done Normalise !signal (>signal,?pitch,(?pitch,2)*,4)DirectBandPass !signal 500 !room-size 50 !drive-left !drive-right 0 !delay-left 0 !delay-right ?mix-in invoke (?pos,?beat)+ !pos [ Note 2 Bar 1 Beat 2] (?beat,0.8)* !length "e4b" Note !pitch 0.2 !softness 50 !attack 4 !filter-factor ?play-horn Do Done Normalise !signal (>signal,?pitch,(?pitch,3)*,4)DirectBandPass !signal [ Room as above ] ?mix-in invoke (?pos,?beat)+ !pos [ Note 3 Bar 1 Beat 3-6] (?beat,2.9)* !length "e4b" Note !pitch 0.5 !softness 500 !attack 4 !filter-factor ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)/,(?pitch,4)*,2)DirectBandPass !signal [ Room as above ] ?mix-in invoke (?pos,(?beat,4)*)+ !pos [6 beats] [ Note 4 Bar 2 Beat 1-4] (?beat,2.9)* !length "D4" Note !pitch 0.5 !softness 500 !attack 4 !filter-factor ?play-horn Do Done Normalise !signal (>signal,(?pitch,1)/,(?pitch,2)*,4)DirectBandPass !signal ( ( 0.75, ((0,1),(?signal length,3))Slide pcnt+25 )DirectMix, >signal )Multiply Normalise !signal [ As Above ] ?mix-in invoke (?pos,(?beat,4)*)+ !pos [6 beats] [First Strong Note - third bar] [ Note 5 Bar 3 Beat 1-4 Reverse pattern long-short-short ] (?beat,2.9)* !length "G4" Note !pitch 0.5 !softness 500 !attack 4 !filter-factor ?play-horn Do Done Normalise !signal ( ( 0.75, ((0,1),(?signal length,3))Slide pcnt+25 )DirectMix, >signal )Multiply Normalise !signal 500 !room-size 25 !drive-left 75 !drive-right 50 !delay-left 0 !delay-right ?mix-in invoke (?pos,(?beat,4)*)+ !pos [ Note 6 Bar 3 beat 5 ] (?beat,0.66)* !length "F4" Note !pitch 0.0 !softness 100 !attack 4 !filter-factor ?play-horn Do Done Normalise !signal 500 !room-size 75 !drive-left 25 !drive-right 0 !delay-left 50 !delay-right ?mix-in invoke (?pos,(?beat,1)*)+ !pos [ Note 7 Bar 3 beat 6 ] (?beat,0.66)* !length "F4" Note !pitch 0.0 !softness 100 !attack 4 !filter-factor ?play-horn Do Done Normalise !signal [ As Above ] ?mix-in invoke (?pos,(?beat,1)*)+ !pos [ Note 8 Bar 4 beat 1-6 ] (?beat,2.9)* !length "E4b" Note !pitch 0.5 !softness 1000 !attack 2 !filter-factor ?play-horn Do Done Normalise !signal ( ( 0.75, ((0,1),(?signal length,3))Slide pcnt+25 )DirectMix, >signal )Multiply Normalise !signal 500 !room-size 5 !drive-left 95 !drive-right 50 !delay-left 0 !delay-right ?mix-in invoke (?pos,(?beat,6)*)+ !pos [Next Bar - enter strings] [ Note 9 Bar 5 beat 1 ] "e5b" note !pitch (?beat,1.0)* !length ?play-strings Do Done !signal 99 !room-size 5 !drive-left 95 !drive-right 50 !delay-left 0 !delay-right -6 !volume ?mix-in invoke (?pos,(?beat,1)*)+ !pos [ Note 9 Bar 5 beat 1 ] "e5b" note !pitch (?beat,1.0)* !length ?play-strings Do Done !signal [ As Above ] ?mix-in invoke (?pos,(?beat,1)*)+ !pos [ Note 10 Bar 5 beat 3-6 ] "d5" note !pitch (?beat,3.0)* !length ?play-strings Do Done !signal (>signal,((0,-24),(?beat,0),((?beat,3)*,-24))SimpleShape)Multiply !signal [ As Above ] ?mix-in invoke (?pos,(?beat,4)*)+ !pos [Next Bar - continue strings] [ Note 11 Bar 6 beat 1 ] "f5" note !pitch -3 !volume (?beat,1.0)* !length ?play-strings Do Done !signal [ As Above ] ?mix-in invoke (?pos,(?beat,1)*)+ !pos [ Note 12 Bar 6 beat 2 ] "f5" note !pitch (?beat,1.0)* !length ?play-strings Do Done !signal [ As Above ] ?mix-in invoke (?pos,(?beat,1)*)+ !pos [ Note 13 Bar 6 beat 3-6 ] "e5b" note !pitch (?beat,3.0)* !length ?play-strings Do Done !signal (>signal,((0,-24),(?beat,0),((?beat,3)*,-24))SimpleShape)Multiply !signal [ As Above ] ?mix-in invoke (?pos,(?beat,4)*)+ !pos [ Notes 14-19 (triplets) Bar 6 beats 1-2 ] (?beat,3.5)/ !length 0 !volume 0.8 !softness 200 !attack 1 !filter-factor 500 !room-size 25 !drive-left 75 !drive-right 50 !delay-left 0 !delay-right { ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)/,(?pitch,3)*,4)DirectBandPass !signal ?mix-in invoke (?pos,(?beat,3)/)+ !pos }!fffupoot "e4b" Note !pitch ?fffupoot Invoke "f4" Note !pitch ?fffupoot Invoke "g4" Note !pitch ?fffupoot Invoke "f4" Note !pitch ?fffupoot Invoke "e4b" Note !pitch ?fffupoot Invoke "d4" Note !pitch ?fffupoot Invoke [ Note 20 Bar 6 beats 3-6 ] "e4b" Note !pitch (?beat,3.5)* !length 0.5 !softness 250 !attack 4 !filter-factor { ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)/,(?pitch,3)*,1)DirectBandPass !signal ?mix-in invoke (?pos,(?beat,4)*)+ !pos }!fpoot4 ?fpoot4 Invoke [ Note1 21 Bar 7 beats 1-2 ] "f4" Note !pitch (?beat,1.7)* !length 0.5 !softness 250 !attack 4 !filter-factor { ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)/,(?pitch,3)*,1)DirectBandPass !signal ?mix-in invoke (?pos,(?beat,2)*)+ !pos }!fpoot2 ?fpoot2 Invoke [ Note1 22 Bar 7 beats 3-5 ] [ Make it seem more distance and spacy ] (?beat,2.5)* !length 0.9 !softness 500 !attack 1 !filter-factor 900 !room-size 25 !drive-left 75 !drive-right 99 !delay-left 0 !delay-right { ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)/,(?pitch,3)*,4)DirectBandPass !signal ?mix-in invoke (?pos,(?beat,3)*)+ !pos }!fffupoot3 "g4" Note !pitch ?fffupoot3 Invoke [ Note1 23 Bar 7 beat 6 ] ?beat !length 0.8 !softness 200 !attack 1 !filter-factor 500 !room-size 25 !drive-left 75 !drive-right 50 !delay-left 0 !delay-right -3 !volume { ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)/,(?pitch,3)*,1)DirectBandPass !signal ?mix-in invoke (?pos,(?beat,1)*)+ !pos }!fpoot1 "f4" Note !pitch ?fpoot1 Invoke [ Note 24 Bar 8 beats 1-4 ] "d4" Note !pitch 0 !volume (?beat,3.5)* !length 0.5 !softness 250 !attack 4 !filter-factor ?fpoot4 Invoke [ Note1 25 Bar 8 beats 5-6 ] "e4b" Note !pitch (?beat,1.7)* !length 4 !filter-factor ?fpoot2 Invoke [ Note1 26 Bar 9 beats 1-3 ] [ Also start drone rhythum ] [ 100000 !length (?length,32)SinWave !signal (0.5,>signal)DirectMix !signal ( >signal dbs+6, (?length,(1,6)/,0.25)PhasedSinWave Normalise )Mix !signal >signal saturate !signal >signal normalise !signal (>signal,128,4)DirectLowPass Normalise !signal ((0,0),(6000,1),(?signal Length,1))NumericShape !env (>env,>signal)Multiply !signal (?signal,0.99,0.15,48 Period)ResonantFilter Normalise !signalR ( >signal, >signalR )Mix Normalise !signal 500 !room-size 50 !drive-left 50 !drive-right 0 !delay-left 99 !delay-right >volume !v-tmp -12 !volume ?mix-in invoke >v-tmp !volume ] 500 !room-size 25 !drive-left 75 !drive-right 50 !delay-left 0 !delay-right (?beat,2.5)* !length "f4" Note !pitch { ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)/,(?pitch,3)*,1)DirectBandPass !signal ?mix-in invoke (?pos,(?beat,3)*)+ !pos }!fpoot3 ?fpoot3 Invoke [ Note1 27 Bar 9 beat 4 ] ?beat !length -6 !volume 0.9 !softness 250 !attack 1 !filter-factor "e4b" Note !pitch { ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)/,(?pitch,3)*,4)DirectBandPass !signal ?mix-in invoke (?pos,(?beat,1)*)+ !pos }!fffpoot1 ?fffpoot1 Invoke [ Note 28 Bar 9-10 beats 5-2 ] "c4" Note !pitch 0 !volume (?beat,3.5)* !length 0.5 !softness 250 !attack 4 !filter-factor { ?play-horn Do Done Normalise !signal (>signal,(?pitch,3)/,(?pitch,4)*,2)DirectBandPass !signal ?mix-in invoke (?pos,(?beat,4)*)+ !pos }!low-fpoot4 ?low-fpoot4 Invoke [ Note1 29 Bar 10 beats 3-4 ] "d4" Note !pitch (?beat,1.7)* !length 0.2 !softness 125 !attack 4 !filter-factor { ?play-horn Do Done Normalise !signal ?mix-in invoke (?pos,(?beat,2)*)+ !pos }!low-poot2 ?fpoot2 Invoke [ Note1 30 Bar 10-11 beats 4-1 ] (?beat,2.5)* !length "e4b" Note !pitch { ?play-horn Do Done Normalise !signal ?mix-in invoke (?pos,(?beat,3)*)+ !pos }!low-poot3 ?low-poot3 Invoke [ Note1 31 Bar 11 beat 2 ] ?beat !length -3 !volume 0.5 !softness 250 !attack 3 !filter-factor "d4" Note !pitch { ?play-horn Do Done Normalise !signal ?mix-in invoke (?pos,(?beat,1)*)+ !pos }!low-fpoot1 ?low-fpoot1 Invoke [ Note 32 Bar 11 beats 3-6 ] 0 !volume (?beat,9.5)* !length 0.0 !softness 125 !attack 4 !filter-factor { ?play-horn Do Done Normalise !signal [(?signal,(1,(?signal Length,2)SinWave dbs-12)DirectMix)Multiply !signal >signal dbs+3 Saturate Normalise !signal] ?mix-in invoke (?pos,(?beat,6)*)+ !pos }!low-brass-poot6 [ Start string chord] "Starting chord" Println "e5b" note !pitch (?beat,22.0)* !length ?play-strings Do Done !signal (((0,0),(6000,1),(?signal Length,1))NumericShape,>signal)Multiply dbs-12 !signal -12 !volume { 99 !room-size 5 !drive-left 95 !drive-right 50 !delay-left 0 !delay-right }!string-room ?mix-in invoke "f5#" note !pitch (?beat,22.0)* !length ?play-strings Do Done !signal (((0,0),(6000,1),(?signal Length,1))NumericShape,>signal)Multiply dbs-12 !signal ?mix-in invoke "b5b" note !pitch (?beat,22.0)* !length ?play-strings Do Done !signal (((0,0),(6000,1),(?signal Length,1))NumericShape,>signal)Multiply dbs-9 !signal ?mix-in invoke { 500 !room-size 25 !drive-left 75 !drive-right 50 !delay-left 0 !delay-right }!horn-room Invoke [ Note 32 Bar 12 ] "Note 32 Bar 12" Println 0 !volume "b3b" Note !pitch (?beat,5)* !length ?low-brass-poot6 Invoke [ Notes 33-69 (triplets) Bars 13-14] (?beat,3.5)/ !length 0 !volume 0.5 !softness 100 !attack 3 !filter-factor 500 !room-size 25 !drive-left 75 !drive-right 50 !delay-left 0 !delay-right { ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)*,3)DirectLowPass !signal ?mix-in invoke (?pos,(?beat,3)/)+ !pos }!fpoot "Notes 33-69" Println "b3b" Note !pitch ?fpoot Invoke "c4" Note !pitch ?fpoot Invoke "d4" Note !pitch ?fpoot Invoke "c4" Note !pitch ?fpoot Invoke "b3b" Note !pitch ?fpoot Invoke "a3" Note !pitch ?fpoot Invoke "Block 2" Println "a3" Note !pitch ?fpoot Invoke "b3b" Note !pitch ?fpoot Invoke "c4" Note !pitch ?fpoot Invoke "b3b" Note !pitch ?fpoot Invoke "a3" Note !pitch ?fpoot Invoke "g3" Note !pitch ?fpoot Invoke "Block 3" Println "g3" Note !pitch ?fpoot Invoke "a3" Note !pitch ?fpoot Invoke "b3b" Note !pitch ?fpoot Invoke "a3" Note !pitch ?fpoot Invoke "g3" Note !pitch ?fpoot Invoke "f3" Note !pitch ?fpoot Invoke [ Bar 14 ] "Block 4 bar 14" Println "Starting chord" Println "b5b" note !pitch (?beat,22.0)* !length ?play-strings Do Done !signal (((0,0),(6000,1),(?signal Length,1))NumericShape,>signal)Multiply dbs-12 !signal -12 !volume ?string-room invoke ?mix-in invoke "c6#" note !pitch (?beat,22.0)* !length ?play-strings Do Done !signal (((0,0),(6000,1),(?signal Length,1))NumericShape,>signal)Multiply dbs-12 !signal ?mix-in invoke "f6" note !pitch (?beat,22.0)* !length ?play-strings Do Done !signal (((0,0),(6000,1),(?signal Length,1))NumericShape,>signal)Multiply dbs-9 !signal ?mix-in invoke 0 !volume ?horn-room invoke (?beat,3.5)/ !length { ?play-horn Do Done Normalise !signal (>signal,(?pitch,2)*,1)DirectLowPass !signal ?mix-in invoke (?pos,(?beat,3)/)+ !pos }!fpoot "f3" Note !pitch ?fpoot Invoke "g3" Note !pitch ?fpoot Invoke "a3" Note !pitch ?fpoot Invoke "g3" Note !pitch ?fpoot Invoke "f3" Note !pitch ?fpoot Invoke "d3" Note !pitch ?fpoot Invoke "Block 5" Println "d3" Note !pitch ?fpoot Invoke "e3b" Note !pitch ?fpoot Invoke "f3" Note !pitch ?fpoot Invoke "e3b" Note !pitch ?fpoot Invoke "d3" Note !pitch ?fpoot Invoke "b2b" Note !pitch ?fpoot Invoke (?beat,3.5)/ !length { ?play-horn Do Done Normalise !signal ?mix-in invoke (?pos,(?beat,3)/)+ !pos }!fpoot "Block 6" Println "b2b" Note !pitch ?fpoot Invoke "c3" Note !pitch ?fpoot Invoke "d3" Note !pitch ?fpoot Invoke "c3" Note !pitch ?fpoot Invoke "b2b" Note !pitch ?fpoot Invoke "a2" Note !pitch ?fpoot Invoke 500 !attack (?beat,6)* !length "b2b" Note !pitch 2 !volume ?low-brass-poot6 Invoke ((?beat,6)*,>pos)+ !pos "Starting chord" Println "g4" note !pitch (?beat,22.0)* !length ?play-strings Do Done !signal (((0,0),(6000,1),(?signal Length,1))NumericShape,>signal)Multiply dbs-12 !signal -12 !volume ?string-room invoke ?mix-in invoke "b5" note !pitch (?beat,22.0)* !length ?play-strings Do Done !signal (((0,0),(6000,1),(?signal Length,1))NumericShape,>signal)Multiply dbs-12 !signal ?mix-in invoke "d5" note !pitch (?beat,22.0)* !length ?play-strings Do Done !signal (((0,0),(6000,1),(?signal Length,1))NumericShape,>signal)Multiply dbs-9 !signal ?mix-in invoke "Bell 1" Println 6000 !length 4 !dullness "g2" Note !pitch ?play-bell Do Done !signal -6 !volume 100 !room-size 50 !drive-left 50 !drive-right 0 !delay-left 0 !delay-right ?mix-in invoke ((?beat,6)*,>pos)+ !pos "Bell 2" Println ?play-bell Do Done !signal ?mix-in invoke ((?beat,6)*,>pos)+ !pos 0 !Volume "Bell 3" Println ?play-bell Do Done !signal ?mix-in invoke 20000 !length 1 !dullness 75 !delay-left "e2b" Note !pitch ?play-bell Do Done !sample 120 !first 50 !offset ?reflector Do Done !signal ?mix-in invoke ((500 Silence,>left)Concatenate,12,1 )DirectHighPass Normalise !left ((500 Silence,>right)Concatenate,12,1)DirectHighPass Normalise !right "Injecting Rumble" Println ?left Length !length { ?length WhiteNoise !signal (25,180,3)CreateDirectBandPass !filter (>signal,0.9,0.1,55 Period,?filter)FilteredResonantFilter Normalise !signal (25,110,3)CreateDirectBandPass !filter (>signal,0.9,0.5,55 Period,?filter)FilteredResonantFilter Normalise }!big ?big Do !leftLow ?big Do !rightLow ((2000 Silence,>left)Concatenate, >leftLow Done)Mix Normalise !left ((2000 Silence,>right)Concatenate,>rightLow Done)Mix Normalise !right "Starting main reflector" Println 80 !first 0 !offset >left !sample ?reflector Do !left >right !sample ?reflector Do !right >left Done Normalise !left >right Done Normalise !right "Monitoring started" Println (?left,?right) StereoMonitor ((2000 Silence,>left)Concatenate,(2000 Silence,>right)Concatenate)!bus (?bus,"temp/tone.wav")WriteFile32
No comments:
Post a Comment