Съдържание:

Keytar Hero (Използване на Wii китарен контролер като синтезатор): 7 стъпки (със снимки)
Keytar Hero (Използване на Wii китарен контролер като синтезатор): 7 стъпки (със снимки)

Видео: Keytar Hero (Използване на Wii китарен контролер като синтезатор): 7 стъпки (със снимки)

Видео: Keytar Hero (Използване на Wii китарен контролер като синтезатор): 7 стъпки (със снимки)
Видео: Jesse Cale - Keytar Hero 2024, Юли
Anonim
Image
Image
Стъпка 1: Raspberry Pi (начална настройка)
Стъпка 1: Raspberry Pi (начална настройка)

Игрите на Guitar Hero бяха на мода преди десетина години, така че сигурно ще има много стари китарни контролери, лежащи наоколо и събиращи прах. Те имат много бутони, копчета и лостове, така че защо да не ги използвате добре отново? Китарният контролер обикновено не издава звук сам по себе си, но в този урок ще ви покажа как да конвертирате Wii Guitar Hero Controller, така че да може да се играе като синтезатор.

Консумативи

  • Guitar Hero Wii контролер
  • Nunchucky breakout board (наличен на Adafruit тук)
  • 4ea джъмперни проводници (женски към женски)
  • 2ea кримпващи съединители (по избор)
  • Raspberry Pi (3 B+ или 4 предпочитани)
  • 16GB MicroSD карта

Стъпка 1: Стъпка 1: Raspberry Pi (начална настройка)

Raspberry Pi е мозъкът и силата на този проект, така че първото нещо, което трябва да направим, е да го настроим за нашия проект. Опитах този проект както на Raspberry Pi 3 B+, така и на 4 и изглежда, че и двете работят добре.

Raspberry Pi's са микрокомпютри, които съхраняват всичко на microSD карта вместо на твърд диск … включително операционната система. Типичният начин да ги използвате е да изтеглите най -новата операционна система и да запишете изображение от нея на microSD карта, както следва:

  • На отделен компютър или лаптоп отидете на
  • Изтеглете най -новата операционна система Raspbian. (Buster по време на това писане). На страницата има няколко версии, които дават повече или по -малко включен софтуер в зависимост от вашите предпочитания. Всички те трябва да работят добре, но обичам да използвам опцията „Raspbian Buster с настолен компютър и препоръчителен софтуер“, защото включва някои програмируеми IDE и други удобни приложения. Най -лесният начин е да изтеглите zip версията.
  • Запишете Raspbian изображение на microSD карта. Има много приложения, които можете да използвате, за да запишете Raspbian изображението на вашата microSD карта, но аз използвах програмата balenaEtcher, която можете да получите тук. Поставете microSD картата в компютъра си и стартирайте balenaEtcher. За изображението на диска изберете zip файла, който сте изтеглили, след това изберете вашата SD карта и натиснете флаш. Инструментът ще разархивира файловете с изображения на диска и ще ги запише на SD картата. ВАЖНО: Уверете се, че устройството, което избирате, е microSD картата … инструментът ще презапише всеки диск, който посочите, затова се уверете, че сте избрали правилния.
  • Запалете вашия Raspberry Pi. Поставете microSD картата в своя Raspberry Pi. Свържете захранването, мишката, клавиатурата и високоговорителите. Ако следвате подканите, това е доста разбираемо … задайте вашето местоположение/час, задайте парола и свържете WiFi.

Всичко това е стандартна настройка за 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 baudrate (100k) изглежда обърква китарата от време на време, така че ще я забавим до 50k, както следва:

    • В тип черупка: sudo nano /boot/config.txt
    • Това ще отвори вашия конфигурационен файл в текстов редактор. Стрелка надолу и намерете реда, който казва dtparam = i2c_arm = on. Ако е коментиран, разкомментирайте го. Ако нямате този ред, добавете го. Под този ред добавете и следното:

      • dtparam = i2c1 = включено
      • 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
      • След това изпълнете отново командата install: sudo apt-get install puredata
    • По време на инсталацията ще ви подкани дали искате да създадете директории за разширения, можете да кажете Да.
  • Стартирайте Pure Data. Ако е инсталиран правилно, трябва да видите програмата, изброена в менюто Старт на работния плот под Звуци и видео. Стартирайте го, за да сте сигурни, че се стартира.
  • Настройте Pure Data аудио. Звукът в Pure Data обикновено не е включен по подразбиране, така че ще трябва да го активирате.

    • Задайте аудио изход на ALSA. Когато Pure Data се стартира, трябва да видите прозореца на конзолата. Отидете в менюто Media и изберете ALSA като изход. Може да видите предупредителни съобщения в конзолната обвивка, които казват, че не може да намери определени файлове, но можете да пренебрегнете това.
    • Включете DSP аудио. В прозореца на конзолата поставете отметка в квадратчето, което казва DSP.
  • Тествайте аудио изхода. В прозореца на конзолата Pure Data отидете на Media-> Test Audio & MIDI. Това ще отвори тест файл, който можем да използваме, за да се уверим, че Pure Data работи и че можем да чуем звука. Включете високоговорителите си, но първо ги поддържайте на ниска сила на звука (понякога звукът може да бъде много силен по подразбиране). В тестовия файл от лявата страна трябва да видите раздел, наречен Тестови тонове. Щракнете първо върху полето с надпис 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.3v -> Пин 1
  • Данни -> Пин 3
  • Clk -> Пин 5
  • Gnd -> Пин 9

В моя проект използвах обтичащи съединители за проводниците, така че да не се изтеглят толкова лесно. Но ако нямате кримпващи конектори, четири отделни проводника от женски към женски ще работят добре. Ако все пак използвате съединителите за кримпване, не забравяйте да обърнете внимание на реда на проводниците на щифтовете на заглавката и GPIO щифтовете. Също така имайте предвид, че на GPIO щифтовете прескачаме щифт 7. За да се обясни това, използвах петжилен конектор за пресоване в единия край и пропуснах един слот.

За да проверите дали вашият Raspberry Pi може да открие китарния контролер, отворете черупка и въведете: sudo i2cdetect -y 1

Тя трябва да отпечата мрежа в черупката с предимно двойни чертички в тях. Ако компютърът може да открие китарата, трябва да видите ID на китарата# 52 в един от слотовете … на моята машина тя се появи в колона 2, ред 5 … но няма значение коя, стига да видите номер 52 някъде там.

Ако компютърът не може да го открие, трябва да опитате някои неща:

  • Уверете се, че проводниците ви са здраво свързани.
  • Уверете се, че всичко е свързано с правилните щифтове.
  • Обърнете щепсела на китарата. Nunchucky не ви пречи да свържете щепсела с главата надолу, така че може да е обърнат.
  • Уверете се, че i2c е активиран на Raspberry Pi (както е показано в стъпка 2)

*Ако щепселът на контролера за китара изглежда познат, това е така, защото той е същият като стандартния Wii Nunchuck контролер … оттук и името Nunchucky! Това също означава, че можете да използвате същата тази пробивна платка, за да се свържете и с nunchuck контролери.

Стъпка 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 patch не стартира или получава грешка, че не намира файлове? Скриптът keytarHero.py има пътя към файла с корекции Pure Data, твърдо кодиран на '/home/pi/keytarHero/keytarHero.pd'. Ако сте преместили вашата папка keytarHero или този файл с кръпка някъде другаде, ще трябва да актуализирате скрипта, за да използвате вместо това вашия път. За да направите това, отворете файла keytarHero.py и потърсете променливата, наречена PD_PATCH_PATH, и я променете, за да сочи към директорията, където живее вашият файл keytarHero.pd. Запазете скрипта и го стартирайте отново и трябва да сте готови.
  • Издава ли китара сигнал? Скриптът трябва да печата непрекъснато сигнала, който получава от китарата към черупката, като низ от числа, всеки от които представлява стойността на контрола на китарата. Когато използвате контрол на китарата, това трябва да доведе до промяна на тези числа. Ако не, проверете дали сте извършили правилно настройката на i2c и връзките на китара в горните стъпки.
  • Включен ли е Pure Data audio? Кръпката за чисти данни, предоставена в този пакет, трябва автоматично да включва звука, но да проверява дали квадратчето за отметка DSP в конзолата за чисти данни е включено. Също така проверете аудио настройките си, както е показано в Стъпка 3.
  • Pure Data приема ли сигнала от китарата? В горния десен ъгъл на пластира има куп възли, отговорни за четене на сигнала от китарата и предаването му до останалата част от пластира. Докато натискате бутоните на китарата, номерата в този раздел също трябва да се актуализират, като ви казват, че приема правилно сигнала.
  • Инициализиране на променливи в кръпката. Чистите данни могат да бъдат малко нестабилни, тъй като стойностите в пластира не се инициализират. Добавих механизми за задействане на променливи, когато се отворят, но може би си струва просто да кликнете върху някои от полетата за съобщения (тези, които изглеждат така, сякаш са извадили хапка от тях). Това ги кара да се инициализират и може да ги събуди.

Стъпка 6: Обиколка на Pure Data Patch

Обиколка на Pure Data Patch
Обиколка на Pure Data Patch
Обиколка на Pure Data Patch
Обиколка на Pure Data Patch
Обиколка на Pure Data Patch
Обиколка на Pure Data Patch
Обиколка на Pure Data Patch
Обиколка на Pure Data Patch

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

  • Комуникация с китара: В горния десен ъгъл на пластира има дърво от възли, отговорни за обработката на сигнала от китарата. Стойностите от китарата са дълъг низ, така че тези възли разбиват низа на отделни стойности за всяка контрола, преобразуват ги в числа и след това ги предават на „изпращащи“възли (тези, които започват с s). Изпращащите възли получават име и излъчват сигнала за „получаване“на едноименни възли. Например възелът 's whammy' излъчва стойностите, идващи от лентата whammy на китарата, а възелът 'r whammy' в средата на пластира получава този сигнал и използва този сигнал, за да спре секвенсора. Възлите за изпращане/получаване помагат за намаляване на претрупването на линиите за връзка в кръпката. Не препоръчвам да се забърквате с този раздел, тъй като е доста неприятно, за да се оправите, но определено можете да добавите допълнителни възлови възли в целия кръпка, ако е необходимо, за да получавате сигнали от него, ако е необходимо.
  • Секвенционен раздел: Средният раздел на пластира контролира секвенсора. От лявата страна има лента с подвижен черен квадрат, който ви показва коя нота от 16-нотова последователност играе. Струм бутонът контролира дали последователността се възпроизвежда напред или назад. Бутоните плюс/минус увеличават/намаляват скоростта. От дясната страна има пет набора от числа, които контролират кои ноти свирят по време на всяка стъпка. Всяка последователност е назначена за възпроизвеждане, когато се натисне един от петте бутона на лада. Тези числа са MIDI стойности и можете да ги промените, за да свирят каквито ноти искате … просто им дайте стойности между 0 и 127.
  • Секция Осцилатор/FX: В долния ляв ъгъл са осцилаторът и FX възлите, които действително издават звука. Първичният осцилатор е вляво. Средните стойности от секвенционния раздел се преобразуват в честоти и се подават към осцилатора. Той се смесва с втори осцилатор, идващ от дясната страна. Честотата му също се контролира от midi стойностите, но с допълнително честотно изместване, задвижвано от оста X на джойстика. Това причинява размразен или свистящ ефект, когато преместите джойстика наляво или надясно. В долния десен ъгъл има и нискочестотен филтриращ възел, чиято гранична честота е свързана с оста Y на джойстика. Нискочестотният филтър определя колко високочестотен звук се отстранява от звука. Когато джойстика се премести в положение надолу, той прекъсва голяма част от високите честоти, което води до заглушен звук. Когато се премести нагоре, той преминава през всички честоти, което води до по -ярък звук.
  • Инициализация: В горния ляв ъгъл на пластира има поредица от възли, които инициализират кръпката, когато се стартира, като например включване на аудиото и „докосване“на различни възли, за да ги събудите. Отново вероятно не е нужно да се забърквате с този раздел, но ако има неща, които искате да се случат при стартирането на кръпката, свържете ги с възела, наречен „loadbang“.
  • Опитах се да документирам пластира с коментари в самия пластир, така че се надявам, че това ще ви даде достатъчно информация, за да проучите различни опции от тук.

Наслади се!

Стъпка 7: Допълнителни неща, които да опитате

Управление на китара „без глава“

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

Допълнителни модификации на чисти данни

Имах някои други идеи как китарата може да контролира пластира Pure Data, но не се опитвах. Това биха били промени в пластира, с които може да е забавно да се експериментира:

  • Whammy bar: В текущия пластир лентата whammy просто спира възпроизвеждането на последователността, но мисля, че би било по -добре лентата whammy също да повиши честотата едновременно, точно както би направила истинската лента whammy. Опитах се да го направя за известно време, но беше по -сложно, отколкото си мислех. Мисля, че може просто да е въпрос на добавяне на израз в секцията на осцилатора, който добавя малко по -висока честота към осцилатора въз основа на стойността, идваща от лентата whammy.
  • Струмна лента: Понастоящем лентата с бутони възпроизвежда последователността напред, когато е натисната надолу, и назад, когато е натисната нагоре, но може да е по -добре тя да премине през различни опции за последователност, като произволна стъпка и т.н.
  • Бутони плюс/минус: Бутоните плюс/минус променят ударите в минута, но това е малко поразително, освен ако не ги ударите няколко пъти. Може да е добре всеки път да се увеличава с по -голяма сума. Или може би трябва да превключите секвенсора между 16-тактов, 8-тактов, 4-тактов, триплет.

Препоръчано: