Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Вывод звука в J2ME


Автор: qqqq1961 13.7.2014, 15:20
Пишу управлялку через аудиоканал. Источник будет универсальный - смартфон, планшет, десктоп, ноут. Мне нужно выводить на динамик тоны разной частоты (2000-4000 Гц, длительностью несколько периодов.) Пока я вывожу вот так (картинка в аттаче):
Код

int[] wav_hdr = {0x52,0x49,0x46,0x46,0x66,0x1F,0,0,0x57,0x41,0x56,0x45,0x66,0x6D,0x74,0x20,0x12,0,0,0,1,0,1,0,0x40,0x1F,0,0,0x40,0x1F,0,0,1,0,8,0,0,0,0x64,0x61,0x74,0x61,0x40,0x1F,0,0};// хедер файла для частоты дискр. 8 КГц

byte[]d = new byte[wav_hdr.length+100];
int n=46;// длина аудиохедера

// пишем в массив команды (два звука разной частоты)
for(int i=0;i<15;i++){d[n++]=0; d[n++]=(byte)255;}// 4 КГц
for(int i=0;i<8;i++){d[n++]=0;d[n++]=0; d[n++]=(byte)255;d[n++]=(byte)255;} // 2 КГц (кстати, как избавиться от приведения к (byte) ?)
Эти прямоугольные колебания становятся синусоидами после динамика.

// по нажатию кнопки воспроизводим аудиомассив с командами
    InputStream stream = new ByteArrayInputStream(d);
    Player player = Manager.createPlayer(stream, "audio/x-wav");
    player.start(); 
ЭТО РАБОТАЕТ ОТЛИЧНО (передается и принимается) для КРАТНЫХ частот, но хотелось бы для произвольных частот и не очень удобно заполнять массив, хотелось бы просто генерить в поток проигрывателя без промежуточного файла определенного размера. 

Есть ли у кого пример  - Как на яве синтезировать звуки?
Если скажете: "Юзай Только PlayTone", то как там вместо разных красявошных семплов сделать простые периодические сигналы (прямоугольники, треугольники или синусоиду)?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)