imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 06.02.2004, 16:24     # 1
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
- подсказать как закончить мой исходник.

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



Желаю всем всего самого доброго и удачи!
Искренне и с уважением,
Александр.
 
Старый 20.02.2004, 23:34     # 2
stasok
Member
 
Аватар для stasok
 
Регистрация: 11.10.2002
Адрес: Israel Бат-ям
Сообщения: 379

stasok Нуль без палочки
www.pchards.boom.ru/hard/midi/ adapters/adapters.htm
stasok вне форума  
Старый 22.02.2004, 15:42     # 3
mavsai
Guest
 
Сообщения: n/a

stasok Спасибо за ссылку! Похожет - там я смогу найти понимание и единомышленников.

А вот с программкой - может еще есть ссылки???
 

Опции темы

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

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

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


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




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