Skip to content

Instantly share code, notes, and snippets.

@LFSaw
Created April 3, 2012 19:23
Show Gist options
  • Save LFSaw/2294886 to your computer and use it in GitHub Desktop.
Save LFSaw/2294886 to your computer and use it in GitHub Desktop.
AS pole
(
q = q ? ();
MIDIMKtl.find;
q.nnkns = [
MIDIMKtl(\nnkn20),
MIDIMKtl(\nnkn21),
MIDIMKtl(\nnkn22),
];
q.nnkns.do{|ktl|
ktl.midiOut.latency = 0;
};
q.setKtlVerbose = {|q, state = true|
q.nnkns.do{|ktl|
ktl.verbose_(state);
};
};
/*
q.setKtlVerbose(true);
q.setKtlVerbose(false); // */
{
var gainSlider = \sl8;
var wetSlider = \sl7;
var freqEQKnob = \kn8;
var paraEQKnob = \kn7;
var higBut = \bs8;
var midBut = \bm8;
var lowBut = \br8;
var state = \vol!3;
q.nnkns.do{|nnkn, i|
// toggle
nnkn.addFuncElem(higBut, \toggle, {|elem|
(elem.value == 1).if({
state[i] = \hig
}, {
state[i] = \vol
})
});
nnkn.addFuncElem(midBut, \toggle, {|elem|
(elem.value == 1).if({
state[i] = \mid
}, {
state[i] = \vol
})
});
nnkn.addFuncElem(lowBut, \toggle, {|elem|
(elem.value == 1).if({
state[i] = \low
}, {
state[i] = \vol
})
});
// wet
nnkn.addFuncElem(wetSlider, \adjust, {|elem|
q.wets[i] = \wets.asSpec.map(elem.value);
Ndef(\postAuxMix).setn(\wets, q.wets, \t_poll, 1)
});
// gainSlider
nnkn.addFuncElem(gainSlider, \adjust, {|elem|
switch(state[i],
\hig, {
q.higGain[i] = \higGain.asSpec.map(elem.value).postln;
Ndef(\preAuxMix).setn(\higGain, q.higGain, \t_poll, 0);
},
\mid, {
q.midGain[i] = \midGain.asSpec.map(elem.value).postln;
Ndef(\preAuxMix).setn(\midGain, q.midGain, \t_poll, 0);
},
\low, {
q.lowGain[i] = \lowGain.asSpec.map(elem.value).postln;
Ndef(\preAuxMix).setn(\lowGain, q.lowGain, \t_poll, 0);
},
\vol, {
q.postGains[i] = \postGains.asSpec.map(elem.value).postln;
Ndef(\postAuxMix).setn(\postGains, q.postGains, \t_poll, 0);
}
)
});
// freqEQKnob
nnkn.addFuncElem(freqEQKnob, \adjust, {|elem|
switch(state[i],
\hig, {
q.higFreq[i] = \higFreq.asSpec.map(elem.value);
Ndef(\preAuxMix).setn(\higFreq, q.higFreq, \t_poll, 0);
},
\mid, {
q.midFreq[i] = \midFreq.asSpec.map(elem.value);
Ndef(\preAuxMix).setn(\midFreq, q.midFreq, \t_poll, 0);
},
\low, {
q.lowFreq[i] = \lowFreq.asSpec.map(elem.value);
Ndef(\preAuxMix).setn(\lowFreq, q.lowFreq, \t_poll, 0);
},
\vol, {
q.preGains[i] = \preGains.asSpec.map(elem.value).postln;
Ndef(\preAuxMix).setn(\preGains, q.preGains, \t_poll, 0);
}
)
});
// paraEQKnob
nnkn.addFuncElem(paraEQKnob, \adjust, {|elem|
switch(state[i],
\hig, {
q.higPara[i] = \higPara.asSpec.map(elem.value);
Ndef(\preAuxMix).setn(\higPara, q.higPara, \t_poll, 0);
},
\mid, {
q.midPara[i] = \midPara.asSpec.map(elem.value);
Ndef(\preAuxMix).setn(\midPara, q.midPara, \t_poll, 0);
},
\low, {
q.lowPara[i] = \lowPara.asSpec.map(elem.value);
Ndef(\preAuxMix).setn(\lowPara, q.lowPara, \t_poll, 0);
},
\vol, {
q.otherGain[i] = \otherGain.asSpec.map(elem.value);
Ndef(\postAuxMix).setn(\otherGain, q.otherGain, \t_poll, 0);
}
)
});
}
}.value;
//////////////////////////////////
{
// redux
var gainSlider = \sl1;
var foldKnob = \kn1;
var bitBut = \bs1;
var state = \vol!3;
q.nnkns.do{|nnkn, i|
// toggle
nnkn.addFuncElem(bitBut, \toggle, {|elem|
(elem.value == 1).if({
state[i] = \bit
}, {
state[i] = \vol
})
});
// gainSlider
nnkn.addFuncElem(gainSlider, \adjust, {|elem|
switch(state[i],
\bit, {
q.reduxBits[i] = \reduxBits.asSpec.map(elem.value);
Ndef(\redux).setn(\bits, q.reduxBits, \t_poll, 0);
},
\vol, {
q.reduxVolume[i] = \vol.asSpec.map(elem.value);
Ndef(\redux).setn(\vol, q.reduxVolume, \t_poll, 0);
}
)
});
// foldKnob
nnkn.addFuncElem(foldKnob, \adjust, {|elem|
switch(state[i],
\bit, {
q.reduxDownsamp[i] = \reduxDown.asSpec.map(elem.value);
Ndef(\redux).setn(\downsamp, q.reduxDownsamp, \t_poll, 0);
},
\vol, {
q.reduxFold[i] = \foldFac.asSpec.map(elem.value);
Ndef(\redux).setn(\foldfac, q.reduxFold, \t_poll, 0);
}
)
});
}
}.value;
//////////////////////////////////
{
// klank
var gainSlider = \sl2;
var foldKnob = \kn2;
var bitBut = \bs2;
var state = \vol!3;
q.nnkns.do{|nnkn, i|
// toggle
nnkn.addFuncElem(bitBut, \toggle, {|elem|
(elem.value == 1).if({
state[i] = \bit
}, {
state[i] = \vol
})
});
// gainSlider
nnkn.addFuncElem(gainSlider, \adjust, {|elem|
switch(state[i],
\bit, {
q.klankBaseFreq[i] = \baseFreq.asSpec.map(elem.value);
Ndef(\klank).setn(\baseFreq, q.klankBaseFreq, \t_poll, 0);
},
\vol, {
q.klankVolume[i] = \vol.asSpec.map(elem.value);
Ndef(\klank).setn(\vol, q.klankVolume, \t_poll, 0);
}
)
});
// foldKnob
nnkn.addFuncElem(foldKnob, \adjust, {|elem|
switch(state[i],
\bit, {
q.klankSpread[i] = \spread.asSpec.map(elem.value);
Ndef(\klank).setn(\spread, q.klankSpread, \t_poll, 0);
},
\vol, {
q.klankFold[i] = \foldFac.asSpec.map(elem.value);
Ndef(\klank).setn(\foldfac, q.klankFold, \t_poll, 0);
}
)
});
}
}.value;
{
// pShift
var gainSlider = \sl3;
var foldKnob = \kn3;
var bitBut = \bs3;
var state = \vol!3;
q.nnkns.do{|nnkn, i|
// toggle
nnkn.addFuncElem(bitBut, \toggle, {|elem|
(elem.value == 1).if({
state[i] = \bit
}, {
state[i] = \vol
})
});
// gainSlider
nnkn.addFuncElem(gainSlider, \adjust, {|elem|
switch(state[i],
\bit, {
q.pShiftShift[i] = \pShift.asSpec.map(elem.value);
Ndef(\pShift).setn(\pShift, q.pShiftShift, \t_poll, 0);
},
\vol, {
q.pShiftVolume[i] = \vol.asSpec.map(elem.value);
Ndef(\pShift).setn(\vol, q.pShiftVolume, \t_poll, 0);
}
)
});
// foldKnob
nnkn.addFuncElem(foldKnob, \adjust, {|elem|
switch(state[i],
\bit, {
q.pShiftWindow[i] = \pWindowSize.asSpec.map(elem.value);
Ndef(\pShift).setn(\pWindowSize, q.pShiftWindow, \t_poll, 0);
},
\vol, {
q.pShiftFold[i] = \foldFac.asSpec.map(elem.value);
Ndef(\pShift).setn(\foldfac, q.pShiftFold, \t_poll, 0);
}
)
});
}
}.value;
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment