Я пытаюсь воспроизвести синтезированный звук (в основном 2 синусоидальных волны и некоторый шум) с использованием класса AudioTrack. Кажется, что это не похоже на SourceDataLine в javax.sound.sampled, но синтез ДЕЙСТВИТЕЛЬНО SLOW. Даже для стандартов ARM нереально думать, что 32768 отсчетов (16 бит, стерео, всего 65536) занимают более 1 секунды для рендеринга на Nexus 4 (измеряется с помощью System.nanotime(), запись в AudioTrack исключена). Компонент синтеза почти идентичен этому http://audioprograming.wordpress.com/2012/10/18/a-simple-synth-in-android-step-by-step-guide-using-the-java-sdk/, единственное различие заключается в том, что я воспроизвожу стерео звук (я не могу уменьшить его до моно, потому что это бинауральный тон).Синтез звука Android
Любые идеи? что я могу сделать?
Заранее спасибо
спасибо за предложения: Я уже с помощью LUT для функции греха и я отдаю себе отчет в вопросе производительности Math.sin для больших чисел. Я только что попытался заменить double float, где это возможно, но он все еще слишком медленный. я сравнил с тем же кодом, который работает на моем компьютере, и я не вижу причины, по которой он в 150 раз медленнее (измеряется) на моем телефоне. я могу понять, может быть, на 10 раз медленнее, но 150 абсурдно. pentium 1 будет быстрее. – dosse91214
Я боюсь, что мне придется жестоко писать собственный код :( – dosse91214
Чтобы выразить это, я получил 32 голоса из довольно тяжелого образца субтрактивного синтезатора, прочно работающего на одном из двух ядер 1 ГГц TI OMAP4430. Код был C++, единственные оптимизации - это намеки на компилятор для параллелизации некоторых путей кода, что очень эффективно. – marko