Multitrack is working for recording
parent
000a6d3586
commit
8a74f8612f
33
NOTES.md
33
NOTES.md
|
@ -1,31 +1,14 @@
|
||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
## Granulator
|
- quantise playback speed to rational values
|
||||||
|
- display the playback and harmonics when quantised
|
||||||
|
|
||||||
Fix chorus and detune - why isn't it being triggered?
|
- multiple grain buffers - TouchOsc interface to select which to send to
|
||||||
|
- play back all buffers?
|
||||||
|
|
||||||
Add pitch shifting
|
- rhythm controls
|
||||||
|
- number of steps in step granulator
|
||||||
Change harmonics for chorus
|
- modulate grain level in time with playback
|
||||||
|
- sync LFOs to playback
|
||||||
Lock harmonics to octaves / ratios
|
|
||||||
|
|
||||||
## Effects chain
|
|
||||||
|
|
||||||
Add an effects chain like with midilooper
|
|
||||||
|
|
||||||
-> filter -> reverb -> out
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## LFO mod
|
|
||||||
|
|
||||||
Add the new-style lfo mods to filter
|
|
||||||
|
|
||||||
## More LFO mods
|
|
||||||
|
|
||||||
Allow other settings to be modulated
|
|
||||||
|
|
||||||
## Input filter
|
|
||||||
|
|
||||||
Switch in and out a single input filter like distort, peak FFT, etc,
|
|
54
grains.scd
54
grains.scd
|
@ -217,23 +217,32 @@ fork {
|
||||||
~makebuffers.value();
|
~makebuffers.value();
|
||||||
|
|
||||||
|
|
||||||
~bufrecorder = SynthDef(
|
SynthDef(
|
||||||
\fripp_record,
|
\fripp_record,
|
||||||
{
|
{
|
||||||
arg in = 2, fb = 4, bufindex = 0, mix = 0.25, record = 0.0, feedback = 0.0;
|
arg in = 2, buffer = 0, mix = 0.25, record = 0.0;
|
||||||
var insig = record * In.ar(in, 1);
|
var insig = record * In.ar(in, 1);
|
||||||
RecordBuf.ar(insig, ~frippbuffers[bufindex], 0, mix, 1 - mix, loop: 1)
|
RecordBuf.ar(insig, buffer, 0, mix, 1 - mix, loop: 1)
|
||||||
}
|
}
|
||||||
).play(s, [
|
).add;
|
||||||
\in, ~recordb,
|
|
||||||
\record, 1.0,
|
|
||||||
// \fb, ~granulatorb,
|
|
||||||
\out, 0,
|
|
||||||
\bufindex, ~currentfripp,
|
|
||||||
\addToTail
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
|
~bufrecorders = Array.new(~ntracks);
|
||||||
|
|
||||||
|
~frippbuffers.do({
|
||||||
|
| buffer, index |
|
||||||
|
~bufrecorders.add(Synth.new(
|
||||||
|
\fripp_record,
|
||||||
|
[
|
||||||
|
\in, ~recordb,
|
||||||
|
\record, 0.0,
|
||||||
|
\buffer, buffer
|
||||||
|
],
|
||||||
|
s,
|
||||||
|
\addToTail
|
||||||
|
))
|
||||||
|
});
|
||||||
|
|
||||||
|
~bufrecorder = ~bufrecorders[0];
|
||||||
|
|
||||||
// the main granulator synth
|
// the main granulator synth
|
||||||
|
|
||||||
|
@ -347,14 +356,15 @@ OSCdef.freeAll;
|
||||||
|
|
||||||
~to.button('/reset', 0, { | v |
|
~to.button('/reset', 0, { | v |
|
||||||
if( v > 0, {
|
if( v > 0, {
|
||||||
var sp = ~to.v('/grains/speed')[0];
|
"TODO: rewrite this for multitrack".postln;
|
||||||
~buflen = ~to.v('/grains/buflen');
|
// var sp = ~to.v('/grains/speed')[0];
|
||||||
[ "resetting buffers to", ~buflen ].postln;
|
// ~buflen = ~to.v('/grains/buflen');
|
||||||
~makebuffers.value();
|
// [ "resetting buffers to", ~buflen ].postln;
|
||||||
~granulator.set(\buffer, ~frippbuffers[~currentfripp]);
|
// ~makebuffers.value();
|
||||||
~bufrecorder.set(\buffer, ~frippbuffers[~currentfripp]);
|
// ~granulator.set(\buffer, ~frippbuffers[~currentfripp]);
|
||||||
|
// ~bufrecorder.set(\buffer, ~frippbuffers[~currentfripp]);
|
||||||
~playbacklfo.set(\speed, sp / ~buflen);
|
//
|
||||||
|
// ~playbacklfo.set(\speed, sp / ~buflen);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -362,8 +372,10 @@ OSCdef.freeAll;
|
||||||
~to.button('/track', 0, { |v|
|
~to.button('/track', 0, { |v|
|
||||||
var buffer = ~frippbuffers[v];
|
var buffer = ~frippbuffers[v];
|
||||||
if( buffer.isNil.not, {
|
if( buffer.isNil.not, {
|
||||||
|
~bufrecorder.set(\record, 0.0);
|
||||||
|
~bufrecorder = ~bufrecorders[v];
|
||||||
|
~bufrecorder.set(\record, ~to.v('/record'));
|
||||||
~granulator.set(\buffer, buffer);
|
~granulator.set(\buffer, buffer);
|
||||||
~bufrecorder.set(\buffer, buffer);
|
|
||||||
[ "set track to", v, buffer ].postln;
|
[ "set track to", v, buffer ].postln;
|
||||||
}, {
|
}, {
|
||||||
[ "Bad track index", v ].postln;
|
[ "Bad track index", v ].postln;
|
||||||
|
|
Loading…
Reference in New Issue