imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 05.12.2002, 10:44     # 1
mavsai
Guest
 
Сообщения: n/a

эмулятор клавитауры для синтезатора

Кто знает - как в программе ДОСовской (на СИ) присвоить значения клавиш так, чтобы они могли управлять звуковой картой, превращая комп в синтезатор???


Я нигде не могу найти простейший эмулятор клавитауры для изготовления синтезатора для детишек. А те что есть (Квакеволки 5) - не устраивают по ряду причин.

Вот мои мысли на счет музыки дома и детям:

> Так как у нас нет денег для покупки даже самого дешевого
> миди-синтезатора, то я придумал как сделать самую дешевую МИДИ для
> детей. Не обязательно им покупать дорогую МИДИ клавиатуру, может она им и не
понравится и будет пылиться без дела, а вот попробовать на простой -
такая вот идея.
>
>
К кейборду подключить контакты клавиатуры пианино, музприставки (у
которых есть контакт на замыкание ) так, чтобы эти контакты
дублировали контакты кейборда компьютера. Таким образом получиться
дешевая МИДИ-клавитура.
> А на самом кейборде переключать еще и остальные функции - тембры,
режимы....

> Еще можно задействовать и мышь для управления громкостью, тембром.
Включить её в педаль.
Хорошо бы это сделать под ДОСом - есть старая 486-я писишка - вот её бы и использовать в качестве синтезатора.
Я не знаю как обратиться к МИДИ (звуковой карте), какие коды нужны, а так бы и сам написал на СИ эмулятор.

Ведь были в старые ДОСовские времена такие программы!!!! Да теперь никак этот антиквариат не найти....

Если можете что подсказать или где искать - буду премного благодарен. А может и больше....

Творческих успехов!!!
МАВ.
 
Старый 05.12.2002, 19:31     # 2
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Chto za zwukowuha na 4'ke?
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 24.02.2004, 10:41     # 3
mavsai
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
- подсказать как закончить мой исходник.

- ваши варианты



Желаю всем всего самого доброго и удачи!
Искренне и с уважением,
Александр.
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 18:43.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.