- From: Peter van der Noord <peterdunord@gmail.com>
- Date: Tue, 12 Feb 2013 12:43:24 +0100
- To: Joe Berkovitz <joe@noteflight.com>
- Cc: "public-audio@w3.org" <public-audio@w3.org>
- Message-ID: <CAL9tNz-Y7Lh3shrPqGhCYRHntA23Of7wYivP7xXnBrHYz8fBiw@mail.gmail.com>
Well, it seems that i made a calculation-error somewhere that i overlooked
all the time. I've got it working now:
http://petervandernoord.nl/jslooper/default.htm
- click 'from json'
- go the the play-section
- click the load sounds button, and then click on group 1. (it will loop
through all sounds in that group)
However, i must say that i find the audio somewhat sensitive (although the
machine i'm on now seems to do a better job). i didn't have huge loud
ticks, but it did generate some minor ones now and then. they're at
irregular times, and seem to be sometimes (but not always) affected by
ui-stuff.
basically, what i'm doing is writing each sample manually (with a
scriptprocessor) to the outputstream...
(by the way, if the audio doesnt loop correctly, it's because of something
else i encountered, i will start a new thread for that.)
2013/2/11 Joe Berkovitz <joe@noteflight.com>
> Hi Peter,
>
> Can you post a jsfiddle or link to complete working example with source
> code? Even if this pseudo code looks ok there are many possible details in
> the real code that could cause a problem.
>
> Also as a sanity check I suggest playing the source buffer from an
> AudioBufferSourceNode with loop = true to verify that the transients are
> not actually in the audio loop itself.
>
> Best
> . . . . ...Joe
>
> *Joe Berkovitz*
> President
> Noteflight LLC
> +1 978 314 6271
> www.noteflight.com
> "Your music, everywhere."
>
> On Feb 11, 2013, at 3:00 PM, Peter van der Noord <peterdunord@gmail.com>
> wrote:
>
> I've been looking for over 4 hours at a problem that generates quite loud
> ticks in my sound. I have simplified it all the way down, and i am
> wondering if my approach can work at all.
>
> What i'm trying to do is seemlessly stitch multiple audiobuffers together,
> using a custom ScriptProcessorNode (with access to all buffers) to write
> the correct samplevalues (from the correct position and the correct buffer)
> to the output. I've trimmed it all down to just using 1 buffer, that should
> seamlessly restart at the beginning, once it reaches the end.
>
> This is in pseudocode my onaudioprocess-handler:
>
> handleAudioProcessingEvent(event: AudioProcessingEvent): void
> {
> // there are two cases: either the current writeloop reaches the
> end of the source-buffer, or it doesnt
>
> if(endNotReached)
> {
> copySamples(bufferSize, 0, currentReadPosition);
>
> // params are:
> // the amount of samples to write (in this case the
> buffersize of the scriptprocessor)
> // the index to start writing in the outputbuffer
> // the index to start reading from the sourcebuffer (a
> loaded sample), which will be incremented in the writeloop in the
> copySamples function
> }
> else
> {
> // the end of the source buffer will be reached in this
> writingloop,
> // so write the remainig samples, then reset the
> readposition, then write the remaining amount of samples
> // (so the amount of samples written equals the full
> buffersize of the scriptprocessor)
>
> copySamples(numberOfSamplesLeftForSourceSound, 0,
> currentReadPosition);
> currentReadPosition = 0;
> copySamples(bufferSize -
> numberOfSamplesLeftForSourceSound, numberOfSamplesLeftForSourceSound,
> currentReadPosition);
> }
> }
>
> When the end is not reached, everything runs ok (although i have the
> feeling i hear some small irregularities now and then), but when the end is
> reached (2nd part of the if-statement), there's some big ticks in the
> audiostream.
>
> I am wondering if passing the outputbuffer to two functioncalls (both
> partially writing in it) has anything to do with it, or that i'm
> overlooking something else.
>
>
> Peter
>
>
Received on Tuesday, 12 February 2013 11:43:53 UTC