hmmm... not sure what's going on. the example works as expected for me, and as you describe how it should work (plays the whole file through at twice speed), using the most recent release of miniaudicle and chuck. and the last line should be lisa.duration() * 0.5 => now, though that shouldn't affect what you hear. dt On Nov 15, 2008, at 12:16 PM, mike clemow wrote:
Hi Dan,
I guess what I'm trying to say is that, when I run this example, I only get the first half of the SndBuf into LiSa and it plays back at half-speed when the rate is set to 1. It seems to me, that this isn't right. Since, the example came with the rate set to 2 in order to play back at normal speed, I assumed that you guys knew about this.
buf.samples() * 1::samp => lisa.duration;
This should (however you choose to write it) create a buffer equal in size to the SndBuf.
for ( 0 => int i; i < buf.samples(); i++ ) {
//args are sample value and sample index (dur must be integral in samples) lisa.valueAt(buf.valueAt(i), i::samp);
}
Here, I understand we're copying all the samples from SndBuf into LiSa.
1 => lisa.play; 2. => lisa.rate;
Playing back with a rate of 2 should make it play back twice as fast as normal, if I understand this correctly, however, it doesn't seem to do so.
lisa.duration() => now;
This should advance time long enough to hear the whole thing. This is true, but only because we have only the first half of the SndBuf in LiSa, and we hear it twice. This doesn't seem right to me, unless I'm missing something.
-Mike
On Fri, Nov 14, 2008 at 9:24 PM, dan trueman
wrote: 'tis an example. change the line:
2. => lisa.rate;
to whatever you want to get a different rate. just make sure you change:
lisa.duration() * 0.5 => now;
to an appropriate value as well, to make sure it plays long enough....
dt
On Nov 14, 2008, at 8:10 PM, mike clemow wrote:
Hey folks,
In the below example (which you will all find in the LiSa-SndBuf.ck file in examples in your installation), after populating the buffer in the LiSa object with the values of the samples from SndBuf, the rate of the LiSa object is set equal to 2. in order to play back normally. Why is it not 1? Why this should be the case makes little sense to me and I respectfully submit this as a bug, unless someone can provide a reasonable explanation.
Thoughts?
-Mike
-----
//ugens SndBuf buf; LiSa lisa => dac;
//change this path to your own sample "/Users/dan/Files/Chuck/LiSa_examples/TomVega.wav" => buf.read;
//set lisa buffer size to sample size buf.samples() * 1::samp => lisa.duration;
//transfer values from SndBuf to LiSa for ( 0 => int i; i < buf.samples(); i++ ) {
//args are sample value and sample index (dur must be integral in samples) lisa.valueAt(buf.valueAt(i), i::samp);
}
//party on... 1 => lisa.play; 2. => lisa.rate;
//look at some of the data //returns value at given time, with linear interpolation <<< Std.rand2f( 0., lisa.duration() / 1::samp ) :: samp => lisa.valueAt
;
//hang on until it's done... lisa.duration() * 0.5 => now;
-- http://michaelclemow.com http://semiotech.org _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
-- http://michaelclemow.com http://semiotech.org _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users