а чем тебе не нравится по таймеру, по моему это единственный точный способ (в не думаю что в отдельном потоке можно будет точно синхронизировать события по времени). Недавно занимался разработкой MIDI трекера, там я сообщения посылаю именно из процедуры обработки MMTimer'а
Здравствуйте Leff, Вы писали:
L>а чем тебе не нравится по таймеру, по моему это единственный точный способ (в не думаю что в отдельном потоке можно будет точно синхронизировать события по времени). Недавно занимался разработкой MIDI трекера, там я сообщения посылаю именно из процедуры обработки MMTimer'а
Потому что неудобно это делать через таймер ( или я не знаю хорошего способа делать это удобно и красиво :)) ).
Неужели соответствующая функция API, проигрывающая MIDI-файлы, тоже все делает через таймер для каждой ноты?
Наверняка же есть красивое решение....
Здравствуйте jazzer, Вы писали: J>Неужели соответствующая функция API, проигрывающая MIDI-файлы, тоже все делает через таймер для каждой ноты?
А зачем для каждой ноты? Ты делаешь 1 таймер с периодом=минимальной длительности ноты, 1/16, 1/32 ,любую вобщем, а потом смотришь какую ноту "включить", какую "выключить", только нужен счетчик 1/16-ых или 1/32-ых ,чтобы было удобно считать время. J>Наверняка же есть красивое решение....
Здравствуйте jazzer, Вы писали:
J>Занимался ли кто-нибудь программированием MIDI в реальном времени?
J>Меня не интересует проигрывание файлов, мне интересна генерация звуков "на лету".
J>Естественно, можно по таймеру посылать сообщения note_on и note_off, но это мне не нравится совсем.
Ещё в проджае есть книжка "MIDI язык богов". Попробуй там посмотри
Здравствуйте jazzer, Вы писали:
J>Есть массив нот (т.е. структур с полями высота, длительность (!), время начала звучания, velocity и т.д.). J>Нужно вывести его на девайс.
Слушай, а чего бы тебе не сформировать из твоего массива MIDi файл и не посылать его прямо винде?
Кста винда судя по всему тоже по таймеру ноты выводит.