Форум: "Media";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
Внизmidi библиотеки Найти похожие ветки
← →
Igors (2006-06-06 10:12) [0]Не подскажите библиотеки для проигрывания midi файлов умеющие менять тональность?
и второе, может кто подскажет как это программно делается?
я так понимаю что в каждом миди событии воспроизведения ноты увеличивается тональность, но спецификацию найти не могу. Подскажите кто знает какие это события.
Буду очень благодарен за любой ответ!
← →
Сергей М. © (2006-06-06 10:51) [1]
> спецификацию найти не могу
http://www.midi.org/about-midi/specshome.shtml
← →
Igors (2006-06-06 11:45) [2]> Сергей М.
Спасибо, я уже был смотрел эту ссылку,
возможно из-за плохого знания английского я так и не понял как сменить тональность midi:(
← →
Сергей М. © (2006-06-06 12:14) [3]
> из-за плохого знания английского
На русском:
http://www.ispras.ru/~demakov/DOC/FAQ/mididesc.html
← →
Igors (2006-06-06 13:19) [4]> Сергей М.
Спасибо большое.
Я так понимаю нужно копать:
En ll mm - Pitch Bend Change (смена значения Pitch Bend)
n - как понимаю номер канала, т.е. пройтись с 1 по 16 для всех.
Осталось догнать как менять чувствительность Pitch Bend при помощи RPN 0:)
Спасибо ещё раз!
← →
Сергей М. © (2006-06-06 14:52) [5]Неправильно ты понимаешь.
Менять нужно параметр nn в кан.сообщениях
8n nn vv - Note Off (выключение ноты)
9n nn vv - Note On (включение ноты)
ПРичем делать это следует не от балды для всех без разбору каналов, а только для каналов, не относящихся к перкуссионным.
← →
Igors (2006-06-06 16:09) [6]Хреново,
я думал есть какое-то системное сообщение для синтезатора, говорящее ему что бы он сам менял тональность при получении ноты на определённое значение.
вообщем отлавливаем включение\выключение и меняем ноту (nn).
Объясни пожалуйста что такое за "перкуссионный" канал и почему если на нем идет sysex включения\выключения нельзя менять ноты?
Кстати, а на 10 канале где ударные то же ноты есть?
← →
Сергей М. © (2006-06-06 16:22) [7]
> что такое за "перкуссионный" канал
Для простоты считай, что это канал ударных.
В GM принято считать, что канал ударных - это 10-й канал.
> sysex включения\выключения
Включение/выключение "ноты" не относится к SysEx-событиям.
> на 10 канале где ударные то же ноты есть?
Назвать "нотами" канальные сообщения включения/выключения для ударных можно лишь с большой натяжкой. Номер "ноты" там соответствует определенному ударному инструменту, так что изменение номера ноты приведет к включению/выключению звучания совершенно иного инструмента, нежели записано в оригинале: вместо барабана, к примеру прозвучит тарелка.
← →
Igors (2006-06-06 16:27) [8]Все понятно, спасибо Сергей.
Попробую сейчас реализовать всё это..
← →
test'er (2006-09-25 12:54) [9]В принципе всё понятно.
Только видать нужно помнить при каком коэфф. смены темпа включалась нота и при выключении ноты учитывать текущий коэфф. и тот что был. иначе выключим не ту ноту.
На ум приходит держать массив в проге всех нот с данными коэф. при котором произошло включение.
Может это как-то подругому решается?
в данном варианте будет глюк, если будут два или несколько событий включения ноты без выключения и в это время в проге будет смена темпа, тогда нужно будет как-то выключать все ноты, помня что с каким коэфф. включалось. Возмоно ли это - два сообщения включения без сообщения выключения после первого?
← →
Сергей М. © (2006-09-25 14:01) [10]Что-то я не пойму, при чем здесь темп ...
Есть поток данных в формате MIDI, в нем присутствуют канальные сообщения "Note On", "Note Off"
Получая канальное сообщение "Note On" или "Note Off" плейер перед его исполнением просто инкрементирует 2-й параметр (номер ноты) на некую величину delta (смещение строя на такое-то число полутонов), если сообщение не относится к каналу перкуссионных.
?
← →
test'er (2006-09-25 14:28) [11]
> Что-то я не пойму, при чем здесь темп ...Есть поток данных
> в формате MIDI, в нем присутствуют канальные сообщения "Note
> On", "Note Off"Получая канальное сообщение "Note On" или
> "Note Off" плейер перед его исполнением просто инкрементирует
> 2-й параметр (номер ноты) на некую величину delta (смещение
> строя на такое-то число полутонов), если сообщение не относится
> к каналу перкуссионных.
Сережа извини, я имел ввиду не темп а тон.
А ты вообще теоретически мыслишь или писал что-то подобное?
Дело в том, что делая так как ты написал я обнаружил, что после смены очередного темпа включенные ноты "зависали".
Тут много не пришлось думать и так понятно, само просто:
- пришо сообщение включения (коэфф тона пока = 0)
- юзер увеличил коэф. тона на 1
- пришло сообщение об выключении ноты
- тут в твоём случаи я должен увеличить 2-й параметр и в результате выключу не ту ноту.
В случаи когда юзер часто меняет тональность нужно всё это как-то отследить какая нота включалась с каким коэфф. и откорректировать изменение выключения учитывая текущий коэфф. и тот что былпри включении.
Но это я приблизительно понимаю, но как реализовать пока алгоритм не созрел в голове.
Допустим пришло сообщение выключения ноты с номеров 100.
И тут хер его знает, может я включал ноту 99 с коэф. тона 1 или 98 с коэф. 2 или 103 с коэфф. -3.
Надеюсь примерно понятно изложил свою траблу.
← →
test'er (2006-09-25 14:31) [12]извини, опять "очередного темпа" я про тональность конечно, точнее про свой коэффициент в проге корректировки 2-го параметра сообщения on\off
← →
Сергей М. © (2006-09-25 14:37) [13]
> test"er (25.09.06 14:28) [11]
Понятно.
В этом случае, очевидно, следует вести список выполненных канальных команд Note On с соответствующим delta.
При каждом смещении строя просматривать этот список на предмет коррекции delta для каждого элемента.
При выполнении Note Off просматривать список и удалять соотв.элемент.
> ты вообще теоретически мыслишь или писал что-то подобное?
Зачем изобретать велосипеды ?)
← →
test'er (2006-09-25 14:47) [14]
> Зачем изобретать велосипеды ?)
ну нескажи, в этой области большой упадок.
или ты знаешь нормальный плеер?
один VanBasco`s возможно, но в нем есть также свои минусы.
Сереж, последний вопрос если можно.
Насколько я понимаю всякого рода неприятные стуки при воспроизведении миди XG формата через GM обусловлено тем, что в XG ударные могут прописываться не только в 10 канале? если так, то неподскажешь номера ударных в XG что бы отсеивать их включение?
Cпасибо за тональность, примерно картина вырисовывается:)
← →
Сергей М. © (2006-09-25 15:06) [15]
> один VanBasco`s возможно
Ну, положим, VanBasco-плейер не столько миди-плейер, сколько караоке-плейер ..
> в XG ударные могут прописываться не только в 10 канале?
Почитай вот это
http://www.artone.ru/termins.html
← →
brother © (2006-09-25 20:23) [16]имхо, миди уже не актуально... для домашнего пользования
← →
tst (2006-09-26 09:36) [17]
> имхо, миди уже не актуально... для домашнего пользования
Возможно, но LG CD и Samsung DVD караоке диски используют миди :)
Да и вообще имея нормальную звуковуху или софт. синтезатор очень даже ничего получается.
А что по твоему актуально для дома?
Трабла с тональностью решилась сохранением в массиве нот для каждого канала [0..15, 0..127] команд Note On с соответствующим delta.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.04 c