Я понял, кого лично я хотел бы видеть на посту президента РФ в том случае, если это будет не ВВП.
«Педаль» для левой клавиатуры
Я добавлял чувствительность к скорости нажатия в свой MIDI-баян в том числе для того, чтобы естественно звучали вот такие штуки (по ссылке — короткий урок на тему «How to Play Beginner Cocktail Piano in 3 Steps»).
Однако, одной только чувствительности не хватило.
Для того, чтобы играть «сложные» аккорды левой рукой на баяне, нужно набирать нужные звуки, нажимая несколько кнопок «стандартных» аккордов. Вот здесь я выкладывал XLS-файл с калькулятором, помогающим определить, какие аккорды нужно нажимать, чтобы получился требуемый «сложный» аккорд.
Так вот, для того, чтобы играть аккорд Cmaj7 одновременно с басом (C), на левой руке не хватает пальцев. 🙂 Пианисты в таких случаях используют педаль. А значит и мне надо.
В результате я реализовал режим «педаль» в котором бас и аккорд продолжают звучать после отпускания кнопок до тех пор, пока не будет нажат новый бас, или пока не будет выключен режим «педаль».
В результате стало возможно получить вот такое звучание:
Теперь нужно привыкать нажимать кнопки с нужной силой. У баянистов такой привычки нет; в результате некоторые нажатия у меня пока получаются слишком слабые, а некоторые другие — слишком сильные.
Это позитивная новость, или негативная?
Lusta Dick — третий вариант
Я тут решил попробовать добавить второй голос к «Ленивому Дику». Без второго голоса, всё-таки, чего-то не хватает.
За основу взял второй вариант записи. И просто наложил запись второго голоса.
В одном месте (на 1:13), конечно, первый и второй голоса плохо сочетаются, звучат фальшиво. Но я не понимаю, что я с этим могу поделать; пока оставлю так.
Короткая демонстрация режима «соло»
MIDI-баян v3 — закончен
Всё, что планировал сделать, сделал. Электронную часть наладил; «странных необъяснимых глюков» не вижу уже 3 дня.
С точки зрения функционала, фантазия моя на данный момент иссякла. Сейчас есть всё, что нужно, для игры. Отличия от v2:
- Основное — это чувствительность клавиатур к скорости нажатия клавиш. Само собой, «рояльной» точности управления звуком добиться не получилось, но три уровня звучания (тихо, средне. громко) получаются без проблем.
- Добавлена функция «Акцент» для левой клавиатуры. Раньше можно было при нажатии баса или аккорда проигрывать звук ударного инструмента (любого выбранного). А сейчас, поскольку система может различить «обычное» и «сильное» нажатия, то на «сильные» нажатия баса и аккорда можно вешать дополнительные звуки. Например, при обычном нажатии будет звучать барабан, а при сильном ударе по клавише будет ещё звучать, например, тарелка.
- Добавлена функция «соло» для правой клавиатуры. В двух вариантах «соло верхней нотой» и «соло нижней нотой». Этот режим позволяет совмещать звуки двух музыкальных инструментов. Например, если нажать «До» 1-й октавы, то одиночная нота будет звучать звуком текущего пресета. А если, удерживая «До», нажать ещё «Ми» и «Соль» 1-й октавы, то эти две ноты будут звучать уже тем звуком, который настроен в 6-м пресете текущего набора пресетов. (Техническую демонстрашку для этой функции я скоро запишу на видео, а вот сыграть что-нибудь, используя эту функцию, я пока не смогу, ибо недостаточно продвинут для того, чтобы играть подобное сходу, «из головы».)
- Все пресеты, хранящиеся в энергонезависимой памяти EEPROM, теперь можно сохранить в виде резервной копии на SD-карту, в файл формата JSON. Это даёт возможность восстановить настроенные пресеты после «сброса на заводские настройки». Лично мне этой возможности очень сильно не хватало, т.к. при изменении внутреннего формата пресета приходилось то и дело переинициализировать всю EEPROM значениями по-умолчанию.
- Добавлена возможность настраивать чувствительность датчика давления — т.е. задавать уровень давления, при котором система будет звучать «на полную громкость». И можно даже задавать некоторую нелинейность зависимости громкости от давления.
В прошивке центрального модуля сейчас 16000 строк (на C++), а в прошивке клавиатур — 2600 строк (на C++).
Публикацию проекта v3 в открытый доступ я не планирую, ибо практического смысла в этом не вижу.
Упражнение от Людовика Бейера
Не так давно я докладывал про интересный мастер-класс от Людовика Бейера.
Моё наблюдение за игрой Людовика показывает, что то, что он делает левой рукой, очень интересно. И очень мне непривычно; в музыкальной школе меня такому не учили даже близко, а самому узнать про такой подход к игре мне было просто неоткуда. Подобное басовое сопровождение он делает весьма часто. А значит приём достоин освоения.
Вот, осваиваю потихоньку. Промежуточный вариант — на этой записи:
В этот раз я использовал мой самодельный звуковой модуль с Кетроном, линейный выход на звуковую карту я в нём пока не сделал, поэтому пришлось записывать с колонки, с помощью микрофонов в телефоне.
Как это всегда бывает при попытках сыграть то, что руки ещё не запомнили, пока получается в лучшем случае «на троечку». Автоматизм в левой уже начал появляться, но до свободы в правой ещё далеко.
(А потом будет «следующий уровень» — в некоторых композициях Людовик сочетает подобную басовую линию с удерживанием аккордов. Такое — совершенно непохоже на традиционные «бас-аккорд», и поэтому очень интересно. Как говорится, «а что, так тоже можно было чтоли?»)

P.S. пожалуй, стоит чуть пояснить смысл этой фразы:
в музыкальной школе меня такому не учили даже близко
Игра на выборке — это всё-таки несколько не то. Может быть, это особенность моего восприятия, но выборку я не воспринимаю как аккомпанемент. Звучание выборной левой и правой я не воспринимаю раздельно; это общее звучание со своим общим ритмом и фразами.
А это уже можно выбросить
Или вот, к примеру, лагман
- говядина нежирная — 1 кг, можно чуть больше
- пекинская капуста (нужны белые, плотные части; зелень срезать и использовать в каком-нибудь другом блюде) — примерно 8 листьев
- болгарский перец (разноцветный, чтобы красивее) — 3 больших стручка
- репчатый лук — 2 больших луковицы
- стебли сельдерея (много не надо, достаточно 3-4 штуки)
- киндза — 1 пучок
- чеснок — 2 головки
- томатная паста — 100 г
- соль
- зира
Источник рецепта здесь.
Мясо и овощи режем соломкой. Готовим в воке или в глубокой сковороде.
Сначала обжариваем мясо (минут 5). Добавляем размолотую в ступке зиру. Затем добавляем пекинскую капусту и лук. Прогреваем пару минут, добавляем томатную пасту. Жарим ещё 1-2 минуты. Добавляем болгарский перец, жарим, помешивая, 1-2 минуты. Добавляем стебли киндзы, нарезанный пластинками чеснок, сельдерей. Овощи доводим до полуготовности. Заливаем мясо и овощи водой или бульоном, и варим на среднем огне до полной готовности овощей (минут 10).
Лапшу я использую готовую (у нас в местном магазине продается «Лагманная», хорошая). Просто варим, как написано на упаковке.
Кладем в тарелку лапшу, сверху накладываем мясо+овощи (т.н. «ваджу»), посыпаем зеленью киндзы.
Это офигенно.
Отличная библиотека для работы с JSON-файлами
Мой баян хранит пресеты в EEPROM. Естественно, в двоичном виде; это очень удобно: читаешь прямо из EEPROM прямо в нужную структуру — и всё.
Но есть нюанс: в процессе разработки довольно часто меняется формат этой самой структуры (добавляются новые поля, меняется размер старых, и т.д.). В результате приходится заново инициализировать EEPROM, потому что прочитанные оттуда структуры старого формата не лягут в структуру нового формата.
Захотелось иметь возможность делать резервную копию всех 48 пресетов, которые хранятся в EEPROM. Резервную копию в виде файла на SD-карте (которая всё равно уже есть в системе). И раз уж это будет файл, то пусть он будет текстовым, чтобы его можно было редактировать при необходимости.
Раз так, то не надо изобретать свой велосипед, а надо использовать готовое. Мне нравится формат JSON; там ничего лишнего.
И, оказывается, как раз для меня сделали отличную библиотеку для работы с JSON-файлами: ArduinoJson. Очень рекомендую, если кто-то собирается решать задачу, похожую на мою.
Обожаю, когда не нужно парсить текстовые файлы самостоятельно.
P.S. Забыл объяснить, что MIDI-система теперь умеет сохранять резервный JSON-файл, и, что более интересно, читать из него пресеты и записывать их обратно в EEPROM. Причем данные могут сохраняться из «старого» формата пресета и восстанавливаться в «новый»; при этом те поля, которых нет в JSON-файле, просто инициализируются значениями по-умолчанию. И теперь мне больше не придётся вручную, по бумажке, восстанавливать настроенные ранее пресеты.




