|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.04.2012, 23:15 | #1 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
PC Speaker и midi(mod)
Доброго времени суток!
И сразу к делу! Стоит задача вывести многоголосую midi через спикер (сделать велосипед). Проблема не в том, чтобы разобрать Midi файл. Суть проблемы Как мне известно, midi формат состоит условно из треков, в которых хранится нота и её длительность примерно! вообщем не это главное. Мне не понятно как проиграть два разных звука в одно время? Суммирование волн и тд и тп? мне не совсем понятно в что это даст! Ибо мне не известна амплитуда, и тд и тп. Известна только частота (то есть сама нота). Да и собственно и собственно и работа со спикером подразумевает передачи ему частоты и длительности , если брать Делфи(или есть то что я не знаю?)! Ну думаю суть понятна! Нужен какой-нить алгоритм или просто обьяснение! Всем спасибо!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 Последний раз редактировалось Hacker19_90; 12.04.2012 в 23:17. |
12.04.2012, 23:28 | #2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Использовать BASS уже не круто?
|
12.04.2012, 23:29 | #3 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
эм... Bass со спикером работает?
Помоему нет!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
13.04.2012, 08:29 | #4 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Немного не то, но некоторые вопросы затрагивает: http://habrahabr.ru/post/100581/#habracut
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
13.04.2012, 18:01 | #5 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Скажу сразу: идея изначально дохлая.
Майкрософт еще в 3-й версии 16-разрядной Windows пытались включить в дистрибутив драйвер для PC-спикера (исключительно потому, что практически ни у кого тогда не было колонок), но быстро отказались от этой идеи ввиду неудовлетворительного качества звука. Причины этой "неудовлетворительности" две: 1. Малый динамический диапазон, связанный с однобитностью PC-спикера. 2. Серьезные искажения интервалов времени из-за многозадачности системы. Теперь подробнее. Сам РС-спикер подключен к выходу логического элемента, объединяющего сигнал с таймера (аналог микросхемы Intel 8253) и порта ввода/вывода (аналог Intel 8255). Поэтому PC-спикером можно управлять двумя способами: - задать 53 таймеру частоту, которую он будет генерировать и включать или выключать звук через 55 порт. - остановить таймер и с нужной частотой менять сигнал на выходе 55 порта. Первый способ реализован в BEEP и ее многочисленных аналогах. Процессор при этом свободен, т.к. звук генерит таймер, но возможна генерация единственной частоты. Для генерации всего остального (нескольких нот одновременно, произвольного звука и пр.) этот способ не подходит. Во втором способе процессор должен сам переключать состояние порта, при этом с высокой точностью выдерживая временные интервалы. Увы, в многозадачной ОС это невозможно, т.к. прикладная программа (упрвляющая спикером) может быть в любой момент прервана для выполнения другой прикладной задачи либо для системных нужд. А любое отклонение длительности от требуемой вносит большие искажения. Ну и с динамикой не все в порядке т.к. при однобитном воспроизведении единственный способ достичь желаемого - дельта-модуляция. А при ней в самом лучшем случае (а лучший случай - когда мы заранее ограничиваем максимальное количество звучащих одновременно нот) доля излучаемой звуковой энергии, приходящейся на каждую ноту, уменьшается пропорционально квадрату количества нот. Последний раз редактировалось s-andriano; 13.04.2012 в 18:04. |
17.04.2012, 09:27 | #6 |
Новичок
Джуниор
Регистрация: 17.04.2012
Сообщений: 3
|
Вы говорите о старом PC-спикера? Серьезно?
|
17.04.2012, 11:00 | #7 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Уже обсуждалось здесь http://www.programmersforum.ru/showthread.php?t=184663
Последний раз редактировалось Aliens_wolfs; 17.04.2012 в 11:37. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проигрывание MIDI мелодии через Speaker | IvaD | Мультимедиа в Delphi | 2 | 23.01.2012 12:01 |
pc speaker | IceBreaker | Общие вопросы C/C++ | 8 | 27.01.2011 18:44 |
Программирование MIDI-контроллёров. Или работа со звуком (.midi). | sergeyrudnev | Помощь студентам | 0 | 16.06.2010 19:19 |