Multitrack is working for recording
parent
000a6d3586
commit
8a74f8612f
33
NOTES.md
33
NOTES.md
|
@ -1,31 +1,14 @@
|
|||
# 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
|
||||
|
||||
Change harmonics for chorus
|
||||
|
||||
Lock harmonics to octaves / ratios
|
||||
|
||||
## Effects chain
|
||||
|
||||
Add an effects chain like with midilooper
|
||||
|
||||
-> filter -> reverb -> out
|
||||
- rhythm controls
|
||||
- number of steps in step granulator
|
||||
- modulate grain level in time with playback
|
||||
- sync LFOs to playback
|
||||
|
||||
|
||||
|
||||
## 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();
|
||||
|
||||
|
||||
~bufrecorder = SynthDef(
|
||||
SynthDef(
|
||||
\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);
|
||||
RecordBuf.ar(insig, ~frippbuffers[bufindex], 0, mix, 1 - mix, loop: 1)
|
||||
RecordBuf.ar(insig, buffer, 0, mix, 1 - mix, loop: 1)
|
||||
}
|
||||
).play(s, [
|
||||
\in, ~recordb,
|
||||
\record, 1.0,
|
||||
// \fb, ~granulatorb,
|
||||
\out, 0,
|
||||
\bufindex, ~currentfripp,
|
||||
\addToTail
|
||||
]
|
||||
);
|
||||
).add;
|
||||
|
||||
~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
|
||||
|
||||
|
@ -347,14 +356,15 @@ OSCdef.freeAll;
|
|||
|
||||
~to.button('/reset', 0, { | v |
|
||||
if( v > 0, {
|
||||
var sp = ~to.v('/grains/speed')[0];
|
||||
~buflen = ~to.v('/grains/buflen');
|
||||
[ "resetting buffers to", ~buflen ].postln;
|
||||
~makebuffers.value();
|
||||
~granulator.set(\buffer, ~frippbuffers[~currentfripp]);
|
||||
~bufrecorder.set(\buffer, ~frippbuffers[~currentfripp]);
|
||||
|
||||
~playbacklfo.set(\speed, sp / ~buflen);
|
||||
"TODO: rewrite this for multitrack".postln;
|
||||
// var sp = ~to.v('/grains/speed')[0];
|
||||
// ~buflen = ~to.v('/grains/buflen');
|
||||
// [ "resetting buffers to", ~buflen ].postln;
|
||||
// ~makebuffers.value();
|
||||
// ~granulator.set(\buffer, ~frippbuffers[~currentfripp]);
|
||||
// ~bufrecorder.set(\buffer, ~frippbuffers[~currentfripp]);
|
||||
//
|
||||
// ~playbacklfo.set(\speed, sp / ~buflen);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -362,8 +372,10 @@ OSCdef.freeAll;
|
|||
~to.button('/track', 0, { |v|
|
||||
var buffer = ~frippbuffers[v];
|
||||
if( buffer.isNil.not, {
|
||||
~bufrecorder.set(\record, 0.0);
|
||||
~bufrecorder = ~bufrecorders[v];
|
||||
~bufrecorder.set(\record, ~to.v('/record'));
|
||||
~granulator.set(\buffer, buffer);
|
||||
~bufrecorder.set(\buffer, buffer);
|
||||
[ "set track to", v, buffer ].postln;
|
||||
}, {
|
||||
[ "Bad track index", v ].postln;
|
||||
|
|
Loading…
Reference in New Issue