From 9a32844440a61cda53649eaeb8925abbb2ab0a9e Mon Sep 17 00:00:00 2001 From: Leon Date: Tue, 15 Jul 2025 16:10:24 -0400 Subject: [PATCH] add noise parameter --- lib/Engine_MxSamples.sc | 19 +++++++++++++++---- lib/mx.samples.lua | 10 ++++++++-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/Engine_MxSamples.sc b/lib/Engine_MxSamples.sc index 15fbb5a..651edb6 100644 --- a/lib/Engine_MxSamples.sc +++ b/lib/Engine_MxSamples.sc @@ -67,10 +67,10 @@ Engine_MxSamples : CroneEngine { arg outDelay,outReverb,bufnum, amp=0.0, t_trig=0,envgate=1,name=1, attack=0.015,decay=1,release=2,sustain=0.9, sampleStart=0,sampleEnd=1,rate=1,pan=0, - lpf=20000,hpf=10,delaySend=0,reverbSend=0; + lpf=20000,hpf=10,delaySend=0,reverbSend=0, noiseLevel=0; // vars - var ender,snd; + var ender,snd, noise; ender = EnvGen.ar( Env.new( @@ -95,6 +95,16 @@ Engine_MxSamples : CroneEngine { ]); snd = snd * amp * ender; + // Noise + noise = HPF.ar(in: Mix.new([PinkNoise.ar(0.5), Dust.ar(5,1)]), + freq: 2000, + mul: Amplitude.kr(snd, + attackTime: 0.1, + releaseTime: 0.5, + mul: noiseLevel)); + + snd = Mix.new([snd, noise]); + // SendTrig.kr(Impulse.kr(1),name,1); DetectSilence.ar(snd,doneAction:2); // just in case, release after 1 minute @@ -140,7 +150,7 @@ Engine_MxSamples : CroneEngine { sampleBuffMxSamples[msg[1]] = Buffer.read(context.server,msg[2]); }); - this.addCommand("mxsampleson","iiffffffffffff", { arg msg; + this.addCommand("mxsampleson","iifffffffffffff", { arg msg; var name=msg[1]; if (mxsamplesVoices.at(name)!=nil,{ if (mxsamplesVoices.at(name).isRunning==true,{ @@ -166,7 +176,8 @@ Engine_MxSamples : CroneEngine { \hpf,msg[11], \delaySend,msg[12], \reverbSend,msg[13], - \sampleStart,msg[14] ]).onFree({ + \sampleStart,msg[14], + \noiseLevel,msg[15] ]).onFree({ ("freed "++name).postln; NetAddr("127.0.0.1", 10111).sendMsg("voice",name,0); }); diff --git a/lib/mx.samples.lua b/lib/mx.samples.lua index 9aa46b4..0f3c7bd 100644 --- a/lib/mx.samples.lua +++ b/lib/mx.samples.lua @@ -116,7 +116,7 @@ function MxSamples:new(args) end -- add parameters - params:add_group("MX.SAMPLES",19) + params:add_group("MX.SAMPLES",20) local filter_freq=controlspec.new(20,20000,'exp',0,20000,'Hz') params:add { type='control', @@ -208,6 +208,11 @@ function MxSamples:new(args) id="mxsamples_sample_start", name="sample start", controlspec=controlspec.new(0,1000,'lin',0,0,'ms',1/1000)} + params:add { + type = "control", + id = "mxsamples_noise_level", + name = "noise level", + controlspec = controlspec.new(0, 10, 'lin', 0, 0, 'x', 0.01)} params:add { type='control', id="mxsamples_play_release", @@ -428,7 +433,8 @@ function MxSamples:on(d) d.hpf or params:get("mxsamples_hpf_mxsamples"), d.delay_send or params:get("mxsamples_delay_send")/100, d.reverb_send or params:get("mxsamples_reverb_send")/100, - d.sample_start or params:get("mxsamples_sample_start")) + d.sample_start or params:get("mxsamples_sample_start"), + d.noise_level or params:get("mxsamples_noise_level")) end -- load sample if not loaded