2016-05-23 9 views
0

Вот что я хочу:
1. Перемещение по времени в реальном времени во время воспроизведения песни.
2. Сдвиг высоты тона также должен быть записан в файл.RealTime Pitch Shifting с использованием TarsosDSP на Android

код:

double rate = 1.0; 
    RateTransposer rateTransposer; 
    AudioDispatcher dispatcher; 
    WaveformSimilarityBasedOverlapAdd wsola; 

    dispatcher = AudioDispatcherFactory.fromPipe(mAudiopath, 44100, 5000, 2500); 
    rateTransposer = new RateTransposer(rate); 
    wsola = new WaveformSimilarityBasedOverlapAdd(WaveformSimilarityBasedOverlapAdd.Parameters.musicDefaults(rate, 44100)); 
    WaveformWriter writer = new WaveformWriter((TarsosDSPAudioFormat) dispatcher.getFormat(), BASE_PATH + "Recorded" + File.separator + "PITCHED_" + mVideoFileName + ".mp3"); 

    wsola.setDispatcher(dispatcher); 
    dispatcher.addAudioProcessor(wsola); 
    dispatcher.addAudioProcessor(rateTransposer); 
    dispatcher.addAudioProcessor(new AndroidAudioPlayer(dispatcher.getFormat())); 
    dispatcher.setZeroPadFirstBuffer(true); 
    dispatcher.setZeroPadLastBuffer(true); 
    dispatcher.addAudioProcessor(writer); 

Но здесь я столкнулся следующее сообщение об ошибке:

Error:(362, 41) error: cannot access AudioFormat 
class file for javax.sound.sampled.AudioFormat not found 

для линии

WaveformWriter writer = new WaveformWriter((TarsosDSPAudioFormat) dispatcher.getFormat(), BASE_PATH + "Recorded" + File.separator + "PITCHED_" + mVideoFileName + ".mp3"); 

Если удалить эту строку все работает отлично только песня не записывается в файл.
Пожалуйста, дайте мне знать, если кто-то может помочь.

ответ

0

Эта проблема была решена с использованием класса WriterProcessor, не зависящего от JVM.

ref: