Odkrijte potencial svoje kitare ne da bi ogrozili svoj proračun.
Ste kitarist, ki želi raziskati nešteto zvokov, ne da bi pri tem oropali banko? Ne iščite več! Predstavljamo vam DIY efekte za kitaro – stroškovno učinkovito in preprosto rešitev za glasbenike, ki si želijo vsestranskosti brez zapletenosti.
DIY Multi-Effect Guitar enota uporablja minimalistično zasnovo, ki izkorišča moč računalnika Raspberry Pi Pico in le peščico dodatnih komponent. Ta projekt, katerega skupni stroški znašajo le nekaj evrov, ni le cenovno ugoden, temveč je tudi izjemno preprost za izdelavo. Ne glede na vaše tehnično predznanje je ta enota zasnovana tako, da je dostopna vsakomur s strastjo do glasbe in željo po eksperimentiranju z lastnim zvokom.
Skrivnost cenovne dostopnosti je v uporabi vsestranskega mikrokontrolerja Raspberry Pi Pico, ki služi kot možgani naše DIY enote. Kljub skromni ceni je Raspberry Pi Pico zanesljiva platforma za izvajanje širokega nabora kitarskih efektov, ki jih običajno najdemo v veliko dražjih enotah.
Ta vsebina je samo za naročnike
Ne glede na to, ali ste navdušenec nad elektroniko ali nekdo, ki se šele potaplja v svet “naredi sam” projektov, vam ta zasnova omogoča, da ustvarite večfunkcijsko kitarsko enoto z več efekti brez glavobola zaradi zapletenega postopka sestavljanja ali visoke cene.
Različne vrste efektov
Enota vključuje najpogostejše efekte, od katerih jih lahko veliko uporabljate hkrati.
5-področni grafični ekvalizer
več vrst efektov popačenja
zakasnitev
odmev
reverb
akord
Flanger
Phaser
Tremolo
Vibrato
več vrst spominov
Programska oprema
V tem članku sem precej podrobno opisal, kako to deluje, kar je lahko precej zahtevno.
Naj vas to ne odvrne, saj je vezje precej preprosto, na voljo pa je tudi vnaprej pripravljena programska datoteka, ki jo lahko prenesete prek USB.
C Code for Pi Pico [1]
Pico Firmware [2]
Tiskano vezje
Sestavil sem splošno namensko tiskano vezje za Pi Pico projekte, ki temeljijo na zvoku. To tiskano vezje potrebuje le nekaj sprememb za izdelavo enote za kitarske efekte.
Shema se nahaja na povezavi [3], Tiskana vezja se nahajajo na povezavah [4], [5], [6].
Pregled hardvera
Obdelava signala v našem DIY Multi-Effect kitarskem pedalu se začne z neinvertirajočim ojačevalnikom z visoko vhodno impedanco, da se preprečijo motnje v naravnem tonu kitare. Ta ojačevalnik ponuja 20 dB ojačitve, kar ojači vhodni signal za nadaljnjo obdelavo.
Po ojačitvi signal vstopi v vgrajen analogno-digitalni pretvornik (ADC) z ločljivostjo 12 bitov. ADC deluje s frekvenco vzorčenja 320 kHz in natančno zajame podrobnosti kitarskega signala.
Za dodatno izboljšanje kakovosti signala je v zasnovo vključena tehnika 16-kratnega prevzorčenja. Ta tehnika poveča razmerje med signalom in šumom (SNR) za dodatna dva bita in pomaga zmanjšati efekte prekrivanja. Nadvzorčenje z višjo hitrostjo, kot je nujno potrebno, pomaga zmanjšati neželene artefakte in prispeva k splošni jasnosti obdelanega zvoka.
Za izhod zvoka se uporablja digitalni priključek IO s pulzno širinsko modulacijo (PWM). PWM je konfiguriran tako, da zagotavlja 12-bitni zvočni izhod. Po fazi presežnega vzorčenja je signal usmerjen skozi nizkoprepustni filter prvega reda, ki je zasnovan tako, da odpravi vse neželene višje harmonske komponente. Ta ključni korak filtriranja zagotavlja čistejši izhodni signal brez neželenih artefaktov in motenj.
Glede na grobo naravo PWM zvočnega izhoda je kakovost zvoka presenetljivo dobra. PWM signal je dovolj močan, da lahko neposredno krmili slušalke. Napravo lahko uporabljate kot vadbeni ojačevalnik za slušalke, lahko pa jo vgradite v pedal z efekti ali celo v kitarski ojačevalnik.
Uporabniški vmesnik
Uporabniški vmesnik ni nič posebno nenavadnega. OLED zaslon 128×64 uporablja I2C vmesnik, ki temelji na SSD1306. Ti so danes precej razširjeni in so nadomestili HD44780 kot poceni/enostaven zaslon. I2C vmesnik vsekakor pomaga zmanjšati število priključkov. Stroški so ključno gonilo, zato sem ga združil z nekaj otipljivimi tipkami, da bi ustvaril vmesnik, ki ga poganjajo meniji.
Pregled programske opreme
Eden od razlogov, zakaj lahko v strojni opremi dosežemo tako preprostost, je združitev vseh funkcij v programski opremi. Raspberry Pi Pico se ponaša z dvojedrnim ARM procesorjem, pri čemer vsako jedro deluje pri frekvenci 120 MHz. Ta hitrost je za mikrokontroler v tem cenovnem razredu precej impresivna in je več kot primerna za opravljanje nalog obdelave zvoka. Vendar so pomnilniški in procesorski viri razmeroma omejeni. Ker Pi Pico nima enote s plavajočo vejico, je v tej zasnovi na poti signala uporabljena izključno aritmetika s fiksno vejico. Ta pristop nam zagotavlja dodaten prostor in omogoča integracijo večjega števila efektov.
Signalna pot je razdeljena na 5 glavnih funkcionalnih blokov:
Odstranjevanje enosmerne napetosti in predojačevalnik
5-pasovni grafični ekvalizer
Oblikovanje signalov (popačenje)
Zakasnitev (zamik, odmev, reverb)
Modulacija (Chorus, Phaser, Flanger, Tremolo, Vibrato)
Grafični ekvalizer
Za svoj prvi poskus grafičnega ekvalizerja sem uporabil niz petih filtrov, od katerih je vsak pokrival del spektra. Izbral sem IIR filtre, ki so znani po svoji učinkovitosti. Ta pristop se je pri obdelavi testnega zvoka na prenosnem računalniku kar dobro obnesel, vendar na Pi Pico ni mogel dohajati. Verjetno zato, ker sem uporabil implementacijo s plavajočo vejico. Razmišljal sem o pretvorbi v implementacijo s fiksno vejico, vendar je načrtovanje stabilnih IIR filtrov z uporabo aritmetike s fiksno vejico lahko precej težavno.
V končni rešitvi sem za filtriranje v frekvenčni domeni uporabil algoritem hitre Fourierjeve transformacije (FFT). Čeprav je postopek pretvorbe iz časovne v frekvenčno domeno in nazaj zapleten, je filtriranje v frekvenčni domeni veliko preprostejše, kar privede do splošnega izboljšanja pri razmeroma velikih filtrih.
Podatki so razdeljeni na prekrivajoče se dele po 64 vzorcev. Vsak kos je okvirjen z uporabo Hannovega okna, da se zmanjša spektralno uhajanje. Nato se vsak kos pretvori v frekvenčno področje s funkcijo FFT, pri čemer se signal razdeli na 32 frekvenčnih binov. Vsak bin je nato mogoče skalirati v skladu z vrednostjo ojačenja, preden se pretvori nazaj v časovno domeno z uporabo obratne FFT.
Velikost pasov grafičnega ekvalizerja je običajno logaritemska. Prvi pas uporablja en frekvenčni bin, drugi dva, naslednji pasovi pa 4, 8 in 18 binov. To logaritemsko skaliranje zagotavlja, da vsak pas pokriva enako število glasbenih tonov.
Gradniki
V celotni programski opremi se uporabljata dva gradnika, nizkofrekvenčni oscilator (LFO) in linija zakasnitve. Izvedba teh osnovnih gradnikov je zelo preprosta, vendar jih je mogoče kombinirati za ustvarjanje najrazličnejših efektov.
FixedPointlfo::get_sample(uint16_
tfrequency_steps,FixedPoint amplitude){
FixedPointsample=sin_table[p>>6]
*amplitude;// 10 MSBs (16-10 = 6)
p+=frequency_steps;
returnsample;
}
LFO je zelo natančno krmiljen oscilator. Prvi del je fazni akumulator p, ki je preprosto števec. Fazni akumulator je skaliran tako, da celotno območje 16-bitnega števila predstavlja celoten cikel valovne oblike. Za vsak vzorec dodamo v fazni akumulator določeno število frekvenčnih korakov. Višja kot je frekvenca, več faze dodamo in pogosteje se fazni akumulator preliva. Največja vrednost 16-bitnega števila je 65535, pri frekvenci vzorčenja 20 kHz pa je to območje 0-10 kHz z ločljivostjo 0,3 Hz. S to funkcijo lahko pretvorimo iz Hz v frekvenčne korake.
uint16_tfrequency_Hz_to_steps
(floatfrequency_Hz){
returnstatic_cast
(65536*frequency_Hz/audio_
sample_rate_Hz);
}
Fazo lahko pretvorimo v sinusno obliko valovanja s pomočjo preglednice za iskanje. Preglednica ima 1024 vnosov, zato potrebujemo le 10 najvišjih bitov.
Razred zakasnitvene linije je izveden z uporabo krožnih predpomnilnikov. Zaradi enostavnosti sem izbral dolžino, ki je potenca števila 2, kar pomeni, da lahko implementiram krožni kazalec samo z uporabo IN operacije.
voiddelay_line::input_sample
(FixedPointsample){
buffer[input_pointer]=sample;
input_pointer=(input_pointer+1)&0xfff;
}
FixedPointdelay_line::tap(uint16_tdelay){
returnbuffer[(input_pointer-delay+1)&0xfff];
}
Oblikovanje signalov (popačenje)
Oblikovalniki signalov so osnovno orodje za ustvarjanje značilnih efektov popačenja, ki jih slišimo pri igranju električne kitare. Običajno se uporabljajo v obliki pedalov za popačenje ali programskih vtičnikov in spreminjajo obliko zvočnega valovanja kitare z vnašanjem nelinearnosti, kar se doseže s tehnikami, kot je mehko obrezovanje. Ob prehodu kitarskega signala te naprave spremenijo obliko valovanja s stiskanjem ali obrezovanjem določenih delov, kar povzroči harmonično bogate nadtone in peščeno teksturo.
Kubični, kvadratni in fuzz oblikovalniki signala uporabljajo vedno močnejše obrezovanje, kar povzroči vedno bolj „kvadratno“ obliko signala, ki vsebuje več harmonskih komponent.
Obstaja še nekaj eksperimentalnih oblikovalnikov signalov, ki ustvarjajo bogate sode harmonske komponente.
Polvalni in polnovalni usmerniki z odstranitvijo ali ponovno uporabo negativnega polvalnega valovanja uvedejo efekt podvojitve frekvence. Izkrivljanje s pregibanjem ustvarja dodatne harmonske komponente s pregibanjem odrezanega dela signala nazaj na samega sebe.
Funkcije oblikovanja imajo zanimiv efekt na signal.
Efekti zakasnitev
Enota za efekte vključuje tri vrste efektov, ki temeljijo na zakasnitvi.
Delay je kitarski efekt, ki ponavlja vhodni signal s časovnim zamikom in tako ustvari vrsto različnih odmevov.
Odmev je podoben, vendar se pogosto nanaša predvsem na močnejšo, izrazitejšo ponovitev prvotnega zvoka.
Reverb simulira akustične značilnosti fizičnih prostorov in z mešanjem številnih odbojev zvoka doda občutek prostora in globine kitarskemu signalu.
Delay (zakasnitev)
Najpreprostejši efekt zakasnitve vhodu doda eno različico signala z zakasnitvijo. Velikost zakasnjenega signala lahko spreminjamo glede na prvotni signal.
delay_line.input_sample(sample);
sample=sample+delay_line.tap(delay_
mssamples_per_ms)delay_mix;
Echo (odmev)
Preprosta zakasnitev ustvari en sam odmev. Z dodajanjem preproste povratne zveze lahko dobimo več ponavljajočih se odmevov, katerih amplituda se z vsako ponovitvijo zmanjša.
delay=delay_line1.tap(delay_mssamples_per_ms); mixed=sample+delaydelay_feedback;
delay_line.input_sample(mixed);
sample=sample+(delay*delay_mix);
Reverb
Efekt odmeva je sicer preprosto ustvariti, vendar se ne sliši kot naravni odmevi, ki se pojavljajo v resničnih prostorih. Izkazalo se je, da je precej težko ustvariti naravno zveneč odmev.
Naravni odmev ima na tisoče odmevov, ki se od vira oddaljijo po številnih zapletenih poteh. V naravnem odmevu so odmevi tako gosti, da posameznih odmevov ne morete ločiti.
Gostoto odmeva bi lahko povečali z zmanjšanjem zakasnitve odmevnega efekta, vendar če to storimo, konstruktivna in destruktivna interferenca povzroči, da se sistem obnaša kot filter z zarezami na številnih frekvencah, kar običajno obarva ton signala, namesto da bi zagotovilo naravno zveneči odmev.
Članek Signal Smith Blog [7] je eden najboljših člankov, ki sem jih našel na to temo. Nekatere od teh idej sem poskušal uporabiti za izdelavo zelo minimalne različice.
Ta zasnova uporablja omrežje s povratno zakasnitvijo, signal gre skozi več različno dolgih zakasnilnih linij, zakasnjeni signali pa se nato zmešajo s pomočjo matrike, kar omogoča veliko gostejši in bolj naključno zveneči odmev.
//delay Lines
delays[0]=delay_line1.tap(150samples_per_ms); delays[1]=delay_line2.tap(160samples_per_ms);
delays[2]=delay_line3.tap(170samples_per_ms); delays[3]=delay_line4.tap(180samples_per_ms);
//feedback matrix
for(inti=0;i<num_delays;++i){
mixed[i]=delays[i];
sum=sum+mixed[i];
}
sum=sum*FixedPoint::from_float(-0.5);
for(inti=0;i<num_delays;++i){
mixed[i]=mixed[i]+sum;
}
//feedback gain
for(inti=0;i<num_delays;++i){
mixed[i]=sample+mixed[i]*delay_feedback;
}
delay_line1.input_sample(mixed[0]);
delay_line2.input_sample(mixed[1]);
delay_line3.input_sample(mixed[2]);
delay_line4.input_sample(mixed[3]);
sample=sample+(delays[0]*delay_mix);
Tu je še vedno prostor za izboljšave, saj bi lahko s povečanjem števila linij zakasnitve ustvarili boljši, bolj naravno zveneči odmev. Zasnovi bi koristila tudi stopnja difuzorja.
Modulacijski efekti
Na področju kitarskih efektov imajo modulacijski efekti ključno vlogo pri oblikovanju zvočne pokrajine, saj vašemu igranju dodajo globino, gibanje in značaj. Ti efekti manipulirajo z zvočnim signalom v realnem času in ustvarjajo dinamične spremembe, ki presegajo statičnost tradicionalnih efektov izkrivljanja ali zakasnitve.
Tremolo efekt
Tremolo modulira glasnost signala v ritmičnem tempu in ustvarja pulzirajoči efekt. Gre za klasičen efekt, ki lahko sega od subtilnega ritmičnega pulziranja do izrazitejše amplitudne modulacije. Tremolo lahko vašemu igranju doda vintage, surf-rock vibracije ali dinamičen ritmični element.
Vibrato efekt
Vibrato, ki se pogosto zamenjuje s tremolo učinkom, modulira višino signala. Vnaša rahla nihanja višine zvoka, s čimer simulira naravno vibrato, ki ga povzročajo gibi kitaristovih prstov. Vibrato dodaja izraznost in toplino dolgotrajnim tonom, zato je priljubljena izbira za igranje vodilne kitare.
Flanger efekt
Podobno kot chorus tudi flanger podvaja signal, vendar uvede kratko zakasnitev, ki se spreminja s časom. To ustvari razpršen, reaktivni zvok, za katerega je značilen značilen efekt šumenja. Flanger se pogosto uporablja za dodajanje občutka gibanja in intenzivnosti kitarskim solažam ali ritmičnim delom.
Chorus efekt
Chorus daje zvoku bujno in sijočo kakovost, tako da podvoji signal, vnese majhne spremembe višine in časa ter ga pomeša z originalnim. Rezultat je podoben zboru subtilno ločenih glasov, ki ustvari gostejši, bolj razsežen zvok, ki simulira efekt več instrumentov, ki igrajo v sozvočju.
Phaser efekt
Phaser efekt spreminja fazo vhodnega signala in ustvarja značilen vrtinčast ali razgiban zvok. Z delitvijo signala in spreminjanjem faznega razmerja med obema potema phaserji ustvarijo bogato, razvijajočo se teksturo, ki jo pogosto povezujemo z vesoljskimi ali psihedeličnimi toni.
Zaključek
S tem smo obdelali zanimivo področje efektov, ki jih lahko kreiramo z Raspberry-Pi Pico ploščico. Kljub temu, da ploščica izgleda precej nebogljeno, se izkaže, da lahko s pomočjo ustreznih programov naredimo plejado različnih efektov. Morda še sami napišete kakšen program za nek nov efekt in ga preizkusite na svoji kitari.
Viri:
1: https://github.com/dawsonjon/101Things/tree/master/13_guitar_effects
2: https://github.com/dawsonjon/101Things/blob/master/build/13_guitar_effects/guitar_effects.uf2
- https://github.com/dawsonjon/101Things/blob/master/PCB/swiss%20army%20pcb/things.pdf
- https://github.com/dawsonjon/101Things/blob/master/PCB/front_panel/gerbers/front.zip
- https://github.com/dawsonjon/101Things/blob/master/PCB/back_panel/gerbers/back.zip
- https://github.com/dawsonjon/101Things/blob/master/PCB/swiss%20army%20pcb/gerbers/ssa.zip
7: https://signalsmith-audio.co.uk/writing/
Povzeto po:
https://101-things.readthedocs.io/en/latest/guitar_effects.html