Последнюю версию буду выкладывать в данном сообщении.
Код: Выделить всё
Назначение выводов:
-------------------
Выводы RA0-RA7 порта A - входы данных (D0-D7)
Выводы RB0-RB7 порта B - входы данных (D8-D15)
Выводы RC0-RC5 порта C - стробы OFF (F0-F5)
Выводы RD0-RD5 порта D - стробы ON (N0-N5)
Вывод RD6 порта D - вход АЦП (Pitch)
Вывод RD7 порта D - вход АЦП (Modulation)
Вывод RС6 порта С - выход MIDI OUT
Вывод RС7 порта С - вход Sustain
Вывод RE2 порта E - вход Soft
Вывод RE0 порта E - выход LED0 (Activ High)
Вывод RE1 порта E - выход LED1 (Activ High)
Вывод RE3 порта E - вход Button
Распределение по стробам:
-------------------------
0 -> E1 - G2 (субконтр-контр)
1 -> G#2 - B3 (контр-большая)
2 -> C4 - D#5 (малая-первая) (используется для настройки)
3 -> E5 - G6 (первая-вторая)
4 -> G#6 - B7 (вторая-третья)
5 -> C8 - D#9 (четвёртая-пятая)
Матрица клавиатуры:
-------------------
Обозначения: H0-H95 - крайние нормально-замкнутые контакты
L0-L95 - крайние нормально-разомкнутые контакты
C0-C95 - средние контакты
Верхние и нижние контакты объединяются в группы последовательно по 16 штук (т.е. H0-H15;H16-H31...H80-H95; аналогично L0-L15;L16-L31...L80-L95). Каждая группа подключается к соответствующим стробам ("H" к "F", а "L" к "N").
Средние контакты, через развязывающие диоды (катодами к контактам), соединяются в группы по 6 штук, через 16 (т.е. C0+C16+C32+...+C80; C1+C17+C33+...+C81 и т.д.). Эти группы подключаются к соответствующим входам данных "D".
Устройство расчитано на подключение 96 клавиш, с E субконтр октавы по D# пятой октавы. Если применяемая клавиатура имеет меньший размер, катоды "лишних" диодов надо подключить непосредственно к соответствующим стробам "F".
Между шиной питания и входами данных "D", а также входами Sustain, Soft и Button необходимо подключить "подтягивающие" резисторы 4,7k-10k.
Также между земляной шиной и входами Sustain и Soft рекомендуется подключить конденсаторы 10pF-50pF.
Резисторы Pitch и Modulation не должны превышать 10k.
Индикаторные светодиоды также объединяются в матрицу. К выводу LED0, через токоограничительный резистор, подключаются (анодами к резистору) светодиоды LED00-LED05, а к выводу LED1, аналогично подсоединяются светодиоды LED10-LED15. Катоды светодиодов соединяются попарно (LED00+LED10, LED01+LED11, ... LED05+LED15), и подключаются к стробам N0-N5. Токоограничительный резистор рассчитывается из условия, что бы ток через светодиод не превышал 10mA.
Кнопки управления тоже объединяются в матрицу. К выводу Button подключаются анодами диоды. Катоды диодов подключаются к одному контакту кнопок. Второй контакт кнопок соединяется со стробом N0-N5 соответственно.
Кнопки Layer1 и Layer2 служат для переключения между "слоями" клавиатуры. При включении питания, слой 1 всегда включен, а слой 2 выключен.
Все настройки, для каждого слоя, устанавливаются индивидуально.
Вход в режим настроек осуществляется нажатием кнопки Setup.
Также в устройстве имеется и ряд глобальных настроек.
Для входа в режим глобальных настроек, необходимо выключить питание, а затем, одновременно нажимая кнопки Layer1, Layer2 и Setup, опять его включить. После отпускания кнопок, включится режим глобальных настроек (оба светодиода индикации слоёв будут светиться одновременно).
Последовательный переход между пунктами настройки осуществляется нажатием кнопки Setup.
Установка параметра осуществляется нажатием клавиш (с C малой октавы по D# первой октавы включительно), которые соответствуют цифрам с 1 по 16. Кроме того, для некоторых настроек, клавишам D и D# первой октавы соответствуют значения No/Yes и -/+. Помимо всего, для настройки смещения строя клавиатуры, нумерация клавиш начинается с нуля, при этом, сперва необходимо нажать клавишу знака смещения, а потом две клавиши числовой величины.
Для ввода Банка (если разрешён режим Controller32) и Программы используется последовательное нажатие трёх цифровых клавиш (нумерация начинается с нуля). Если режим Controller32 запрещён, для ввода Банка используется последовательное нажатие пяти цифровых клавиш.
Для задания диапазона клавиш (Split), необходимо последовательно нажать две клавиши желаемого диапазона (очерёдность нажатия значения не имеет).
Недопустимые значения, при вводе цифр, преобразуются в максимально/минимально допустимые (кроме булевых).
Выход из режима настройки осуществляется кнопкой Exit, или автоматически, по истечение 10 секунд после последнего нажатия клавиш установки, или кнопок управления. При этом, изменённые данные заносятся в энергонезависимую память.
Для сброса настроек в состояние "по умолчанию", необходимо выключить питание, а затем, одновременно нажимая кнопки Layer1, Layer2 и Exit, опять его включить. После отпускания кнопок, настройки будут сброшены.
Если необходимо сбросить также и глобальные настройки, удерживать необходимо кнопки Layer1, Layer2, Setup и Exit.
Нажатие и удержание кнопки Exit в течение 3 секунд, при выключенном режиме Setup, вызывает посылку сообщений Panica.
Варианты настроек (диапазон) (дефолт) (индикация):
--------------------------------------------------
- MIDI-Channel (All) (1,2) LED01
- Split (All keys) (All) LED02
- Transpose (+/-12(24)) (0) LED03
- Shape (1 - 4) (1) LED04
- Bank Select (0 - 127(16383)) (0) LED05
- Program Chng (0 - 127) (0) LED11
- Send Sustain (No-Yes) (Yes) LED12
- Send Soft (No-Yes) (Yes) LED13
- Send Wheels (No-Yes) (Yes) LED14
- Send PCh & BSel (No-Yes) (Yes) LED15
Глобальные настройки (диапазон) (дефолт) (индикация):
-----------------------------------------------------
- Threshold Sliders (1-7) (1) LED01
- Global Velocity (1-4) (2) LED02
- Controller32 (No-Yes) (Yes) LED11
- Running Status (No-Yes) (Yes) LED12
- Note OFF as ON (No-Yes) (No) LED13
- Active Sensing (No-Yes) (Yes) LED14
- 96 Keys (No-Yes) (Yes) LED15
Клавиши используемые для установок (s-малая октава, 1-первая, транспонирование игнорируется):
---------------------------------------------------------------------------------------------
sC sC# sD sD# sE sF sF# sG sG# sA sA# sB 1C 1C# 1D 1D#
Split All keys
MIDI-Channel
Shape 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Threshold Sliders
Global Velocity
Transpose 0 1 2 3 4 5 6 7 8 9 x x x x - +
Bank Select 0 1 2 3 4 5 6 7 8 9 x x x x x x
Program Chng
Send Sustain
Send Soft
Send Wheels
Send PCh & BSel No Yes
Controller32
Running Status
Note OFF as ON
Active Sensing
96 Keys
Варианты Shape (таблицы Velocity):
----------------------------------
1 - Line
2 - Log
3 - Back Log
4 - Hard
Краткое описание настроек:
==========================
MIDI-Channel:
-------------
Номер миди-канала для "слоя".
Split:
------
Задаёт диапазон используемых клавиш для "слоя".
Transpose:
----------
Величина смещения строя клавиатуры в полутонах.
Shape:
------
Задаёт зависимость параметра "скорость нажатия" миди-сообщения от реальной скорости нажатия.
Bank Select:
------------
Номер банка при выборе инструмента.
Program Chng:
-------------
Номер выбранного инструмента.
Send Sustain:
-------------
Разрешает/запрещает передачу сообщений о педале Sustain.
Send Soft:
----------
Разрешает/запрещает передачу сообщений о педале Soft.
Send Wheels:
------------
Разрешает/запрещает передачу сообщений о "колёсах" Modulation и Pitch.
Send PCh & BSel:
----------------
Разрешает/запрещает передачу группы сообщений о выборе инструмента, при каждом включении "слоя".
Автоматически передаётся для каждого включённого слоя, при выходе из режима настроек.
Threshold Sliders:
------------------
Порог чувствительности "колёс" Modulation и Pitch.
Для изношенных рекомендуется увеличить.
Global Velocity:
----------------
Глобальная чувствительность к скорости нажатия.
V = Vmin * 2^(n-1) (n-данный параметр).
Корректировка может потребоваться, при использовании различной механики клавиш.
Controller32:
-------------
Определяет способ передачи сообщения о выборе банка.
Если запрещён, информация передаётся двумя байтами (можно передать 16384 значения).
Если разрешён, младший и старший байты дублируются (можно передать только 128 значений).
Зависит от используемого синтезатора/тон-генератора.
Running Status:
---------------
Разрешает/запрещает передачу сообщений с использованием данного алгоритма.
Позволяет экономить трафик. Процент экономии сильно зависит от типа передаваемых сообщений.
Note OFF as ON:
---------------
Разрешает/запрещает передачу сообщений Note OFF, как Note ON с нулевой "скоростью нажатия (отпускания)".
Большинство синтезаторов не используют параметр "скорость отпускания", поэтому включение этой опции, в сочетании с Running Status, повышает процент экономии трафика.
Active Sensing:
---------------
Разрешает/запрещает передачу данных сообщений, для контроля целостности соединения.
Не все синтезаторы воспринимают данное сообщение.
При использовании различных программно-аппаратных преобразователей (типа USB-MIDI), в большинстве случаев возникают ошибки.
96 Keys:
--------
Разрешает/запрещает использование данного режима (иначе используется режим 64 Keys).
При переключении в режим 64 Keys, отключаются неиспользуемые клавиши и увеличивается диапазон транспонирования с +/- 12 полутона (при 96 keys) до +/- 24 полутона.
Кривые чувствительности.
Желающим принять участие в бета- (альфа-) тестировании.
Получил сообщение от очередного "бета-тестера":
Ну, а любителям халявы (особенно тем, у кого руки растут из различных мест) могу только посоветовать, во избежании дальнейших недоразумений, изучить вопрос про бета-тестирование, и рекомендовать пользоваться схемой Петкова.
Им её вполне хватит.
Тут вот какой вопрос образовался.
Если делать прошивку, рассчитанную на 96 клавиш, получается, что диапазон возможного транспонирования будет 2 октавы.
При этом, если начинать ноты с G# контр-октавы, то смещать можно только вниз.
Короче, с какой ноты начинать, и на какой диапазон сдвигать?