forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Программирование (http://forum.boolean.name/forumdisplay.php?f=54)
-   -   работа с MIDI (http://forum.boolean.name/showthread.php?t=14190)

beZ_probleM 06.02.2011 17:50

работа с MIDI
 
Привет всем!
Есть такой вопрос.
Воспроизвожу на эмуляторе звук через MIDI c помощью JSR-135 и он воспроизводится на отлично.
Загружаю в телефон, а телефон отказывается воспроизводить его.
Читал что любые телефоны с MIDP 2.0 поддерживают MMAPI
но у меня что-то не воспроизводит....

как можно узнать в чем причина?
или как мне проверить работает ли у меня миди... хотя... миди-треки ведь читает на самом мобильном... да и код у меня правильный. на емуляторе же работает.

Жека 07.02.2011 08:53

Ответ: работа с MIDI
 
Покажи код!:)

beZ_probleM 07.02.2011 17:14

Ответ: работа с MIDI
 
та говорю же код правильный! емулятор воспроизводит мелодии а на мобильном не работает.
мне надо узнать как узнать может ли мой мобильный воспроизводить МИДИ

если интерестен код то вот можешь посмотреть:
PHP код:

try{
Player p Manager.createPlayer(Manager.MIDI_DEVICE_LOCATOR);
p.prefetch();
MIDIControl mc = (MIDIControlp.getControl("MIDIControl");
mc.setProgram(0,29,0);
mc.shortMidiEvent(0x90,65,100);
try{
Thread.sleep(1000);
}
catch(
Exception e){}
mc.shortMidiEvent(0x80,65,0);
}
catch(
Еxception e){} 

я щас не дома, поетому пишу с головы и может чтото там не так, но вроде все правильно

Может кто знает функции которые могут взять информацию о МИДИ сиквенсоре который находится в телефоне?

Жека 08.02.2011 08:06

Ответ: работа с MIDI
 
У мидиконтрола есть функция
boolean isBankQuerySupported()
возможно, она и покажет - поддерживается воспроизведение или нет. я (через мидиконтрол не играл звук, вот и не уверен)

Способ отлавливать ошибки на реальном телефоне: делаешь статическую строковую переменную (например, strInfo), и при возникновении ошибки в неё инфу присваиваешь.

В твоём случае присваивать надо в ветке отлова ошибки:
...
catch(Exception e)
{
strInfo = "error playing. "+e.toString();
}

и при рисовании на экран рисуешь в конце (чтобы поверх всего было) эту строку в функции paint():

if(strInfo != null && strInfo.length() > 0)
g.drawString(strInfo, 0, 0, 0);

beZ_probleM 08.02.2011 19:55

Ответ: работа с MIDI
 
Я вот тоже думал насчет етой функции, но незнал что она делает.
Сегодня нашол маленькую статейку как использовать ету функцию
http://www.java2s.com/Code/JavaAPI/j...ySupported.htm

и у меня она на телефоне показала что мой телефон не поддерживает полностью МИДИ. Печально.
Может както ето можно обойти?
Я просто досихпор не понял на что она указивает.
Если она в прямом смысле указывает на то что у меня неполноценное МИДИ то что нужно сделать чтобы хоть немного миди работало?
потомучто playTone() такой отстой.


функция называется isBankQuerySupported
розберем по словам
1) Bank - что ето такое досихпор не понял, знаю только что их вроде от 0 до 127
2) Query - запрос(походу доступ до даного банка)
3) Supported - поддерживается

Получается "Поддерживается ли доступ к банкам" и в итоге оно дает false.
Значит не поддерживается доступ к банкам. Что ето нам дает на даном етапе?

Жека 09.02.2011 06:17

Ответ: работа с MIDI
 
По моему разумению, здесь bank - это синоним слову инструмент, в миди как раз 128 инструментов базовых.:)

Чем playTone плох тебе? Им ведь сразу последовательность нот играть можно, и повторы одинаковых участков очень удобно сделать.:)

beZ_probleM 10.02.2011 01:03

Ответ: работа с MIDI
 
нещет банков, что ето инструменты, ты не прав)
потомучто когда задаешь програму то ты там указываешь БАКН, ИНСТРУМЕНТ и КАНАЛ)
тоесть если банк ето инструмент то получается два раза инструмент задаем?)))
а нащет что инструментов 127 ето правильно :)

А playTone плох тем что он вроде звук пианино издает)
а мне нужна електро-гитара)
Так как я гитарист и хочю написать себе такую прогу чтобы где угодно можно было когда придумаю сольняк какойто, то его можно было записать и прослушать
тоесть мне нужно именно МИДИ использовать, где можно инструмент поменять)
но если ето возможно в тонплеере то подскажи как ето сделать)

з.ы. пробовал на многих телефонах запускать ту прогу с использованием isBankQuerySupported() но везде пишет что поддержует МИДИ по минимуму, тоесть функция возвращает значение false.
Печально блин. Интерестно поддержка МИДИ хоть в одном телефоне есть вообще?? Пристутствует ли миди контроллер в мобильных апаратах??

Жека 10.02.2011 09:36

Ответ: работа с MIDI
 
Возможно, bank - это промежуточная вещь для резервирования памяти под инструмент.

Кроме пианино я не нашёл инструмент для playTone.
Ты функцию проверки сделал и по ней смотришь играть звук или нет? Попробуй всегда играть, может будет звук на других мобильниках.

beZ_probleM 10.02.2011 16:56

Ответ: работа с MIDI
 
надо и так попробовать.
но сомневаюсь что чтото даст.
если оно уже пишет шо типа нету поддержки банков.
если банк - єто промежуточная вещь для резервирования памяти под инструмент то получается что если его нет(или такое не поддерживается) то значит даже пианино играть не будет через миди.

nil0q 14.03.2011 20:28

Ответ: работа с MIDI
 
Вложений: 1
Цитата:

Сообщение от beZ_probleM (Сообщение 178425)
Интерестно поддержка МИДИ хоть в одном телефоне есть вообще?? Пристутствует ли миди контроллер в мобильных апаратах??

Если Nescube работает (синтезирует музыку), то есть! Проверено на нокиях s40 и моём J105i.


Часовой пояс GMT +4, время: 00:34.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot