Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Java ME (J2ME)

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
qqqqq1961
0 / 0 / 0
Регистрация: 13.07.2014
Сообщений: 3
#1

Вывод звука на J2ME - Java ME

13.07.2014, 16:48. Просмотров 1423. Ответов 2
Метки нет (Все метки)

Пишу управлялку через аудиоканал. Источник будет универсальный - смартфон, планшет, десктоп, ноут. Мне нужно выводить на динамик тоны разной частоты (2000-4000 Гц, длительностью несколько периодов.) Пока я вывожу вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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", то как там вместо разных красявошных семплов сделать простые периодические сигналы (прямоугольники, треугольники или синусоиду)?
0
Миниатюры
Вывод звука на J2ME  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2014, 16:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод звука на J2ME (Java ME):

О j2me - Java ME
Извините что не туда написал:) я пишу свой браузер для пк и называется он Flight-browser он уже дорос до версии 13 и пора бы его...

Компиляция в J2ME - Java ME
Подскажите новичку я сам не могу разобраться никак. Нажимаю в J2ME Wireless Toolkit кнопку Build и появляется ошибка, хотя код программы...

Книги по J2ME - Java ME
Есть ли книги именно по мобильной джаве? стандарт эдишн вроде поковырял и что-то даже понял, теперь надо переходить на мобильную. что...

J2ME recordstore - Java ME
Я пытаюся зделать приложение на телефон... приложение не сложное но нада задействовать recordstore или аналог если есть... Знач есть...

Документация по j2me - Java ME
кто может ссылки на нормальную. документацию указать, вроде туториала что-нить

ftp и j2me - Java ME
Кто сталкивался с реализацией соединения телефона по фтп, натолкните на правильную мысль, как это реализовать, а то мои попытки соединения...

2
diamagnet81
1 / 1 / 0
Регистрация: 15.08.2014
Сообщений: 5
16.08.2014, 21:18 #2
Из одной книжки, глава Синтаксис и семантика языка Java 2 ME:
...значение от -128 до 128 127
И частоты звука - это скорее в характере самого звука, не в характере витиеватости каждого тела цикла.
Можно байт за байтом сохранять склоны и пики синусоид любой частоты.

Java
1
2
3
4
5
6
7
8
byte[] 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;// длина аудиохедера
if (n == wav_hdr.length) System.out.println("true he-he");
for (int i = 0; i < wav_hdr.length; i++) d[i] = wav_hdr[i];
for (int i = 0; i < d.length - wav_hdr.length; i++)
    d[i + wav_hdr.length] = (byte) (-128 * java.lang.Math.sin(java.lang.Math.PI * anyFloatLesserThanOneForLongerPeriods / 2));
1
diamagnet81
1 / 1 / 0
Регистрация: 15.08.2014
Сообщений: 5
09.09.2014, 15:03 #3
Java
1
(byte)(127.0 - 126.5 * Math.sin(2.0 * Math.PI * frequ_ * i / sampleRate));
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2014, 15:03
Привет! Вот еще темы с ответами:

Практика J2ME - Java ME
Всем здраствуйте, С недавнего времени занялся изучением J2ME. Крепко знаю J2SE. Уже вроде бы достаточно подчитал литературы и хочется...

Плеер на J2ME - Java ME
Надо реализовать воспроизведение 3х файлов (.wav) допустим по очереди т.е. запуск одного, остановка и запуск другого. Плеер создаю так ...

Фоновый приложения J2ME - Java ME
Есть ли способ выполнения java-приложений без отображения их на дисплеи портативных устройств(простой пример – будильник на Яве:))? Если...

J2ME для новичков - Java ME
Помогите разобраться с J2ME. Я поставил j2me_wireless_toolkit, вобщем то этоо эмклятор и набор jar-ов. Ну писать я могу в eclipse но с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru