Съдържание:

Синтетичен модул на Raspberry Pi Stompbox: 6 стъпки (със снимки)
Синтетичен модул на Raspberry Pi Stompbox: 6 стъпки (със снимки)

Видео: Синтетичен модул на Raspberry Pi Stompbox: 6 стъпки (със снимки)

Видео: Синтетичен модул на Raspberry Pi Stompbox: 6 стъпки (със снимки)
Видео: HOW TO USE the Raspberry Pi camera module 2024, Юли
Anonim
Синтетичен модул на Raspberry Pi Stompbox
Синтетичен модул на Raspberry Pi Stompbox
Синтетичен модул на Raspberry Pi Stompbox
Синтетичен модул на Raspberry Pi Stompbox

Целта на този проект е да постави звуков модул, базиран на Fluidsynth, в stompbox. Терминът "звуков модул" в този случай означава устройство, което приема MIDI съобщения (т.е. стойност на нотата, сила на звука, височина на тона и т.н.) и синтезира действителни музикални звуци. Сложете това заедно с MIDI контролер - който е легионен, евтин и често много готин (като клавиатури!) - и имате синтезатор, който можете да модифицирате и ощипвате безкрайно и да проектирате по начин, който отговаря на вашия стил на игра.

Широк преглед на този проект е, че ние вземаме малък едноплатен Linux компютър (в този случай Raspberry Pi 3), прикачваме LCD с символи, няколко бутона и USB звукова карта (тъй като вграденият звук на Pi не е много добър). След това конфигурираме вътрешния софтуер за стартиране на програма при стартиране, която изпълнява FluidSynth (отличен, мултиплатформен, безплатен софтуерен синтезатор), контролира LCD и ни позволява да променяме кръпки и настройки с помощта на бутоните.

Няма да навлизам в подробни стъпка по стъпка подробности за тази компилация (има много уроци за хей-и-направено-хладно-малиново-пи-случай), но вместо това ще се опитам да се съсредоточа върху това защо направих различни избори в строителството и дизайна. Надяваме се, че по този начин можете да правите модификации, които да отговарят на вашите собствени цели, без да се затруднявате да правите неща, които по -късно се оказват, че не работят.

АКТУАЛИЗАЦИЯ (май 2020 г.): Въпреки че тази инструкция все още е чудесно място за стартиране на подобен проект, направих много подобрения както от хардуерна, така и от софтуерна страна. Най -новият софтуер е FluidPatcher, достъпен в GitHub - вижте уикито за много подробности относно настройването на нещата в Raspberry Pi. Вижте моя сайт Geek Funk Labs за постоянни новини и актуализации на SquishBox!

Консумативи

Това е кратък списък (и обяснение) за по -важните компоненти:

  • Компютър Raspberry Pi 3 - Всеки компютър с Linux на една дъска може да работи, но Pi 3 има достатъчно процесорна мощност, за да изпълнява Fluidsynth без никакво забавяне, и достатъчно памет за зареждане на големи звукови шрифтове. Недостатъкът е, че има лош звук на борда, така че имате нужда от USB звукова карта. CHIP е алтернатива, която проучвам (по -малък отпечатък, по -добър звук, но по -малко памет/процесор)
  • Корпус Hammond 1590BB - Предлагам да закупите такъв, който е предварително прахово боядисан, ако искате цвят, освен ако боядисването на stompboxes не ви харесва. Разгледах много табла за съобщения, но мисля, че нямам търпение или правилния тип боя, защото след два опита резултатите ми са доста толкова.
  • USB звукова карта - Можете да намерите подходяща от тях доста евтино. Според този прекрасен урок Adafruit (един от многото), трябва да се придържате към такъв, който използва чипсета CM109 за максимална съвместимост.
  • LCD с символи - има много различни места за получаването им, но изводите изглеждат доста стандартни. Уверете се, че получавате подсветка, за да можете да виждате вашите предварително зададени настройки, когато играете в задимените клубове.
  • Моментални превключватели (2) - Малко по -трудно за получаване, но получих момент, вместо да превключвам, за да мога да имам повече гъвкавост. Мога да симулирам превключване в софтуера, ако искам това поведение, но по този начин мога също да имам различни функции за кратко докосване, дълго натискане и т.н.
  • Adafruit Perma -Proto Hat за Pi - Това ми помогна да свържа LCD и други компоненти към разширителния порт на Pi, без да заема много допълнително пространство. Ако се опитах да използвам обикновен перфборд, той трябваше да стърчи отстрани на Pi, за да се свържа с всички необходими GPIO щифтове. Двустранното покритие и съответните монтажни отвори също бяха много полезни. В светлината на всичко това беше наистина най -евтиният вариант.
  • USB конектори-1 женски тип В за захранване и по два от мъжки и женски тип А, с които да се направят някои кльощави, гъвкави удължителни кабели за вътрешни връзки.
  • 1/4 "аудио жакове - използвах един стерео и един моно. По този начин стереото може да бъде жак за слушалки/моно, или просто да носи левия сигнал, ако другият жак е свързан.

Стъпка 1: Вътрешна електроника

Вътрешна електроника
Вътрешна електроника
Вътрешна електроника
Вътрешна електроника
Вътрешна електроника
Вътрешна електроника

Ще свържем LCD дисплея и свързаните с него компоненти и бутоните към Pi Hat. Също така ще добавим USB-B и USB-A жак за свързване на захранване и съответно MIDI устройство. Пренасяме USB-A порта, защото трябва да използваме един от USB портовете на Pi за свързване на звуковата карта, която искаме да имаме вътре в кутията, така че не можем да имаме USB портовете на една страна със страната на кутията. Използвах USB-B порт за захранване, защото имах чувството, че може да отнеме повече наказание от микро-USB конектора за захранване на Pi, плюс не можах да намеря добра ориентация, където конекторът така или иначе може да бъде до ръба на кутията.

Ще трябва да използвате нож, за да изрежете следите между отворите, където ще запоявате в щифтовете за USB жаковете. Просто внимавайте да не изрежете нито една от вътрешните следи в платката, свързваща другите щифтове - или ако случайно го направите (като мен), ги свържете отново с помощта на джъмпер. Pcc Vcc и GND на жака USB-B отиват съответно на 5V и GND на разширителния порт на Pi. По този начин можете да захранвате вашия stompbox със зарядно устройство за телефон (ако приемем, че има достатъчно ампераж - 700mA изглежда работи за мен, но може да искате повече, за да сте сигурни, че USB портът има достатъчно сок за захранване на вашия контролер) и USB A -B кабел.

Намирам, че дължините на лентов кабел работят много добре за свързване на неща с много щифтове, без да има твърде много телени спагети. Направих това, вместо да запоявам мъжки заглавки в LCD и след това да го запоявам в шапката, защото имах чувството, че се нуждая от малко свобода, за да позиционирам LCD, така че да мога да го центрирам добре. LCD дисплеят трябва да бъде снабден с потенциометър, който използвате за регулиране на ограничението - уверете се, че сте го поставили на място, където няма да бъде покрито от LCD, така че можете да направите дупка в кутията, за да го достигнете и да регулирате контраста веднъж всичко е сглобено.

Консултирайте се със схемата за подробности за това какво се свързва къде. Обърнете внимание, че бутоните са свързани към 3.3V - не 5V! Пиновете GPIO са само за 3.3V - 5V ще повредят вашия процесор. Жакът USB-A се свързва към друга лента от лентов кабел, който след това можете да запоите към USB щепсел, който ще свържете към един от USB портовете на Pi за вашия MIDI контролер. Изрежете допълнителния метал от щепсела, така че да стърчи по -малко, и използвайте горещо лепило за облекчаване на напрежението - не е задължително да е красиво, тъй като ще бъде скрито в кутията.

Стъпка 2: Окабеляване на аудио изход

Окабеляване на аудио изход
Окабеляване на аудио изход
Окабеляване на аудио изход
Окабеляване на аудио изход
Окабеляване на аудио изход
Окабеляване на аудио изход

Без значение колко малка USB звукова карта ще намерите, тя или нейният щепсел вероятно ще стърчат твърде далеч от USB портовете на Pi, за да може всичко да се побере в кутията. И така, запойте друг къс USB конектор от лентов кабел, USB щепсели и горещо лепило, както е показано на снимката по -горе. Звуковата ми карта все още беше малко прекалено здрава, за да се побере в кутията с всичко останало, така че откъснах пластмасата и я увих в някаква тиксо, за да не я късам.

За да получите аудио от звуковата карта към вашите 1/4 "жакове, отрежете края на 3,5 мм слушалки или AUX кабел. Уверете се, че има 3 конектора - връх, пръстен и втулка (TRS), за разлика от 2 или 4. Втулката трябва да бъде заземена, върхът обикновено е десният канал, а пръстенът (средният съединител) обикновено е ляв. Можете просто да свържете върха и пръстена към два моно (жака - TS, накрайник) 1/4 "жакове и да бъде готово с него, но можете да получите повече гъвкавост с малко допълнително окабеляване. Намерете жак TS, който има трети моментен контакт, както е схематично показано на диаграмата по -горе. Поставянето на щепсела прекъсва този контакт, така че, както се надяваме, можете да разберете от диаграмата, след това левият сигнал ще премине към TS жака, ако е поставен щепсел, и към пръстена на TRS жака, ако няма поставен щепсел. По този начин можете да включите слушалки в стерео жака, един моно кабел в стерео жака за комбиниран десен/ляв (моно) сигнал или кабел във всеки жак за отделни десен и ляв (стерео) изход.

Свързах заземяващите щифтове на жаковете към този на кабела, идващ от звуковата карта, така че всичко в кутията да има една и съща маса и да избегна неприятното бръмчене на земните контури. В зависимост от това, в което сте включени, това може да има обратен ефект - така че може да искате да включите превключвател, който да ви позволи да свържете или "повдигнете" земята на жаковете 1/4 ".

Стъпка 3: Подготовка на корпуса

Подготовка на корпуса
Подготовка на корпуса
Подготовка на корпуса
Подготовка на корпуса
Подготовка на корпуса
Подготовка на корпуса

Тази стъпка обхваща изрязването на отвори в кутията за екрана, бутоните, конекторите и т.н. и епоксидни стойности в кутията за монтиране на шапката Pi.

Започнете, като поставите всички компоненти в кутията, за да се уверите, че всичко пасва и е ориентирано по правилния начин. След това внимателно измерете и маркирайте къде ще правите дупки. При изрязване на кръгли отвори препоръчвам да започнете с малко и да работите до размера, от който се нуждаете - по -лесно е да центрирате отвора и по -малко вероятно е тренировката ви да заседне. Правоъгълните отвори могат да бъдат изрязани чрез пробиване на отвор в противоположните ъгли на предвидения отвор, след което се изрязват с прободен трион до другите два ъгъла. Тази дебелина на алуминия всъщност се реже отлично с прободен трион, стига да вървите внимателно. Квадратната пила е много полезна за изравняване на ъглите на отворите. Направете отворите за USB щепселите малко щедри в случай, че имате дебели кабели.

Двустепенна епоксидна смола (като лепилото Gorilla на снимката) работи добре, за да прикрепи стойките за шапката към металния корпус. Издраскайте повърхността на корпуса и дъното на стойките малко със стоманена вата или отвертка, така че епоксидът да може да се захване по -добре. Препоръчвам да прикрепите вашите стойности към шапката Pi, преди да ги залепите, за да знаете, че са позиционирани правилно - тук няма много място за раздвижване. Използвах само три противостояния, защото моят LCD беше на пътя на четвъртия. Смесете двата компонента на епоксидната смола, залепете част върху стойките и ги затегнете на място. Избягвайте мърдане или преместване на частите след повече от 10-15 секунди, в противен случай връзката ще бъде крехка. Дайте му 24 часа за настройка, за да можете да продължите да работите. Отнема няколко дни, за да се излекува напълно, така че не натоварвайте ненужно връзката.

Освен ако не искате да направите друго хоби от боядисването на кутии, предлагам да оставите алуминия гол (всъщност не е лош вид) или да закупите предварително боядисан корпус. Боята не иска да се свързва с метал. Ако искате да го изпробвате, шлайфайте навсякъде, където искате да залепне боята, първо използвайте добра боя за боядисване на тялото, нанесете няколко слоя от желания цвят, след което го оставете да изсъхне възможно най -дълго. Сериозно - маниаците на таблата за съобщения предлагат неща като оставянето му на пряко слънце в продължение на три месеца или в тостерна фурна, загрята за една седмица. След шлайфане на набръчканите, обелени остатъци от първата ми боядисване, вторият ми опит все още получава чипове и изрезки от неща като химикалки в чантата ми, а финишът може да бъде вдлъбнат с нокът. Реших да отстъпя и отидох в пънк стил, използвайки бели маркери за надписите.

Стъпка 4: Настройка на софтуера

Настройка на софтуера
Настройка на софтуера
Настройка на софтуера
Настройка на софтуера

Преди да пъхнете всичко в stompbox и да го прецакате, трябва да настроите софтуер на Raspberry Pi. Предлагам да започнете с нова инсталация на Raspbian OS, така че вземете скорошно копие от сайта на Raspberry Pi Foundation и следвайте инструкциите там, за да го изобразите на SD карта. Вземете клавиатура и екран или използвайте конзолен кабел, за да влезете във вашия Pi за първи път, и стигнете до командния ред. Въведете, за да сте сигурни, че имате най -новите актуализации на софтуера и фърмуера

sudo apt-get update && sudo apt-get upgrade

sudo rpi-актуализация

След това искате да се уверите, че можете да използвате wifi, за да ssh към Pi и да правите промени, след като се закопчае в кутията. Първо, включете ssh сървъра, като въведете

sudo raspi-config

и отидете на "Опции за взаимодействие" и активирайте ssh сървъра. Сега добавете безжична мрежа към pi, като редактирате файла wpa_supplicant.conf:

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

и добавяне на следните редове в края:

мрежа = {

ssid = "your-network" psk = "your-password"}

Заменете вашата мрежа и вашата парола по-горе със стойности за всяка мрежа, към която искате Pi да се свърже по подразбиране-най-вероятно вашият wifi рутер у дома или може би горещата точка на вашия телефон или лаптоп, работещ в режим на точка за достъп. Друга алтернатива за свързване към вашия Pi е да го настроите като точка за достъп до wifi, така че да можете просто да се свържете с него, независимо къде се намирате. Интерфейсът, който написах по-долу, също ви позволява да сдвоите друго Bluetooth устройство с Pi, след което можете да се свържете с него, използвайки сериен по Bluetooth.

За да инсталирате FluidSynth, въведете

sudo apt-get install fluidsynth

Файловете, приложени към тази стъпка, осигуряват интерфейс между контролите на stompbox и FluidSynth и трябва да бъдат копирани в директорията /home /pi. Ето кратко обяснение на това, което прави всеки файл:

  • squishbox.py - Python скрипт, който стартира и комуникира с екземпляр на FluidSynth, чете въведените данни от бутоните на stompbox и записва информация на LCD дисплея
  • config_squishbox.yaml - Конфигурационен файл в (предимно) четим от човека YAML формат, който съхранява настройките и информацията за корекциите за програмата squishbox
  • fluidsynth.py - Python обвивка, която осигурява обвързване към функциите на C в библиотеката FluidSynth, с много допълнителни свързвания, добавени от мен за достъп до повече от функционалността на FluidSynth
  • ModWaves.sf2 - Много малък звуков шрифт, който предоставих, за да демонстрирам използването и силата на модулаторите във формата Soundfont

Наличието на скрипт на python, който настройва процеса на FluidSynth и обработва всички бутони/LCD неща, работи доста добре - MIDI съобщенията отиват директно във FluidSynth и скриптът взаимодейства с него само когато е необходимо.

Скриптът на python се нуждае от няколко библиотеки на python, които не са инсталирани по подразбиране. Можете да ги инсталирате директно от индекса на пакета на Python с помощта на удобния инструмент за пип:

sudo pip инсталирайте RPLCD pyyaml

И накрая, искате Pi да стартира скрипта на python при зареждане. За да направите това, редактирайте файла rc.local:

sudo vi /etc/rc.local

Вмъкнете следния ред точно преди последния ред „exit 0“във файла:

python /home/pi/squishbox.py &

Стъпка 5: Окончателно сглобяване

Окончателно сглобяване
Окончателно сглобяване
Окончателно сглобяване
Окончателно сглобяване
Окончателно сглобяване
Окончателно сглобяване

Преди да поставите всички парчета в кутията, е много добра идея да включите всичко и да се уверите, че софтуерът работи, както е показано на изображенията по -горе. Изображения 3-6 показват всички отделни части и постепенно как се вписват в кутията ми. LCD дисплеят всъщност се държи на място чрез притискане на проводниците към него, но можете да използвате малко горещо лепило или да добавите още монтажни винтове, ако това не ви харесва. Оранжевата тиксо върху капака на кутията е да предпази Pi от късо съединение срещу метала.

Може да се наложи да експериментирате и да преконфигурирате, за да приспособите нещата. Плътното е добро - колкото по -малко части се движат в кутията, толкова по -добре. Изглежда, че топлината не е проблем и не съм имал проблеми с блокирането на wifi сигнала от корпуса. Не са изобразени някои лепящи гумени крачета (можете да ги намерите в магазин за хардуер) в долната част на кутията, за да не се плъзга наоколо, когато имате тъпа сесия.

Внимавайте за непредвидено блъскане/мачкане/огъване, когато нещата се завинтват. Едно нещо, което трябва да проверите, е, че има достатъчно място за жаковете 1/4 , когато са поставени кабели - върховете стърчат малко по -далеч от контактите на жака. Също така в моята конструкция монтирах Pi малко прекалено близо до ръба на кутията и устната на капака натиснаха края на SD картата и я щракнаха - трябваше да напиша прорез в устната, за да не се случи това.

Стъпка 6: Използване

Image
Image
Употреба
Употреба
Употреба
Употреба

Звуковият модул, който описах в тези стъпки и изпълнението на предоставения по -горе софтуер, е доста използваем и разширяем от кутията, но са възможни много модификации/вариации. Ще опиша само накратко интерфейса тук - планирам непрекъснато да го актуализирам в хранилище на github, където се надявам да поддържам и актуализирана уики. И накрая, ще обсъдя как можете да промените настройките, да добавите нови звуци и да направите свои собствени промени.

За да започнете, включете USB MIDI контролер в USB-A жака на кутията, 5V захранване в USB-B жака и свържете слушалки или усилвател. След малко LCD дисплеят ще покаже съобщение „squishbox v xx.x“. След като се появят номер и име на пластир, трябва да можете да възпроизвеждате ноти. Кратките докосвания на който и да е бутон променят пластира, като задържите който и да е бутон за няколко секунди, влизате в меню с настройки, а задържането на който и да е бутон за около пет секунди ви дава възможност да рестартирате програмата, да рестартирате Pi или да изключите Pi (Забележка: Pi не прекъсва захранването на своите GPIO щифтове, когато спре, така че LCD дисплеят никога няма да се изключи. Просто изчакайте около 30 секунди, преди да го изключите от контакта).

Опциите от менюто за настройки са:

  • Update Patch - запазва всички файлове, които сте направили в текущия кръпка във файл
  • Save New Patch - запазва текущия пластир и всички промени като нов кръпка
  • Изберете банка - конфигурационният файл може да има множество комплекти кръпки, което ви позволява да превключвате между тях
  • Set Gain - задайте общия изходен обем (опцията „печалба“на fluidsynth), твърде висок дава изкривен изход
  • Chorus/Reverb - променя настройките за реверберация и припев на текущия набор
  • MIDI Connect - опитайте да свържете ново MIDI устройство, ако го смените, докато програмата работи
  • Bluetooth Pair - поставете Pi в режим на откриване, за да можете да сдвоите друго Bluetooth устройство с него
  • Wifi Status - докладвайте текущия IP адрес на Pi, за да можете да го впишете

Файлът config_squishbox.yaml съдържа информация, описваща всеки пластир, както и неща като MIDI маршрутизация, параметри на ефекти и т.н. Той е написан във формат YAML, който е междуезичен начин за представяне на данни, които компютрите могат да анализират, но също така са човешки -четими. Тя може да стане доста сложна, но тук просто я използвам като начин за представяне на структура от вложени речници на Python (асоциативни масиви/хешове на други езици) и последователности (списъци/масиви). Поставих много коментари в примерния конфигурационен файл и се опитах да го структурирам така, че да може постепенно да се види какво прави всяка функция. Разгледайте и експериментирайте, ако сте любопитни и не се колебайте да задавате въпроси в коментарите. Можете да направите много, за да промените звуците и функционалността на модула, само като редактирате този файл. Можете да влезете отдалечено и да редактирате или да FTP модифициран конфигурационен файл към Pi, след това да рестартирате с помощта на интерфейса или като въведете

sudo python /home/pi/squishbox.py &

в командния ред. Скриптът е написан, за да убие други изпълняващи се екземпляри при стартиране, така че няма да има конфликти. Скриптът ще изплюе няколко предупреждения в командния ред, когато се изпълнява, докато търси свързване на MIDI устройства и търси на различни места вашите звукови шрифтове. Не е счупен, това е просто мързеливо програмиране от моя страна - бих могъл да ги хвана, но твърдя, че са диагностични.

Когато инсталирате FluidSynth, получавате и доста добрия безплатен звуков шрифт FluidR3_GM.sf2. GM означава общ MIDI, което означава, че съдържа „всички“инструменти, присвоени на общо договорени предварително зададени и банкови номера, така че MIDI плейърите, които възпроизвеждат файлове, използващи този звуков шрифт, ще могат да намерят приблизително правилния звук за пиано, тромпет, гайди и др. Ако искате повече/различни звуци, можете да намерите много безплатни звуци в интернет. Най-важното е, че спецификацията на звуковия шрифт е широко достъпна, всъщност е доста мощна и има чудесен редактор с отворен код за звукови шрифтове, наречен Polyphone. С това можете да създадете свои собствени звукови шрифтове от необработени WAV файлове, плюс можете да добавите модулатори към вашите шрифтове. Модулаторите ви позволяват да контролирате много от елементите на синтез (напр. ADSR обвивка, модулационна обвивка, LFO и т.н.) в реално време. Файлът ModWaves.sf2, който включих по -горе, дава пример за използване на модулатори, за да ви позволи да съпоставите резонанса на филтъра и честотата на прекъсване към MIDI съобщение за промяна на контрола (което може да бъде изпратено чрез бутон/плъзгач на вашия контролер). Тук има толкова голям потенциал - играйте!

Надявам се този урок да предизвика много идеи и да даде на другите добра рамка за изграждане на собствени уникални синтетични творения, както и да поддържа непрекъснатата наличност и развитие на добри звукови шрифтове, спецификацията на звуковия шрифт и страхотния безплатен софтуер като FluidSynth и Polyphone. Конструкцията, която очертах тук, не е нито най -добрият, нито единственият начин да съберем нещо подобно. От хардуерна страна възможните модификации могат да бъдат по-голяма кутия с повече бутони, наследени (5-пинови) MIDI вход/изход и/или аудио входове. Скриптът на python може да бъде модифициран (извинявам се за оскъдния ми коментар), за да осигури друго поведение, което би могло да ви подхожда по -добре - мисля да добавя режим „ефекти“към всеки пластир, където той ще действа като истински ефекти stompbox, като превключва настройките на и изключен. Може да се добави и допълнителен софтуер за предоставяне на цифрови аудио ефекти. Също така мисля, че би било по -добре Pi да работи в режим на wifi AP, както е описано по -горе, а след това дори може да осигури приятелски уеб интерфейс за редактиране на конфигурационния файл. Моля, не се колебайте да публикувате свои собствени идеи/въпроси/дискусии в емисията за коментари.

Искам да дам огромни, мега реквизити на създателите на FluidSynth и Polyphone за предоставяне на безплатен софтуер с отворен код, който всички можем да използваме, за да правим страхотна музика. Обичам да използвам това нещо и вие го направихте възможно!

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