Fixes / add touch
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Wed, 1 Jun 2022 19:02:13 +0000 (22:02 +0300)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Wed, 1 Jun 2022 19:02:13 +0000 (22:02 +0300)
extensions/classes/midiremotesl.sc
startup.scd

index 53f74ca..12ea5c2 100644 (file)
@@ -16,6 +16,7 @@ MidiRemote25SL : MidiHandler {
   var <>key;
   var <>bend;
   var <>mod;
+  var <>touch;
 
   *new {|name='Novation SL25 ReMOTE MKII', midiNames=#["ReMOTE SL", "ReMOTE SL MIDI 1", "ReMOTE SL MIDI 1"], reveal=true|
     ^super.newCopyArgs(name, midiNames, reveal).midiInit.controlInit;
@@ -24,10 +25,10 @@ MidiRemote25SL : MidiHandler {
   controlInit {
     // key pressed/released
     MIDIdef.noteOn((\keyDown++name).asSymbol, {|...args|
-      key.value(true, *args);
+      key.value(true, args[0].linlin(0, 127, 0, 1), args[1], *args);
     }, (0..127), srcID: idin);
     MIDIdef.noteOff((\keyUp++name).asSymbol, {|...args|
-      key.value(false, *args);
+      key.value(false, args[0].linlin(0, 127, 0, 1), args[1], *args);
     }, (0..127), srcID: idin);
 
     // bend
@@ -40,9 +41,14 @@ MidiRemote25SL : MidiHandler {
       mod.value(args[0].linlin(0, 127, 0, 1), *args);
     }, 66, srcID: idin);
 
+    // pressure
+    MIDIdef.touch((\touch++name).asSymbol, {|...args|
+      touch.value(args[0].linlin(0, 127, 0, 1), *args);
+    }, srcID: idin);
+
     // initialize handlers with revealing code
     [
-      \key, \bend, \mod
+      \key, \bend, \mod, \touch
     ].do{|handlerName|
       this.perform((handlerName++\_).asSymbol, {|...args|
         this.noCallback(handlerName, *args);
@@ -53,7 +59,7 @@ MidiRemote25SL : MidiHandler {
 
   free {
     [
-      \keyDown, \keyUp, \bend, \mod
+      \keyDown, \keyUp, \bend, \mod, \touch
     ].do{|prefix|
       var defName = (prefix ++ name).asSymbol;
       MIDIdef(defName).free;
index 03bad72..b0e9e22 100644 (file)
@@ -33,14 +33,14 @@ SynthDef(\buti, {|out=0, amp=1, pan=0, t_trig=0, accent=0.1, freq=200, tone=0.5,
 
 // Subtract synth pad
 SynthDef(\dyti, {
-  | out=0, gate=1, freq=440, amp=1, cut=800, rez=0.8,
+  | out=0, gate=1, freq=440, amp=1, pan=0, doneAction=2, cut=800, rez=0.8,
     modFreqMin=7, modFreqMax=12, modAmp=0.01, release=1.0 |
   var sig = 0;
   var modFreq = SinOsc.kr(Rand(modFreqMin, modFreqMax), 0, modAmp, 1);
   sig = sig + Pulse.ar(freq * modFreq);
   sig = RLPF.ar(sig, cut, rez);
-  sig = sig * EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: 2);
-  sig = Pan2.ar(sig, Rand(-0.3, 0.3));
+  sig = sig * EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: doneAction);
+  sig = Pan2.ar(sig, pan);
   Out.ar(out, sig * amp);
 }).add;
 
@@ -61,7 +61,7 @@ SynthDef(\leto, { |freq = 440, sustain = 1, amp=1, out=0|
 }).add;
 
 // round membrane drum continuous
-SynthDef(\liwe, {|out=0, amp=1, pan=0, t_trig=0, tension=0.05, loss=0.99999, impact=0.025|
+SynthDef(\liwe, {|out=0, amp=1, pan=0, t_trig=0, tension=0.05, loss=0.99999, impact=0.1|
   var sig, excitation;
   excitation = EnvGen.kr(Env.perc, t_trig, timeScale: impact, doneAction: 0);
   excitation = excitation * PinkNoise.ar();