Эта микросхема производства Analog Devices называется "цифровой изолятор" и предназначена для гальванической развязки UART , поддерживает частоты до 2.5МГц. Нормализует уровни сигналов. Имеются варианты для I2C (1250) , USB (ADUM 3160), SPI (3471) и прочие. Я их применял в диагностическом приборчике - тестере хешплат, в адаптере I2C-USB и UART-USB, также они применяются в "свистке" USB-USB (цена 600р.)Было бы интересно взглянуть на этот вариант применения
ADUM1205 я покупал на Али за 98р. на Авито по 200р., в чипдипе -более 600р.стоимость такой гальваноразвязки
С какой целью интересуетесь? Надеюсь, не для флуда. 600р...150000рстоимость самого девайса, в котором она была применена.
Я в курсе, для чего она предназначена (поэтому, собственно и вопрос возник).предназначена
Уже не интересуюсь (см. выше).С какой целью интересуетесь?
Я в курсе,
Также я в курсе
мы иногда и применяем
я никогда не встречал
мы и раньше использовали
"Не верю!"
там на приёмном конце 220 ом стоит. просто от 3,3в светодиод недостаточно ярко загорается. Поставь на выход stm32 преобразователь логического уровня от 3,3В до 5В любым способом, хоть микросхему, хоть транзистор.и 40 ом не помогает. надо в первую очередь понять аппаратная проблема или программная.
А зря.да, если совсем по 10 ом поставить, то все заработало. Буфер пока не буду ставить. Спасибо. Значит, дело было в железе.
Lj,hsВообщем как-то спаял я на коленке MIDI контроллер на 8 крутилок, разработка моя собственная, если кого интересует могу поделится.
Схема состоит из микроконтроллера Atmel ATMEGA16 и буферного элемента на нашей 155ла3, девайс можно подключать к Game Port напрямую, есть нормальный MIDI Out. Схема паяется часа 2 на макетной плате, программатор простой -пара резисторов + LPT порт.
Есть также схема простой MIDI клавиатуры: 5 октав, пассивная ( небыло нормальной механики чтоб сделать Velocity), транспозиция на октаву +-. Сейчас работаю на д контроллером с LCD индикатором (16х2), 64 кнопками и 64 или 32 крутилки,фейдеры, 99 пресетов (этот проект заморожен, возможно я к нему и вернусь)
При программировании микроконтроллера в его Fuse сбросить все галочки кроме СКОРТ, это установит его в режим работы от кварцевого генератора.
Вот схема , прошивка и исходники на ассемблере для простого МИДИ контроллера на 8 крутилок.
<div class='quotetop'>QUOTE(\"decil\")</div>
Велосити измеряется по скорости нажатия а не по давлению, т.е. измеряется время за которое клавиша перемещается из верхней точки в нижнюю. Это проще.
<div class='quotetop'>QUOTE(\"dugdum®\")</div>
Действительно на PIC было бы удобнее и перспективнее...
А вообще я давно ищу кого-нибудь кто мог бы мне помочь с миди-управление м. Хотя я немало занимался схемами на 155-й и прочих дискретных сериях, но в основном все-таки аналоговыми. Еще в середине 70-х я сделал свой первый аналоговый синтезатор, правда FX, не музыкальный, но и отдельные жуткие ноты можно было настроить (жаль что жил в СССР, если б не это, может составил бы Мугу конкуренцию :biglaugh: ) и вот пару лет назад пришла мысль его заново собрать, но... в МИДИ я не разбираюсь (электронная часть), а без МИДИ сейчас что-либо делать смысла нет! Может скооперируемся? Мне нужна передача МИДИ-команд в оба направления.
Добрый день!Можно обратится к автору топика и ко всем остальным? У меня задача обратная - нужно из хоста послать в регистры инструмента определенные числа, т.е. мне нужно построить такое устройство которое можно подключить к выходу МИДИ звуковой платы (или USB) и на 32 ячейки (можно и меньше) через свободный контроллер с миди-дорожки скажем Нюендо послать (записать в регистр) числа, скажем от 0 до 127 для дальнейшего управления ими параметрами устройства. Может кто-нибудь такое разработать или дать ссылку на готовое? Я к сожаленью ничего не смыслю в МИДИ сообщениях. Может кто заодно даст ссылку на хорошо разжеванную МИДИ-тему - коды, последовательности кодов, частоты, уровни, паузы и т.д.
<div class='quotetop'>QUOTE(\"decil\")</div>
Велосити измеряется по скорости нажатия а не по давлению, т.е. измеряется время за которое клавиша перемещается из верхней точки в нижнюю. Это проще.
<div class='quotetop'>QUOTE(\"dugdum®\")</div>
Действительно на PIC было бы удобнее и перспективнее...
А вообще я давно ищу кого-нибудь кто мог бы мне помочь с миди-управлением. Хотя я немало занимался схемами на 155-й и прочих дискретных сериях, но в основном все-таки аналоговыми. Еще в середине 70-х я сделал свой первый аналоговый синтезатор, правда FX, не музыкальный, но и отдельные жуткие ноты можно было настроить (жаль что жил в СССР, если б не это, может составил бы Мугу конкуренцию :biglaugh: ) и вот пару лет назад пришла мысль его заново собрать, но... в МИДИ я не разбираюсь (электронная часть), а без МИДИ сейчас что-либо делать смысла нет! Может скооперируемся? Мне нужна передача МИДИ-команд в оба направления.
Насколько я понял спецификацию MIDI, это не совсем верно.Кстати, вскочила проблемка с передачей по USB midi- сообщений noteOn и noteOff (вкл., выкл. ноту). Вот описания функций для USB (это на CircuitPython):
def noteOn(x):
usb_midi.send(NoteOn(x,127))
def noteOff(x):
usb_midi.send(NoteOff(x,0))
Здесь х – номер ноты и 127, 0 – велосити (velocity) – скорость нажатия/отпускания клавиши
Я не разбирался в конкретной реализации, но по идее: один экзкмпляр сласса - один MIDI канал.и явно не указывается номер канала миди.
Он, причем только один указывается в установке конфига девайса:
usb_midi = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=0)
В моем проекте его необходимо передавать, т к используется одновременно несколько миди – каналов. «Классический» 3-х байтовый формат – 9(On), № ноты, velocity (127-0)…
@MIDI555, с питоном и его модификациями как-то нет возможности разбираться. Может, кто тот и возьмется. А как можно меня не найти ВК, если тут, внизу под моим постом/профилем, есть прямая ссылка? Попадаете на паблик и можно общаться, а если надо, там есть и ссылка на личную страничку. Все просто.
Добрый день, Вадим!@MIDI555, с питоном и его модификациями как-то нет возможности разбираться. Может, кто тот и возьмется. А как можно меня не найти ВК, если тут, внизу под моим постом/профилем, есть прямая ссылка? Попадаете на паблик и можно общаться, а если надо, там есть и ссылка на личную страничку. Все просто.
Насколько я понял спецификацию MIDI, это не совсем верно.
NoteOn(x,0) - полностью эквивалентно noteOff и именно так и принято использовать.
А команда noteOff нужна для специфических случаев, когда инструмент позволяет сыграть более одной ноты в унисон. Тогда нужно указать, какую именно из "унисонных нот" нужно закончить и в этом случае передается то же значение velocity, то было при старте ноты.
Соответственно, NoteOff(x,0) лишено смысла.
И еще: если инструмент не поддерживает управление velocity, то передавать следует значение 64, а не 127.
Я не разбирался в конкретной реализации, но по идее: один экзкмпляр сласса - один MIDI канал.
т.е. для того, чтобы использовать несколько каналов, для каждого нужно завести свой экземпляр:
usb_midi_0 = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=0)
usb_midi_1 = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=1)
usb_midi_2 = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=2)
и потом посылать сообщение нужному экземпляру.
т.е:
usb_midi_0.send( ...
usb_midi_1.send( ...
usb_midi_2.send(...
Да, там где написано ports[1], может быть другой номер - это надо смотреть в описании класса.
Добрый день, Вадим!
Не успел сообщить, в ВК Вас уже нашел - dim3740! Действительно, как можно Вас не найти в ВК, ведь могут же, если захочат (это я про себя)! И Вы уже включили меня в друзья (Геннадий Золотухин)! Просмотрел все Ваши посты – впечатляет!
Давай те перейдем на ТЫ, не возражаете?
Миди - клава на платформе Raspberry Pi Pico ( малинка) – это уже у меня третий вариант.
Платформа Raspberry Pi Pico – контроллер RP2040, в нем два ядра ARM Cortex-M0+ с тактовой частотой 133 МГц, ОЗУ - 264 КБ, Flash-память- 2 МБ (можно было заказать и 4, 8, 16 МБ, но дороже), аппаратные интерфейсы: 2 × UART, 2 × I2C, 2 × SPI, напряжение питания – 3,3 В. Программируется на C/C++ , MicroPython, CircuitPython.
Начал писать на С, но в остановился на CircuitPython (хотя сначала очень не нравилось), сама ПРГ оказывается маленькой, но помимо работает куча библиотек от Аdafruit-circuitpython.
«Пробу пера» начал с Arduino Uno, но Ардуино оказался китайским (впрочем, как и мой Raspberry Pi Pico), в нем вместо оригинального ATMEGA16U2 стоит чип USB-UART СН340С.
Наши китайские товарищи летят впереди всея планеты… Честь и хвала ихнему трудолюбию и умению!
Для того, чтобы принимать данные через USB виртуальный COM-порт от Arduino и передавать их в какую-либо программу MIDI-секвенсор, необходима специальная утилита: Serial MIDI Converter V2D -https://www.spikenzielabs.com/learn/serial_midi.html.
Это работает, но, как оказалось, с большими задержками, и от этого проекта я пока отказался. Может зря, ведь есть еще программулина DualMoco, которая позволяет Arduino выступать в роли MIDI устройства или я не прав?
Мой первый вариант - идея на http://antandar.narod.ru/lpt2midi.html. Если будет интересно - я выложил архив lpt2midi.
Проект миди - клавы (Антонова) был переделан: добавил второй ряд (всего 10 октав), переключатели миди – контроллеров, в схему были добавлены дешифраторы, мультиплексоры, т. к. 17 пинов LPT - порта явно не хватало.
Была переписана ПРГ на Object Pascal и Delphi-6. Но этот проект был отставлен, т. к. все работало медленно и иногда «буксовало»…
Второй вариант был реализован на AT89C52: здесь все работает «железно, железобетонно»! Но не устраивает миди – выход («токовая петля», оптрон, медленно). На моем ПК даже не оказалось миди – входа – нашел какие – то рудименты на материнке, к ним подпаялся. Звуковая карта – интегрированная. Зато ПРГ на Ассемблере – ну просто, как лопата! Я с ним (с Асс.) работаю уже лет 30!
И вот третий вариант: забавляюсь с Raspberry Pi Pico («малинкой»)…
Ну, пока, до встречи на ВК. Имеются проблемы, подробности опишу…
04_09_2023
Доброго времени суток, sandriano!
Спасибо за толковый совет.
Где – то подспудно (в дальних уголках сознания) вертелось что – то подобное… Я Вам очень благодарен за пинок в пятую точку! Решение проМбелы начало приобретать реальные очертания.
В моем проекте миди – клавиатуры появилась еще одна проблема: совмещение режимов сканирования и вывода информации на LCD-дисплеи.
Решил все реализовать на контроллере Raspberry Pi Pico, ПРГ пишу на CircuitPython, планирую использовать LCD – 1602 - 2 шт. (или 2004, подумаю). Сначала CircuitPython очень не нравился, а сейчас – очень даже неплохо все получается, клава (двухрядная – 9,5 октав) уже музычит.
А вот библиотек от Аdafruit-circuitpython для чипа HD44780 (контроллер LCD 1602) не нашел, если они вообще на тек. момент существуют в природе. Пришлось экспериментировать и изобретать свою «библиотеку». Все работает, но есть засада: длительность пауз (строб) при передаче команд и данных вместо рекомендованных 40 мкс пришлось увеличить почти на два порядка 1 – 2 мс, если меньше – глючит или вообще не работает, аналогично и для LCD 2004.
Хай бы с ней, с этой задержкой (на каждый символ 1-2 мс), но в реальном масштабе времени при музицировании и любом переключении с выводом информации все будет буксовать и тормозить…
Платформа Raspberry Pi Pico – контроллер RP2040, в нем два ядра ARM Cortex-M0+, можно использовать одно ядро для сканирования, а другое для обслуги всего остального; планируется еще линейка LED для индикации режимов. Или я по наивности чего – то не допонимаю? Вот, только пока еще не знаю, как это сделать… Можно конечно, использовать LCD c I2C, но на данный момент имеется наличие полного отсутствия оных изделий.
Вдогонку (для sandriano).
При реализации двухмануальной клавиатуры и организации нескольких сплит – зон, или нескльких патчей (слоев) на одну клавишу так и получается:
один экзкмпляр класса - один MIDI канал.
usb_midi_0 = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=0)
usb_midi_1 = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=1)
usb_midi_2 = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=2)
Большое СПАСИБО!!! Правда, его в карман не положишь и не нальешь…
Теперь я Ваш должник.
Здравствуйте, Геннадий.Доброго времени суток, sandriano!
Посмотрел для начала схемы: по одной контактной группе на клавишу. Следовательно, клавиатура без динамики. Не интересно.Мой первый вариант - идея на http://antandar.narod.ru/lpt2midi.html. Если будет интересно - я выложил архив lpt2midi.
В случае динамической клавиатуры (с velocity) это будет работать не просто медленно, это вообще не будет работать так, как надо, из-за того, что искажения временнЫх интервалов неизбежно приведет к неверным значениям velocity. Поэтому попытки как-то реализовать опрос клавиш с ПК я отмел сразу.все работало медленно и иногда «буксовало»…
У меня проблема прямо противоположная: я все свои MIDI устройства соединяю через стандартный последовательный MIDI порт, а все компактные клавиатуры - с USB.не устраивает миди – выход («токовая петля», оптрон, медленно). На моем ПК даже не оказалось миди – входа
Экран я у себя на клавиатуре не делал, о чем потом пожалел: с восемью подсвеченных светодиодами клавиш удалось сделать все, что хотел, но без инструкции на нескольких листах пользоваться этим совершенно невозможно.А вот библиотек от Аdafruit-circuitpython для чипа HD44780 (контроллер LCD 1602) не нашел, если они вообще на тек. момент существуют в природе. Пришлось экспериментировать и изобретать свою «библиотеку». Все работает, но есть засада: длительность пауз (строб) при передаче команд и данных вместо рекомендованных 40 мкс пришлось увеличить почти на два порядка 1 – 2 мс, если меньше – глючит или вообще не работает
Согласен, это как раз случай, когда окажутся полезны именно 2 ядра.контроллер RP2040, в нем два ядра ARM Cortex-M0+, можно использовать одно ядро для сканирования, а другое для обслуги всего остального;
Не верю я, что интерпретатор позволит обеспечить нужную скорость опроса более сотни динамических клавиш.В моем проекте миди – клавиатуры появилась еще одна проблема: совмещение режимов сканирования и вывода информации на LCD-дисплеи.
Решил все реализовать на контроллере Raspberry Pi Pico, ПРГ пишу на CircuitPython, планирую использовать LCD – 1602 - 2 шт. (или 2004, подумаю). Сначала CircuitPython очень не нравился, а сейчас – очень даже неплохо все получается, клава (двухрядная – 9,5 октав) уже музычит.
Да, чуть не забыл: когда нужно связать свои MIDI устройства с ПК, я польуюсь примерно таким переходником:имеется возможность подключать на 1 клавишу одновременно до 4
инструментов (наслоение патчей);
эффекты – вибрато, питч-бенд, файзер, хорус, фленджер, дилей»,
реверберация, тремоло, управляемые фильтры, унисонное звучание
(регулируемый «розлив» - под аккордеон), портаменто (одноголосное).
Добрый день.usb_midi_0 = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=0)
usb_midi_1 = adafruit_midi.MIDI(midi_out=usb_midi.ports[1], out_channel=1)
Работает!!!
Все – таки не понятно с этими библиотеками Аdafruit_midi…
usb_midi.send(NoteOn(x,0-127)) – это On-вкл., х- № ноты, velocity, а где № миди- канала?
07_10_2023
Доброго времени суток, sandriano!
"Каждый MIDI канал со своим номером - это отдельный инструмент со своим набором настроек. Именно так с ним и нужно обращаться.
но никак не usb_midi.send..." sandriano
И я все об этом… Еще раз СПАСИБО!!! Работает уже 4 миди – канала (пока): 2 мануала можно произвольно делить на 4 сплит – зоны. А вот с «многослойностью» - несколько патчей одновременно при нажатии одной клавиши пока туговато, надо еще подумать.
Еще раз внимательнее просмотрел исходник библиотеки Adafruit MIDI Library 1.0 и убедился, что NoteOn и NoteOff в Сircuitpython передаются действительно без номера миди – канала:
classadafruit_midi.note_on.NoteOn(note, velocity=127, *, channel=None)
Note On Change MIDI message.
Parameters:
note – The note (key) number either as an int (0-127) or a str which is parsed, e.g. “C4” (middle C) is 60, “A4” is 69.
velocity (int) – The strike velocity, 0-127, 0 is equivalent to a Note Off, defaults to 127.
classmethodfrom_bytes(msg_bytes)
classadafruit_midi.note_off.NoteOff(note, velocity=0, *, channel=None)
Note Off Change MIDI message.
Parameters:
note – номер ноты (ключа) в виде int (0-127) или str, который анализируется, например. «C4» (средний C) — 60, «A4» — 69.
velocity (int) – The release velocity, 0-127, defaults to 0.
classmethodfrom_bytes(msg_bytes)
Хотя уже наверное знаю, как это проще реализовать.
Надо поизучать это еще, возможно обнаружится причина некорректной работы аудио устройства USB, хотя винда должна видеть мой девайс, как миди – устройство…
Про динамику и velocit – пока «упражняюсь» без этой функции, но обязательно БУДЕТ!
В моем предыдущем проекте на AT89S8252 все работало!
Не устраивал миди – выход (UART), индикация - 9-значный 7-сегментный дисплей – все быстро забывается, поэтому под рукой всегда была шпаргалка на 3-х страничках, иногда (редко!) все пробуксовывало, не успевало. Все - таки для AT89S8252 – это «внатяг». Для реализации режима динамической индикации, чтобы освободить контроллер от рутинной ненужной работы - использована часть адресов ОЗУ. ОЗУ также использовано как память для хранения программ, поэтому есть дополнительное питание от аккум.
Зато теперь имею то, что имею - Raspberry Pi Pico! Хорошо бы, чтобы кто - то пинал в пятую точку почаще *(для ускорения).
Прицепил (если интересно) файлики ПРГ и монтажку для AT89S8252.
Наверное я не понимаю, в чем вопрос.несколько патчей одновременно при нажатии одной клавиши пока туговато, надо еще подумать
Я не знаю Пайтона, но по аналогии это как раз означает, что номер канала указать МОЖНО третьим параметром.передаются действительно без номера миди – канала:
classadafruit_midi.note_on.NoteOn(note, velocity=127, *, channel=None)
Вот это тот случай, за которые мне не нравятся интерпретаторы: нет никакого контроля до того, как зальешь в кристалл.возможно обнаружится причина некорректной работы аудио устройства USB, хотя винда должна видеть мой девайс, как миди – устройство…
Это непонятно.Про динамику и velocit – пока «упражняюсь» без этой функции, но обязательно БУДЕТ!
Я совместил динамическую индикацию со сканированием матрицы клавиатуры.Для реализации режима динамической индикации
Я, если даже доберусь до RPP, вряд ли буду связываться с Пайтоном.Зато теперь имею то, что имею - Raspberry Pi Pico! Хорошо бы, чтобы кто - то пинал в пятую точку почаще
Это сложный вопрос.как это может работать, не может!!!
Я 17 лет отработал на АТСКЭ КВАНТ
У меня электроника является хобби со школы, но профессионально я никогда с ней не сталкивался.41 год отработал
Вот как раз это - имеется.ивалидность 2 гр.
Добрый день, Сергей, sandriano!Наверное я не понимаю, в чем вопрос.
Так, как я это понял, решается самым примитивным образом - отправкой нескольких сообщений на одну клавишу:
usb_midi_0.send(noteOn...
usb_midi_1.send(noteOn...
usb_midi_2.send(noteOn...
...
Я не знаю Пайтона, но по аналогии это как раз означает, что номер канала указать МОЖНО третьим параметром.
И еще неприятное известие: вот это "velocity=127" говорит о том, что Адафрут плохо знает спецификацию MIDI. Соответственно, вполне можно ожидать, что где-то что-то будет реализовано неправильно или нелогично с точки зрения MIDI. В общем, без оглядки эту библиотеку использовать нельзя - все нужно контролировать самому.
Вот это тот случай, за которые мне не нравятся интерпретаторы: нет никакого контроля до того, как зальешь в кристалл.
Вероятно, что-то где-то недоинициализируется или неправильно инициализируется, но вслепую сказать невозможно.
Это непонятно.
Если есть аппаратная возможность, то это ПЕРВАЯ функция, которую нужно реализовывать.
Я совместил динамическую индикацию со сканированием матрицы клавиатуры.
Я, если даже доберусь до RPP, вряд ли буду связываться с Пайтоном.
Это сложный вопрос.
Скорость движения клавиши определяется по времени между замыканием двух контактов в группе, расположенной под этой клавишей.
У любых механических контактов есть такая неприятная особенность как дребезг. Дребезг - это многократное замыкание/размыкание контактов при нажатии или отпускании кнопки/клавиши. Возникает из-за упругости контактов, удара их друг от друга, сопровождающегося отскакиванием.
С дребезгом можно бороться либо аппаратно, либо программно.
Аппаратный способ требует контактов на переключение (а не на замыкание, т.е. 3 вывода вместо 2-х) плюс триггер.
Программный - после изменения состояния (замыкания или размыкания) немного подождать и повторно опросить.
Рекомендуемое время ожидания для обычной тактовой кнопки 50-100 мс.
Сравнивая величину интервала времени, который нам нужно измерить (от 1-2 мс) с временем подавления дребезга (50-100 мс) , приходим к выводу, что это сделать невозможно.
Другими словами, сделать динамическую клавиатуру на первых попавшихся контактах НЕВОЗМОЖНО. Из всех возможных разновидностей контактов использовать можно только те, которые либо вообще не имеют дребезга (а есть ли такие в природе?), либо имеют время дребезга существенно менее 1 мс.
Как с этим у герконов, я не знаю.
Подозреваю, что использование в промышленности резиновых контактов связано именно с тем, что никакие другие типы контактов не обеспечивают приемлемое время дребезга.
Вот как-то так.
У меня электроника является хобби со школы, но профессионально я никогда с ней не сталкивался.
В отличие от программирования, которое является частью моей профессии.
Вот как раз это - имеется.
Вдогонку sandriano.Добрый день, Сергей, sandriano!
Мы, оказывается, почти родственные души, и наклонности у нас одинаковые… Я с 1959 года выпуска и нашему выпуску, если помнишь, к пенсионному возрасту было добавлено 6 месяцев. Но я вовремя успел на этот поезд (на пенсию), правда в последний вагон, но успел. Оставалось еще 9 месяцев до пенсии, но на очередной комиссии МСЭ «присвоили» вторую группу (после третьей); в отделе персонала состоялся разговор по поводу моего дальнейшего пребывания в должности (ведущего инженера, штатную должность главного РосТелеком упразднил из экономии). И меня выгнали (отправили на пенсию по обоюдному согласию, в связи с*…), попутно выдали 4 оклада.
Я радовался – только жизнь начинается! Буду ездить на моей старенькой, как и я ВАЗ-21102 на природу, мечтать вечерами в беседке, строить проекты…
Но на самом деле все оказалось не так, не зря же дают 2 гр. «Езжу» по дому на двух костылях, зато у меня есть преимущество – полный привод: задний мост (неполный) и передний мост ведущий (костыли). Черный юмор, грустный…Я любитель, видите ли, музицировать на клаве всеми десятью пальчиками. Но вот незадача: после второго инсульта (2021 г.) левая рука уже не может синхронно успевать за правой, отдельно я ее конечно дрессирую. Но ничего, мы еще покувыркаемся, будет и на нашей улице праздник!
Есть розовая мечта: пристроить на нижний мануал автоаккомпанемент в помощь левой руке. Видел много «самоиграек» от наших китайских товарищей, но все это совершенно не нравится. В молодости приходилось, кроме клавишей, играть на соло гитаре, БАС гитаре, саксофоне…Вот только чтобы басовые ходы, импровизации в автоаккомпанементе были моими!
Есть Band-in- Band-in-a-Box - 2023 Build 1003 + Realband 2023 https://rsload.net/soft/editor/38061-band-in-a-box.html , но все это довольно сложно и запутанно, неприменимо при игре в реальном масштабе времени.
Надо что – то свое, но из Band-in- Band- in-a-Box можно использовать стили, сэмплы.
- Скачать Band-in-a-Box 2023 Build 1003 + Realband 2023 бесплатно + crack (1,5 ГГб). Пароль на все архивы: rsload. –
И еще добавить «лупер» ( Looper ) или секвенсор, повторять фрагменты – опять же для инвалида – левой руки…
И еще, sandriano!Вдогонку sandriano.
Функция velocity в Adafruit MIDI управляема и может иметь значения =0-127.
А вот встроенной на плате Raspberry Pi Pico Flash-памяти - 2 МБ явно для автоаккомпанемента не хватит. Тем более, что интерпретатор Сircuitpython вместе с библиотеками пишется в эту самую Flash-памяти – почти 1,5 МБ!
Зато при этом имеется одно преимущество и оно подкупает: просто пишешь текст ПРГ и сохраняешь на диске «Сircuitpython» это 2 МБ Flash-памяти. Все сразу работает (ИЛИ не работает)! Ни тебе компиляции, ни прошивки на программаторе! Но все – таки лучше бы, чтобы все это было – так привычнее…
Придется видимо, дозаказывать Raspberry Pi Pico с 8 МБ или даже 16 МБ (дороговато однако для пенсионеров!). И «раскручивать» второе ядро ARM Cortex-M0+ у RP2040.
А про дребезг – это целая область в науке про электрические контакты…
Например, в КВАНТе при наборе номера с импульсного номеронабирателя токовые посылки «заполнялись» частотой 2,4 кГц, и уже анализировались эти изменения уровня. А номеронабиратели бывают с грязными контактами, ржавые, кривые и совсем «убитые» и все работало. Я научился набирать 10- ти значные междугородние номера (+ 11 – ый знак префикс «8») пальцами.
В варианте на AT89S8252 пытался использовать метод «мажоритарности по модулю =3, т. е. при совпадении при сканировании трех отсчетов (3 соседних цикла или двух у меня) результат принимает значение последнего. Но при этом измерение времени «перелета» среднего контакта или разницы времени срабатывания двух соседних контактных пар принципиально не возможно. Поэтому применил метод программной задержки, причем пауза – константа, была изменяемой (а также паузы между передачей midi – посылок). В моем проекте этими константами можно «поиграться» на ходу, ни прибегая к перепрограммированию.
Разница по времени срабатывания герконов 1,5-2 мс – это было у меня при быстром ударе по клавише. Реально все работало, и причем довольно сносно.
Я здесь вижу чуть ли не единственный, и, кстати, хорошо отработанный вариант - писать последовательно дорожку за дорожкой все партии, причем, большую часть из них - в MIDI.Вот только чтобы басовые ходы, импровизации в автоаккомпанементе были моими!
А этого я не понял. Если писать в MIDI, то получается весьма компактно. Например, из имеющихся у меня MIDI файлов самый большой - около 800 кбайт. А бОльшая часть - от единиц до десятков кабйт.А вот встроенной на плате Raspberry Pi Pico Flash-памяти - 2 МБ явно для автоаккомпанемента не хватит. Тем более, что интерпретатор Сircuitpython вместе с библиотеками пишется в эту самую Flash-памяти – почти 1,5 МБ!
Что за метод, я не знаю, а потому и всего последующего не понял.В варианте на AT89S8252 пытался использовать метод «мажоритарности по модулю =3, т. е. при совпадении при сканировании трех отсчетов (3 соседних цикла или двух у меня) результат принимает значение последнего. Но при этом измерение времени «перелета» среднего контакта или разницы времени срабатывания двух соседних контактных пар принципиально не возможно. Поэтому применил метод программной задержки, причем пауза – константа, была изменяемой (а также паузы между передачей midi – посылок). В моем проекте этими константами можно «поиграться» на ходу, ни прибегая к перепрограммированию.
Не думаю, что форум - подходящее для этого место.Если можно, черкни пару строк про себя.
Если зажигать светодиод только в момент сканирования, то так можно еще и сэкономить на "светоизоляции" отдельных пар.и даже для экономии (потребляемого тока) зажигать Led - светодиод (или светодиоды) под клавишей только в момент сканирования.