Мы используем файлы cookie, чтобы сайт работал и становился удобнее. Продолжая пользоваться «Думайте», вы соглашаетесь с Политикой конфиденциальности.

показать все результаты

Ничего не найдено

Tux Linux
27 · уровень 2 в

От одной ноты — к целому оркестру

3 дн. назад авторская
55 9 5 мин

В прошлый раз я рассказывал, как несколько часов воевал с Bluetooth MIDI, пока мой Roland AE-01 наконец не заговорил с Linux. История закончилась хорошо: появился собственный мост, инструмент начал передавать ноты и дыхание в компьютер, а я получил первый рабочий кусок будущего музыкального тренажёра. Казалось бы, теперь можно наконец заняться самим обучением. Но возник другой вопрос: а подо что, собственно, учиться играть?

Можно, конечно, выводить на экран ноту, ждать, пока ученик её сыграет, затем показывать следующую. Для первых уроков этого достаточно. Но музыка — это всё-таки не последовательность правильных кнопок. Мне хочется взять флейту, нажать «Играть» — и услышать за собой пианино, бас, ударные, струнные. Чтобы я был не человеком, который одиноко пищит перед монитором, а солистом пусть виртуального, но оркестра. И здесь идея тренажёра начала заметно меняться.

Я начал разбираться, как всё это устроено в нормальных музыкальных редакторах. Попробовал Rosegarden, затем полез в Ardour. Начались дорожки, MIDI-входы, плагины, JACK, PipeWire, синтезаторы, маршрутизация. В какой-то момент я умудрился настроить всё настолько профессионально, что звук исчез вообще во всей системе. Это, видимо, высшая стадия работы звукорежиссёра: пока ты новичок — у тебя плохо звучит музыка, а когда становишься профессионалом — у тебя не звучит ничего. Пришлось разбираться дальше. В итоге звук вернулся, JACK подружился с PipeWire, Ardour увидел MIDI, MIDI увидел Roland, Roland продолжал исправно слать данные. А я в какой-то момент поймал себя на простой мысли: зачем я вообще строю внутри учебной программы маленький Ardour? Ученику всё это совершенно не нужно. Ему не нужны сотни настроек, маршрутизация портов, студийный микшер и двадцать способов отправить MIDI из точки А в точку Б. Ему нужно нажать кнопку «Учить произведение» — и играть.

А потом заработал Qsynth, и здесь случился важный поворот. Я запустил его, загрузил SoundFont, подключил MIDI — и всё просто заработало. Без приключений. Нажал ноту — услышал ноту. После вчерашней эпопеи это даже показалось подозрительным. Но Qsynth помог понять главное: готовая DAW моему тренажёру вообще не обязательна. Внутри Qsynth работает FluidSynth — программный синтезатор, способный брать MIDI-команды и превращать их в звук. Вот его-то и можно использовать как звуковой двигатель будущей программы. А интерфейс, управление уроками и всю учебную логику написать самому. И тут окончательно сложилась архитектура.

Теперь представим обычный многодорожечный MIDI-файл. В нём может быть пианино, бас, ударные, струнные и флейта. Обычно музыкальная программа просто воспроизведёт все пять дорожек. А мой тренажёр поступит иначе: первые четыре дорожки станут аккомпанементом, а пятая — заданием ученику. То есть компьютер играет пианино, бас, барабаны и струнные, а флейту должен сыграть я. И вот это уже совсем не похоже на первоначальный тренажёр. Это практически персональный оркестр. Причём оркестром можно будет управлять: каждый инструмент останется отдельной дорожкой. Хочу играть только под пианино — пожалуйста. Не нужны барабаны — выключил. Хочу услышать отдельно бас — включил соло. Нужен полный аккомпанемент — включил всё.

Но самое интересное будет с моей собственной партией. Её тоже можно будет включить. Допустим, я не понимаю, как должен звучать какой-то кусок. Нажимаю «Послушать мою партию» — компьютер сам играет флейту вместе с остальными инструментами. Послушал, выключил — теперь это место должен сыграть я. Получается что-то вроде музыкального караоке наоборот: из готовой композиции убирается один музыкант, и его место занимаешь ты.

Это ещё одно преимущество MIDI. На настоящем занятии можно сказать пианисту: «Давайте пока помедленнее». В нашей программе можно сделать то же самое. Не получается произведение в оригинальном темпе — ставим 50 процентов. Сыграл нормально — 60, потом 70, 80, 90 — и наконец оригинальный темп. Причём программу можно научить повышать скорость автоматически. Например, сыграл фрагмент три раза без серьёзных ошибок — получай ещё пять ударов в минуту. Начал ошибаться — остаёмся на текущей скорости или немного откатываемся назад. Получится уже не просто проигрыватель, а настоящий режим тренировки.

Самое интересное, что аккомпанемент — только половина системы. Вторая половина уже фактически работает. Компьютер получает от AE-01 информацию о моей игре. Поэтому у него одновременно будут две картины. Первая — что написано в MIDI-файле: сейчас должна прозвучать соль, начало вот здесь, длительность столько-то, следующая нота — ля. Вторая — что сделал я: сыграл соль, вступил на 80 миллисекунд позже, закончил раньше, в середине ноты ослабил дыхание. Остаётся сравнить одно с другим. И тогда вместо примитивного «Правильно» можно получить: нота правильная, вступление позднее, длительность немного короткая, попробуй этот такт ещё раз. Вот это уже начинает напоминать преподавателя.

И это принципиальный момент. Roland AE-01 сейчас для меня прежде всего идеальный инструмент для разработки. Он сообщает компьютеру точные MIDI-данные, поэтому на нём удобно отлаживать всю учебную механику. Но конечная программа должна работать и с обычной блокфлейтой или tin whistle. Там вместо MIDI будет микрофон: инструмент, микрофон, анализ звука, определение ноты, сравнение с партитурой. Для пользователя принцип работы при этом вообще не меняется. Он выбирает произведение и играет. Просто в одном случае программа получает сыгранные ноты непосредственно от электронного инструмента, а во втором сама определяет их по звуку.

Когда я начинал этот проект, идея была довольно скромной. На экране появляется нота, я играю, компьютер отвечает «Правильно» или «Неправильно». Сейчас концепция уже выглядит совершенно иначе. Я загружаю произведение, программа разбирает его на инструменты, я выбираю, какую партию собираюсь учить, а все остальные музыканты становятся моим аккомпанементом. Могу выключать их, оставлять по одному, менять громкость, замедлять произведение, слушать собственную партию и снова убирать её. Потом нажимаю «Учить» — оркестр начинает играть, а место одного музыканта остаётся пустым. Потому что теперь этот музыкант — я. И программа уже не просто ждёт правильных нот. Она знает всю партию и постепенно учится понимать, где я ошибаюсь и что именно мне следует тренировать.

Самое забавное, что к этой идее я пришёл не за столом с листком бумаги. Я пришёл к ней после Bluetooth, Python, MIDI, FluidSynth, Qsynth, Ardour, JACK, PipeWire и нескольких часов, в течение которых Linux периодически пытался убедить меня, что музыка человечеству вообще не нужна. Зато теперь стало понятно, что именно я хочу построить. Не очередной MIDI-плеер, не упрощённый музыкальный редактор и даже не просто определитель нот. Я хочу сделать тренажёр, в котором компьютер становится твоим оркестром. И вот теперь начинается самое интересное.

P.S. Едет ещё MIDI-клавиатура. Похоже, оркестр будет расти.

Tux Linux
Полезность 97%
· +6 высоко оценили
Интересность 89%

Комментарии 3

Войдите, чтобы оставить комментарий.

уровень 3 в 3 дня
Прекрасно! От программного звукового интерфейса к полноценной системе обучения!
Полезно
Уместно
уровень 4 в 3 дня
Очень интересная идея. а как сами успехи в овладении инструментом? Продвигаетесь? Или пока ещё мало практики.
Полезно
Уместно

Оценить запись

Полезность 97%
· +6 высоко оценили
Интересность 89%

Поделиться