From df5475c5c7e00c2f7e8c0a4f605fb5a8d2848dd4 Mon Sep 17 00:00:00 2001 From: Paul-Louis NECH Date: Sat, 27 Nov 2021 17:44:42 +0100 Subject: [PATCH] live: Practice OPERATE!!1! --- live/dnb/giorgio_s_drums.tidal | 3 --- live/hip/lofi/du_miel.tidal | 2 -- live/midi/nova/breaks/solar.tidal | 2 +- live/midi/nova/dnb/break_the_loop.tidal | 7 ++++--- live/midi/nova/lounge/invoque_ete.tidal | 7 ++++--- live/midi/nova/lounge/top_hats.tidal | 33 +++++++++++---------------------- live/midi/nova/party/last_one.tidal | 34 +++++++++++++++++++++++----------- start_and_midi.scd | 44 +++++++++++++++++++++++++++++++++++++++++++- 8 files changed, 86 insertions(+), 46 deletions(-) diff --git a/live/dnb/giorgio_s_drums.tidal b/live/dnb/giorgio_s_drums.tidal index a0219b0..a63e358 100644 --- a/live/dnb/giorgio_s_drums.tidal +++ b/live/dnb/giorgio_s_drums.tidal @@ -1,7 +1,4 @@ - - do --- resetCycles d1 $ mask "" $ fast 2 diff --git a/live/hip/lofi/du_miel.tidal b/live/hip/lofi/du_miel.tidal index 45f8791..b748468 100644 --- a/live/hip/lofi/du_miel.tidal +++ b/live/hip/lofi/du_miel.tidal @@ -1,5 +1,3 @@ - - do resetCycles setcps (82/60/4) diff --git a/live/midi/nova/breaks/solar.tidal b/live/midi/nova/breaks/solar.tidal index 7b52217..6f409b8 100644 --- a/live/midi/nova/breaks/solar.tidal +++ b/live/midi/nova/breaks/solar.tidal @@ -18,7 +18,7 @@ d1 $ g1 $ m -- $ fix (# cut 1) ("808bd") $ midiOn "^42" (<| "k k k k]>") $ midiOff "^42" (<| "k . ~ k*<1!3 2 2 2 1 2> <~ ~ k >") - $ "[jazz,<808bd:2!6 808bd:1!2>,hh:5]" + $ "[jazz,808bd:1,hh:5]" # midiG' "^78" 0 1.3 d3 $ g1 $ m -- Snare $ mask "" diff --git a/live/midi/nova/dnb/break_the_loop.tidal b/live/midi/nova/dnb/break_the_loop.tidal index aa3c970..d985301 100644 --- a/live/midi/nova/dnb/break_the_loop.tidal +++ b/live/midi/nova/dnb/break_the_loop.tidal @@ -11,12 +11,13 @@ d1 -- TODO: Improve kick. Sound? Rhythm? $ gF $ midiOn "^42" (mask "t(1,4)") -- $ mask "" - $ fix (|* gain 0.9) ("kick") - $ fix ((|* gain 0.75) . (# att 0.35) . (# rel 1) + $ fix ((|* gain 0.8) . (# att 0.05) . (# rel 1)) ("kick") + $ fix ((|* gain 0.75) + . (# att 0.25) . (# rel 1) ) ("reverbkick") $ midiOn "^41" (<| "k k k]>") -- Run & stumble $ midiOff "^41" (<| "k . ~ k ~ ~") -- L'attente - $ "jazz" + $ "[jazz,reverbkick,kick:5]" # midiG' "^78" 0 1.3 d2 $ gF $ gM -- Snare glitch high -- $ midiOn "^43" (superimpose (<| )) FIXME LATER SNARE MOD diff --git a/live/midi/nova/lounge/invoque_ete.tidal b/live/midi/nova/lounge/invoque_ete.tidal index 537be0b..ac88a82 100644 --- a/live/midi/nova/lounge/invoque_ete.tidal +++ b/live/midi/nova/lounge/invoque_ete.tidal @@ -26,7 +26,7 @@ d2 $ f1 $ m -- Clave de l'été # midiG' "^79" 0 1.4 # speed (range 0 2 "^51") d4 $ f1 $ m -- Mecano Course - $ fast 4 + -- $ fast "<<4 2> 4!7 2!4 2 2 4 8>" $ midiOn "^76" (fast "<2!3 <4 [4 2]>>" . (# speed 1.2) . (>| "breaks165")) $ midiOn "^44" (slice 16 ("0*<1 2> 1 2 3*<2 1>") . (>| "breaks125")) -- $ midiOn "^76" (slice 8 "0 <1 ~> 7 3*<1 2 4 4>") @@ -58,7 +58,7 @@ d6 $ f2 $ m -- Douce guitare juxée # midiG' "^82" 0 1 # release (range 2 0.15 "^34") # crushbus 61 (range 8 1.4 "^54") - # pan 0.75 + # pan 0.85 # room 0.2 # dry 1 # cut 3 d7 $ f2 $ m @@ -70,7 +70,7 @@ d7 $ f2 $ m # room 0.2 # midiG' "^83" 0 1.4 # cut 7 -d8 $ f2 $ m -- Angels of moogland +d12 $ f2 $ m -- Angels of moogland $ midiOn "^92" (|+ note 12) $ midiOn "^60" ( superimpose ( @@ -83,6 +83,7 @@ d8 $ f2 $ m -- Angels of moogland # octave 4 # room 0.24 # "moogBass" + # crushbus 81 (range 16 1.4 "^56") -- Even an angel can fall in love # midiG' "^84" 0 1.3 diff --git a/live/midi/nova/lounge/top_hats.tidal b/live/midi/nova/lounge/top_hats.tidal index e303ad4..168359a 100644 --- a/live/midi/nova/lounge/top_hats.tidal +++ b/live/midi/nova/lounge/top_hats.tidal @@ -9,27 +9,21 @@ let prog = ("") let chorus = pF "chorus" let mix = pF "mix" let modIndex = pF "modIndex" -- 0.2 -let gG a = (gain (1.2 * "^77" * a)) -- gain Global -let gM' l h a = (gG (range l h a)) -- gain Modéré -let gM a = (gM' 0.2 0.8 a) -- gain Modéré doux let gDJF = (# djfbus 1 (range 0.1 0.9 "^49")) --- let gFreqL = (# lpq (range 0 0.25 "^29")) --- let gFreqH = (# hpq (range 0 0.25 "^30")) --- let gFreqs = (gFreqH . gFreqL) let g = (gDJF) setcps 0.5 d1 $ g + $ fix (|* gain 0.75) "kick:5" $ midiOn "^41" ( -- KICK RUN - ((>| "[jazz,kick:5]*<4 4 4 [4!3 8] 4 4 2 <2 [2 8]>>") . (|* gain 0.35)) + ((>| "[jazz,kick:5]*<4 4 4 [4!3 8] 4 4 2 <2 [2 8]>>") . (|* gain 0.8)) ) $ midiOff "^41" (<| "[k([1|<3!3 5 [3 8]>],8)]*<1!16 2!16>") $ "hh27" # n "[5,6]" - # gM' 0 4 "^78" + # midiG' "^78" 0 2 d2 $ g -- Breathing snare contretemps $ midiOn "^43" (fast "<2 2 2 2 4 2 2 4 4>") - $ "~ [hh27:7,snare:13]" - # room 0.6 # sz 0.7 # dry (slow 20 $ range 0 2 perlin) - # gM' 0.5 1.8 "^79" + $ "~ [snare:12,drum:2]" + # midiG' "^79" 0.5 1.8 d3 -- Runny Maracas $ g $ whenmod 16 8 (often $ fast 2) @@ -37,7 +31,7 @@ d3 -- Runny Maracas $ fix ((|* gain 0.9) . (# release 0.8)) (n 9) $ "hh27*8" # n "2 <2 <[2|9] [9 <9 ~> <~ 9> 2]>>" - # gM' 0.25 1.75 "^80" + # midiG' "^80" 0.25 1.75 d6 $ g -- Guitar riffs $ whenmod 16 12 (off "h" ( chop 4 @@ -55,7 +49,7 @@ d6 $ g -- Guitar riffs # pan 0.9 # room 0.3 # sz 0.9 - # gM' 0.4 1.5 "^81" + # midiG' "^81" 0.4 1.5 d4 -- Rhodes base + chords $ g $ midiOn "^58" (superimpose ( -- ARPS <3 @@ -76,7 +70,7 @@ d4 -- Rhodes base + chords # modIndex "[0,5,10]" # pan 0.8 # crushbus 4 (range 10 4 "^54") - # gM' 0.3 1.9 "^82" + # midiG' "^82" 0.3 1.9 d5 $ g -- Choirs + arps $ juxBy "0.7" ( arp ">" @@ -87,7 +81,8 @@ d5 $ g -- Choirs + arps $ "moogBass" # note (prog + "[0,24]") # octave 3 - # midiG' "^56" 0 1.2 + # crushbus 51 (range 13 4.5 "^56") + # midiG' "^84" 0 1.2 # pan 0.2 # chorus 0.6 d8 $ g -- Electrified laggy moog @@ -97,14 +92,8 @@ d8 $ g -- Electrified laggy moog $ note (prog + "0 <12!4 12 12 16 <12 16>>") # "moog:2" # crushbus 8 (range 10 3.4 "^55") - # gM' 0 1.8 "^83" + # midiG' "^83" 0 1.8 # legato 2 # cut 8 # pan 0.6 # release 100 -d9 $ g - $ midiOff "^60" (mask "") - $ midiOn "^92" (fast 4) - $ "~ clap" - # note (-8) - # gM' 0 1.5 "^84" diff --git a/live/midi/nova/party/last_one.tidal b/live/midi/nova/party/last_one.tidal index 7d09d30..e79a5ae 100644 --- a/live/midi/nova/party/last_one.tidal +++ b/live/midi/nova/party/last_one.tidal @@ -13,10 +13,10 @@ let prog = " d6'm9 >" -- let prog = "" let progm = "< d e >" d1 $ g - $ midiOn "^41" (<| "k k k ") - $ midiOff "^41" (<| "k . k <~ [<~ k> ]>")-- RubADub - $ "jazz" - # midiG' "^78" 0 1.8 + $ midiOn "^41" (<| "k k k ") -- Kick it! + $ midiOff "^41" (<| "k . k <~ [<~ k> ]>") -- RubADub + $ "[jazz,909,kick:5]" + # midiG' "^78" 0 1.5 d2 $ g $ whenmod 8 4 (ply "1 <1 2 1 1> <2 1 1 2> <1 1 2 1>") $ midiOn "^43" (fast 2) @@ -27,6 +27,17 @@ d3 $ g $ struct "t*[8 <<4 16> 16 <8 [8 4] 4 8> 16>]" $ "h2ogmhh" # n "[10|11|12]*4" # midiG' "^80" 0 1.5 +d3 + $ mask "t . " + $ sometimesBy "0 ^16!6 0" ((|* gain 0.9) . (|/ speed 2)) + $ sometimesBy "^32" (|* speed 1.5) + $ sometimesBy "0 ^52!7" (ply "<2!3 [2!3 1]>") + $ g + $ chop 16 + $ loopAt 2 + $ "break:2" + # cut 3 + # midiG' "^80" 0 1.5 d4 $ g -- Bassline $ swingBy "h" 8 $ midiOn "^57" (degradeBy $ "0 1!3 0 1!2 0" * 0.5) @@ -49,6 +60,7 @@ d5 $ g -- Nappes plage )) $ note (prog - 12) # "moog:2" + # crushbus 50 (range 10 1.2 "^54") # midiG' "^82" 0 1 # attack 0.8 # room 0.4 # sz 0.9 @@ -56,27 +68,27 @@ d6 -- Guitare nostalgique $ midiOn "^59" (slice 4 "0 1 2 3") $ mask "" $ "fguitar" # n "<34!32 35!16 34!16>" - # midiG' "^83" 0 1.4 + # midiG' "^83" 0 1 # crushbus 60 (range 10 2.85 "^55") # pan 0.65 # cut 6 -d7 $ g +d7 $ g -- C-Bows $ midiOn "^60" (mask "t([4 <8 8 4 8>],16)") $ superimpose ( (>| note ( "<0 <-1 2>>" + "0(3,8) 0" )) . (|+ note 24) - . (|* gain (0.6 * (range 0 1.25 "^56"))) + . (|* gain (range 0 1 "^56")) ) - $ note ( + $ note ( -- Graves! progm - + "<0 0 10 0> <7 12>" + + "<0 0 10 0> <7 12>" -- FIXME? + "0 . [0!3 ~] 0*<1!7 2>" ) # "cbow:8" # pan "<0.7!7 0.3>" - # midiG' "^84" 0 (1.5 * "^20") + # midiG' ("^84" * "^20") 0 0.9 d8 $ g $ midiOn "^60" (off "q" (# n 11) . (|* gain 0.95)) $ note ( @@ -86,4 +98,4 @@ d8 $ g ) # "cbow" # n "[9,<~!4 10!4>]" # pan "<0.3!7 0.7>" - # midiG' "^84" 0 1.5 + # midiG' ("^84" * "^36") 0 1 diff --git a/start_and_midi.scd b/start_and_midi.scd index cead5e6..4befcfa 100644 --- a/start_and_midi.scd +++ b/start_and_midi.scd @@ -2,6 +2,17 @@ var on, off, cc; var osc; + +// Send OSC messages to Hydra +//var hydra = NetAddr.new("127.0.0.1", 3333); +//OSCFunc({ |msg, time, tidalAddr| +// var latency = time - Main.elapsedTime; +// msg = msg ++ ["time", time, "latency", latency]; +// msg.postln; +// hydra.sendBundle(latency, msg) +//}, '/play2').fix; + + osc = NetAddr.new("127.0.0.1", 6010); MIDIClient.init; @@ -38,6 +49,9 @@ if (~stopMidiToOsc != nil, { // Evaluate the line below to stop it. // ~stopMidiToOsc.value; +// MIDI OUT +// ~midiOut = MIDIOut.newByName("iO4", "iO4 iO4"); // Alesis iO4 + /* This is an example startup file. You can load it from your startup file @@ -48,7 +62,9 @@ This is an example startup file. You can load it from your startup file ( // configure the sound server: here you could add hardware specific options // see http://doc.sccode.org/Classes/ServerOptions.html -s.options.numBuffers = 1024 * 256; // increase this if you need to load more samples +// Increased from 1024 * 256 +s.options.numBuffers = 1024 * 512; // increase this if you need to load more samples +// Increased from 8192 * 32 s.options.memSize = 8192 * 32; // increase this if you get "alloc failed" messages s.options.numWireBufs = 128; // increase if "exceeded number of wire buffer" messages s.options.maxNodes = 4096 * 32; // increase this if you are getting drop outs and the message "too many nodes" @@ -57,12 +73,18 @@ s.options.numInputBusChannels = 2; // set this to your hardware output channel s // boot the server and start SuperDirt s.waitForBoot { ~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels + //~dirt.doNotReadYet = true; // Lazy-loading https://club.tidalcycles.org/t/superdirt-lazy-samples-loading/3148 ~dirt.loadSoundFiles; // load samples (path containing a wildcard can be passed in) // for example: ~dirt.loadSoundFiles("/Users/myUserName/Dirt/samples/*"); + ~dirt.loadSoundFiles("/home/pln/.local/share/SuperCollider/downloaded-quarks/Dirt-Samples/*"); + ~dirt.loadSoundFiles("/home/pln/Work/Sound/Samples/extra/*"); // s.sync; // optionally: wait for samples to be read ~dirt.start(57120, 0 ! 12); // start listening on port 57120, create two busses each sending audio to channel 0 + ~dirt.soundLibrary.addMIDI(\midi, ~midiOut); // Connect `midi` synth to iO4 + ~looper = TidalLooper(~dirt); // Start TidalLooper on top :) + ~looper.linput = 1; // optional, needed for convenient access from sclang: ( @@ -71,6 +93,26 @@ s.waitForBoot { ~d7 = ~dirt.orbits[6]; ~d8 = ~dirt.orbits[7]; ~d9 = ~dirt.orbits[8]; ~d10 = ~dirt.orbits[9]; ~d11 = ~dirt.orbits[10]; ~d12 = ~dirt.orbits[11]; ); + + + // Setup Mutable synths + // Verb as a global effect: https://club.tidalcycles.org/t/mutable-instruments-ugens/2730/22 +// (1..SuperDirt.maxSampleNumChannels).do { |numChannels| +// SynthDef("global_mi_verb" ++ numChannels, { |dryBus, effectBus, verbwet=0, verbtime=0, verbdamp=0, verbhp=0, verbfreeze=0, verbdiff=0, verbgain=0| +// var signal = In.ar(dryBus, ~dirt.numChannels); +// signal = MiVerb.ar(signal, verbwet, verbtime, verbdamp, verbhp, verbfreeze, verbdiff); +// Out.ar(effectBus, signal * verbgain) +// }, [\ir, \ir]).add; +// }; + +// ~dirt.orbits.do { |x| +// // var clouds = GlobalDirtEffect(\global_mi_clouds, [\cloudspitch, \cloudspos, \cloudssize, \cloudsdens, \cloudstex, \cloudswet, \cloudsgain, \cloudsspread, \cloudsrvb, \cloudsfb, \cloudsfreeze, \cloudsmode, \cloudslofi]); +// var verb = GlobalDirtEffect(\global_mi_verb, [\verbwet, \verbtime, \verbdamp, \verbhp, \verbfreeze, \verbdiff, \verbgain]); +// x.globalEffects = ~dirt.orbits[0].globalEffects.addFirst(verb); +// x.initNodeTree; + +// // x.set(\fadeTime, 0.01); // What was that for again? :think: +// }; }; s.latency = 1; // increase this if you get "late" messages -- libgit2 0.27.0