| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
эмулятор клавитауры для синтезатора
Кто знает - как в программе ДОСовской (на СИ) присвоить значения клавиш так, чтобы они могли управлять звуковой картой, превращая комп в синтезатор???
Я нигде не могу найти простейший эмулятор клавитауры для изготовления синтезатора для детишек. А те что есть (Квакеволки 5) - не устраивают по ряду причин. Вот мои мысли на счет музыки дома и детям: > Так как у нас нет денег для покупки даже самого дешевого > миди-синтезатора, то я придумал как сделать самую дешевую МИДИ для > детей. Не обязательно им покупать дорогую МИДИ клавиатуру, может она им и не понравится и будет пылиться без дела, а вот попробовать на простой - такая вот идея. > > К кейборду подключить контакты клавиатуры пианино, музприставки (у которых есть контакт на замыкание ) так, чтобы эти контакты дублировали контакты кейборда компьютера. Таким образом получиться дешевая МИДИ-клавитура. > А на самом кейборде переключать еще и остальные функции - тембры, режимы.... > Еще можно задействовать и мышь для управления громкостью, тембром. Включить её в педаль. Хорошо бы это сделать под ДОСом - есть старая 486-я писишка - вот её бы и использовать в качестве синтезатора. Я не знаю как обратиться к МИДИ (звуковой карте), какие коды нужны, а так бы и сам написал на СИ эмулятор. Ведь были в старые ДОСовские времена такие программы!!!! Да теперь никак этот антиквариат не найти.... Если можете что подсказать или где искать - буду премного благодарен. А может и больше.... Творческих успехов!!! МАВ. |
|
|
# 2 |
|
Administrator
Регистрация: 13.05.2002
Сообщения: 11 227
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Chto za zwukowuha na 4'ke?
__________________
Осколки прошлого, как снег, закрутит ураган времён, В ушедший день для нас навек, обрушив мост, Оставив в наших душах след, тьма уплывёт за горизонт, И в чистом небе вспыхнет свет, свет новых звёзд. |
|
|
|
|
# 3 |
|
Guest
Сообщения: n/a
|
о МИДИ клаве - детям
Есть идея о создании МИДИ клавы. Искал по инету прогу - но вот нигде не могу найти - простейший эмулятор клавитауры для изготовления синтезатора для детишек. Эмулятора под ДОС с возможностью назначения клавиш в самой программе. Вот мои соображения на счет музыки дома и детям: Так как у нас нет денег для покупки даже самого дешевого миди-синтезатора, то я придумал как сделать самую дешевую МИДИ для детей. Не обязательно им покупать дорогую МИДИ, может она им и не понравится и будет пылиться без дела, а вот попробовать на простой - такая вот идея. Да, играть с помощью виртуальных для Виндов пианино - не возможно из-за задержек по времени. ====== Что предложили: Если карта стоит на том же компьютере, что и клавиатура, то наружу MIDI уж лучше выводить прямо через внешний MIDI-out карты, а не через LPT! Для этого их надо посылать на MPU-401 порт. На всякий случай - в win выдать что-то по MIDI - очень простая задача. Ответ: Как запасной вариант для начала - хорошо! Согласен! Но я буду привязан к эмулятору клавиатуры, я её сам не напишу. Готовая же будет для меня недоступна - чужой исходник всегда трудно понять. И при этом - у меня клава от Ямахи(?) 60 клавиш на герконах, а эмуляторы столько не имеют. Далее. Нужен винт хоть на 50 мб, флопарь, монитор, видеокарта. В моем варианте - наружу MIDI лучше выводить через LPT! Вот что есть: 1) Программируем таймер для стабильности частоты (чтобы не зависела от частоты процессора. Если программа будет стоять на компах с другой частотой от 286 до 4-го Пентиума. У меня дома Атлон 1500) – это нужно для формирования последовательности МИДИ посылок: // Override timer interrupt // ------------------------ oldhandlerTIMER = getvect(TIMER_INT_VECT); setvect(TIMER_INT_VECT,tim); outportb(0x21, inportb(0x21) & 0xfe); outportb(0x43, 0x34); // Timer is set for 0x0080 * 838.0965 ns = 107.27635 microsec (9.3217 kHz) outportb(0x40, 0x80); // least significant byte of timer count outportb(0x40, 0x00); // most significant byte of timer count // -------------------------------------------------------------------- 2) По прерыванию таймера опрашиваем коды нажатия и отпускания клавиш: Clock_counter = 0; while(key != ESC) { if(kbflag) { key = inportb(0x60); switch(key) { case A: n:=1; o:=2// Нота – октава (может сила нажатия - m) extreg(n,o); break; case S: n:=2; o:=2 extreg(n,o); break; --------------------------------------- 3) В модуле extreg(n,o); формируется временная последовательность обмена –посылки- приема через LPT в формате МИДИ. Где код МИДИ выдается с нужной частотой, в нужном формате, выходной уровень: TTL – это уже есть в LPT. Что я не знаю для того, чтобы закончить эту программу: как должен выглядеть код МИДИ, в каком формате. Описание самих кодов есть – нужен для начала хотя бы только один пример - выдачи например, ноты Ля. То есть = как должен выглядеть весь процесс выдачи этой команды, осциллограмма этой последовательности. Чем этот вариант лучше для меня. 1. Большая часть программы уже написана и работала – управление шаговыми двигателями. 2. Нет ассемблера, которого я не знаю 3. Не надо опрашивать тип карты и писать для каждой подпрограмму. Лишь бы был стандартный вход МИДИ. Например, у меня интегрированная АС97 – как ею управлять? 4. Я могу по своему усмотрению управлять МИДИ всеми 101 клавишами кейборда + расширение Шифтом, Альтом, Контролом, и плюс использовать потом и мышь и джойстик. А это перспективы в развитии! 5. И программа получается максимально простой под голым ДОСом. 6. Из железа - 386 проц, флопарь, мультикарта, клава, мышь. Не нужен винт, монитор. ================ Я думаю - лучше пусть рядом хоть лаптоп стоит и в нем управлять всем процессом музтоворчества глухой МИДИ клавой, чем всё заталкивать в корпус клавы. Я сейчас перед выбором таких вариантов: 1) Кейборд --- обработка в программе -- выдача МИДИ команд через LPT 2) Кейборд --- обработка в программе -- управление звуковой картой по каналу DMA --- из неё выход МИДИ дальше 3) микроконтроллер --- выход МИДИ -- + в клаве кейборд для управления виртуальными синтами в компе. =========== Кто и что сможет: - дать ссылку на исходники этих эмулятров под ДОС для карты Creative SB AWE64 - подсказать как закончить мой исходник. - ваши варианты Желаю всем всего самого доброго и удачи! Искренне и с уважением, Александр. |