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

Я буду ваять всякую чушь, а Вы меня пинайте в нужную сторону

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13.07.2017{, 23:21}
Репутация: 0
Контактная информация:

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

#1

Сообщение konsys » 15.04.2021{, 00:30}

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

Как мультиплексор описать не представляю
Последний раз редактировалось konsys 15.04.2021{, 22:50}, всего редактировалось 3 раза.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#2

Сообщение edyapd » 15.04.2021{, 06:21}

konsys, похоже, что в FLProg ошибка. Нельзя подключать больше чем один выход ко входу. Можно один выход к нескольким входам, но к одному входу, только один выход. Так что проект у вас работать не будет.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

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

#3

Сообщение Rovki » 15.04.2021{, 07:03}

Использовать нужно запись бита в переменную инт :smile427:
Электронщик до мозга костей и не только

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13.07.2017{, 23:21}
Репутация: 0
Контактная информация:

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

#4

Сообщение konsys » 15.04.2021{, 09:28}

edyapd писал(а):
15.04.2021{, 06:21}
konsys, похоже, что в FLProg ошибка. Нельзя подключать больше чем один выход ко входу. Можно один выход к нескольким входам, но к одному входу, только один выход. Так что проект у вас работать не будет.

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

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

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#5

Сообщение edyapd » 15.04.2021{, 10:46}

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

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13.07.2017{, 23:21}
Репутация: 0
Контактная информация:

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

#6

Сообщение konsys » 15.04.2021{, 11:59}

edyapd писал(а):
15.04.2021{, 10:46}
Хорошо - с финишной частью кода буду много думать,

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

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

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#7

Сообщение edyapd » 15.04.2021{, 15:04}

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

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13.07.2017{, 23:21}
Репутация: 0
Контактная информация:

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

#8

Сообщение konsys » 15.04.2021{, 15:41}

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

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

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

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#9

Сообщение edyapd » 15.04.2021{, 16:09}

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

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

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

#10

Сообщение kulibinsvv » 15.04.2021{, 17:20}

konsys, вы бы посмотрели, для начала, какие проекты уже реализованы другими людьми.
MIDI - USB клавиатура на Arduino Nano
USB MIDI- клавиатура на arduino mega
MIDI клавиатура на базе Roland K-25M
MIDI браслет для управления синтезаторами (в основном — для органично звучащего вибрато)

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

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13.07.2017{, 23:21}
Репутация: 0
Контактная информация:

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

#11

Сообщение konsys » 15.04.2021{, 17:49}

kulibinsvv писал(а):
15.04.2021{, 17:20}
, вы бы посмотрели, для начала, какие проекты уже реализованы другими людьми.
именно этим я и занимаюсь.
Я изучал те материалы, что дали ВЫ - около двух суток
Простите, но у меня создалось впечатление, что меня изысканно послали нахер
Ибо Вы дали очень много сырого материала по теме и по объему равного этому форуму.
Честно говоря, я возненавидел Баян.
kulibinsvv писал(а):
15.04.2021{, 17:20}
Заметьте, что никто не использует мультиплексоры. Кажущаяся простота использования мультиплексора ведёт к неоправданному усложнению кода.
Немного не соглашусь
ибо спецы в МИДИ именно мультиплексоры и используют
003.jpg
004.jpg

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

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

#12

Сообщение kulibinsvv » 15.04.2021{, 18:00}

Посмотрел ваш проект. Исправил ту часть которая формирует код ноты. За считывание клавиш ничего сказать не могу - схемы нет.
Вложения
sax_Формирование кода ноты.flp
(364.19 КБ) 29 скачиваний
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13.07.2017{, 23:21}
Репутация: 0
Контактная информация:

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

#13

Сообщение konsys » 15.04.2021{, 18:34}

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

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

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

у меня S0=2 S1=3 S2=4 Z=10
в коде S0=8 S1=9 S2=10 Z=А0
СпойлерПоказать


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);
}
}






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

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

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

#14

Сообщение kulibinsvv » 16.04.2021{, 08:10}

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

В этом нужно разобраться, чтобы правильно реагировать на нажатие той или иной клавиши.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13.07.2017{, 23:21}
Репутация: 0
Контактная информация:

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

#15

Сообщение konsys » 16.04.2021{, 10:20}

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

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

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

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#16

Сообщение edyapd » 16.04.2021{, 11:54}

konsys писал(а):
16.04.2021{, 10:20}
Но мне кажется сначала надо разобраться с работой мультиплексора
А чего с ней разбираться? Перебирайте адреса на S0-S2 и читайте данные с Z.

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

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13.07.2017{, 23:21}
Репутация: 0
Контактная информация:

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

#17

Сообщение konsys » 16.04.2021{, 12:03}

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

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#18

Сообщение edyapd » 16.04.2021{, 14:40}

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

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13.07.2017{, 23:21}
Репутация: 0
Контактная информация:

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

#19

Сообщение konsys » 16.04.2021{, 15:59}

edyapd писал(а):
16.04.2021{, 14:40}
С каким конкретно?
использовать датчик давления как регулятор громкости
подключение микрофона по другому каналу для получения модуляции
подключение потенциометра для изменения высоты тона

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#20

Сообщение edyapd » 16.04.2021{, 16:55}

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

Ответить

Вернуться в «Помогите, а то я "нимагу"»