Innehållsförteckning:
- Steg 1: Problem
- Steg 2: Projektkontext
- Steg 3: Delar / verktyg krävs
- Steg 4: Teknisk strategi
- Steg 5: Kod
- Steg 6: Video
Video: NeckCrusher (gitarrmonterad effektpedal): 6 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
Dale Rosen, Carlos Reyes och Rob Koch
DATT 2000
Steg 1: Problem
Gitarrpedaler begränsar musiker till pedalplattformen. Lösning: Bygg in och bädda in en gitarrpedalfunktion i själva gitarren. Detta gör det möjligt för musiker att fritt röra sig över scenen, använda gitarrhalsen som ett gränssnitt istället för att vara begränsad till pedalbrädans plats. Vi kommer att utforska detta koncept genom att skapa en bitcrusher/sample rate effekt -enhet.
Steg 2: Projektkontext
Det finns många gitarrpedaler som används av musiker för att manipulera ljudet från deras gitarrer. De flesta av dessa är vanligtvis i rackbaserade eller stampboxar, vilket begränsar kontrollen av effekterna till effektenheten. Montering av enheten på gitarr gör det möjligt för spelare att styra parametrarna för effekten var som helst på scenen. Det betyder att de inte kommer att begränsas och kan ha friheten att röra sig för sina prestationer.
Eftersom Arduino bara kan 8 -bitars ljud är det omöjligt att göra signalbehandling med hög kvalitet. Det är därför vi valde de effekter vi gjorde, eftersom de bygger på att skapa ett förvrängt ljud med låg trohet. Detta är de enda effekter som rimligen är möjliga med en Arduino.
Steg 3: Delar / verktyg krävs
● Slagborr
● Trådskärare
● Wire Strippers
● Lödkolv
● Hotlimpistol
● Avlödningspump
● Gitarr ● Kapsling
● Lödning
● Hot Lim
● Arduino
● Proto Board
● Belagd tråd
● Ljuduttag (x2)
● Potentiometrar (x3)
● Kondensatorer: 2,2 uF (x2)
● Exponerad koppartråd
● Skruvar (M3,5 *8)
● Motstånd: 1 k, 10 k, 1,2 k, 1,5 k, 390 k
● * Op Amp (LM358) / * Transistor (2N3442)
Steg 4: Teknisk strategi
Intern krets
Ingång/utgång
Vi måste konvertera ljudsignalen från en gitarr till något arduino kan använda och modifiera. Vi kommer då att behöva konvertera signalen från arduino tillbaka till en ljudsignal. Arduino läser spänningar från 0V till 5V, ljudsignaler är från -1V till 1V. Dessa omvandlingar görs med hjälp av motstånd. Signalen kommer också att konverteras i utgångskretsen.
Arduino bibliotek: ArduinoDSP
Projektbeskrivning (gränssnitt)
Knoppar Knopp 1: Provhastighet
Knopp 2: Bitkross
Vred 3: Bitskift
Steg 5: Kod
#inkludera "dsp.h"
#define cbi (sfr, bit) (_SFR_BYTE (sfr) & = ~ _BV (bit)) #define sbi (sfr, bit) (_SFR_BYTE (sfr) | = _BV (bit))
booleska div32; booleska div16;
flyktigt booleskt f_prov; 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]; // Ljudminnesuppsättning 8-bitars
void setup () {setupIO ();
// ladda om våg efter 1 sekund fill_sinewave ();
// ställ in adc prescaler till 64 för 19 kHz samplingsfrekvens cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bitars 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 -läge inställt på snabb PWM -cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Inställning för Timer2 cbi (TCCR2B, WGM22); // Timer2 Clock Prescaler till: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Port Aktivera sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;
}
void loop () {
// kontrollera status för effektpotentiometern och vridomkopplaren readKnobs ();
// ************* // ***Vanligt*** // *************
if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (vänster); utgång (vänster, ingång); }
// ************* // *** Phasor *** // *************
om (fx4> 100) {
fx1 = 0; fx2 = 0; fx3 = 0;
medan (! f_sample) {// vänta på provvärde från ADC} // Cykel 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = false; bb = badc1; dd [icnt1] = bb; // skriva till buffert fx4 = iw * badc0 / 255; // skala försenat prov med potentiometer iw1 = dd [icnt2]; // läs fördröjningsbufferten badc0 = badc0 / 20; // gränsvärde till 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // gränsindex 0.. icnt1 = icnt1 & 511; // gränsindex 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Provvärde till PWM -utdata
PORTD = PORTD ^ 128; utgång (vänster, PORTD); // Output}
// ************* // *** Flanger *** // ************* if (fx3> 100) {
fx1 = 0; fx2 = 0; fx4 = 0;
medan (! f_sample) {// vänta på provvärde från ADC} // Cykel 15625 KHz = 64uSec
PORTD = PORTD | 128; f_sample = false; bb = dd [icnt]; // läs fördröjningsbufferten iw = 127 - bb; // subtrahera offset fx3 = iw * badc0 / 255; // skala försenat prov med potentiometer iw1 = 127 - badc1; // subtrahera förskjutning från nytt prov iw1 = iw1 + iw; // lägg till försenat prov och nytt prov om (iw1 127) iw1 = 127; // Ljudbegränsare bb = 127 + iw1; // lägg till offset dd [icnt] = bb; // lagra prov i ljudbuffert icnt ++; icnt = icnt & 511; // limit bufferindex 0..511 OCR2A = bb; // Provvärde till PWM -utdata
PORTD = PORTD ^ 128; utgång (vänster, PORTD); // Utmatning
} }
void readKnobs () {fx1 = analogRead (1); fx2 = analogRead (2); fx3 = analogRead (3); fx4 = analogRead (4);
}
void fill_sinewave () {float pi = 3.141592; float dx; flyta fd; float fcnt; dx = 2 * pi / 512; // fyll 512 byte bufferarry för (iw = 0; iw <= 511; iw ++) {// med 50 perioder sinewawe fd = 127 * sin (fcnt); // grundton fcnt = fcnt + dx; // i intervallet 0 till 2xpi och 1/512 steg bb = 127 + fd; // lägg till dc offset till sinewawe dd [iw] = bb; // skriva värde i array
} }
// ************************************************ ****************** // Timer2 Interrupt Service vid 62,5 KHz // här samplas ljud- och pott -signalen i en hastighet av: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vect) {
PORTB = PORTB | 1;
div32 =! div32; // dela timer2 frekvens / 2 till 31,25 kHz om (div32) {div16 =! div16; om (div16) {// provkanal 0 och 1 omväxlande så att varje kanal samplas med 15,6 kHz badc0 = ADCH; // få ADC -kanal 0 sbi (ADMUX, MUX0); // ställ in multiplexer till kanal 1} else {badc1 = ADCH; // få ADC kanal 1 cbi (ADMUX, MUX0); // ställ multiplexer till kanal 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // kort fördröjning innan konvertering startar sbi (ADCSRA, ADSC); // starta nästa konvertering}
}
Steg 6: Video
Potentiella problem ● Pickup är lite för svag för att driva kretsen - behöver en förstärkare. - I videon använde vi en signalförstärkare. (Den grå rutan som ligger på bordet.)
Rekommenderad:
Ta fantastiska bilder med en iPhone: 9 steg (med bilder)
Ta fantastiska bilder med en iPhone: De flesta av oss har en smartphone med oss överallt nuförtiden, så det är viktigt att veta hur du använder din smartphone -kamera för att ta fantastiska bilder! Jag har bara haft en smartphone i ett par år, och jag har älskat att ha en bra kamera för att dokumentera saker jag
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: 7 steg (med bilder)
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: Jag planerar att använda denna Rapsberry PI i ett gäng roliga projekt tillbaka i min blogg. Kolla gärna in det. Jag ville börja använda mitt Raspberry PI men jag hade inte ett tangentbord eller en mus på min nya plats. Det var ett tag sedan jag installerade en hallon
Hur man digitaliserar bilder och filmnegativ med en DSLR: 12 steg (med bilder)
Hur man digitaliserar diabilder och filmnegativ med en DSLR: En mångsidig och stabil inställning för digitalisering av diabilder och negativ med en DSLR eller en kamera med ett makroalternativ. Denna instruerbara är en uppdatering av Hur man digitaliserar 35 mm negativ (uppladdad juli 2011) med flera förbättringar för att utöka dess
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Hur man tar isär en dator med enkla steg och bilder: 13 steg (med bilder)
Hur man tar isär en dator med enkla steg och bilder: Detta är en instruktion om hur man demonterar en dator. De flesta av de grundläggande komponenterna är modulära och lätt att ta bort. Det är dock viktigt att du är organiserad kring det. Detta hjälper dig att inte förlora delar, och även för att göra ommonteringen