Страница 1 из 4

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 00:30
konsys
Приветствую специалисты в FLProg и Гуру
давно у меня была мечта собрать миди саксофон так как на настоящем играть - соседи ругаются.
Кнопок будет не 8, а 24.. то есть 3 мультиплексора
shema.jpg
Вот что пока придумал
001.jpg
sax.flp
смысл вот в чем
1) 3К - это цифровой вход ардуино (выход 8-канального мультиплексора 74HC4051)
к мультиплексору будут подключены кнопки (таких мультиплексоров будет 3
2) далее от входа модуль где определяется какая кнопка нажата (точнее какая комбинация кнопок нажата)
3) далее блок из в котором в зависимости от комбинации, 1 (один) подается на определенный выход
002.jpg
далее к единице на каждом выходе прибавляется своя цифра согласно номеру выхода, то есть у каждого выхода появляется свой номер
и этот номер отправляется в миди (номер соответствует НОТЕ)

Как мультиплексор описать не представляю

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 06:21
edyapd
[ref]konsys[/ref], похоже, что в FLProg ошибка. Нельзя подключать больше чем один выход ко входу. Можно один выход к нескольким входам, но к одному входу, только один выход. Так что проект у вас работать не будет.

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 07:03
Rovki
Использовать нужно запись бита в переменную инт :smile427:

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 09:28
konsys
edyapd писал(а): 15 апр 2021, 06:21 [ref]konsys[/ref], похоже, что в FLProg ошибка. Нельзя подключать больше чем один выход ко входу. Можно один выход к нескольким входам, но к одному входу, только один выход. Так что проект у вас работать не будет.

но программа соединила и не показала ошибку.
а если ошибка, то надо делать под каждый выход свою миди ноту?

Отправлено спустя 29 секунд:
Rovki писал(а): 15 апр 2021, 07:03 Использовать нужно запись бита в переменную инт :smile427:
фраза вроде понятная, но не пойму куда ее применить

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 10:46
edyapd
konsys писал(а): 15 апр 2021, 09:28 но программа соединила и не показала ошибку
Если вы попробуете сделать это со стандартными блоками, то у вас такое не получится. Такое возможно только с пользовательскими.
И посмотрев код, который сгенерировала программа, вы увидите, что там присутствует только самый первый блок, который и подключается к пользовательскому.
konsys писал(а): 15 апр 2021, 09:28 надо делать под каждый выход свою миди ноту?
Я не знаю, как работает этот пользовательский блок, так что сказать ничего не могу. Возможно надо просто каким-то образом изменить алгоритм работы.

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 11:59
konsys
edyapd писал(а): 15 апр 2021, 10:46
Хорошо - с финишной частью кода буду много думать,

Скажите а первая часть кода
меня интересует часть
кнопки - мультиплексор 74HC4051 - вход ардуино - демультиплексор программный

Эта часть правильно сделана?

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 15:04
edyapd
konsys писал(а): 15 апр 2021, 11:59 Эта часть правильно сделана?
Я не вникал в проект. Это же надо знать, как вы себе это представляете. Не вижу как вы выбираете, с какого входа 74HC4051 читать.

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 15:41
konsys
edyapd писал(а): 15 апр 2021, 15:04 Я не вникал в проект. Это же надо знать, как вы себе это представляете. Не вижу как вы выбираете, с какого входа 74HC4051 читать.
Вот именно это меня больше всего и интересует.

Посмотрел кучу роликов - и видел как при программировании описывают вход мультиплексора в ардуино как количество входов мультиплексора и на какой вход ардуино подается выход мультиплексора.

Я цифровой вход К3 обозначил как подключенный выход мультиплексора.
Но мне кажется я что-то сделал не правильно.
И надо как то обозначить подключения мультиплексора, а вот как не знаю.

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 16:09
edyapd
Для этого вам надо почитать, как работает данная микросхема. Сложного там ничего нет.

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 17:20
kulibinsvv
[ref]konsys[/ref], вы бы посмотрели, для начала, какие проекты уже реализованы другими людьми.
MIDI - USB клавиатура на Arduino Nano
USB MIDI- клавиатура на arduino mega
MIDI клавиатура на базе Roland K-25M
MIDI браслет для управления синтезаторами (в основном — для органично звучащего вибрато)

Я вам уже предлагал разобраться в проекте миди-баяна, это практически ваша задача, баян почти что духовой инструмент. Заметьте, что никто не использует мультиплексоры. Кажущаяся простота использования мультиплексора ведёт к неоправданному усложнению кода.

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 17:49
konsys
kulibinsvv писал(а): 15 апр 2021, 17:20 , вы бы посмотрели, для начала, какие проекты уже реализованы другими людьми.
именно этим я и занимаюсь.
Я изучал те материалы, что дали ВЫ - около двух суток
Простите, но у меня создалось впечатление, что меня изысканно послали нахер
Ибо Вы дали очень много сырого материала по теме и по объему равного этому форуму.
Честно говоря, я возненавидел Баян.
kulibinsvv писал(а): 15 апр 2021, 17:20 Заметьте, что никто не использует мультиплексоры. Кажущаяся простота использования мультиплексора ведёт к неоправданному усложнению кода.
Немного не соглашусь
ибо спецы в МИДИ именно мультиплексоры и используют
https://www.youtube.com/watch?v=BLB0lqGwQD4
003.jpg
https://www.youtube.com/watch?v=D_1-I57oGSg
004.jpg

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 18:00
kulibinsvv
Посмотрел ваш проект. Исправил ту часть которая формирует код ноты. За считывание клавиш ничего сказать не могу - схемы нет.

MIDI - Саксофон - пробую сделать

Добавлено: 15 апр 2021, 22:49
konsys
kulibinsvv писал(а): 15 апр 2021, 18:00 Посмотрел ваш проект. Исправил ту часть которая формирует код ноты. За считывание клавиш ничего сказать не могу - схемы нет.
Большое спасибо - так намного красивей и код чище

Отправлено спустя 54 минуты 55 секунд:
kulibinsvv писал(а): 15 апр 2021, 18:00 За считывание клавиш ничего сказать не могу - схемы нет.
Изображение

Отправлено спустя 3 часа 19 минут 45 секунд:
Нашел код работы мультиплексора 74HC4051

у меня S0=2 S1=3 S2=4 Z=10
в коде S0=8 S1=9 S2=10 Z=А0
[spoiler]

int pin_Out_S0 = 8;
int pin_Out_S1 = 9;
int pin_Out_S2 = 10;
int pin_In_Mux1 = A0;
int Mux1_State[8] = {0};

void setup() {
pinMode(pin_Out_S0, OUTPUT);
pinMode(pin_Out_S1, OUTPUT);
pinMode(pin_Out_S2, OUTPUT);
//pinMode(pin_In_Mux1, INPUT);
Serial.begin(9600);
}

void loop() {
updateMux1();
for(int i = 0; i < 8; i ++) {
if(i == 7) {
Serial.println(Mux1_State);
} else {
Serial.print(Mux1_State);
Serial.print(",");
}
}
}

void updateMux1 () {
for (int i = 0; i < 8; i++){
digitalWrite(pin_Out_S0, HIGH && (i & B00000001));
digitalWrite(pin_Out_S1, HIGH && (i & B00000010));
digitalWrite(pin_Out_S2, HIGH && (i & B00000100));
Mux1_State = analogRead(pin_In_Mux1);
}
}




[/spoiler]

Как теперь этот код реализовать в FLProg ?

MIDI - Саксофон - пробую сделать

Добавлено: 16 апр 2021, 08:10
kulibinsvv
[ref]konsys[/ref], Давайте попробуем разобраться с клавиатурой.
Для начала надо определиться сколько и каких клавиш у нас будет.
Я посмотрел на апликатуры саксофона и понял приблизительно следующее (вы меня поправите, если что не так):
6 основных клапанов, которые задают нотный ряд, 3 для правой руки и 3 для левой;
4 модификатора для правой руки и 8 - для левой;
5 октавных клапанов.

В этом нужно разобраться, чтобы правильно реагировать на нажатие той или иной клавиши.

MIDI - Саксофон - пробую сделать

Добавлено: 16 апр 2021, 10:20
konsys
kulibinsvv писал(а): 16 апр 2021, 08:10 [ref]konsys[/ref], Давайте попробуем разобраться с клавиатурой.
Давайте разберемся.
По клапанам Вы близки к тому что я хочу.
shema-full.jpg
всего 24 клапана

октавных ТРИ
октавы переключаются комбинациями
22 = первая
22+23 = вторая
23 = третья
22+24 = -1
24 = -2

Но мне кажется сначала надо разобраться с работой мультиплексора, а далее по аналогии их можно наращивать

MIDI - Саксофон - пробую сделать

Добавлено: 16 апр 2021, 11:54
edyapd
konsys писал(а): 16 апр 2021, 10:20 Но мне кажется сначала надо разобраться с работой мультиплексора
А чего с ней разбираться? Перебирайте адреса на S0-S2 и читайте данные с Z.

У меня вот вопрос, вы будете обрабатывать воспроизведение звуков на МК или в компьютере?
Если в компьютере, то проще залить скетч, который вы привели для примера и не мучиться.

MIDI - Саксофон - пробую сделать

Добавлено: 16 апр 2021, 12:03
konsys
edyapd писал(а): 16 апр 2021, 11:54 А чего с ней разбираться? Перебирайте адреса на S0-S2 и читайте данные с Z.
Если бы я понял как это составить из блоков FLProg я бы так и сделал
Я попробую предложить свой вариант, но не думаю что он будет верным.
edyapd писал(а): 16 апр 2021, 11:54 У меня вот вопрос, вы будете обрабатывать воспроизведение звуков на МК или в компьютере?
на первых порах в компьютере.
edyapd писал(а): 16 апр 2021, 11:54 Если в компьютере, то проще залить скетч, который вы привели для примера и не мучиться.
может и проще, но что мне делать с остальным функционалом?
или вы имеете ввиду, что данный скетч можно как-то залить в FLProg?

MIDI - Саксофон - пробую сделать

Добавлено: 16 апр 2021, 14:40
edyapd
konsys писал(а): 16 апр 2021, 12:03 но что мне делать с остальным функционалом?
С каким конкретно?
konsys писал(а): 16 апр 2021, 12:03 вы имеете ввиду, что данный скетч можно как-то залить в FLProg?
FLProg это всего лишь визуальная среда (оболочка). Потом вы получаете на выходе подобный код. И уже из Ардуино заливаете его в микроконтроллер. Если не хотите отдельно устанавливать Ардуино, то можете в FLProg создать любой блок и вызвать компилирование. Уже в появившемся окне Ардуино всё удалить и вставить свой код. Его и прошить.
Но тут важно понимать, какие данные ждёт компьютер по СОМ-порту. Если они не будут соответствовать ожидаемым, то ничего и не получится.
konsys писал(а): 16 апр 2021, 12:03 Я попробую предложить свой вариант, но не думаю что он будет верным.
Не ошибается тот, кто ничего не делает.

MIDI - Саксофон - пробую сделать

Добавлено: 16 апр 2021, 15:59
konsys
edyapd писал(а): 16 апр 2021, 14:40 С каким конкретно?
использовать датчик давления как регулятор громкости
подключение микрофона по другому каналу для получения модуляции
подключение потенциометра для изменения высоты тона

MIDI - Саксофон - пробую сделать

Добавлено: 16 апр 2021, 16:55
edyapd
С микрофоном не совсем понятно.
Датчик давления читается точно так же с аналогового входа, как и потенциометр.
Тут главное понять, что программа на компьютере будет ожидать от данных с СОМ-порта. В каком виде их туда подавать.