Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
1-1175676113
y0zh
2007-04-04 12:41
2007.06.03
Количество колонок в Excel (без OLE)


15-1178857973
vch
2007-05-11 08:32
2007.06.03
Подскажите прокси сжимающий с авторизацией


2-1179178531
Конст
2007-05-15 01:35
2007.06.03
атрибуты файлов на фтп вервере (инди)


15-1178300863
vasya123123
2007-05-04 21:47
2007.06.03
Свой инсталлятор / installer


15-1178518779
db2admin
2007-05-07 10:19
2007.06.03
Модульное ПО