Освоено подключение OLED дисплея к RP2040-Zero

Сегодня запаял контактные гребенки в плату и проверил работу OLED дисплея с RP2040. В результате убедился, что:

  • Дисплей отлично работает от 3.3 В.
  • Переназначать выводы I2C интерфейса очень просто.
  • Библиотека GyverOLED приколочена гвоздями к первому интерфейсу I2C (в RP2040 их два). Для того, чтобы она работала на втором интерфейсе надо либо по всей библиотеке заменить Wire на Wire1, либо сделать адаптацию библиотеки для RP2040-Zero (не хочу делать ни то, ни другое).

В общем, вопрос с подключением дисплея и использованием библиотеки GyverOLED на RP2040-Zero закрыт.

Рис. 1

И видос:

Минутка хорошей музыки

Помню, я в то время специально ходил в кинотеатр несколько раз на этот мультфильм в основном только для того, чтобы послушать эту мелодию.

А тут ещё какой-то добрый человек еще и ноты написал для основного голоса.

Я нашёл отличный редактор MIDI

Для написания мелодий ударных инструментов для автоаккомпанемента.

Здесь.

Как можно догадаться, это онлайн-редактор. Прямо из браузера. Максимально простой с одной стороны, и позволяющий редактировать поток «сырых» MIDI команд. Это важно для того, чтобы убрать разные левые команды, которые будут мешать нормальной работе движка автоаккомпанемента.

И, что хорошо, он умеет соединяться с внешними звуковыми модулями, подключенными по USB и проигрывать на них текущую мелодию. Писать мелодию надо с тем же синтезатором, на котором она будет проигрываться.

Я даже думаю, что будет правильным встраивать выбор т.н. «драмсета» (не соображу, каким должен быть русский аналог этого слова) в сам MIDI-файл.

Рис. 1

Приехали микроконтроллеры для 2-й версии баяна

Почти все детальки теперь есть:

  • сами платы RP2040 Zero (взял 3 штуки на всякий случай — по 167 р. за штуку)
  • модули SD карты (2 штуки на всякий случай — почему бы нет? Они стоят по 70 р. за штуку)
  • панельки для EEPROM памяти
  • 5 микросхем EEPROM памяти на 16 kb — по 16 рублей за штуку

В микроконтроллере своей EEPROM памяти нет, надо будет лепить внешнюю.

Вообще, я для экспериментов на макетке заказал ещё спец-модуль (за 80 р.). Но он еще из Китая не выехал; почему-то почтой отправили. Однако, если дело дойдёт до написания интерфейса к EEPROM раньше, чем приедет модуль, придётся втыкать в макетку голую микросхему, и городить обвязку самому. Там несложно.

И модули преобразователя напряжения не приехали ещё. Этому микроконтроллеру надо 3.3 В. Так что 2-я версия баяна будет вся 3-х вольтовая. Регистры и датчики Холла, очень надеюсь, нормально заработают от 3 вольт (судя по даташитам, должны заработать без проблем).

Один микроконтроллер я уже распаковал и проверил. К компу подключается, прошивка в него загружается. Единственное — если грузить прошивку в него с помощью arduino-cli, то надо контроллер втыкать в USB порт с нажатой кнопкой «boot», иначе оно контроллер не видит. (Arduino IDE отлично загружает прошивку без кнопки, но я в IDE работать не люблю; у меня всё настроено в VIM-e).

В качестве проверочной программы я использовал пример кода, работающего на двух ядрах контроллера. Оно реально работает. Прикольно. Эта штука очень пригодится, потому что я намерен авто-аккомпанемент вынести на второе ядро; как раз это ресурсоёмкая изолированная задача, которую стоит отделить от основного функционала.

Теперь надо осваивать новый контроллер:

  • научиться подключать OLED экранчик
  • научиться подключать EEPROM память
  • научиться читать SD-карты памяти
  • подключить радиомодуль

В общем, задачи есть.

Рис. 1

Очень рекомендую

Вчера вороне бог послал кусочек сыра. В виде звукового модуля MB Music Pro.DX.

Я, конечно, знал, что он хорош (на сайте есть примеры звучания). Но личный опыт — это личный опыт.

Отчаянно рекомендую этот модуль всем, кто всё ещё выбирает себе синтезатор, но ещё не выбрал. В нём просто премиальный набор звуков. И даже аккордеоны там присутствуют в достаточном количестве, и даже «простой баянный» звук там есть (называется «Reed Organ», но мной этот звук воспринимается именно как баянный). Само собой, органные звуки на высоте все без исключения.

Басовые звуки — моё почтение! Контрабасов (струнных) аж три, и звучат они очень натурально.

Рис. 1

Чтение MIDI-файлов

Я нашёл вчера вечером шикарный исходник для чтения MIDI файлов: https://github.com/velipso/basicmidi.

Оно компилируется, работает, и позволяет заглянуть в потроха MIDI файлов.

Правда, оно написано но новой модной версии С++, позволяющей удивительные (для старого меня) конструкции — см. рис. 1. И требующей установить компилятор clang.

Понятно, придётся всё это адаптировать к ардуиновскому С++. Но пока я считаю, что это самый короткий путь для меня чтобы получить код, сканирующий любой MIDI файл и позволяюший мне узнать про этот файл всё, что мне надо.

Отдельное удивление вызвал факт, что программа LMMS (которую я использую для создания MIDI файлов) задаёт темп воспроизведения не в заголовке MIDI файла (как я ожидал после изучения формата MIDI файлов), а с помощью МЕТА-команды. Это несколько усложняет дело, но уже хорошо, что я знаю, как там задаётся темп на самом деле.

Рис. 1

Прорабатываю тему чтения MIDI файлов

Для того, чтобы реализовать идею хранения мелодий автоаккомпанемента в виде MIDI файлов на флешке, изучаю, как устроены стандартные MIDI файлы. Благо, есть статья, в которой всё доступно объясняется. Мне надо будет уметь сканировать эти файлы, чтобы определять, в какие MIDI каналы там воспроизводится мелодия.

Ну, в общем, худшие подозрения оправдались: там нет никакого такого поля в заголовке файла, в котором бы были указаны номера использованных каналов. В MIDI файлах хранится тупо поток MIDI команд, которые «как есть» отправляются в синтезатор. А номер MIDI-канала, как известно, является частью статус-байта каждой команды. Т.е. придётся перебирать все команды (точнее все статус-байты) в записанном потоке, чтобы составить список используемых каналов. Это всё для того, чтобы проверять, что MIDI-каналы, использованные в файле авто-аккомпанемента, не пересекаются с каналами, связанными с клавиатурами баяна. (В первой версии буду просто проверять, что всегда используется 10-й канал, т.е. стандартный канал ударных инструментов.)

Осталось либо найти готовую библиотеку чтение MIDI файлов, либо писать собственный сканер. Но поиск таких библиотек — это уже будет задача на следующий вечер.

Рис. 1 КДПВ

Корпусок (с)

Склеил я, наконец, корпусок © для ИБП принт-сервера. См. рис. 1.

И провёл натурные испытания этого самого ИБП: запитал от этой штуки Orange Pi Plus и посмотрел, что будет.

Задумка не сработала: аккумулятор разряжается быстрее, чем заряжается. Потребляемый ток я не измерял, что зато измерял напряжение на аккумуляторе. За несколько часов испытаний оно менялось от 4.17 вольт до 4.15. Т.е. мощности в 5 Ватт не хватает, чтобы и заряжать аккумулятор, и при этом ещё питать Апельсинку.

Заказал 15-Ваттную версию (на 2 аккумулятора). Корпус для неё буду клеить по той же технологии, из листового ПВХ. Окошко для светодиодов, кстати, сделано по супер технологии: прямоугольное отверстие вырезано ножом и залито термоклеем; получилось на удивление пристойно.

Рис. 1

Сделал функцию поиска свободного радиоканала

Алгоритм простейший: перебираем все 128 каналов по очереди, смотрим в каких каналах есть активность. Берём самое большое обнаруженное «окно» и выбираем канал, находящийся в самой середине этого окна. Само собой, всё происходит без участия человека.

Выбором канала будет заниматься передатчик (т.е. баян).

По моей задумке, после того, как канал для передачи выбран, передатчик начнёт в этом канале посылать спец-сигнал. А приёмник при включении будет сканировать все каналы в поисках этого сигнала. В результате должно получиться выбрать свободный канал и установить связь совсем без участия человека.

Рис. 1

Считаю, что наши песни 50-х — 60-х — это сплошные джазовые стандарты

Особенно если вспомнить, что на самом деле означает термин «джазовый стандарт» и каким образом он вообще появился.

Просто «наши» стандарты (в отличие от «их» стандартов) не были переписаны в спец-книжечку в своё время. У наших песен даже аранжировку почти не надо подкручивать; многое уже в исходном виде звучит как надо.

Удивительным путём я пришёл к получению настоящего удовольствия от этих песен.