[chuck-users] SndBuf | accessing samples from stereo file

mario buoninfante mario.buoninfante at gmail.com
Thu Jun 17 04:34:55 EDT 2021


Hi,

Just to follow up on this, I was using audio files with a different 
sample rate and that was obviously causing trouble.

When dealing with stereo files, both in SndBuf and SndBuf2 samples are 
accessed in frames:

```

buffer[0] = sample 0 left channel

buffer[1] = sample 0 right channel

buffer[2] = sample 1 left channel

...

```

The only thing that could be a bit misleading is that .samples() doesn't 
return the actual number of samples, but number of samples per channel.
Looking at the source code (ugen_xxx.cpp - row 770) I found the 
documentation for .samples() says:

"Total number of sample in frames in the file"

Thus what .samples() returns is technically correct, but I'm wondering 
couldn't this be a bit confusing? Maybe not and I should have just 
checked that out. Might be one for the SndBuf example.

Cheers,

Mario


On 16/06/2021 17:03, Dana Batali wrote:
> Hi Mario , I’m not at my computer right now, but wonder if you’ve 
> tried SndBuf2?
>
> On Wed, Jun 16, 2021 at 8:57 AM mario buoninfante 
> <mario.buoninfante at gmail.com <mailto:mario.buoninfante at gmail.com>> wrote:
>
>     Hi,
>
>     I'm working on an algorithm that requires accessing samples from a
>     stereo file and am using SndBuf to achieve that.
>     I was expecting that to work so that samples were returned in
>     "frames",
>     for example:
>
>     '''
>
>     buffer.valueAt(0) = sample 0 on left channel
>
>     buffer.valueAt(1) = sample 0 on right channel
>
>     buffer.valueAt(2) = sample 1 on left channel
>
>     buffer.valueAt(3) = sample 1 on right channel
>
>     ...
>
>     '''
>
>     but that doesn't seem to be the case.
>
>     Also SndBuf.samples() always returns the same amount of samples,
>     regardless the file being mono or stereo (the size matches the
>     time in
>     msec, so it seems that reports the size of a single channel).
>
>     I also played around with .channel(n), but I get the same set of
>     samples
>     regardless the channel number used.
>
>     Then I just now found out that basically the channels seem to be
>     stored
>     (or at least accessed) sequentially.
>     Let's say you have a stereo file containing 1024 samples (512 per
>     channel), you get:
>
>     samples 0-511 = left channel
>
>     samples 512-1023 = right channel
>
>     I was wondering if my assumption is correct, but also if this is
>     intentional.
>
>
>     Cheers,
>
>     Mario
>
>
>
>     -- 
>     musician, QA engineer
>     http://mbuoninfante.tumblr.com/ <http://mbuoninfante.tumblr.com/>
>     https://vimeo.com/creativecodingsalerno
>     <https://vimeo.com/creativecodingsalerno>
>     https://github.com/mariobuoninfante
>     <https://github.com/mariobuoninfante>
>
>     _______________________________________________
>     chuck-users mailing list
>     chuck-users at lists.cs.princeton.edu
>     <mailto:chuck-users at lists.cs.princeton.edu>
>     https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>     <https://lists.cs.princeton.edu/mailman/listinfo/chuck-users>
>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users

-- 
musician, QA engineer
http://mbuoninfante.tumblr.com/
https://vimeo.com/creativecodingsalerno
https://github.com/mariobuoninfante

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20210617/60df9def/attachment.html>


More information about the chuck-users mailing list