Как проще всего воспроизвести семпл/тон с заданным темпом в SuperCollider

Мне любопытно, как проще всего воспроизвести звуковой файл или какую-либо частоту с заданным темпом. Самый простой метроном, который вы можете реализовать. Любые идеи?


person ciembor    schedule 17.07.2015    source источник


Ответы (1)


Если вы ищете простоту, то «самый простой метроном»

~bpm = 120; x = {Impulse.ar(~bpm/60)}.play;

но это будет звучать не очень приятно и только в левом канале.

Для тона, а не щелчка, и в обоих каналах есть один простой способ:

~bpm = 120; x = {SinOsc.ar.dup * Pulse.ar(~bpm/60, 0.01).lag}.play;

Чтобы воспроизвести файл WAV, вы можете просто использовать устройство PlayBuf и перезапустить его в нужном темпе. Здесь мы предполагаем, что вы загрузили семпл в буфер b:

x = {PlayBuf.ar(1, b, trigger: Impulse.kr(~bpm/60))}.play;

или, вместо того, чтобы делать это как синтезатор, как я только что сделал, вы можете собрать что-то вместе, используя паттерны:

p = Pseq([Pfunc({ b.play; 60/~bpm })], inf).play

person Dan Stowell    schedule 18.07.2015
comment
Легче, чем я думал! А как насчет сэмплов wav, будет ли это намного сложнее? - person ciembor; 26.07.2015
comment
Хорошо, добавил это к моему ответу. Если вам нравится ответ, пожалуйста, примите его :) - person Dan Stowell; 27.07.2015