Indholdsfortegnelse:
- Trin 1: Problem
- Trin 2: Projektkontekst
- Trin 3: Dele / værktøjer påkrævet
- Trin 4: Teknisk strategi
- Trin 5: Kode
- Trin 6: Video
Video: NeckCrusher (guitarmonteret effektpedal): 6 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
Dale Rosen, Carlos Reyes og Rob Koch
DATT 2000
Trin 1: Problem
Guitarpedaler begrænser musikeren til pedalplatformen. Løsning: Byg og integrer en guitarpedalfunktion i selve guitaren. Dette giver musikeren mulighed for frit at bevæge sig over scenen ved at bruge guitarhalsen som en grænseflade i stedet for at være begrænset til pedalboardets placering. Vi vil undersøge dette koncept ved at oprette en bitcrusher/sample rate effekt -enhed.
Trin 2: Projektkontekst
Der er mange guitarpedaler, der bruges af musikere til at manipulere lyden af deres guitarer. De fleste af disse er sædvanligvis i rack-baserede eller stampe-boksenheder, hvilket begrænser kontrollen med effekterne til placeringen af effektenheden. Ved at montere enheden på guitaren kan spillerne kontrollere parametrene for effekten hvor som helst på scenen. Dette betyder, at de ikke bliver begrænset og kan have frihed til at bevæge sig rundt for deres præstationer.
Da Arduino kun er i stand til 8 bit lyd, er det umuligt at foretage signalbehandling i høj kvalitet. Derfor valgte vi de effekter, vi gjorde, da de er baseret på at skabe en forvrænget lyd med lav trofasthed. Dette er de eneste effekter, der er rimeligt mulige med en Arduino.
Trin 3: Dele / værktøjer påkrævet
● Slagbor
● Trådskærere
● Wire Strippers
● Loddejern
● Varmlimpistol
● Aflodningspumpe
● Guitar ● Kabinet
● Lodning
● Varm lim
● Arduino
● Proto Board
● Coated Wire
● Lydstik (x2)
● Potentiometre (x3)
● Kondensatorer: 2,2 uF (x2)
● Frilagt kobbertråd
● Skruer (M3,5 *8)
● Modstande: 1 k, 10 k, 1,2 k, 1,5 k, 390 k
● * Op Amp (LM358) / * Transistor (2N3442)
Trin 4: Teknisk strategi
Intern kredsløb
Input/Output
Vi skal konvertere lydsignalet fra en guitar til noget, arduinoen kan bruge og ændre. Vi bliver derefter nødt til at konvertere signalet, der kommer fra arduinoen tilbage til et lydsignal. Arduino læser spændinger fra 0V til 5V, lydsignaler er fra -1V til 1V. Disse konverteringer udføres ved hjælp af modstande. Signalet vil også blive konverteret i udgangskredsløbet.
Arduino bibliotek: ArduinoDSP
Projektbeskrivelse (grænseflade)
Knopper Knop 1: Prøvehastighed
Knop 2: Bitknuser
Knap 3: Bitskifter
Trin 5: Kode
#include "dsp.h"
#define cbi (sfr, bit) (_SFR_BYTE (sfr) & = ~ _BV (bit)) #define sbi (sfr, bit) (_SFR_BYTE (sfr) | = _BV (bit))
boolsk div32; boolsk div16;
flygtig boolsk f_sample; flygtig byte badc0; flygtig byte badc1; flygtig 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]; // Lydhukommelsesarray 8-bit
ugyldig opsætning () {setupIO ();
// genindlæs bølge efter 1 sekund fill_sinewave ();
// indstil adc prescaler til 64 for 19 kHz samplingsfrekvens cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bit 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 Mode indstillet til hurtig PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Opsætning til 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 () {
// kontrollere status for effektpotentiometeret og drejekontakten readKnobs ();
// ************* // ***Normal*** // *************
hvis (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (venstre); output (venstre, input); }
// ************* // *** Phasor *** // *************
hvis (fx4> 100) {
fx1 = 0; fx2 = 0; fx3 = 0;
mens (! f_sample) {// vent på prøveværdi fra ADC} // Cyklus 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = falsk; bb = badc1; dd [icnt1] = bb; // skriv til buffer fx4 = iw * badc0 / 255; // skala forsinket prøve med potentiometer iw1 = dd [icnt2]; // læs forsinkelsesbufferen badc0 = badc0 / 20; // grænseværdi til 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // grænseindeks 0.. icnt1 = icnt1 & 511; // grænseindeks 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Prøveværdi til PWM -output
PORTD = PORTD ^ 128; output (venstre, PORTD); // Output}
// ************* // *** Flanger *** // ************* if (fx3> 100) {
fx1 = 0; fx2 = 0; fx4 = 0;
mens (! f_sample) {// vent på prøveværdi fra ADC} // Cyklus 15625 KHz = 64uSec
PORTD = PORTD | 128; f_sample = falsk; bb = dd [icnt]; // læs forsinkelsesbufferen iw = 127 - bb; // subtract offset fx3 = iw * badc0 / 255; // skala forsinket prøve med potentiometer iw1 = 127 - badc1; // subtrahere forskydning fra ny prøve iw1 = iw1 + iw; // tilføj forsinket prøve og ny prøve, hvis (iw1 127) iw1 = 127; // Lydbegrænser bb = 127 + iw1; // tilføj offset dd [icnt] = bb; // gem prøve i lydbuffer icnt ++; icnt = icnt & 511; // limit bufferindex 0..511 OCR2A = bb; // Prøveværdi til PWM -output
PORTD = PORTD ^ 128; output (venstre, PORTD); // Output
} }
void readKnobs () {fx1 = analogRead (1); fx2 = analogRead (2); fx3 = analogRead (3); fx4 = analogRead (4);
}
void fill_sinewave () {float pi = 3.141592; float dx; flyde fd; float fcnt; dx = 2 * pi / 512; // fyld 512 byte bufferarry for (iw = 0; iw <= 511; iw ++) {// med 50 perioder sinewawe fd = 127 * sin (fcnt); // grundlæggende tone fcnt = fcnt + dx; // i området 0 til 2xpi og 1/512 trin bb = 127 + fd; // tilføj dc offset til sinewawe dd [iw] = bb; // skriv værdi i array
} }
// ************************************************ ****************** // Timer2 Interrupt Service ved 62,5 KHz // her samples lyd- og potsignalet i en hastighed på: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vekt) {
PORTB = PORTB | 1;
div32 =! div32; // divider timer2 frekvens / 2 til 31,25 kHz hvis (div32) {div16 =! div16; hvis (div16) {// prøvekanal 0 og 1 skiftevis, så hver kanal samples med 15,6 kHz badc0 = ADCH; // få ADC kanal 0 sbi (ADMUX, MUX0); // indstil multiplexer til kanal 1} else {badc1 = ADCH; // få ADC kanal 1 cbi (ADMUX, MUX0); // indstil multiplexer til kanal 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // kort forsinkelse før konverteringsstart sbi (ADCSRA, ADSC); // start næste konvertering}
}
Trin 6: Video
Potentielle problemer ● Pickup er lidt for svag til strømforsyning - har brug for en op -forstærker. - I videoen brugte vi en signalforstærker. (Den grå æske, der ligger på bordet.)
Anbefalede:
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: 7 trin (med billeder)
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: Jeg planlægger at bruge denne Rapsberry PI i en masse sjove projekter tilbage i min blog. Tjek det gerne ud. Jeg ville tilbage til at bruge min Raspberry PI, men jeg havde ikke et tastatur eller en mus på min nye placering. Det var et stykke tid siden jeg konfigurerede en hindbær
Arduino Halloween Edition - Pop -out -skærm med zombier (trin med billeder): 6 trin
Arduino Halloween Edition - Zombies Pop -out -skærm (trin med billeder): Vil du skræmme dine venner og lave skrigende støj i Halloween? Eller vil du bare lave en god sjov? Denne pop-out-skærm fra Zombies kan gøre det! I denne Instructable vil jeg lære dig, hvordan du nemt laver jump-out zombier ved hjælp af Arduino. HC-SR0
Sådan adskilles en computer med nemme trin og billeder: 13 trin (med billeder)
Sådan adskilles en computer med nemme trin og billeder: Dette er en instruktion om, hvordan du adskiller en pc. De fleste af de grundlæggende komponenter er modulopbyggede og nemme at fjerne. Det er dog vigtigt, at du er organiseret omkring det. Dette hjælper med at forhindre dig i at miste dele og også ved at lave genmonteringen til
Ciclop 3d Scanner My Way Trin for trin: 16 trin (med billeder)
Ciclop 3d Scanner My Way Step by Step: Hej alle sammen, jeg kommer til at indse den berømte Ciclop 3D -scanner.Alle trin, der er godt forklaret på det originale projekt, er ikke til stede.Jeg lavede nogle rettelser for at forenkle processen, først Jeg udskriver basen, og end jeg genstarter printkortet, men fortsæt
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: 7 trin (med billeder)
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: Selv efter 25 års introduktion til forbrugermarkedet er infrarød kommunikation stadig meget relevant i de seneste dage. Uanset om det er dit 55 tommer 4K -fjernsyn eller dit billydsystem, har alt brug for en IR -fjernbetjening for at reagere på vores