Untitled
unknown
plain_text
a month ago
2.9 kB
5
Indexable
// 🌱 Setup iniziale s.waitForBoot({ ~buffers = Array.fill(10, { Buffer.alloc(s, 10 * s.sampleRate, 1) }); "Setup completato: 10 buffer pronti per la registrazione.".postln; }); // 🎙️ Synth per registrare SynthDef(\recorder, { |buf, amp = 1| var input = SoundIn.ar(0) * amp; RecordBuf.ar(input, buf, loop: 0, doneAction: 2); }).add; // ▶️ Synth per riprodurre una volta SynthDef(\player, { |buf, rate = 1| var sig = PlayBuf.ar(1, buf, rate, doneAction: 2); Out.ar(0, sig ! 2); }).add; // 🌀 Synth per loop con velocità crescente SynthDef(\speedLooper, { |buf, rateStart = 1.0, rateEnd = 8.0, dur = 10| var rate = Line.kr(rateStart, rateEnd, dur); var sig = PlayBuf.ar(1, buf, rate, loop: 1); Out.ar(0, sig ! 2); }).add; // 🖼️ GUI TENAGER completa ( var window, plots; ~loopSynths = Array.newClear(10); plots = List.new; window = Window("🎺 TENAGER GUI", Rect(100, 100, 650, 560)); window.background = Color.grey; 10.do { |i| var yPos = 10 + (i * 50); // 🔴 Record (resetta buffer prima) Button(window, Rect(10, yPos, 90, 30)) .states_([["🔴 Record " ++ i, Color.white, Color.red]]) .action_({ Routine({ ~buffers[i].zero; "Registrazione del gesto % inizia in 0.5s...".format(i).postln; 0.5.wait; Synth(\recorder, [\buf, ~buffers[i].bufnum]); }).play; }); // ▶️ Play singolo Button(window, Rect(110, yPos, 80, 30)) .states_([["▶️ Play " ++ i, Color.black, Color.green]]) .action_({ Synth(\player, [\buf, ~buffers[i].bufnum]); }); // 🌀 Loop con velocità crescente Button(window, Rect(200, yPos, 100, 30)) .states_([["🌀 Loop " ++ i, Color.black, Color.cyan]]) .action_({ ~loopSynths[i].notNil.if { ~loopSynths[i].free }; ~loopSynths[i] = Synth(\speedLooper, [ \buf, ~buffers[i].bufnum, \rateStart, 1.0, \rateEnd, 8.0, \dur, 10 ]); }); // ⏹ Stop loop Button(window, Rect(310, yPos, 80, 30)) .states_([["⏹ Stop", Color.white, Color.gray]]) .action_({ ~loopSynths[i].notNil.if { ~loopSynths[i].free; ~loopSynths[i] = nil; "Loop % fermato.".format(i).postln; }; }); // 🌊 Forma d’onda plots.add( SoundFileView(window, Rect(400, yPos, 230, 30)) .background_(Color.black) .waveColors_([Color.cyan]) .gridOn_(false) ); // 🔁 Aggiornamento forma d’onda Routine({ loop { 2.wait; plots[i].setBuffer(~buffers[i]); } }).play(AppClock); }; window.front; )
Editor is loading...
Leave a Comment