TarsosDSP PitchShift для Android - PullRequest
       61

TarsosDSP PitchShift для Android

0 голосов
/ 17 сентября 2018

Я хочу сделать PitchShifting в Android, используя TarsosDSP. Это код, который я использую, но когда я добавляю pitchshifter, он возвращает индекс массива за пределами исключения; как я могу отладить это? Любые альтернативные образцы для PitchShift с использованием TarsosDSP на Android приветствуется

new AndroidFFMPEGLocator(MainActivity.this);
   String sourcefile =         Environment.getExternalStorageDirectory().getAbsolutePath() + "/UCDownloads/google.mp3";
    File fileFromString=new File(sourcefile);
    //String sourcefile=audioList.get(currentSongIndex).getData();
    File inputFile = new File(sourcefile);
    double sampleRate = 44100;
    double factor = 1;
    RateTransposer rateTransposer = new RateTransposer(factor);

    final int size = 2048;
    final int overlap = 2048 - 128;


    WaveformSimilarityBasedOverlapAdd wsola=new WaveformSimilarityBasedOverlapAdd(WaveformSimilarityBasedOverlapAdd.Parameters.musicDefaults(factor,sampleRate));

    AudioDispatcher audioDispatcher = AudioDispatcherFactory.fromPipe(sourcefile, 44100, wsola.getInputBufferSize(), wsola.getOverlap());
    audioDispatcher.addAudioProcessor(new MultichannelToMono(1,true));
    wsola.setDispatcher(audioDispatcher);
    audioDispatcher.addAudioProcessor(wsola);

    PitchShifter pitchShifter=new PitchShifter(1.0/factor,44100,wsola.getInputBufferSize(),wsola.getOverlap());
    System.out.println("input buffer size : "+wsola.getInputBufferSize()+" &^&&*^(&^&*^&(^&^&^&(^&^^&^^&^%$%^$%^$&^%$$%$%$%$&%%$%$%$%^$%^$%^$%^$%");
    System.out.println("input buffer size : "+wsola.getOverlap()+" &^&&*^(&^&*^&(^&^&^&(^&^^&^^&^%$%^$%^$&^%$$%$%$%$&%%$%$%$%^$%^$%^$%^$%");
    audioDispatcher.addAudioProcessor(rateTransposer);
    audioDispatcher.addAudioProcessor(pitchShifter);


    try {
        RandomAccessFile outputFile=new RandomAccessFile("/storage/emulated/0/UCDownloads/google_pitch.mp3","rw");

        TarsosDSPAudioFormat outputFormat=new TarsosDSPAudioFormat(44100,16,1,true,false);
        WriterProcessor writer=new WriterProcessor(outputFormat,outputFile);
        audioDispatcher.addAudioProcessor(writer);
        audioDispatcher.run();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}
});
...