58 lines
1.5 KiB
Plaintext
58 lines
1.5 KiB
Plaintext
|
//-----------------------------------------------------------------------------
|
||
|
// name: LiSaBasic and LiSaMulti
|
||
|
// desc: Live sampling utilities for ChucK
|
||
|
//
|
||
|
// author: Dan Trueman, 2007
|
||
|
//
|
||
|
// to run (in command line chuck):
|
||
|
// %> chuck LiSa_readme.c
|
||
|
//-----------------------------------------------------------------------------
|
||
|
//demonstrate using track=1 mode with LiSa
|
||
|
//
|
||
|
//when track == 1, the input is used to control playback position
|
||
|
//input [0,1] will control playback position within loop marks
|
||
|
//values less than zero are multiplied by -1, so it is possible to use
|
||
|
//audio signals [-1, 1] to control playback position, as in waveshaping
|
||
|
|
||
|
//signal chain; record a sine wave, play it back
|
||
|
SinOsc s => LiSa loopme => dac;
|
||
|
//s => dac;
|
||
|
440. => s.freq;
|
||
|
0.2 => s.gain;
|
||
|
|
||
|
//alloc memory
|
||
|
6::second => loopme.duration;
|
||
|
1000::ms => loopme.loopEndRec;
|
||
|
1000::ms => loopme.loopEnd;
|
||
|
|
||
|
//set recording ramp time
|
||
|
loopme.recRamp(250::ms);
|
||
|
|
||
|
//start recording input
|
||
|
loopme.record(1);
|
||
|
|
||
|
//1 sec later, stop recording
|
||
|
1000::ms => now;
|
||
|
loopme.record(0);
|
||
|
|
||
|
|
||
|
//set track mode to 1, where the input chooses playback position
|
||
|
//note that you can still record this input
|
||
|
1 => loopme.track;
|
||
|
s =< loopme; //disconnect sinosc as input
|
||
|
Step i => Envelope e => loopme; //use envelope to control playback position
|
||
|
1. => i.next;
|
||
|
|
||
|
//play it forward twice speed
|
||
|
500::ms => e.duration;
|
||
|
e.keyOn();
|
||
|
loopme.play(1);
|
||
|
500::ms => now;
|
||
|
|
||
|
//now backwards half speed
|
||
|
2000::ms => e.duration;
|
||
|
e.keyOff();
|
||
|
2000::ms => now;
|
||
|
loopme.play(0);
|
||
|
|
||
|
//bye bye
|