Innehållsförteckning:

Raspberry Pi Stompbox Synth Module: 6 steg (med bilder)
Raspberry Pi Stompbox Synth Module: 6 steg (med bilder)

Video: Raspberry Pi Stompbox Synth Module: 6 steg (med bilder)

Video: Raspberry Pi Stompbox Synth Module: 6 steg (med bilder)
Video: Raspberry PI effects plugins vs. ZOOM MS100BT 2024, Juli
Anonim
Raspberry Pi Stompbox Synth Module
Raspberry Pi Stompbox Synth Module
Raspberry Pi Stompbox Synth Module
Raspberry Pi Stompbox Synth Module

Målet med detta projekt är att sätta in en Fluidsynth-baserad ljudmodul i en stompbox. Den tekniskt klingande termen "ljudmodul" betyder i detta fall en enhet som tar in MIDI-meddelanden (dvs. notvärde, volym, tonhöjd, etc.) och syntetiserar verkliga musikljud. Sätt ihop detta med en MIDI -controller - som är legion, billig och ofta väldigt cool (som keytars!) - och du har en synthesizer som du kan modifiera och finjustera oändligt och designa på ett sätt som passar din spelstil.

En bred översikt över detta projekt är att vi tar en liten Linux-dator med en ombord (en Raspberry Pi 3 i det här fallet), bifogar en LCD-tecken, ett par tryckknappar och ett USB-ljudkort (eftersom Pi: s inbyggda ljud inte är särskilt bra) och packa ihop allt i en Hammond 1590bb -stompbox (som de som används för gitarreffekter) med några externa anslutningar för USB MIDI, ström och ljudutgångar. Sedan konfigurerar vi den interna programvaran för att köra ett program vid start som kör FluidSynth (en utmärkt, multi-plattform, gratis mjukvaru-synthesizer), styr LCD-skärmen och låter oss ändra patchar och inställningar med tryckknapparna.

Jag kommer inte att gå in på detaljerade steg-för-steg-detaljer om den här byggnaden (det finns gott om hey-i-made-a-cool-hallon-pi-case tutorials där ute), men kommer istället att försöka fokusera på varför jag gjorde olika val i konstruktion och design när jag gick. På så sätt kan du förhoppningsvis göra ändringar som passar dina egna syften utan att fastna i att göra saker som senare visar sig inte fungera.

UPPDATERING (maj 2020): Även om detta instruerbara fortfarande är ett bra ställe att börja för ett projekt som detta, har jag gjort många förbättringar på både hårdvara och programvara. Den senaste programvaran är FluidPatcher, tillgänglig på GitHub - kolla in wiki för massor av detaljer om hur du konfigurerar Raspberry Pi. Kolla in min webbplats Geek Funk Labs för kontinuerliga nyheter och uppdateringar om SquishBox!

Tillbehör

Detta är en kort lista över (och förklaring till) de mer avgörande komponenterna:

  • Raspberry Pi 3 -dator - Alla Linux -datorer med en ombord kan fungera, men Pi 3 har tillräckligt med processorkraft för att köra Fluidsynth utan latens och tillräckligt med minne för att ladda stora ljudfonts. Nackdelen är att det har dåligt inbyggt ljud, så du behöver ett USB -ljudkort. CHIP är ett alternativ jag utforskar (mindre fotavtryck, bättre ljud, men mindre minne/processor)
  • Hammond 1590BB -hölje - Jag föreslår att du köper en som är pulverlackerad om du vill ha färg, såvida inte målning av stompboxar är något du gillar. Jag bläddrade i många anslagstavlor men jag tror att jag inte har tålamod eller rätt typ av färg, för efter två försök är mina resultat ganska så-så.
  • USB -ljudkort - Du kan hitta en lämplig sådan ganska billigt. Enligt denna underbara Adafruit -handledning (en av många) bör du hålla dig till en som använder CM109 -chipset för maximal kompatibilitet.
  • Tecken LCD - det finns många olika ställen att få dem, men pinouts verkar vara ganska standard. Se till att du får motljus så att du kan se dina förinställningar när du spelar i rökiga klubbar.
  • Momentary stompswitches (2) - Lite svårare att få tag på, men jag blev tillfällig istället för att växla så att jag kunde ha mer mångsidighet. Jag kan simulera växling i programvara om jag vill ha det beteendet, men på så sätt kan jag också ha olika funktioner för kort tryckning, långtryckning etc.
  • Adafruit Perma -Proto Hatt för Pi - Detta hjälpte mig att få LCD -skärmen och andra komponenter anslutna till Pi: s expanderport utan att ta mycket extra utrymme. Om jag hade försökt använda vanlig perfboard skulle det ha behövt sticka ut över sidorna på Pi för att jag skulle kunna ansluta till alla nödvändiga GPIO -stift. Den dubbelsidiga plätering och matchande monteringshål var också mycket användbara. Mot bakgrund av allt detta var det verkligen det billigaste alternativet.
  • USB-kontakter-1 hona av B-typ för ström och två var och en av A-typ hane och hona för att göra några smala, flexibla förlängningskablar för interna anslutningar.
  • 1/4 "ljuduttag - jag använde en stereo och en mono. På så sätt kan stereon vara ett hörlurs-/mono -uttag, eller bara bära vänster signal om det andra uttaget är anslutet.

Steg 1: Intern elektronik

Intern elektronik
Intern elektronik
Intern elektronik
Intern elektronik
Intern elektronik
Intern elektronik

Vi kommer att ansluta LCD: n och dess tillhörande komponenter och tryckknapparna till Pi Hat. Vi kommer också att lägga till ett USB-B- och USB-A-uttag för att ansluta ström respektive en MIDI-enhet. Vi tar över USB-A-porten eftersom vi måste använda en av Pi: s USB-portar för att ansluta ljudkortet, som vi vill ha inuti höljet, så vi kan inte ha USB-portarna i linje med lådans sida. Jag använde en USB-B-port för ström eftersom jag kände att det kunde ta mer straff än Pi: s mikro-USB-strömkontakt, plus att jag inte kunde hitta en bra orientering där kontakten ändå kunde ligga bredvid lådans kant.

Du måste använda en kniv för att skära spåren mellan hålen där du kommer att löda in stiften för USB -uttagen. Var bara försiktig så att du inte skär några av de inre spåren i brädet som ansluter de andra stiften - eller om du av misstag gör (som jag) igen med hjälp av bygelkabel. USB-B-jackets Vcc- och GND-stift går till 5V respektive GND på Pi: s expanderport. På så sätt kan du driva din stompbox med en telefonladdare (förutsatt att den har tillräckligt med strömstyrka - 700mA verkar fungera för mig, men du kanske vill ha mer för att vara säker på att USB -porten har tillräckligt med juice för att driva din handkontroll) och en USB A -B -kabel.

Jag tycker att bandkabelns längder fungerar riktigt bra för att ansluta saker med massor av stift utan att ha för mycket trådspaghetti. Jag gjorde det här snarare än att löda manliga rubriker i LCD -skärmen och sedan löda det i hatten eftersom jag kände att jag behövde viss frihet att placera LCD -skärmen så att jag kunde få det centralt snyggt. LCD -skärmen ska ha en potentiometer som du använder för att justera begränsningen - se till att placera den på en plats där den inte kommer att täckas av LCD -skärmen, så att du kan göra ett hål i lådan för att nå den och justera kontrasten en gång allt är monterat.

Se schemat för detaljer om vad som kopplas var. Lägg märke till att tryckknapparna är anslutna till 3,3V - inte 5V! GPIO -stiften är endast klassade för 3,3V - 5V kommer att skada din CPU. USB-A-uttaget ansluts till en annan bandkabelremsa, som du sedan kan löda till en USB-kontakt som du ansluter till en av Pi: s USB-portar för din MIDI-kontroller. Skär bort eventuell extra metall så att den sticker ut mindre och använd varmt lim för dragavlastning - det behöver inte vara vackert eftersom det kommer att döljas inuti lådan.

Steg 2: Kablar för ljudutgång

Ljudutgångskablar
Ljudutgångskablar
Ljudutgångskablar
Ljudutgångskablar
Ljudutgångskablar
Ljudutgångskablar

Oavsett hur litet USB -ljudkort du hittar, kommer det eller dess kontakt sannolikt att sticka ut för långt från Pi: s USB -portar för att allt ska passa i lådan. Så, löd ihop ytterligare en kort USB -kontakt av några bandkabel, USB -kontakter och hett lim som visas på bilden ovan. Mitt ljudkort var fortfarande lite för tjockt för att passa in i höljet med allt annat, så jag drog av plasten och slog in den i lite tejp för att den inte skulle bli kortsluten mot saker.

För att få ljud från ljudkortet till dina 1/4 "-uttag, klipp av änden från en 3,5 mm hörlur eller AUX -kabel. Se till att den har tre kontakter - spets, ring och hylsa (TRS), i motsats till 2 eller 4. Hylsan ska slipas, spetsen är vanligtvis den högra kanalen och ringen (mittkontakten) är vanligtvis kvar. Du kan bara ansluta spetsen och ringen till två mono (TS - spets, hylsa) 1/4 "-uttag och vara klar med det, men du kan få lite mer mångsidighet med en liten bit extra ledningar. Hitta en TS -kontakt som har en tredje tillfällig kontakt, som visas schematiskt i diagrammet ovan. Att sätta i en kontakt bryter denna kontakt, så som du förhoppningsvis kan se från diagrammet kommer den vänstra signalen sedan att gå till TS -uttaget om en plugg är isatt, och till ringen på TRS -uttaget om ingen plug är isatt. På så sätt kan du ansluta hörlurar till stereokontakten, en enda monokabel till stereokontakten för en kombinerad höger/vänster (mono) signal, eller en kabel i varje uttag för separata höger- och vänsterutgångar (stereo).

Jag kopplade jordstiften på uttagen till kabeln från ljudkortet, så att allt i lådan delar samma mark och jag undviker det otäcka surret av jordslingor. Beroende på vad du är ansluten till kan detta dock ha motsatt effekt - så du kanske vill inkludera en omkopplare så att du antingen kan ansluta eller "lyfta" marken på 1/4 "-uttagen.

Steg 3: Förbered kabinettet

Förbereder kapslingen
Förbereder kapslingen
Förbereder kapslingen
Förbereder kapslingen
Förbereder kapslingen
Förbereder kapslingen

Det här steget täcker kapning av hål i lådan för skärmen, knappar, kontakter etc. och epoxerande avstängningar i höljet för att montera Pi -hatten.

Börja med att placera alla komponenter i höljet för att se till att allt passar och är riktat på rätt sätt. Mät sedan och markera var du ska göra hål. När du skär runda hål rekommenderar jag att du börjar med en liten bit och arbetar upp till den storlek du behöver - det är lättare att centrera hålet och mindre troligt att din borr fastnar. Rektangulära hål kan skäras genom att borra ett hål i motsatta hörn av den avsedda öppningen och sedan klippa med en sticksåg till de andra två hörnen. Denna tjocklek av aluminium skär faktiskt bara bra med en sticksåg så länge du går försiktigt. En fyrkantig fil är mycket användbar för att kvadrera av öppningarnas hörn. Gör öppningarna för USB -kontakterna lite generösa om du har feta kablar.

En tvåstegs epoxi (som Gorillalimet på bilden) fungerar bra för att fästa mössan för hatten på metallhöljet. Skrapa upp ytan på höljet och botten av distanserna lite med stålull eller en skruvmejsel så att epoxin kan få ett bättre grepp. Jag rekommenderar att du fäster dina distanser till Pi -hatten innan du klistrar fast dem så att du vet att de är korrekt placerade - det finns inte mycket vickrum här. Jag använde bara tre distanser eftersom min LCD -skärm var i vägen för den fjärde. Blanda ihop de två komponenterna i epoxin, klistra in några på avstånden och fäst dem på plats. Undvik att vicka eller flytta om delarna efter mer än 10-15 sekunder, annars blir bindningen spröd. Ge det 24 timmar att konfigurera så att du kan fortsätta arbeta. Det tar några dagar att bota det helt, så stressa inte upp bindningen i onödan.

Om du inte vill göra en annan hobby av att måla stompboxar föreslår jag att du lämnar aluminiumet rent (inte ett dåligt utseende faktiskt) eller köper ett förmålat hölje. Färg vill inte bindas till metall. Om du vill prova, slipa överallt där du vill att färgen ska klibba, använd en bra autokroppsprimer först, applicera flera lager av den färg du vill ha och låt den torka så länge som möjligt. Allvarligt talat - galningarna på anslagstavlorna föreslår saker som att lämna den i direkt sol i tre månader, eller i en brödrost som är låg på en vecka. Efter att ha slipat bort de skrynkliga, avskalade resterna av mitt första färgjobb, får mitt andra försök fortfarande flis och skåror från saker som pennor i min gigbag, och finishen kan bucklas med en nagel. Jag bestämde mig för att ge efter och gick för punkstil, med hjälp av utmarkeringsmarkör för bokstäverna.

Steg 4: Programvaruinstallation

Programvaruinstallation
Programvaruinstallation
Programvaruinstallation
Programvaruinstallation

Innan du stoppar allt i stompboxen och skruvar fast det, måste du installera programvara på Raspberry Pi. Jag föreslår att du börjar med en ny installation av Raspbian OS, så skaffa en ny kopia från Raspberry Pi Foundation -webbplatsen och följ instruktionerna där för att avbilda den på ett SD -kort. Ta ett tangentbord och en skärm eller använd en konsolkabel för att logga in på din Pi för första gången och komma till en kommandorad. För att vara säker på att du har de senaste uppdateringarna av programvara och firmware, ange

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

sudo rpi-uppdatering

Därefter vill du se till att du kan använda wifi för att ssh till Pi och göra ändringar när den har knappats upp inuti höljet. Slå först på ssh -servern genom att skriva

sudo raspi-config

och gå till "Gränssnittsalternativ" och aktivera ssh -servern. Lägg nu till ett trådlöst nätverk till pi genom att redigera filen wpa_supplicant.conf:

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

och lägga till följande rader i slutet:

nätverk = {

ssid = "ditt-nätverk" psk = "ditt-lösenord"}

Ersätt ditt nätverk och ditt lösenord ovan med värden för vilket nätverk du vill att Pi ska ansluta till som standard-troligen din wifi-router hemma, eller kanske hotspot på din telefon eller en bärbar dator som körs i åtkomstpunktsläge. Ett annat alternativ för att ansluta till din Pi är att konfigurera den som en wifi -åtkomstpunkt, så att du bara kan ansluta till den oavsett var du befinner dig. Gränssnittet jag skrev nedan låter dig också koppla ihop en annan bluetooth-enhet med Pi, varefter du kan ansluta till den med seriell-över-bluetooth.

För att installera FluidSynth, skriv

sudo apt-get install fluidsynth

Filerna som bifogas detta steg ger ett gränssnitt mellan stompbox -kontrollerna och FluidSynth och bör kopieras till /home /pi -katalogen. Här är en kort förklaring av vad varje fil gör:

  • squishbox.py - Ett python -skript som startar och kommunicerar med en instans av FluidSynth, läser inmatning från stompbox -knapparna och skriver information till LCD -skärmen
  • config_squishbox.yaml - En konfigurationsfil i det (mestadels) mänskliga YAML -formatet som lagrar inställningar och patchinformation för squishbox -programmet
  • fluidsynth.py - Ett pythonomslag som tillhandahåller bindningar till C -funktionerna i FluidSynth -biblioteket, med många ytterligare bindningar som jag har lagt till för att få tillgång till mer av FluidSynths funktionalitet
  • ModWaves.sf2 - En mycket liten soundfont som jag tillhandahållit för att demonstrera användning och kraft av modulatorer i Soundfont -formatet

Att ha ett pythonskript konfigurerat FluidSynth -processen och hantera alla knappar/LCD -saker fungerar ganska bra - MIDI -meddelanden går direkt till FluidSynth och skriptet interagerar bara med det när det behövs.

Python -skriptet behöver ett par pythonbibliotek som inte är installerade som standard. Du kan installera dem direkt från Python Package Index med det praktiska pipverktyget:

sudo pip installera RPLCD pyyaml

Slutligen vill du att Pi ska köra python -skriptet vid start. För att få detta att hända, redigera rc.local -filen:

sudo vi /etc/rc.local

Sätt in följande rad strax före den sista raden 'exit 0' i filen:

python /home/pi/squishbox.py &

Steg 5: Slutmontering

Slutmontering
Slutmontering
Slutmontering
Slutmontering
Slutmontering
Slutmontering

Innan du lägger alla bitar i lådan är det en mycket bra idé att koppla in allt och se till att programvaran fungerar, som visas på bilderna ovan. Bilderna 3-6 visar alla enskilda delar och gradvis hur de passar in i min låda. LCD -skärmen hålls faktiskt på plats genom att trådarna trycker mot den, men du kan använda lite hett lim eller lägga till några fler skruvar om du inte gillar det. Den orangefärgade tejpen på lådans lock är för att hindra Pi från att kortsluta mot metallen.

Du kan behöva experimentera och konfigurera om för att få saker att passa. Tätt är bra - ju mindre delar jigglar runt i lådan, desto bättre. Värme verkar inte vara ett problem, och jag har inte haft några problem med att wifi -signalen blockeras av höljet. Några självhäftande gummifötter (du hittar dem i en järnaffär) på undersidan av lådan visas inte för att förhindra att den glider runt när du har en stampning.

Håll utkik efter oförutsedda stöten/klämningar/böjningar när saker skruvas ihop. En sak att kontrollera är att det finns tillräckligt med utrymme för 1/4 -uttagen när kablar sätts in - tipsen sticker ut lite längre än jackkontakterna. I min konstruktion monterade jag också Pi lite för nära kanten av lådan och läppen på locket tryckt ned på änden av SD -kortet och knäppte det - jag var tvungen att fila ett hack i läppen så att detta inte skulle hända.

Steg 6: Användning

Image
Image
Användande
Användande
Användande
Användande

Ljudmodulen jag har beskrivit i dessa steg och att köra programvaran som tillhandahålls ovan är ganska användbar och kan utökas ur lådan, men många modifieringar/variationer är möjliga. Jag kommer bara att kort beskriva gränssnittet här - jag planerar att kontinuerligt uppdatera det i ett github -arkiv, där jag förhoppningsvis kommer att hålla en uppdaterad wiki också. Slutligen kommer jag att diskutera hur du kan justera inställningarna, lägga till nya ljud och göra dina egna ändringar.

För att starta, anslut en USB MIDI-kontroller till boxens USB-A-uttag, en 5V strömförsörjning till USB-B-uttaget och anslut hörlurar eller en förstärkare. Efter lite visar LCD -skärmen ett "squishbox v xx.x" -meddelande. När ett patchnummer och namn visas bör du kunna spela anteckningar. Korta tryckningar på endera knappen ändrar korrigeringen, håller någon av knapparna i ett par sekunder tar dig till en inställningsmeny och håller någon av knapparna i ungefär fem sekunder ger dig möjlighet att starta om programmet, starta om Pi eller stänga av Pi (OBS Pi tar inte ström till sina GPIO -stift när den stannar, så LCD -skärmen stängs aldrig av. Vänta cirka 30 sekunder innan du kopplar ur den).

Inställningsmenyalternativen är:

  • Update Patch - sparar alla ändringar du har gjort i den aktuella korrigeringen till filen
  • Spara ny patch - sparar den aktuella korrigeringen och eventuella ändringar som en ny patch
  • Välj Bank - konfigurationsfilen kan ha flera uppsättningar patchar, så kan du växla mellan dem
  • Set Gain - ställ in den totala utmatningsvolymen (fluidsynths "gain" -alternativ), för hög ger förvrängd effekt
  • Chorus/Reverb - ändra den aktuella uppsättningens reverb- och chorus -inställningar
  • MIDI Connect - försök att ansluta en ny MIDI -enhet om du byter ut den medan programmet körs
  • Bluetooth -par - sätt Pi i upptäcktsläge så att du kan para ihop en annan Bluetooth -enhet med den
  • Wifi -status - rapportera Pi: s nuvarande IP -adress så att du kan använda den

Filen config_squishbox.yaml innehåller information som beskriver varje patch, liksom saker som MIDI-routing, effektparametrar etc. Den är skriven i YAML-formatet, vilket är ett tvärspråkigt sätt att representera data som datorer kan analysera men också är mänskliga -läsbar. Det kan bli ganska komplext, men här använder jag det bara som ett sätt att representera en struktur av kapslade Python -ordböcker (associativa matriser/hascher på andra språk) och sekvenser (listor/matriser). Jag lade många kommentarer i exempelkonfigurationsfilen och försökte strukturera den så att man gradvis kan se vad varje funktion gör. Ta en titt och experimentera om du är nyfiken, och ställ gärna frågor i kommentarerna. Du kan göra mycket för att ändra ljud och funktioner i modulen bara genom att redigera den här filen. Du kan fjärrlogga in och redigera, eller FTP en modifierad konfigurationsfil till Pi, sedan starta om med gränssnittet eller genom att skriva

sudo python /home/pi/squishbox.py &

på kommandoraden. Skriptet är skrivet för att döda andra körinstanser av sig själv vid start så att det inte blir några konflikter. Skriptet kommer att spotta ut några varningar på kommandoraden när det körs när det letar efter MIDI -enheter för att ansluta och letar på olika platser efter dina soundfonts. Det är inte trasigt, det här är bara lat programmering från min sida - jag kan fånga dem men jag hävdar att de är diagnostiska.

När du installerar FluidSynth får du också ganska bra gratis FluidR3_GM.sf2 soundfont. GM står för general MIDI vilket betyder att den innehåller "alla" instrument, tilldelade till gemensamt överenskomna förinställda och banknummer så att MIDI-spelare som spelar filer med denna soundfont kommer att kunna hitta ungefär rätt ljud för piano, trumpet, säckpipor, etc. Om du vill ha mer/annorlunda ljud kan du hitta massor av gratis ljud på internet. Viktigast av allt, soundfont-specifikationen är allmänt tillgänglig, är faktiskt ganska kraftfull och det finns en underbar open-source-editor för ljudfontar som kallas Polyphone. Med detta kan du bygga dina egna soundfonts från råa WAV -filer, plus att du kan lägga till modulatorer till dina teckensnitt. Modulatorer låter dig styra många av elementen i syntesen (t.ex. ADSR -kuvert, moduleringskuvert, LFO, etc.) i realtid. ModWaves.sf2 -filen som jag har inkluderat ovan ger ett exempel på att använda modulatorer för att låta dig mappa filterresonans och avstängningsfrekvens till ett MIDI -meddelande för kontrolländring (som kan skickas med en knapp/reglage på din handkontroll). Det finns så mycket potential här - spela!

Det är min förhoppning att denna handledning väcker många idéer och ger andra en bra ram för att bygga sina egna unika synth -skapelser, liksom att stödja den fortsatta tillgängligheten och utvecklingen av bra soundfonts, soundfont -specifikationen och bra gratis programvara som FluidSynth och Polyphone. Bygget jag har beskrivit här är varken det bästa eller det enda sättet att sätta ihop något liknande. På hårdvarusidan kan möjliga ändringar vara en större låda med fler knappar, äldre (5-stifts) MIDI-ingång/utgång och/eller ljudingångar. Python -skriptet kan modifieras (ursäkta mina glesa kommentarer) för att ge andra beteenden som kan passa dig bättre - jag funderar på att lägga till ett "effekter" -läge till varje patch där det kommer att fungera som en verklig effektstompbox, växla inställningar på och av. Man kan också lägga till ytterligare programvara för att tillhandahålla digitala ljudeffekter. Jag tror också att det skulle fungera bättre att ha Pi körs i wifi AP -läge enligt ovan, och då kan det till och med ge ett vänligt webbgränssnitt för redigering av konfigurationsfilen. Skriv gärna dina egna idéer/frågor/diskussioner i kommentarsflödet.

Jag vill ge enorma, mega rekvisita till tillverkarna av FluidSynth och Polyphone för att tillhandahålla gratis programvara med öppen källkod som vi alla kan använda för att göra bra musik. Jag älskar att använda den här saken, och du gjorde det möjligt!

Rekommenderad: