Создание музыки с помощью neo trellis

Я уже некоторое время играю с neo trellis. Мне пришлось упаковать его в коробку и забыть о нем на несколько месяцев из-за жизненных перемен и приоритетов, а затем я вернулся к нему. Я потерял наброски кода, который я сделал для него несколько месяцев назад, поэтому я решил начать сначала и перечитал документацию на Adafruit. В итоге я все вспомнил и начал работать. Во-первых, мне уже понравился один из примеров из библиотеки Seeaw NeoTrellis: «interrupt».

По сути, он заключается в том, что на клавиатуре загорается разноцветная радуга, а затем, когда вы нажимаете на одну из них, она загорается назначенным цветом. После изучения этого кода я решил, что быстрый и грязный способ взлома клавиш — получить их код, распечатав его на последовательном мониторе. Идентификационный код клавиш на самом деле был частью функции, которая создает и возвращает цвет для каждой клавиши. Я выбрал эти уникальные данные [код+цвет] и запрограммировал его на печать в последовательном мониторе всякий раз, когда я нажимал на клавишу. Таким образом, я открывал последовательный монитор и нажимал каждую клавишу, чтобы получить код. В любом случае, поскольку мой NeoTrellis — это матрица 4×4, я сопоставил клавиши и сделал условие таким образом, чтобы они печатали уникальную букву id на мониторе при нажатии, вместо странного кода, упомянутого ранее. В итоге, клавиши были установлены таким образом:

A B C D
E F G H
I J K L
M N O P

В итоге получилось, что если я нажму на клавишу в левом углу сверху, то она выведет «A» на последовательный (tty/ACM0 в моем случае) монитор, если я нажму на клавишу в правом нижнем углу, то выведет «P» и так далее. Как только это было сделано, я перешел на python. Я использовал pyserial для чтения содержимого tty/ACM0.

device='/dev/ttyACM0'
arduino = serial.Serial(device, 9600,timeout=1)

Вход в полноэкранный режим Выход из полноэкранного режима

Моя первоначальная идея заключалась в воспроизведении простых звуков «бип» и подобных. Я искал звуки уведомлений в своей системе и использовал команду mplayer для воспроизведения файла wav с некоторыми образцами звуков, например, колокольчиков или гитар.

     valor = arduino.readline()
     valor = valor.decode('utf-8')
     if "A" in valor:
        print("playing sample music")
        subprocess.run(["mplayer", "/<path_to_my_music>/a.wav"])

Вход в полноэкранный режим Выход из полноэкранного режима

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

     valor = arduino.readline()
     valor = valor.decode('utf-8')
     if "A" in valor:
        print("playing ukelele chord F")
        subprocess.run(["mplayer", "/<new_path_to_my_music>/ukelele1.wav"])
     ...

Вход в полноэкранный режим Выход из полноэкранного режима

Я завернул все это в цикл while true, который выполнялся только при одном из сигналов клавиш (в моем случае я использовал «M», так как решил использовать последний ряд клавиш в качестве кнопок выбора).

И все! Теперь я могу играть свои собственные записанные вещи на своем компьютере с помощью neotrellis. Впрочем, это всего лишь пример. Как только у меня будет эта карта в серийнике, я смогу запрограммировать их на открытие папок, вкладок firefox или чего угодно, что мне нужно. Я думаю о создании помощника «управления git». Хотя у него есть несколько секунд задержки!

Вот короткое видео, демонстрирующее запись и неотрелли.

Пола: «Я кое-что создала!» — Mastodon.green

Прикреплено: 1 видеоУ меня кое-что получилось!

mastodon.green

.

Оцените статью
devanswers.ru
Добавить комментарий