Hi guys,
We’re making a game where we need to time-stretch some audio
samples. My idea is to load the samples normally and then create the
stretched samples on the fly.
Have you considered the alternative of (re)synthesizing the sounds in
real time? For example, use one or more looping waveforms along with
and a bunch of “transient” samples that are actually synchronized
with their respective visual events. If applicable, this method might
be simpler, less CPU intensive and/or better sounding than true
time-stretching.
The thing is, I can’t find anything in SDL_mixer.h to create and
manipulate samples, except for the Mix_Chunk itself.
Mix_QuickLoad_RAW()…? However, if you want to do this on-the-fly, in
real time, I don’t think this is the API for you. You could probably
abuse the Mix_Chunk as an intermediate buffer, allowing your
time-stretch code to run with a bit more relaxed timing (ie not
hard-sync’ed to the SDL audio buffer size), but you’d still need to
stay in sync with the channel playback position.
Is there some reason why your algorithm cannot generate N samples at a
time, on demand? I’m thinking about abusing the effect API. (See
Mix_RegisterEffect etc.) Keep the channel alive using a dummy looping
sample, or hack SDL_mixer to support channels starting with some sort
of constantly playing generator “effect”. Have your effect/generator
ignore the normal input and produce output based on it’s
own “private” data.
Second, would you be interested in a patch to add some functions to
do that? Say, Mix_CreateChunk(), Mix_GetSample() and
Mix_PutSample()?
Not sure if this is the correct type of interface for this - but then
I’m not sure I understand what you actually want to do.
BTW, if someone has SDL_Mixer code to do time-stretching, you’ll
save me a lot of work
Sorry, haven’t played with time-stretching since the Amiga days, and
no code at all for SDL_mixer…
//David Olofson - Programmer, Composer, Open Source Advocate
.------- http://olofson.net - Games, SDL examples -------.
| http://zeespace.net - 2.5D rendering engine |
| http://audiality.org - Music/audio engine |
| http://eel.olofson.net - Real time scripting |
’-- http://www.reologica.se - Rheology instrumentation --'On Monday 21 May 2007, Gabriel Gambetta wrote: