Exemple #1
0
 void rate_controller::do_initialize()
 {
   stream=sonicCreateStream(sample_rate,1);
   if(stream==0)
     throw std::bad_alloc();
   sonicSetSpeed(stream,rate);
 }
 speech_stream::speech_stream(int sample_rate,double speed):
   buffer_size(0.1*sample_rate),
   start_offset(0),
   offset(0),
   sonic_stream(0)
 {
   if(speed!=1)
     {
       sonic_stream=sonicCreateStream(sample_rate,1);
       if(!sonic_stream)
         throw std::bad_alloc();
       sonicSetSpeed(sonic_stream,speed);
     }
 }
Exemple #3
0
/* Run sonic. */
static void runSonic(
    waveFile inFile,
    waveFile outFile,
    float speed,
    float pitch,
    float rate,
    float volume,
    int emulateChordPitch,
    int quality,
    int sampleRate,
    int numChannels)
{
    sonicStream stream = sonicCreateStream(sampleRate, numChannels);
    short inBuffer[BUFFER_SIZE], outBuffer[BUFFER_SIZE];
    int samplesRead, samplesWritten;

    sonicSetSpeed(stream, speed);
    sonicSetPitch(stream, pitch);
    sonicSetRate(stream, rate);
    sonicSetVolume(stream, volume);
    sonicSetChordPitch(stream, emulateChordPitch);
    sonicSetQuality(stream, quality);
    do {
        samplesRead = readFromWaveFile(inFile, inBuffer, BUFFER_SIZE/numChannels);
        if(samplesRead == 0) {
            sonicFlushStream(stream);
        } else {
            sonicWriteShortToStream(stream, inBuffer, samplesRead);
        }
        do {
            samplesWritten = sonicReadShortFromStream(stream, outBuffer,
                BUFFER_SIZE/numChannels);
            if(samplesWritten > 0) {
                writeToWaveFile(outFile, outBuffer, samplesWritten);
            }
        } while(samplesWritten > 0);
    } while(samplesRead > 0);
    sonicDestroyStream(stream);
}
TimestretchBufferProvider::TimestretchBufferProvider(int32_t channelCount,
        audio_format_t format, uint32_t sampleRate, const AudioPlaybackRate &playbackRate) :
        mChannelCount(channelCount),
        mFormat(format),
        mSampleRate(sampleRate),
        mFrameSize(channelCount * audio_bytes_per_sample(format)),
        mLocalBufferFrameCount(0),
        mLocalBufferData(NULL),
        mRemaining(0),
        mSonicStream(sonicCreateStream(sampleRate, mChannelCount)),
        mFallbackFailErrorShown(false),
        mAudioPlaybackRateValid(false)
{
    LOG_ALWAYS_FATAL_IF(mSonicStream == NULL,
            "TimestretchBufferProvider can't allocate Sonic stream");

    setPlaybackRate(playbackRate);
    ALOGV("TimestretchBufferProvider(%p)(%u, %#x, %u %f %f %d %d)",
            this, channelCount, format, sampleRate, playbackRate.mSpeed,
            playbackRate.mPitch, playbackRate.mStretchMode, playbackRate.mFallbackMode);
    mBuffer.frameCount = 0;
}
/* Initialize the C data structure */
jlong Java_org_vinuxproject_sonic_Sonic_initNative(
    JNIEnv *env,
    jobject thiz,
    jint sampleRate,
    jint channels)
{
    sonicInst inst = (sonicInst)calloc(1, sizeof(struct sonicInstStruct));

    if(inst == NULL) {
        return 0;
    }
    LOGV("Creating sonic stream");
    inst->stream = sonicCreateStream(sampleRate, channels);
    if(inst->stream == NULL) {
        return 0;
    }
    inst->byteBufSize = 100;
    inst->byteBuf = (short *)calloc(inst->byteBufSize, sizeof(short));
    if(inst->byteBuf == NULL) {
        return 0;
    }
    return (jlong)((char *)inst - (char *)NULL);
}