Innholdsfortegnelse:
- Trinn 1: Problem
- Trinn 2: Prosjektkontekst
- Trinn 3: Deler / verktøy nødvendig
- Trinn 4: Teknisk strategi
- Trinn 5: Kode
- Trinn 6: Video
Video: NeckCrusher (gitarmontert effektpedal): 6 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Dale Rosen, Carlos Reyes og Rob Koch
DATT 2000
Trinn 1: Problem
Gitarpedaler begrenser musikeren til pedalplattformen. Løsning: Bygg og integrer en gitarpedalfunksjonalitet i selve gitaren. Dette gjør at musikeren kan bevege seg fritt over scenen, ved å bruke gitarhalsen som et grensesnitt i stedet for å være begrenset til plasseringen av pedalbrettet. Vi vil utforske dette konseptet ved å lage en bitcrusher/sample rate effekt -enhet.
Trinn 2: Prosjektkontekst
Det er mange gitarpedaler som brukes av musikere for å manipulere lyden av gitarene deres. De fleste av disse er vanligvis i rackbaserte eller stampboks-enheter, og begrenser derfor kontrollen over effektene til plasseringen av effektenheten. Ved å montere enheten på gitaren kan spillerne kontrollere parametrene for effekten hvor som helst på scenen. Dette betyr at de ikke vil være begrenset og kan ha frihet til å bevege seg rundt for prestasjonene sine.
Siden Arduino bare er i stand til 8 -biters lyd, er det umulig å utføre signalbehandling av høy kvalitet. Dette er grunnen til at vi valgte effektene vi gjorde, ettersom de er basert på å skape en forvrengt lyd med lav trofasthet. Dette er de eneste effektene som er rimelig mulig med en Arduino.
Trinn 3: Deler / verktøy nødvendig
● Slagbor
● Wire Cutters
● Wire Strippers
● Loddejern
● Varmlimpistol
● Desolderingspumpe
● Gitar ● Vedlegg
● Lodding
● Varm lim
● Arduino
● Proto Board
● Belagt wire
● Lydkontakter (x2)
● Potensiometre (x3)
● Kondensatorer: 2,2 uF (x2)
● Frilagt kobbertråd
● Skruer (M3,5 *8)
● Motstander: 1 k, 10 k, 1,2 k, 1,5 k, 390 k
● * Op Amp (LM358) / * Transistor (2N3442)
Trinn 4: Teknisk strategi
Intern kretsløp
Inngang/utgang
Vi må konvertere lydsignalet fra en gitar til noe arduinoen kan bruke og endre. Vi må da konvertere signalet som kommer fra arduinoen tilbake til et lydsignal. Arduino leser spenninger fra 0V til 5V, lydsignaler er fra -1V til 1V. Disse konverteringene gjøres ved hjelp av motstander. Signalet vil også bli konvertert i utgangskretsen.
Arduino bibliotek: ArduinoDSP
Prosjektbeskrivelse (grensesnitt)
Knotter Knott 1: Prøvehastighet
Knott 2: Bitknuser
Knott 3: Bitskifter
Trinn 5: Kode
#inkluder "dsp.h"
#define cbi (sfr, bit) (_SFR_BYTE (sfr) & = ~ _BV (bit)) #define sbi (sfr, bit) (_SFR_BYTE (sfr) | = _BV (bit))
boolsk div32; boolsk div16;
flyktig boolsk f_sample; flyktig byte badc0; flyktig byte badc1; flyktig byte ibb;
int fx1; int fx2; int fx3; int fx4;
int cnta; int icnt; int icnt1; int icnt2; int cnt2; int iw; int iw1; int iw2; byte bb;
byte dd [512]; // Lydminnearray 8-bit
ugyldig oppsett () {setupIO ();
// last inn på nytt etter 1 sekund fill_sinewave ();
// sett adc prescaler til 64 for 19 kHz samplingsfrekvens cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bits ADC i ADCH Register sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Timer2 PWM -modus satt til rask PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Oppsett for Timer2 cbi (TCCR2B, WGM22); // Timer2 Clock Prescaler til: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Port Aktiver sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;
}
void loop () {
// sjekk status for effektpotensiometer og dreiebryter readKnobs ();
// ************* // ***Vanlig*** // *************
hvis (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (venstre); utgang (venstre, inngang); }
// ************* // *** Phasor *** // *************
hvis (fx4> 100) {
fx1 = 0; fx2 = 0; fx3 = 0;
mens (! f_sample) {// vent på prøveverdi fra ADC} // syklus 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = false; bb = badc1; dd [icnt1] = bb; // skrive til buffer fx4 = iw * badc0 / 255; // skala forsinket prøve med potensiometer iw1 = dd [icnt2]; // les forsinkelsesbufferen badc0 = badc0 / 20; // grenseverdi til 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // grenseindeks 0.. icnt1 = icnt1 & 511; // grenseindeks 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Prøveverdi til PWM -utgang
PORTD = PORTD ^ 128; utgang (venstre, PORTD); // Output}
// ************* // *** Flanger *** // ************ if (fx3> 100) {
fx1 = 0; fx2 = 0; fx4 = 0;
mens (! f_sample) {// vent på prøveverdi fra ADC} // syklus 15625 KHz = 64uSec
PORTD = PORTD | 128; f_sample = false; bb = dd [icnt]; // les forsinkelsesbufferen iw = 127 - bb; // subtract offset fx3 = iw * badc0 / 255; // skala forsinket prøve med potensiometer iw1 = 127 - badc1; // subtrahere offset fra ny prøve iw1 = iw1 + iw; // legg til forsinket prøve og ny prøve hvis (iw1 127) iw1 = 127; // Lydbegrensning bb = 127 + iw1; // legg til offset dd [icnt] = bb; // lagre prøve i lydbuffer icnt ++; icnt = icnt & 511; // limit bufferindex 0..511 OCR2A = bb; // Prøveverdi til PWM -utgang
PORTD = PORTD ^ 128; utgang (venstre, PORTD); // Utgang
} }
void readKnobs () {fx1 = analogRead (1); fx2 = analogRead (2); fx3 = analogRead (3); fx4 = analogRead (4);
}
void fill_sinewave () {float pi = 3.141592; flyte dx; flyte fd; float fcnt; dx = 2 * pi / 512; // fyll 512 byte bufferarry for (iw = 0; iw <= 511; iw ++) {// med 50 perioder sinewawe fd = 127 * sin (fcnt); // grunnleggende tone fcnt = fcnt + dx; // i området 0 til 2xpi og 1/512 trinn bb = 127 + fd; // legg dc offset til sinewawe dd [iw] = bb; // skrive verdi i array
} }
// ************************************************ ****************** // Timer2 Interrupt Service ved 62,5 KHz // her samles lyd- og pottesignalet i en hastighet på: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vekt) {
PORTB = PORTB | 1;
div32 =! div32; // dele timer2 frekvens / 2 til 31,25 kHz hvis (div32) {div16 =! div16; hvis (div16) {// prøvekanal 0 og 1 vekselvis slik at hver kanal samples med 15,6 kHz badc0 = ADCH; // få ADC -kanal 0 sbi (ADMUX, MUX0); // sett multiplexer til kanal 1} else {badc1 = ADCH; // få ADC kanal 1 cbi (ADMUX, MUX0); // sett multiplexer til kanal 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // kort forsinkelse før konvertering sbi (ADCSRA, ADSC) startes; // start neste konvertering}
}
Trinn 6: Video
Potensielle problemer ● Pickup er litt for svak til å gi strømkrets - trenger en forsterker. - I videoen brukte vi en signalforsterker. (Den grå boksen som ligger på bordet.)
Anbefalt:
Ta flotte bilder med en iPhone: 9 trinn (med bilder)
Ta flotte bilder med en iPhone: De fleste av oss har med oss en smarttelefon overalt i disse dager, så det er viktig å vite hvordan du bruker smarttelefonkameraet ditt til å ta flotte bilder! Jeg har bare hatt en smarttelefon i et par år, og jeg har elsket å ha et greit kamera for å dokumentere ting jeg
Slik gjør du det: Installere Raspberry PI 4 Headless (VNC) med Rpi-imager og bilder: 7 trinn (med bilder)
Howto: Installere Raspberry PI 4 Headless (VNC) Med Rpi-imager og bilder: Jeg planlegger å bruke denne Rapsberry PI i en haug med morsomme prosjekter tilbake i bloggen min. Sjekk det gjerne ut. Jeg ønsket å begynne å bruke Raspberry PI igjen, men jeg hadde ikke tastatur eller mus på min nye plassering. Det var en stund siden jeg konfigurerte en bringebær
Slik demonterer du en datamaskin med enkle trinn og bilder: 13 trinn (med bilder)
Slik demonterer du en datamaskin med enkle trinn og bilder: Dette er en instruksjon om hvordan du demonterer en PC. De fleste grunnkomponentene er modulære og fjernes lett. Det er imidlertid viktig at du er organisert om det. Dette vil bidra til å hindre deg i å miste deler, og også i å gjøre monteringen igjen
PCB -design med enkle og enkle trinn: 30 trinn (med bilder)
PCB -design med enkle og enkle trinn: HELLO VENNER Den veldig nyttige og enkle opplæringen for de som ønsker å lære PCB -design, kan komme i gang
Hvordan lage en delt skjermvideo med fire trinn: 4 trinn (med bilder)
Hvordan lage en delt skjermvideo med fire trinn: Vi ser ofte en samme person vise i en scene to ganger i et TV -spill. Og så vidt vi vet har ikke skuespilleren en tvillingbror. Vi har også sett at to sangvideoer blir satt på en skjerm for å sammenligne sangferdighetene sine. Dette er kraften til spl