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

konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

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

Сообщение konsys »

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

Как мультиплексор описать не представляю
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось konsys 15 апр 2021, 22:50, всего редактировалось 3 раза.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

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

Сообщение edyapd »

[ref]konsys[/ref], похоже, что в FLProg ошибка. Нельзя подключать больше чем один выход ко входу. Можно один выход к нескольким входам, но к одному входу, только один выход. Так что проект у вас работать не будет.
Аватара пользователя
Rovki
Полковник
Сообщения: 5777
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 73 раза
Поблагодарили: 230 раз
Контактная информация:

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

Сообщение Rovki »

Использовать нужно запись бита в переменную инт :smile427:
Электронщик до мозга костей и не только
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

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

Сообщение konsys »

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

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

Отправлено спустя 29 секунд:
Rovki писал(а): 15 апр 2021, 07:03 Использовать нужно запись бита в переменную инт :smile427:
фраза вроде понятная, но не пойму куда ее применить
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

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

Сообщение edyapd »

konsys писал(а): 15 апр 2021, 09:28 но программа соединила и не показала ошибку
Если вы попробуете сделать это со стандартными блоками, то у вас такое не получится. Такое возможно только с пользовательскими.
И посмотрев код, который сгенерировала программа, вы увидите, что там присутствует только самый первый блок, который и подключается к пользовательскому.
konsys писал(а): 15 апр 2021, 09:28 надо делать под каждый выход свою миди ноту?
Я не знаю, как работает этот пользовательский блок, так что сказать ничего не могу. Возможно надо просто каким-то образом изменить алгоритм работы.
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

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

Сообщение konsys »

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

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

Эта часть правильно сделана?
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

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

Сообщение edyapd »

konsys писал(а): 15 апр 2021, 11:59 Эта часть правильно сделана?
Я не вникал в проект. Это же надо знать, как вы себе это представляете. Не вижу как вы выбираете, с какого входа 74HC4051 читать.
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

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

Сообщение konsys »

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

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

Я цифровой вход К3 обозначил как подключенный выход мультиплексора.
Но мне кажется я что-то сделал не правильно.
И надо как то обозначить подключения мультиплексора, а вот как не знаю.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

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

Сообщение edyapd »

Для этого вам надо почитать, как работает данная микросхема. Сложного там ничего нет.
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 487
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 4 раза
Поблагодарили: 5 раз

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

Сообщение kulibinsvv »

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

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

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

Сообщение 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
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 487
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 4 раза
Поблагодарили: 5 раз

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

Сообщение kulibinsvv »

Посмотрел ваш проект. Исправил ту часть которая формирует код ноты. За считывание клавиш ничего сказать не могу - схемы нет.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

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

Сообщение 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 ?
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 487
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 4 раза
Поблагодарили: 5 раз

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

Сообщение kulibinsvv »

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

В этом нужно разобраться, чтобы правильно реагировать на нажатие той или иной клавиши.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

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

Сообщение konsys »

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

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

Но мне кажется сначала надо разобраться с работой мультиплексора, а далее по аналогии их можно наращивать
У вас нет необходимых прав для просмотра вложений в этом сообщении.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

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

Сообщение edyapd »

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

У меня вот вопрос, вы будете обрабатывать воспроизведение звуков на МК или в компьютере?
Если в компьютере, то проще залить скетч, который вы привели для примера и не мучиться.
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

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

Сообщение konsys »

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

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

Сообщение edyapd »

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

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

Сообщение konsys »

edyapd писал(а): 16 апр 2021, 14:40 С каким конкретно?
использовать датчик давления как регулятор громкости
подключение микрофона по другому каналу для получения модуляции
подключение потенциометра для изменения высоты тона
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

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

Сообщение edyapd »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость