Ніжна міді клавіатура зробити своїми руками. Як зробити зручний синтезатор власноруч. Історія створення пристрою

Це проста схема MIDI клавіатури, призначеної для використання зі стандартною звуковою картою ПК з MIDI / Game портом. Клавіатура живиться безпосередньо від ігрового порту, немає потреби блоку живлення.

Схема Midi клавіатури MKC64 v1.54



Набір деталей


Мікросхеми: Контролер PIC16F84 або PIC16C84. Дешифратор 74LS138 або аналог К555ІД7.
Кварцовий резонатор: ZQ1 = 4 МГц.
Конденсатори: С1 = 47мФ; С2, С3 = 27пФ; C4 = 0.1мФ
Резистори: R1, R2, R4 = від 1 до 10 Ком; R3 = 270Ом для захисту виходу MIDI; R5 = 2k2
Діоди: D1-D64 = КД522 (Будь-який тип стандартних діодів)
Роз'єми: DB15

Прошивка


Якщо використовувати прошивку MKC1.4 без перемички jmp1, то почати клавіші з ноти ДО (C) з перемичкою з ноти ФА (F)
Якщо використовувати прошивку MKC1.54, то jmp1 виводиться програмна кнопка S1, яка дозволяє керувати деякими функціями
Для керування необхідно натиснути кнопку S1, та утримуючи її, натисніть одну з 16 лівих клавіш на клавіатурі.

Таблиця клавіш керування функціями:
1 Змінити MIDI канал -1 (1..16)
2 Змінити MIDI канал +1 (1..16)
3 Зниження октави -1 (1..11)
4 Підвищення октави +1 (1..11)
5 Запуск ноти -1
6 Запуск ноти +1
7 Зниження швидкості -1 (1..127)
8 Підвищення швидкості +1 (1..127)
9 All Notes On message Увімкнути
10 All Notes Off message Вимкнути
11 NoteOn (швидкість = 0)
12 NoteOff
13 MIDI Програма -1
14 MIDI Програма +1
15 MIDI банк -1
16 MIDI Банк +1

В основному стаття розрахована на гітарастів і іже з ними, оскільки мало кому необхідний ножний контролер, включив додаткову клаву, забиндив клавіші і вперед. Хоча може ось для діджеїв таке керування цілком доречне. Але найкраще воно підходить для Guitar Rig та TH1. Загалом сьогодні ми збиратимемо щось схоже на:

І так, спершу необхідно зібрати необхідні запчастини. Ось їх невеликий список:

Корпус. Перше і найголовніше, що потрібно, складно знайти підходяще. Я купив для цього діла чохол для кию.
- USB клавіатура, бажано не дуже давня, бо можливо розпаювання не підійде.
- Клавіші (ті, що я підібрав): PBS-16B (ФУТИ), SPA-101B4 (ДОПИ), PBS-15B push ON (ВКЛ). Усі без фіксації. Придбати можна в Чіп та Діпі.
- Провід. Багато одножильних. Я думаю для цього найкраще підійде кручена пара. 2х метрів за очі. Тільки розмотувати незручно.
- Ну і паяльник думаю майже у кожного знайдеться, хто вирішив збирати цей девайс.
- Інструменти для отворів в корпусі. Хто чим спроможний, можна хоч саморізом, а потім правити ножем, але знову ж таки думаю у всіх знайдеться дриль.

Ну що ж, почнемо. Перше, що необхідно зробити це намітити і просвердлити отвори в корпусі:

Тепер приступимо до шкідливішої частини виготовлення нашого футсвіча. Паяємо дроти відповідно до схеми, не забуваємо на вході з клави вішати розпізнавальні листки з номерами входів:

Повинно вийде щось на кшталт цього:

Зараз розпочнеться дуже ювелірний процес із паяння до контролера від УСБ клавіатури. Зауважу, якщо вам пощастило купити/знайти/відібрати клавіатуру з таким контролером, як на схемі, що прикріплена вище, то без паяльної станції не обійтися. Прикріпити до корпусу плату можна майже будь-якими підручними засобами, рідкі цвяхи, шурупи, суперклей, силікон, та й взагалі якщо штовхати сильно не будіть, то і так тримається, але залежить від корпусу, кручена пара щільно притискає плату.

Робимо косметичні покращення, хто захоче, припаює діод на корпус від NUB LOCK"а... Зробить отвір під провід і перетягне USB кабель. Ну а там, на що вже фантазії вистачить. Кінцевий результат:

Фаза 2. Налаштування програмного забезпечення. Сподіваюся це для кожного, хто виготовив цей девайс, не стане проблемою. Для Guitar Rig робиться все простіше нікуди, включаємо NUM Lock, включаємо клуню, відкриваємо OPTIONS - CONTROLLER, натискаємо MENU, шукаємо необхідну дію, кикаємо на клавішу Learn і вибираємо відповідну кнопку на нашому контролері. Потім натискаємо на Add Controller і проводимо ті самі операції. І так поки не наберемо все, що необхідно або не закінчаться клавіші. Так само можна призначити клавішу на майже будь-яку дію в третій клуні, натискаємо правою кнопкою миші на об'єкт і клацаємо знову на Learn.

А ось тепер якщо є інтерес налаштувати все це дітище на Midi команди, то доведеться ще трохи розважитися.
Значить нам необхідно програмне забезпечення, яке биндит клавіші на міді команди. І така програма є, правда аналогів не зустрічав, благо лікувати від жадібності не потрібно. Називається Virtual Midi Controller, налаштовується дія по кнопці у вкладці C IN, установка - Setup - Далі - Далі. Ось посилання .


Разом з нею ставиться і віртуальний MIDI кабель, так що зайвих рухів тіла робити не доведеться. Для дуже лінивих викладаю попереднє встановлення банку для футсвіча: банк - їм слід замінити файл в корені папки з програмою, за замовчуванням C: Program Files Virtual Midi Controller, попередньо вийшовши з VMC. Для зручності в SETUP поставити галку Run In Background і в основному вікні VMC тицьнути на літеру К, після чого приймати команди прога буде і в згорнутому режимі. Тепер для виходу із проги потрібно ліквідувати її у треї. І ось починаючи з цієї хвилини ви зможете керувати і Nuendo та Sonar з футсвіча. Та й звичайно TH1 теж через міді вистачає нашу клаву.

Будуть питання, звертайтесь...

Наступний задумані проекти:
- Екранування гітари.
- Комбік своїми руками.

Успіхів Вам у муздіяльності...

У дитинстві у мене було піаніно, таке справжнє, радянське, кілограм на 300. Мені подобалося на ньому бринькати, а після закінчення музичної школи навіть дещо грати. Піаніно – це класно, автентично, але зовсім не практично. А щоб зовсім прямий для душі, потрібна ще й барабанна установка, п'яток примочок до електрогітари, кларнет, ситар та семплові лупи…

Звичайно, зараз уже не потрібно з квартири робити гараж-студію на заначку у шість зарплат, достатньо встановити на ПК безкоштовний музичний редактор. Але незручно це все.

Клавіатура ПК зовсім не схожа на кнопковий інструмент, тут все не так. Понад те, навчання дитини це зовсім годиться. Здається вибору не залишається, як набувати синтезатора. Але, як і раніше, роздирають мене сумніви.

Адже синтезатор що собою являє? Великий пристрій, з музичною клавіатурою, який десь має займати пристойне місце. У яке вбудована акустика, адже я вже маю ресивер з колонками. У яке вбудований поганий ПК, адже я маю хороший ПК.

Виходить, що за 40 тисяч я купую те, що я вже маю в найкращій якості, за винятком лише клавіатури. Це просто якийсь максимум нераціональних витрат.

У пошуках окремої клавіатури я натрапив на такий клас пристроїв, як USB MIDI Keyboard.
Мені завжди здавалося, що MIDI це з галузі професійної музичної діяльності.
Але зараз усі музику роблять на ПК, у будь-якому зручному місці, а отже музикантам потрібні мобільні музичні клавіатури, які легко поміщаються в рюкзак.

У голові одразу склався план. Підключаємо MIDI-клавіатуру до домашнього медіацентру на базі Raspberry Pi 3, де крутиться програмний синтезатор, дозволяючи в будь-який час будь-якому, хто бажає виконати свій черговий шедевр. На таких MIDI-клавіатурах зазвичай є набір регуляторів та додаткових кнопок, які програмуються на різні ефекти або додаткові музичні інструменти. Виглядає та звучить це дуже круто!

Є пристрої більші і менші, є дорожчі і трохи дешевші. Я вибрав варіант приблизно за 5 тир. У нього дві октави, нормального розміру клавіші, кнопки для ударників, ручки налаштування, тобто все, про що може мріяти музикант-електронник-початківець.

Я не фахівець у створенні музики на ПК, тому було складно шукати шляхи реалізації свого задуму. Інформацію доводилося збирати по крихтах. Пазл поступово став складатися і вдалося зібрати працююче рішення, яким з вами і ділюся. Як не дивно, але в стандартному дистрибутиві Raspbian/Debian знайшлося все, що потрібно, навіть не довелося підключати зовнішні репозиторії.

Як секвенсер (додаток, що відтворює MIDI-файли) використовується fluidsynth.
MIDI-клавіатура одразу виявляється через ALSA і доступна для підключення до секвенсеру.
Для відтворення звуків різних інструментів використовуються відкриті бази семплів у форматі SoundFont2. Для початку встановимо це все.

Sudo -s apt-get update apt-get -y install alsa-utils fluid-soundfont-gm fluidsynth
Підключаємо MIDI-клавіатуру до Raspberry та запускаємо секвенсер у режимі сервера:

Fluidsynth -i -s -a alsa -g 3 /usr/share/sounds/sf2/FluidR3_GM.sf2
Виконуємо команду:

Aconnect -o
В результаті ми побачимо список доступних MIDI-клієнтів:

Client 14: "Midi Through" 0 "Midi Through Port-0" client 20: "VMini" 0 "VMini MIDI 1" 1 "VMini MIDI 2" client 128: "FLUID Synth (1628)" 0 "Synth input port (1628 :0)"
Тут нам важливо запам'ятати номери клієнтів клавіатури та секвенсера, щоб потім з'єднати їх командою:

Aconnect 20:0 128:0
Тепер у нас все готове до гри на Yamaha Piano (це дефолтний інструмент). Почитайте мануал по fluidsynth, там є багато цікавих команд, наприклад, щоб змінити інструмент на ударники або духові, задати величину реверберації чи хорусу.

Зробимо наш програмний синтезатор зручним. Щоб не з'єднувати вручну клавіатуру з секвенсером щоразу, напишемо простенький демон, який це робитиме при старті автоматично.

Cat > /etc/init.d/fluidsynth<< EOF #!/bin/bash ### BEGIN INIT INFO # Provides: fluidsynth # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Fluidsynth deamon to play via MIDI-keyboard ### END INIT INFO startDaemon() { sleep 30s && fluidsynth -i -s -a alsa -g 3 --load-config=/home/osmc/midi-router >/var/log/fluidsynth & sleep 60s && aconnect 20:0 128:0 & ) stopDaemon() ( pkill -9 fluidsynth &> /dev/null ) restartDaemon() ( stopDaemon startDaemon ) case "$1"a start ;
stop) stopDaemon;;

restart) restartDaemon;;
status);;

*) startDaemon esac exit 0 EOF

Реєструємо демон для автозапуску:

Chmod 755 /etc/init.d/fluidsynth update-rc.d fluidsynth defaults

Зверніть увагу, тепер при старті секвенсер передається конфігураційний файл (/home/osmc/midi-router), що містить команди, що перетворюють нашу клавіатуру на справжній синтезатор.<< EOF # загружаем стандартные инструменты и ударники, найденные где-то на просторах Сети load /usr/share/sounds/sf2/FluidR3_GM.sf2 load /home/osmc/241-Drums.SF2 # связываем инструмент каждый со своим каналом select 1 2 128 0 select 2 1 0 0 # по умолчанию звук идет на канал 0 # перенаправляем события с квадратных клавиш на канал с ударными router_begin note router_chan 0 0 0 1 router_par1 36 48 1 0 router_end # события с остальных клавиш перенаправляем на канал с пианино router_begin note router_chan 0 0 0 2 router_par1 0 35 1 0 router_end router_begin note router_chan 0 0 0 2 router_par1 49 255 1 0 router_end # события с ручек мэпим на события, которые понимает секвенсер, # полный их список есть в документации на сайте fluidsynth router_begin cc router_chan 0 0 0 2 router_par1 14 14 0 98 router_end router_begin cc router_chan 0 0 0 2 router_par1 15 15 0 11 router_end router_begin cc router_chan 0 0 0 2 router_par1 16 16 0 91 router_end router_begin cc router_chan 0 0 0 2 router_par1 17 17 0 93 router_end # выключаем громкость на канале 0, # иначе при нажатии на клавишу # разные инструменты будут звучать одновременнно cc 0 7 0 EOF
Тут річ у чому. Кожна клавіша та крутилка на клавіатурі посилає певні події зі своїм номером. Я так зрозумів тут особливих стандартів немає, тому кожен виробник творить що хоче. Наприклад, я хочу, щоб квадратні клавіші звучали ударними, інші клавіші звучали піаніно, ручки керували гучністю, реверберацією та хорусом.

Так ось, мені необхідно замепі коди подій від клавіатури на різні інструменти, а коди від ручок на коди, які розуміє секвенсер. У fluidsynth це робиться за допомогою router. Саме ці команди містяться в конфігураційному файлі.
Ось приклад мого файлу конфігурації, з коментарями того, що він робить.

Cat > /home/osmc/midi-router

  • Щоб дізнатися які коди генерує саме ваш пристрій, необхідно скористатися цією утилітою:
  • У дитинстві у мене було піаніно, таке справжнє, радянське, кілограм на 300. Мені подобалося на ньому бринькати, а після закінчення музичної школи навіть дещо грати. Піаніно – це класно, автентично, але зовсім не практично. А щоб зовсім прямий для душі, потрібна ще й барабанна установка, п'яток примочок до електрогітари, кларнет, ситар та семплові лупи…

    Звичайно, зараз уже не потрібно з квартири робити гараж-студію на заначку у шість зарплат, достатньо встановити на ПК безкоштовний музичний редактор. Але незручно це все.

    Клавіатура ПК зовсім не схожа на кнопковий інструмент, тут все не так. Понад те, навчання дитини це зовсім годиться. Здається вибору не залишається, як набувати синтезатора. Але, як і раніше, роздирають мене сумніви.

    Адже синтезатор що собою являє? Великий пристрій, з музичною клавіатурою, який десь має займати пристойне місце. У яке вбудована акустика, адже я вже маю ресивер з колонками. У яке вбудований поганий ПК, адже я маю хороший ПК.

    Виходить, що за 40 тисяч я купую те, що я вже маю в найкращій якості, за винятком лише клавіатури. Це просто якийсь максимум нераціональних витрат.

    У пошуках окремої клавіатури я натрапив на такий клас пристроїв, як USB MIDI Keyboard.
    Мені завжди здавалося, що MIDI це з галузі професійної музичної діяльності.
    Але зараз усі музику роблять на ПК, у будь-якому зручному місці, а отже музикантам потрібні мобільні музичні клавіатури, які легко поміщаються в рюкзак.

    У голові одразу склався план. Підключаємо MIDI-клавіатуру до домашнього медіацентру на базі Raspberry Pi 3, де крутиться програмний синтезатор, дозволяючи в будь-який час будь-якому, хто бажає виконати свій черговий шедевр. На таких MIDI-клавіатурах зазвичай є набір регуляторів та додаткових кнопок, які програмуються на різні ефекти або додаткові музичні інструменти. Виглядає та звучить це дуже круто!

    Є пристрої більші і менші, є дорожчі і трохи дешевші. Я вибрав варіант приблизно за 5 тир. У нього дві октави, нормального розміру клавіші, кнопки для ударників, ручки налаштування, тобто все, про що може мріяти музикант-електронник-початківець.

    Я не фахівець у створенні музики на ПК, тому було складно шукати шляхи реалізації свого задуму. Інформацію доводилося збирати по крихтах. Пазл поступово став складатися і вдалося зібрати працююче рішення, яким з вами і ділюся. Як не дивно, але в стандартному дистрибутиві Raspbian/Debian знайшлося все, що потрібно, навіть не довелося підключати зовнішні репозиторії.

    Як секвенсер (додаток, що відтворює MIDI-файли) використовується fluidsynth.
    MIDI-клавіатура одразу виявляється через ALSA і доступна для підключення до секвенсеру.
    Для відтворення звуків різних інструментів використовуються відкриті бази семплів у форматі SoundFont2. Для початку встановимо це все.

    Sudo -s apt-get update apt-get -y install alsa-utils fluid-soundfont-gm fluidsynth
    Підключаємо MIDI-клавіатуру до Raspberry та запускаємо секвенсер у режимі сервера:

    Fluidsynth -i -s -a alsa -g 3 /usr/share/sounds/sf2/FluidR3_GM.sf2
    Виконуємо команду:

    Aconnect -o
    В результаті ми побачимо список доступних MIDI-клієнтів:

    Client 14: "Midi Through" 0 "Midi Through Port-0" client 20: "VMini" 0 "VMini MIDI 1" 1 "VMini MIDI 2" client 128: "FLUID Synth (1628)" 0 "Synth input port (1628 :0)"
    Тут нам важливо запам'ятати номери клієнтів клавіатури та секвенсера, щоб потім з'єднати їх командою:

    Aconnect 20:0 128:0
    Тепер у нас все готове до гри на Yamaha Piano (це дефолтний інструмент). Почитайте мануал по fluidsynth, там є багато цікавих команд, наприклад, щоб змінити інструмент на ударники або духові, задати величину реверберації чи хорусу.

    Зробимо наш програмний синтезатор зручним. Щоб не з'єднувати вручну клавіатуру з секвенсером щоразу, напишемо простенький демон, який це робитиме при старті автоматично.

    Cat > /etc/init.d/fluidsynth<< EOF #!/bin/bash ### BEGIN INIT INFO # Provides: fluidsynth # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Fluidsynth deamon to play via MIDI-keyboard ### END INIT INFO startDaemon() { sleep 30s && fluidsynth -i -s -a alsa -g 3 --load-config=/home/osmc/midi-router >/var/log/fluidsynth & sleep 60s && aconnect 20:0 128:0 & ) stopDaemon() ( pkill -9 fluidsynth &> /dev/null ) restartDaemon() ( stopDaemon startDaemon ) case "$1"a start ;
    stop) stopDaemon;;

    restart) restartDaemon;;
    status);;

    *) startDaemon esac exit 0 EOF

    Реєструємо демон для автозапуску:

    Chmod 755 /etc/init.d/fluidsynth update-rc.d fluidsynth defaults

    Зверніть увагу, тепер при старті секвенсер передається конфігураційний файл (/home/osmc/midi-router), що містить команди, що перетворюють нашу клавіатуру на справжній синтезатор.<< EOF # загружаем стандартные инструменты и ударники, найденные где-то на просторах Сети load /usr/share/sounds/sf2/FluidR3_GM.sf2 load /home/osmc/241-Drums.SF2 # связываем инструмент каждый со своим каналом select 1 2 128 0 select 2 1 0 0 # по умолчанию звук идет на канал 0 # перенаправляем события с квадратных клавиш на канал с ударными router_begin note router_chan 0 0 0 1 router_par1 36 48 1 0 router_end # события с остальных клавиш перенаправляем на канал с пианино router_begin note router_chan 0 0 0 2 router_par1 0 35 1 0 router_end router_begin note router_chan 0 0 0 2 router_par1 49 255 1 0 router_end # события с ручек мэпим на события, которые понимает секвенсер, # полный их список есть в документации на сайте fluidsynth router_begin cc router_chan 0 0 0 2 router_par1 14 14 0 98 router_end router_begin cc router_chan 0 0 0 2 router_par1 15 15 0 11 router_end router_begin cc router_chan 0 0 0 2 router_par1 16 16 0 91 router_end router_begin cc router_chan 0 0 0 2 router_par1 17 17 0 93 router_end # выключаем громкость на канале 0, # иначе при нажатии на клавишу # разные инструменты будут звучать одновременнно cc 0 7 0 EOF
    Тут річ у чому. Кожна клавіша та крутилка на клавіатурі посилає певні події зі своїм номером. Я так зрозумів тут особливих стандартів немає, тому кожен виробник творить що хоче. Наприклад, я хочу, щоб квадратні клавіші звучали ударними, інші клавіші звучали піаніно, ручки керували гучністю, реверберацією та хорусом.

    Так ось, мені необхідно замепі коди подій від клавіатури на різні інструменти, а коди від ручок на коди, які розуміє секвенсер. У fluidsynth це робиться за допомогою router. Саме ці команди містяться в конфігураційному файлі.
    Ось приклад мого файлу конфігурації, з коментарями того, що він робить.

    Cat > /home/osmc/midi-router



    Aseqdump -p 20:0

    Вона слухає та виводить на консоль події з MIDI-клавіатури. Натисніть або покрутіть ручку і ви побачите тип, канал і код події. Ви можете запрограмувати свою клавіатуру таким чином, як захочете, а не так, як це придумали інженери, які розробили конкретний синтезатор. За що велике спасибі розробникам fluidsynth, alsa, SoundFont2, Raspberry та V-Mini.

    Якийсь час тому у зв'язку з покупкою квартири я вимушено втратив шикарний інструмент, який виконував у мене роль MIDI клавіатури – це була легендарна YAMAHA DX-7. Коли сум затих, у всій гостроті й непривабливості постало питання: а на чому ж працювати? Саме в цей момент стараннями мого приятеля в мої ручки, що загребають, потрапила напівзібрана схема на КР1816ВЕ39 (по супостатському цей процесор зветься 8048). Схема проста і в збиранні, і в налагодженні, і, головне, підвернулася під руку в потрібний час. Клавіатуру я зібрав у вигляді матриці 8×6, застосувавши КР1533ІД7 та КР1533КП7. Не обійшлося і без ложки дьогтю – два недоліки цієї схеми на смерть вбивають усі її переваги: ​​відсутність чутливості до швидкості натискання клавіші (динаміки) та колеса PITCH WEEL. Ну, я колись програмував на Z-80 (і навіть зробив працюючий секвенсор) і вирішив струснути старовиною. Z-80 як CPU я рішуче відмів, як морально застарілий. Крім того, не хотілося багато паяти, і я вирішив взяти за основу цей девайс на КР1816ВЕ39, оснастивши його ще одним мультиплексором для розмикаючих (верхніх) контактів клавіш. Я знайшов документацію (ви не повірите - в бібліотеці, книга "Проектування цифрових пристроїв на однокристальних мікропроцесорах") на асемблер КР1816ВЕ39 і накарябал програму ... І тут з'ясувалося, що у приятеля здох програматор ПЗУ, і зашити програму просто нічим ... Від горя я зовсім розум і вирішив переписати той самий алгоритм під PIC. За півдня був спаяний програматор (LUDIPIPO), потім макет з панельки, КР1533ІД7 та пари КР1533КП7, а весь монтаж зроблений МГТФ без жодної печатки. І процес пішов…

    Спочатку був запущений нединамічний варіант програми (його я теж наводжу для тих, хто має клавіатуру один контакт на клавішу). Згодом запустилася динамічна версія. І тут дозріла думка додати кнопки та індикатор. Справа в тому, що у мене без діла давно валялася хустка WAVEBLASTER (дочірній wavetable синтезатор для дуже старих звуковух). Підключивши її до мого творіння, я отримав щось, на чому можна грати (в міру сил та таланту) без комп'ютера, що іноді досить зручно. Це й визначило набір функцій на кнопках - він може стати у нагоді при підключенні до звукових модулів при "живій" грі. Функції кнопок легко змінити, написавши свої обробники та використовуючи мої процедури опитування та індикації. Сяк-так зібрана в залізному корпусі клавіатура виявилася зручнішою, ніж YAMAHA PSS (все ж таки повнорозмірні клавіші, педаль і, головне, динаміка!). У розпалі творчого процесу виникло складне бажання зробити версію MIDI клавіатури чисто для комп'ютера – індикатор і кнопки необов'язкові, але потрібні колеса PITCH WEEL і MODULATION. Якийсь час я з ним боровся, але, зрештою, здався і знову ввімкнув паяльник. Електроніку зібрати нескладно, з механікою – дещо складніше, і я почав морщити лоба над пристроєм колеса. Подумавши, я вирішив відмовитися від другого колеса – все одно я ніколи не кручу їх відразу обидва, зазвичай спочатку пишу ноти та pitch, потім дописую modulation. Не останньою міркуванням було й зменшення вдвічі обсягу настільки улюблених мною механічних робіт. Для менш лінивих я нижче поясню, як майже не ускладнюючи схему зробити два колеса. Щоб все-таки мати можливість писати modulation, я вирішив організувати три режими роботи колеса: pitch на 2 півтони, pitch на 1 півтон (зручно), і modulation. Перемикати все це можна однією кнопкою, а індикувати режим - парою світлодіодів. Щоб спростити схему, решта кнопок та індикаторів я ліквідував, для роботи з сучасними програмами-секвенсорами це все не потрібно.

    Колесо, звичайно ж, має бути надіте на вісь потенціометра, це зрозуміло, а ось до чого його підключити? Першою думкою було використовувати одновібратор на таймері 555. Але розрахунок показав, що буде важко досягти точності та стабільності вимірювання тривалості імпульсу при спробі забезпечити прийнятну частоту опитування колеса, адже процесор здебільшого зайнятий виміром часу перемикання клавіатурних контактів. Залишився шлях використання аналого-цифрового перетворювача (АЦП). Оскільки у мене використовувався Pic16F84 без вбудованого АЦП, я згадав інженерне минуле (і рідний завод) і зробив АЦП із кількох резисторів із компаратором (і шматка програми). Вийшло просто, дешево та досить точно.

    Я наводжу обидві схеми і з кнопками, і з колесом, а також програми для них. За бажання обидві схеми можна легко поєднати, злегка змінивши адреси зовнішніх пристроїв, потрібно тільки пам'ятати, що режим CHORUS (STEREO) використовує pitch для отримання розладу і його потрібно або забрати, або перейде передачею pitch з розладом по каналах.

    Отже – власне клавіатура

    Схема пристрою

    Першим з'явився нединамічний варіант, нечутливий до сили удару по клавіші для перевірки працездатності макета.

    Я використовував PIC16F84 як процесор з кількох міркувань: ця мікросхема доступна, дешева і зручно програмується, крім того - саме вона опинилася у мене під руками. Увага: PIC16C84 не годиться - у нього ОЗУ всього 36 осередків і програма не працюватиме. Втім, схема з колесом використовує менше осередків ОЗУ і її програму можна втиснути і в PIC16C84, скоротивши ще пару осередків, наприклад MIDCH (надавши постійний MIDI канал всім переданим даним).

    Схема динамічної клавіатури з індикацією наведена нижче:

    Схема багато в чому традиційна - важко винайти велосипед без педалей і коліс. Порт B працює на передачу - молодші 7 біт виводять адресу клавіші в матриці або дані для зовнішніх пристроїв (індикатор і ЦАП колеса). Старший біт використовується для виведення MIDI даних послідовним кодом - перетворення та висновок зроблено програмними. Тому кварц має бути на 4 MHz, якщо ви не хочете переписувати процедуру виведення байта за MIDI. Два молодших біти порту A працюють приймання – ними надходять сигнали з мультиплексорів “відпущених” і “натиснутих” контактів клавіш, а три старших біта визначають адресу зовнішнього пристрою (через ще один дешифратор КР1533ИД7). У схемі з колесом від дешифратора адреси зовнішнього пристрою я відмовився спрощення схеми та звільнення старшого біта порту PA4 для введення даних з компаратора, тому адреси клавіатури та кнопок інші. При суміщенні схем цю мікросхему доведеться повернути для дешифрації адреси використовувати біти порту PA2 і PA3, і адресувати 4 пристрої: клавіатуру, кнопки, регістр даних динамічної індикації і регістр знайомства динамічної індикації. Індикацію режимів колеса доведеться переписати.

    Схема з колесом PITCH WEEL/MODULATION виглядає так:

    На кожну клавішу ставиться один діод для розв'язування. Резистори на входах мультиплексорів не повинні бути більшими за 8k, інакше можливі глюки через ємність монтажу. Індикатор – будь-який із загальним анодом на 3 розряди, якщо висновки сегментів кожного розряду виведені окремо, висновки однойменних сегментів потрібно об'єднати – динамічна індикація і розряди запалюються послідовно. Кнопки будь-які, без фіксації, брязкіт контактів давиться програмно. Світлодіоди встановлені біля однойменних кнопок та індикують увімкнення відповідних режимів, кнопки «+» та «-» світлодіодів не мають. Транзистори на індикаторі будь-які малопотужні високочастотні зворотної провідності. Два регістри КР1533ІР23 використані для почергового замикання адреси та коду поточного розряду індикатора (світлодіоди теж згруповані у два квазірозряди). У мене використано стандартну клавіатуру від ще радянських електроорганів на 48 клавіш (вона випускалася й окремо як радіоконструктор «СТАРТ», і досить широко поширена). Щоб зменшити висоту клавіатури та товщину інструмента, із шести контактних груп під кожною клавішею залишено дві, і все це обрізано та переклеєно. Взагалі достатньо однієї групи, що перемикає на клавішу, але так було зручніше клеїти. Збірні шини "відпущених" та "натиснутих" контактів мають довжину 8 клавіш. При бажанні можна використовувати і клавіатуру, де замість групи контактів, що перемикає, використовується дві пари замикаючих контактів – одна пара замикається на початку руху клавіші, інша в кінці (як на інструментах YAMAHA). В цьому випадку сигнал на PA0 потрібно подавати з виходу інверсного мультиплексора (висновок 6). Без змін у схемі можна використовувати клавіатуру на 64 клавіші (стандарт – 61, тобто 5 октав). При необхідності кількість клавіш може бути збільшена хоч до 127, для цього в схему необхідно ввести ще один дешифратор КР1533ІД7.

    Дуже важливо добре відбудувати механіку – верхні контакти ОБОВ'ЯЗКОВО повинні замикатися під час відпускання клавіш. Якщо цього не зробити, програма вважає такі кнопки натиснутими і намагається їх обробляти, тому повторне натискання цих кнопок звуку не дає. Крім того, максимальна кількість нот, що одночасно звучать - 10 (якщо у кого-небудь на руках виросло більше пальців, ця кількість легко змінити), і не відпущені клавіші зменшують цю кількість. З цих міркувань число клавіш, вказане у процедурі опитування клавіатури, має ОБОВ'ЯЗКОВО збігатися з кількістю реальних клавіш. Брязкіт контактів давиться програмно.

    Для резистивної матриці R-2R АЦП бажано підібрати резистори з точністю 1-2%, причому абсолютні значення можуть бути й інші, важливе відношення. Втім, сильно збільшувати номінал не варто, це збільшить час перетворення через вхідну ємність компаратора. Я використовував SMD резистори без підбору, хоча вимірювання показали, що в одній монтажній смужці резистори зазвичай узгоджені з точністю вище 1%. Я впевнений, що схема працюватиме і з неточними резисторами, але лінійність характеристики погіршиться. Саме колесо виготовлене з ручки від старого телевізора і має пружинку на осі потенціометра, що повертає його в середнє положення. Для зручності налаштування механіки, при включенні живлення з натиснутою кнопкою режиму, включається програма налагодження, що запалює світлодіод, коли колесо знаходиться в середньому положенні, це дозволяє точно налаштувати нульове положення колеса на осі потенціометра. Якщо є потреба та бажання зробити окреме колесо MODULATION, його потрібно підключити до вільного елемента компаратора (їх там чотири), причому матриця R-2R обох коліс загальна. Для комутації виходів компараторів краще застосувати додаткову мікросхему, а керуючого сигналу використовувати PA2.

    За бажання можна зібрати динамічний варіант клавіатури і без індикації, кнопок і колеса PITCH WEEL / MODULATION – просто не збираючи частину схеми, що не використовується. Усі параметри, що змінюються, будуть встановлені за замовчуванням при включенні живлення.

    Живити це все можна від будь-чого, струм споживання залежить від конкретного індикатора і не перевищує 100 mA. У мене просто на платі стоїть стабілізатор 7805 без радіатора (його добре видно на фотографії). Невеликий радіатор потрібний, якщо на нього подавати більше 9V. Компаратор живиться напругою 9 – 12 v, бажано стабілізованою. Так, я використав мікросхеми радянського виробництва зі старих запасів – існує велика кількість їхніх сучасних аналогів, заміна можлива і навіть бажана – сучасні аналоги мають менше споживання.

    Програма

    Алгоритм обробки натиснутих клавіш походить від запропонованого в журналі «Мікропроцесорні засоби та системи» №5 за 1986р. Саме ця публікація (а точніше, помилка у запропонованій програмі) і спонукала мене до вивчення асемблера. Власне, звідти взято лише ідею записувати номер кожної натиснутої клавіші в спеціально виділену область ОЗУ (CHAN), щоб при повторному опитуванні клавіатури не обробляти вже оброблену клавішу. У мене під кожну з натиснутих клавіш (всього не більше 10) відведено два осередки ОЗП: у першій записується номер натиснутої клавіші, у другій – її VELOCITY (швидкість натискання). Повторюся – цих осередків всього 20 і початкова адреса задана ім'ям CHAN. Ознакою вільної пари є встановлений старший біт першого осередку. Встановлений старший біт другого осередку означає, що NOTE ON для цієї клавіші вже передано і подальшої обробки вона не потребує.

    Докладно описувати всю програму я не буду, вихідник рясніє коментарями і для підготовленої людини цілком доступний. Для решти я даю відразу готові прошивки у файлі Dinamic.hex та Pitchmod.hex. Поясню лише деякі неочевидні моменти. Ну, перш за все про динаміку: в момент розмикання верхніх контактів клавіші її номер записується в першу комірку першої ж вільної пари з CHAN області, одночасно скидаючи ознаку вільної пари. У другий осередок записується початкове значення VELOCITY = 127. Чутливість клавіатури визначається частотою переривань, оскільки обробка переривання зменшує значення VELOCITY всім клавіш, NOTE ON яких ще передано. Переривання викликаються вбудованим таймером. У момент замикання нижніх контактів клавіші у відповідному осередку CHAN встановлюється ознака «переданості» та передається NOTE ON з поточної VELOCITY. Для покращення кривої чутливості зменшення значень VELOCITY йде за логарифмічним законом: з поточного значення VELOCITY віднімається 1/16 його частина, зменшена на 1. Таким чином, під час руху клавіші від верхнього контакту до нижнього значення VELOCITY у відповідному осередку CHAN зменшується по і чим швидше рухається клавіша, тим більше VELOCITY у момент замикання нижніх контактів клавіші та передачі NOTE ON. Переривання також керують динамічною індикацією, це зроблено для усунення мерехтіння індикатора.

    Функції кнопок: TRANSPOSE – всі тональності приводяться до улюбленого ля-мінора: діапазон +/- 15 півтонів. PRG призначає тембр (інструмент) для заданого пресета (UP1-UP5), а VOL – його гучність. Поточний параметр виводиться на індикатор і може змінюватися кнопками «+» і «-». STEREO виводить звук поточного пресета в правий та лівий стереоканали з невеликою «розладкою» (ефект «хорус»). Кнопка SPLIT не задіяна. Педаль SUSTAIN схемотехнічно виконана як одна з кнопок, ємність її дроту не повинна бути дуже великою. Адреси обробників кнопок зібрані в таблицю на початку програми, при зміні функцій кнопок можна підставити свої.

    АЦП колеса наполовину програмний, працює за алгоритмом послідовних наближень, матриця R-2R виконує перетворення "цифра - аналог". Спочатку на матрицю R-2R подається 1 у старшому розряді, і компаратор визначає, багато це мало. Якщо мало, у старшому розряді залишається 1, якщо багато – 0. Далі те саме відбувається з кожним наступним молодшим розрядом (всього 6 кроків) і ми отримуємо шестибітне число, що відповідає куту повороту колеса. Така точність мені видається достатньою, але можна додати ще один біт, збільшивши матрицю та програму перетворення.

    Конструкція

    Як власне клавіатуру я використав конструктор «Старт» радянського виробництва, зараз, мабуть, легше знайти стару непрацездатну Ямаху або Касіо, це вирішить і проблему виготовлення корпусу – якщо він, звичайно, у старого інструменту відносно цілий.

    Друкована плата не розроблялася – я вважав недоцільним для виготовлення одиничного екземпляра пристрою витрачати час на розведення та виготовлення плати, а макет виготовили на монтажній платі за допомогою перемичок з МГТФу. Як роз'єм та шлейф до клавіатури був використаний шлейф від флоппі-дисководів з комп'ютера з відповідним роз'ємом з кожного боку – це полегшує складання/розбирання готового пристрою.

    У моєму випадку корпус був вигнутий із тонкої листової сталі (що було під руками) – з дерев'яними боковинами (як у старих радянських інструментів).

    Ну ось, коротко, і все. Творчих успіхів!

     
    Статті потемі:
    Як увімкнути та вимкнути мікрофон на ноутбуці Звук від мікрофона в динаміках як відключити
    Більшість сучасних ноутбуків обладнано веб-камерою. У багатьох випадках застосовується стандартна камера, яка використовується для Skype та інших сервісів відеоконференцій, але деякі ноутбуки постачаються з інфрачервоними камерами, які використовуються
    Як зробити зручний синтезатор своїми руками
    Це проста схема MIDI клавіатури, призначеної для використання зі стандартною звуковою картою ПК з MIDI / Game портом. Клавіатура живиться безпосередньо від ігрового порту, немає необхідності блоку живлення. Схема Midi клавіатури MKC64 v1.54
    Як змінити хвилини на Гігабайти на Теле2?
    Боротьба за клієнтів – одна з головних тенденцій сучасного мобільного та інтернет-простору. Мобільні оператори по всьому світу прагнуть створювати все більш якісні продукти і вигідні тарифи, що відрізняють їх від інших компаній. І Теле2 –
    Як сплатити World of Warcraft?
    Витрачати гроші з гаманця qiwi можна по-різному. Один із найпопулярніших способів – це оплата онлайн-ігор. Можна дозволити собі додатково гарну зброю або ознайомитися з останніми новинками. Наприклад, ви можете оплатити wow через qiwi – для цього