Оглавление:

Keytar Hero (использование гитарного контроллера Wii в качестве синтезатора): 7 шагов (с изображениями)
Keytar Hero (использование гитарного контроллера Wii в качестве синтезатора): 7 шагов (с изображениями)

Видео: Keytar Hero (использование гитарного контроллера Wii в качестве синтезатора): 7 шагов (с изображениями)

Видео: Keytar Hero (использование гитарного контроллера Wii в качестве синтезатора): 7 шагов (с изображениями)
Видео: Гитара для Clone Hero на Arduino своими руками 2024, Июль
Anonim
Image
Image
Шаг 1: Raspberry Pi (начальная настройка)
Шаг 1: Raspberry Pi (начальная настройка)

Игры Guitar Hero были на пике популярности дюжину лет назад, так что там наверняка останется много старых гитарных контроллеров, которые собираются пылью. У них много кнопок, ручек и рычагов, так почему бы не использовать их снова? Гитарный контроллер обычно не издает никакого звука сам по себе, но в этом уроке я покажу вам, как преобразовать Wii Guitar Hero Controller, чтобы на нем можно было играть как на синтезаторе.

Запасы

  • Контроллер Guitar Hero Wii
  • Доска объявлений Nunchucky (доступна на Adafruit здесь)
  • 4 шт. Перемычки (розетка - розетка)
  • 2 шт. Обжимных разъемов (опционально)
  • Raspberry Pi (желательно 3 B + или 4)
  • Карта MicroSD на 16 ГБ

Шаг 1: Шаг 1: Raspberry Pi (начальная настройка)

Raspberry Pi - это мозг и сила этого проекта, поэтому первое, что нам нужно сделать, - это настроить его для нашего проекта. Я пробовал этот проект как на Raspberry Pi 3 B +, так и на 4, и они оба работают нормально.

Raspberry Pi - это микрокомпьютеры, которые хранят все на карте microSD, а не на жестком диске… включая ОС. Типичный способ их использования - загрузить последнюю версию ОС и записать ее образ на карту microSD следующим образом:

  • На отдельном ПК или ноутбуке перейдите по адресу
  • Загрузите последнюю версию Raspbian OS. (Бастер на момент написания этой статьи). На странице доступно несколько версий, которые дают более или менее включенное программное обеспечение в зависимости от ваших предпочтений. Все они должны работать нормально, но мне нравится использовать опцию «Raspbian Buster с настольным компьютером и рекомендуемым программным обеспечением», потому что он включает в себя некоторые программные IDE и другие удобные приложения. Самый простой способ - скачать zip-версию.
  • Записать образ Raspbian на карту microSD. Есть много приложений, которые вы можете использовать для записи образа Raspbian на карту microSD, но я использовал программу balenaEtcher, которую вы можете получить здесь. Вставьте карту microSD в компьютер и запустите balenaEtcher. Для образа диска выберите загруженный zip-файл, затем выберите свою SD-карту и нажмите flash. Инструмент распакует файлы образа диска и запишет их на SD-карту. ВАЖНО: Убедитесь, что выбранный вами диск - это карта microSD … инструмент перезапишет любой указанный вами диск, поэтому убедитесь, что вы выбрали правильный.
  • Запустите свой Raspberry Pi. Вставьте карту microSD в Raspberry Pi. Подключите питание, мышь, клавиатуру и динамики. Если вы будете следовать инструкциям, это довольно очевидно… установите свое местоположение / время, установите пароль и подключите Wi-Fi.

Все это стандартная настройка для Raspberry Pi, поэтому, если вам нужна дополнительная информация, вы можете найти их здесь. Остальные шаги мы проделаем с Raspberry Pi.

Шаг 2. Шаг 2. Включите I2c

Шаг 2. Включите I2c
Шаг 2. Включите I2c

Контроллер Guitar Hero использует i2c для связи (i2c - довольно распространенный протокол, используемый электронными устройствами для связи друг с другом), поэтому нам нужно включить эту функцию на Raspberry Pi:

  • Установите библиотеки для i2c. Библиотеки i2c теперь кажутся частью стандартной сборки Buster, но на всякий случай мы запустим для них установщик. Откройте оболочку (на панели задач вверху есть значок) и введите следующее:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-tools
  • Включите i2c на Raspberry Pi. В вашей оболочке введите: sudo raspi-config. Откроется окно конфигурации. Стрелка вниз к InterfacingOptions-> I2C, чтобы включить i2c для устройства. Чтобы выйти из окна, нажмите стрелку вправо на Назад, а затем на Готово, чтобы сохранить настройки.
  • Перезагрузить. В вашей оболочке введите: sudo reboot
  • Установите пользовательские параметры i2c. Скорость передачи i2c по умолчанию (100k), кажется, иногда сбивает с толку гитару, поэтому мы замедлим ее до 50k следующим образом:

    • В оболочке типа: sudo nano /boot/config.txt
    • Это откроет ваш файл конфигурации в текстовом редакторе. Стрелка вниз и найдите строку с надписью dtparam = i2c_arm = on. Если он закомментирован, раскомментируйте его. Если у вас нет этой строки, добавьте ее. Ниже этой строки также добавьте следующее:

      • dtparam = i2c1 = on
      • dtparam = i2c1_baudrate = 50000
    • Нажмите Ctrl + O, чтобы сохранить файл конфигурации, а затем нажмите Ctrl + X, чтобы выйти.
  • Перезагрузить. В вашей оболочке введите: sudo reboot

Шаг 3: Шаг 3: Установите Pure Data

Шаг 3. Установите Pure Data
Шаг 3. Установите Pure Data
Шаг 3. Установите Pure Data
Шаг 3. Установите Pure Data

Для звуков синтезатора мы будем использовать программу Pure Data. Это инструмент для генерации звука и интерактивного отображения, который существует довольно давно. У него есть пара функций, которые делают его идеальным для этого проекта … он имеет пользовательский интерфейс на основе узлов, который довольно прост в использовании, и он может получать сигналы из внешних источников, таких как скрипты Python.

  • Установите Pure Data. В оболочке типа: sudo apt-get install puredata
    • Это должно установить программное обеспечение на ваш Raspberry Pi, но если он жалуется в оболочке на то, что не может найти все необходимые файлы, попробуйте следующее:

      • sudo apt-get update
      • Затем снова запустите команду установки: sudo apt-get install puredata
    • Во время установки вам будет предложено создать каталоги для расширений, вы можете сказать «Да».
  • Запустите Pure Data. Если он установлен правильно, вы должны увидеть программу, указанную в меню «Пуск» на рабочем столе в разделе «Звук и видео». Запустите его, чтобы убедиться, что он запускается.
  • Настройте Pure Data audio. Звук в Pure Data обычно не включен по умолчанию, поэтому вам нужно включить его.

    • Установите аудиовыход на ALSA. Когда Pure Data запустится, вы должны увидеть окно консоли. Перейдите в меню «Медиа» и выберите «ALSA» в качестве вывода. Вы можете увидеть предупреждающие сообщения в оболочке консоли, в которых говорится, что она не может найти определенные файлы, но вы можете игнорировать это.
    • Включите звук DSP. В окне консоли установите флажок DSP.
  • Проверить аудиовыход. В окне консоли Pure Data перейдите в Media-> Test Audio & MIDI. Это откроет тестовый файл, который мы можем использовать, чтобы убедиться, что Pure Data работает и что мы можем слышать звук. Включите динамики, но сначала держите их на низкой громкости (иногда звук по умолчанию может быть очень громким). В тестовом файле слева вы должны увидеть раздел Test Tones. Сначала нажмите на поле с надписью 60 и посмотрите, не слышно ли вы звука из динамиков. Если нет, попробуйте щелкнуть поле 80, а затем включить громкоговорители, пока не услышите звук. Если вы слышите звук, попробуйте перетащить поле с надписью Pitch справа от тестовых сигналов, где вы можете изменить частоту сигналов и посмотреть, что произойдет.

Если вы можете запустить Pure Data и услышать звук из тестового патча, то вы готовы перейти к следующему шагу. Но Pure Data может немного привередничать с выводом звука в первый раз, поэтому, если вы все еще не получаете звук, попробуйте следующее:

  • Возможно, звук проходит через кабель HDMI, поэтому, чтобы заставить его использовать разъем для наушников:

    • В оболочке типа: sudo raspi-config
    • Перейдите в Дополнительные параметры-> Аудио-> Усиление разъема 3,5 мм (для наушников).
  • Попробуй перезагрузиться. Иногда это помогает.
  • Проверьте свои динамики и подключение к Raspberry Pi.

Шаг 4: Шаг 4: Подключение гитары

Шаг 4: Подключение гитары
Шаг 4: Подключение гитары
Шаг 4: Подключение гитары
Шаг 4: Подключение гитары
Шаг 4: Подключение гитары
Шаг 4: Подключение гитары

Самый простой способ подключить гитарный контроллер к Raspberry Pi - использовать недорогую коммутационную плату, такую как Nunchucky *. Эта плата позволяет получить доступ к сигналу, исходящему от гитары, не отключая вилку и не вскрывая гитару. На одной стороне платы плоские дорожки, предназначенные для идеального подключения к разъему, идущему от гитары. Есть также две небольшие выемки, которые позволяют заглушке защелкнуться на месте, предотвращая ее отсоединение. Следы ведут к четырем контактам заголовка на противоположной стороне платы.

Примечание: Nunchucky поставляется со штырями заголовка, но они не припаяны, поэтому вам нужно будет сделать это самостоятельно. В моем случае я использовал штифты заголовка под углом 90 градусов, что позволяет плоско лежать в финальном проекте.

Вам понадобятся четыре провода для подключения Nunchucky к Raspberry Pi. Подключите провода от контактов заголовка Nunchucky к контактам GPIO Raspberry Pi следующим образом:

  • 3,3 В -> контакт 1
  • Данные -> Контакт 3
  • Clk -> контакт 5
  • Земля -> Вывод 9

В своем проекте я использовал обжимные соединители для проводов, чтобы их было не так легко выдергивать. Но если у вас нет обжимных соединителей, четыре отдельных перемычки «мама-мама» подойдут. Если вы ДЕЙСТВИТЕЛЬНО используете обжимные разъемы, убедитесь, что вы обращаете внимание на порядок проводов на контактах заголовка и контактах GPIO. Также обратите внимание, что на контактах GPIO мы пропускаем контакт 7. Чтобы учесть это, я использовал пятижильный обжимной разъем на одном конце и пропустил один слот.

Чтобы убедиться, что ваш Raspberry Pi может обнаружить гитарный контроллер, откройте оболочку и введите: sudo i2cdetect -y 1

Он должен напечатать сетку в оболочке, в основном с двойными черточками. Если компьютер может обнаружить гитару, вы должны увидеть идентификатор гитары №52 в одном из слотов … на моей машине он появился в столбце 2, строке 5 … но неважно, в каком из них, пока вы видите номер 52 где-то там.

Если компьютер не может его обнаружить, попробуйте следующее:

  • Убедитесь, что ваши провода надежно подключены.
  • Убедитесь, что у вас все подключено к нужным контактам.
  • Переверните штекер гитары. Nunchucky не мешает вам подключить вилку вверх ногами, так что можно только перевернуть.
  • Убедитесь, что на Raspberry Pi включен i2c (как показано на шаге 2).

* Если штекер на гитарном контроллере выглядит знакомым, это потому, что он такой же, как и стандартный контроллер Wii Nunchuck… отсюда и название Nunchucky! Это также означает, что вы можете использовать ту же коммутационную плату для подключения к контроллерам нунчаков.

Шаг 5: Шаг 5: Собираем все вместе

Шаг 5: Собираем все вместе
Шаг 5: Собираем все вместе
Шаг 5: Собираем все вместе
Шаг 5: Собираем все вместе

Теперь, когда на Raspberry Pi все настроено, нам просто нужно немного кода, чтобы он работал. Вы можете скачать код и другие необходимые файлы следующим образом:

  • Чтобы загрузить код и другие файлы на Raspberry Pi, откройте новую оболочку и введите следующую команду (вам может потребоваться поставить перед ней «sudo»): git clone
  • Это создаст в вашем домашнем каталоге каталог с именем keytarHero (т.е. / home / pi / keytarHero) и загрузит в него файлы.

В этом пакете есть три основных файла:

  • WiiGHController.py: это скрипт на Python, который открывает соединение i2c с гитарой и возвращает значения различных элементов управления. По умолчанию он также выводит считываемые значения в оболочку, чтобы вы могли видеть, что он делает.
  • keytarHero.pd: это файл патча Pure Data, который я создал для создания музыки, которую вы услышите. Он настроен на считывание значений, поступающих с гитары, и маршрутизацию их к различным узлам для генерации звуков. Я расскажу о деталях патча на следующем шаге, но в конечном итоге вы можете изменить его, чтобы делать все, что захотите, отсюда.
  • keytarHero.py: это сценарий, который запускает весь процесс и склеивает все вместе. Он запускает Pure Data и открывает патч keytarHero.pd. Он открывает соединение с патчем и передает значения от гитары к патчу.

Момент истины! Убедитесь, что гитара подключена к Raspberry Pi и готова к работе. Чтобы запустить его, вам просто нужно запустить скрипт keytarHero.py. Сделать это:

  • Откройте новую оболочку и введите: cd keytarHero
  • Затем запустите команду: python keytarHero.py

Вот и все! Если все работает правильно, Pure Data должна запуститься и начать воспроизведение патча. Вы должны услышать последовательность проигрываемых нот, и когда вы нажимаете кнопки на гитаре, она должна реагировать на это.

Исправление проблем

Если это не работает, проверьте следующее:

  • Патч Pure Data не запускается или выдает сообщение об отсутствии файлов? В сценарии keytarHero.py путь к файлу исправления Pure Data жестко закодирован в '/home/pi/keytarHero/keytarHero.pd'. Если вы переместили папку keytarHero или этот файл патча в другое место, вам необходимо обновить скрипт, чтобы вместо этого использовать ваш путь. Для этого откройте файл keytarHero.py, найдите переменную PD_PATCH_PATH и измените ее так, чтобы она указывала на каталог, в котором находится ваш файл keytarHero.pd. Сохраните сценарий и запустите его повторно, и все будет в порядке.
  • Гитара издает сигнал? Сценарий должен непрерывно печатать сигнал, который он получает от гитары к корпусу, в виде строки чисел, каждое из которых представляет значение элемента управления на гитаре. Когда вы используете элемент управления на гитаре, эти числа должны измениться. Если нет, убедитесь, что вы правильно выполнили настройку i2c и подключения гитары, как описано выше.
  • Включен ли звук Pure Data? Патч Pure Data, представленный в этом пакете, должен автоматически включать звук, но убедитесь, что установлен флажок DSP в консоли Pure Data. Также проверьте настройки звука, как показано на шаге 3.
  • Получает ли Pure Data сигнал от гитары? В правом верхнем углу патча находится группа узлов, отвечающих за считывание сигнала с гитары и передачу его остальной части патча. Когда вы нажимаете кнопки на гитаре, цифры в этом разделе также должны обновляться, указывая на то, что сигнал принимается правильно.
  • Инициализация переменных в патче. Pure Data может немного привередничать с значениями в патче, которые не инициализируются. Я добавил механизмы для запуска переменных при его открытии, но, возможно, стоит просто щелкнуть по некоторым окнам сообщений (те, которые выглядят так, как будто они откусили от них). Это заставляет их инициализироваться и может их разбудить.

Шаг 6: Знакомство с патчем Pure Data

Экскурсия по патчу Pure Data
Экскурсия по патчу Pure Data
Экскурсия по патчу Pure Data
Экскурсия по патчу Pure Data
Экскурсия по патчу Pure Data
Экскурсия по патчу Pure Data
Экскурсия по патчу Pure Data
Экскурсия по патчу Pure Data

Настройка, описанная до сих пор в этом руководстве, заставит вас работать, но одна из приятных вещей в использовании Pure Data для этого проекта заключается в том, что ее можно настроить так, чтобы делать все, что вы хотите. Когда патч открыт, если вы нажмете Ctrl + E, он переведет патч в режим редактирования, и вы можете изменить патч. Подробности использования Pure Data выходят за рамки этого руководства (для этого есть много онлайн-руководств), но с этим может быть интересно поработать, поэтому вот общий обзор того, что происходит в патче keytarHero.pd на случай, если вы хотите настроить его:

  • Связь с гитарой: в правом верхнем углу патча находится дерево узлов, отвечающих за обработку сигнала от гитары. Значения от гитары представляют собой длинную строку, поэтому эти узлы разбивают строку на отдельные значения для каждого элемента управления, преобразуют их в числа, а затем передают их узлам «отправки» (тем, которые начинаются с s). Узлам отправки назначается имя, и они излучают сигнал узлам «приема» с тем же именем. Например, узел 's whammy' излучает значения, поступающие из полосы удара гитары, а узел 'r whammy' в середине патча принимает этот сигнал и использует этот сигнал для остановки секвенсора. Узлы отправки / получения помогают уменьшить беспорядок на линиях подключения в патче. Я не рекомендую возиться с этим разделом, так как это довольно сложно сделать правильно, но вы определенно можете добавить дополнительные узлы приема на протяжении всего патча по мере необходимости, чтобы получать от него сигналы по мере необходимости.
  • Секция секвенсора: средняя секция патча управляет секвенсором. Слева находится полоса с движущимся черным квадратом, показывающая, какую ноту из 16-нотной последовательности он играет. Клавиша бренчания определяет, будет ли последовательность воспроизводиться вперед или назад. Кнопки плюс / минус увеличивают / уменьшают скорость. Справа находятся пять наборов чисел, которые определяют, какие ноты воспроизводятся на каждом шаге. Каждая последовательность назначается для воспроизведения при нажатии одной из пяти кнопок на ладу. Эти числа являются значениями MIDI, и вы можете изменить их, чтобы играть любые ноты, которые хотите… просто задайте им значения от 0 до 127.
  • Секция Oscillator / FX: в нижнем левом углу находятся узлы осциллятора и FX, которые фактически создают звук. Первичный осциллятор находится слева. Средние значения из секции секвенсора преобразуются в частоты и подаются на осциллятор. Он смешивается со вторым осциллятором, идущим с правой стороны. Его частота также контролируется средними значениями, но с дополнительным смещением частоты, управляемым осью X джойстика. Это вызывает эффект расстройки или свиста при перемещении джойстика влево или вправо. В правом нижнем углу также находится узел фильтра нижних частот, частота среза которого привязана к оси Y джойстика. Фильтр низких частот определяет, насколько высокочастотный звук удаляется из звука. Когда джойстик перемещается в нижнее положение, он отключает большую часть высоких частот, что приводит к приглушенному звуку. При перемещении в верхнее положение он пропускает все частоты, что дает более яркий звук.
  • Инициализация: в верхнем левом углу патча есть ряд узлов, которые инициализируют патч при его запуске, например включают звук и «касаются» различных узлов, чтобы разбудить их. Опять же, вам, вероятно, не нужно связываться с этим разделом, но если есть что-то, что вы хотите, чтобы произошло при запуске патча, подключите их к узлу под названием 'loadbang'.
  • Я попытался задокументировать патч с комментариями в самом патче, так что надеюсь, что это даст вам достаточно информации для изучения различных вариантов отсюда.

Наслаждаться!

Шаг 7. Что еще можно попробовать

Запуск гитары без головы

Должно быть возможно запустить этот проект без подключения к монитору / клавиатуре / мыши, если вы запустили Raspberry Pi от подходящего портативного источника питания. Raspberry Pi не совсем вписывается в отверстие на задней части гитары, но если вы чувствуете себя храбрым, вы можете внести изменения в гитару, чтобы исправить это … или просто прикрепите Pi к задней части с помощью винтов, и он прилипнет немного вышло. В Интернете есть множество руководств о том, как запускать сценарии на Raspberry Pi без головы, но в основном вам нужно запустить команду python /home/pi/keytarHero/keytarHero.py& при загрузке. Теоретически тогда у вас была бы гитара, через которую к динамику выходил бы только один кабель … как настоящая электрогитара!

Дополнительные модификации Pure Data

У меня были другие идеи о том, как гитара может управлять патчем Pure Data, но я не пытался. Это были бы изменения в патче, с которыми было бы интересно поэкспериментировать:

  • Whammy bar: в текущем патче панель whammy просто останавливает воспроизведение последовательности, но я думаю, что было бы лучше, если бы полоса whammy также увеличивала частоту одновременно, как это сделала бы настоящая полоса whammy. Некоторое время я пытался заставить его работать, но это оказалось сложнее, чем я думал. Я думаю, что это может быть просто вопрос добавления выражения в секции осциллятора, которое добавляет немного более высокую частоту к осциллятору в зависимости от значения, поступающего от ударной полосы.
  • Полоса бренчания: в настоящее время полоса бренчания воспроизводит последовательность вперед при нажатии и назад при нажатии вверх, но может быть лучше, чтобы она циклически проходила через различные параметры последовательности, такие как случайный шаг и т. Д.
  • Кнопки плюс / минус: кнопки плюс / минус изменяют количество ударов в минуту, но это немного не впечатляет, если вы не нажмете их несколько раз. Было бы хорошо, если бы он каждый раз увеличивался на большую величину. Или, возможно, он переключит секвенсор между 16-битным, 8-битным, 4-битным, триплетным воспроизведением.

Рекомендуемые: