Pull to refresh
91.25
Cloud4Y
#1 Корпоративный облачный провайдер

It's Alive! Аккордеон из двух Commodore 64 и дискет

Reading time8 min
Views6.7K
Original author: Linus Åkesson

Если вам кажется, что вы уже видели все безумные проекты с ретро-компьютерами, то вы сильно ошибаетесь. Мы не знаем, как у человека могла появиться идея скрестить компьютер Commodore с аккордеоном, но… Она не только появилась, но и воплотилась в жизнь. Встречайте – Коммодордеон!

Commodordion — это 8-битный аккордеон, состоящий из двух Commodore 64, дискет и клейкой ленты, который придумал и собрал Linus Åkesson. Как это чудо устроено, читайте дальше.

О проекте

Я возился с этим зверем около трёх с половиной лет. В процессе работы у меня получились побочные проекты Sixtyforgan (игра слов Commodore 64 (sixty-four) + орган) и Qwertuoso (QWERTY + виртуоз), на которых я впервые показал аккордеонную раскладку клавиатуры. На самом деле, когда я выпустил видео Sixtyforgan в 2021 году, у меня уже была ранняя версия коммодордеона, но вид у неё был непрезентабельный. На задней панели не было акриловой крышки и «кишки» постоянно вываливались наружу. Кроме того, на тот момент я ещё не запрограммировал ритм-бокс для левой стороны.

Когда дизайн коммодордеона, наконец, меня устроил, появилась новая проблема: как научиться на нём играть. Когда вы не можете видеть, что делают ваши руки, это страшно раздражает. Немного могут помочь зеркала, но, в конце концов, вам придётся полагаться на чутьё и мышечную память. Маленькая красная наклейка на правой клавише «U» помогает сориентироваться, когда нужно перепрыгнуть с одной области клавиатуры на другую.

Ритм-бокс

За мелодическую сторону коммодордеона отвечает Qwertuoso. Сторона аккомпанемента запускает специальное приложение для воспроизведения аккордов и «лупов», которое я опишу ниже. Технически оба C64 загружают одну и ту же программу, но между двумя приложениями можно переключаться с помощью специальной комбинации клавиш.

Как только режим аккомпанемента будет запущен, левая сторона начинает работать с одиночными нажатиями клавиш — никаких комбинаций клавиш не требуется. Часто используемые клавиши расположены близко друг к другу и, по возможности, у внешнего края клавиатуры. Тем не менее, до некоторых дотянуться левой рукой сложно, особенно при настройке «лупов». 

Инструмент имеет «лайв» режим (как обычный аккордеон) и режим программирования. Shift lock — механический тумблер на C64 — используется для переключения между ними.

«Лайв» режим

В «лайв» режиме три ряда с буквами играют роль аккордов. Компоновка создана под вдохновением от ​​басовой системы Stradella, используемой во многих аккордеонах. Нижний ряд, от Z до стрелки вправо, содержит все мажорные аккорды, расположенные по квинтовому кругу. Таким образом, от любого заданного аккорда I (тоника) вы найдете аккорды IV и V по обе стороны от него. Второй ряд, от A до Return, содержит минорные аккорды, а третий ряд содержит dim аккорды. Так, например, клавиши Z, A и Q представляют собой C ♯ мажор, C ♯ минор и C ♯ dim соответственно.

Когда вы нажимаете и удерживаете клавишу аккорда, и никакой «луп» при этом не проигрывается, программа просто воспроизводит аккорд как арпеджио и басовую ноту.

Функциональные клавиши F1, F3, F5, F7 запускают воспроизведение одного из четырёх «лупов», сохранённых в памяти. Когда воспроизводится «луп», нажатие клавиши аккорда адаптирует «луп» к нужному аккорду. Цифровые клавиши 4-9 устанавливают темп. Пробел останавливает воспроизведение.

Режим программирования

В режиме программирования большинство клавиш воспроизводят звуки (сэмплы или ноты), которые можно вставить в текущий «луп». В районе правой клавиши Shift есть сэмплы ударных. Пять букв в нижнем ряду (Z–B) обозначают басовые ноты (1-ю, 3-ю, 5-ю, 7-ю и 8-ю ступени). Девять букв во втором ряду (A – L) проигрывают текущий аккорд, как арпеджио или отдельными нотами.

Когда «луп» не проигрывается, эти клавиши просто воспроизводят звуки, позволяя вам поимпровизировать и подобрать нужные.

Когда «луп» проигрывается, звуки начинают записываться. Четыре функциональные клавиши запускают воспроизведение и, вместе с этим, запись заданного паттерна. Пробел останавливает воспроизведение. Clr/Home очищает текущий паттерн.

«Луп» разделен на 16 ритмических долей, и записанные звуки квантируются к ближайшей ритмической доле в секвенциях. Когда «луп» воспроизводится в режиме программирования, всегда слышен метроном.

Как это работает

Если вы знакомы с Commodore 64, вам будет интересно, откуда берётся мощность. Сбоку есть разъем для блока питания, но, как видно из видео, к нему ничего не подключено. Я мог бы использовать этот разъём, но второй C64 установлен вверх ногами, так что во время игры сидя кабель питания втыкался прямо мне в ногу. Чтобы избежать этого и избавиться от гула сети, я решил припаять внутренний источник питания прямо к материнской плате.

Я также беру с материнской платы аудиовыход, чтобы избежать ещё одного громоздкого разъёма. Провода проходят через отверстие и выходят с другой стороны. Затем всё собирается под акриловым листом.  Под ним находятся три печатных платы. Маленькая является концентратором питания и отвечает за распределение входящей мощности 5 вольт и 12 вольт по другим частям системы. Также здесь есть главный переключатель для загрузки C64. Включение происходит за секунду. Этого не видно, так как монитор не подключён, но, поверьте, машина работает так же, как и в далёком 1982 году.

Затем нужно загрузить программное обеспечение. Мы будем загружать его с ленты. Программное обеспечение хранится на печатной плате, которая эмулирует ленточный накопитель набора данных. Единый эмулятор набора данных совместно используется двумя C64 для загрузки программы. Горячая клавиша для запуска программы – Run Stop. После нажатия кнопки воспроизведения на правой стороне коммодордеона программа запустится и можно будет начать играть на этой стороне инструмента. Для игры на левой стороне нужно проделать аналогичную процедуру слева.

Последняя плата представляет собой микшер, куда сводятся аудиосигналы от двух C64. Осталось заставить меха контролировать уровень этого комбинированного сигнала. Меха более или менее герметичны благодаря обилию клейкой ленты, за исключением единственного отверстия, просверленного в акриле на этой стороне, сразу за отверстием. Здесь находится небольшой микрофон, установленный под таким углом, чтобы весь воздух, входящий или выходящий из мехов, отражался от этого микрофона. Зачем он нужен, расскажу дальше.

Меха

Как я делал меха и принцип их работы показан в видео. Но на ранних стадиях проекта я понятия не имел, как буду измерять расход воздуха. У меня была куча неудачных попыток, прежде чем был найден подходящий вариант.

Горячие провода и турбины

Один из вариантов я создал под вдохновением от систем впрыска топлива, используемыми в автомобильных двигателях. Вы прикрепляете датчик температуры к нагревательному элементу (резистор, предназначенный для рассеивания энергии). Затем создаёте петлю обратной связи, чтобы поддерживать постоянную температуру. Если воздух неподвижен, большая часть тепла остаётся возле нагревательного элемента. Но если воздух движется, для нагревания требуется больше энергии. Это знает любой, кто живёт в холодном и ветреном месте. Измерив, сколько электроэнергии потребляет система, можно рассчитать расход воздуха.

Звучит запутанно, но я решил, что если автомобильные двигатели полагаются на эту технологию, она, вероятно, сработает. И мне действительно удалось построить рабочий прототип. К сожалению, он недостаточно быстро реагировал на изменения воздушного потока. Мой прототип работал при температуре около 50°C. Я подозреваю, что он реагировал бы быстрее, если бы я увеличил рабочую температуру, но я боялся обжечься или даже устроить пожар.

Поэтому я стал искать альтернативу. На одном из видео о возобновляемых источниках энергии я увидел, как мужчина что-то объяснял, стоя рядом с ветряком. Ему пришлось кричать, чтобы перекрыть грохот. Часть этого шума исходила от механизмов, но основной шум возникал из-за ветра, бьющего в микрофон. Тут я понял: Вот оно! Я буду измерять расход воздуха!

Повторитель огибающей

Повторитель огибающей (Envelope follower) реализован на микроконтроллере. Я довольно грубо замеряю входящий шум с помощью аналогового компаратора: если сигнал выше фиксированного порога, эта выборка считается единицей. В противном случае это ноль. Суммирование последних 512 выборок (т.е. подсчет того, сколько из них превысило пороговое значение) даёт число, пропорциональное количеству шума.

Я вычисляю это число как скользящее среднее, побочным эффектом которого является низкочастотная фильтрация сигнала. Затем я применяю дополнительный шаг фильтрации, чтобы ещё больше сгладить кривую. Здесь приходится идти на компромисс: ответ должен быть достаточно быстрым для музыкальной фразировки, но достаточно медленным, чтобы не содержать слышимых частот. При слишком слабой фильтрации вы услышите часть шума от микрофона, просачивающегося в звук. Как вы можете заметить на видео, изменения громкости несколько отстают от движения мехов, что является результатом фильтрации. И всё же отклик получается достаточно быстрым, чтобы не влиять на качество исполнения музыки. Впрочем, алгоритм можно улучшить.

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

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

Микширование

Сигналы с аудиовыходов двух C64 смешиваются в равных пропорциях, и этот объединённый сигнал становится аналоговым входом для ЦАП. Я предпочитаю, чтобы мелодическая сторона была громче стороны аккомпанемента. Этот баланс контролируется из прикладного программного обеспечения путём установки основной громкости каждого чипа SID.

Когда вы держите меха неподвижно, громкость не падает до нуля. Эту функцию было бы легко реализовать в микроконтроллере или даже внедрить в таблицу гамма-коррекции. Но я отложил вопрос микширования на потом. Стереокабели удобны: я посылаю входной сигнал ЦАП (микшированный звук от обоих C64, не затронутый мехами) по левому каналу, а его выходной сигнал — по правому каналу. Таким образом, правый канал падает до нуля, когда меха останавливаются, но левый канал поддерживается на постоянном уровне. Я слушаю оба канала на динамике монитора при воспроизведении, но они записываются отдельно, поэтому позже я могу настроить микширование по своему вкусу.

Записанный звук также подвергается небольшой эквализации, компрессии и стереореверберации.

Эргономика

У коммодордеона есть один огромный недостаток: он сильно нагружает левое запястье, руку и плечо. До большинства клавиш на левой стороне трудно дотянуться, поэтому запястье оказывается полностью согнутым, и в то же время рука должна удерживать большой вес при работе с мехами. Как музыкант, я серьёзно отношусь к эргономике, поэтому, к сожалению, я не буду играть на этом инструменте очень часто, и уж точно не буду часами тренироваться, чтобы улучшить технику игры левой рукой. Это сильно подрывает потенциал коммодордеона, как жизнеспособного музыкального инструмента.

Но закончим на более приятной ноте! О правой руке беспокоиться не придётся: она находится в здоровом, расслабленном положении. Я обязательно учту все недостатки в своих будущих проектах музыкальных инструментов на базе C64.

 


Что ещё интересного есть в блоге Cloud4Y

→ Как открыть сейф с помощью ручки

→ OpenCat — создай своего робокотика

→ Как распечатать цветной механический телевизор на 3D-принтере

→ WD-40: средство, которое может почти всё

→ Подержите моё пиво, или как я сделал RGBeeb, перенеся BBC Micro в современный корпус

Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем только по делу. А ещё напоминаем про второй сезон нашего сериала ITить-колотить. Его можно посмотреть на YouTube и ВКонтакте.

Tags:
Hubs:
Total votes 43: ↑43 and ↓0+43
Comments6

Articles

Information

Website
www.cloud4y.ru
Registered
Founded
2009
Employees
51–100 employees
Location
Россия