Talaan ng mga Nilalaman:

NeckCrusher (Guitar Mounted Effect Pedal): 6 na Hakbang (na may Mga Larawan)
NeckCrusher (Guitar Mounted Effect Pedal): 6 na Hakbang (na may Mga Larawan)

Video: NeckCrusher (Guitar Mounted Effect Pedal): 6 na Hakbang (na may Mga Larawan)

Video: NeckCrusher (Guitar Mounted Effect Pedal): 6 na Hakbang (na may Mga Larawan)
Video: Herman Li Breaks Guitar Onstage 2024, Nobyembre
Anonim
NeckCrusher (Guitar Mounted Effect Pedal)
NeckCrusher (Guitar Mounted Effect Pedal)

Dale Rosen, Carlos Reyes at Rob Koch

DATT 2000

Hakbang 1: Suliranin

Problema
Problema

Pinaghihigpitan ng mga pedal ng gitara ang musikero sa platform ng pedal. Solusyon: Bumuo at mag-embed ng isang pagpapaandar ng gitara sa gitara mismo. Pinapayagan nito ang musikero na malayang lumipat sa entablado, gamit ang leeg ng gitara bilang isang interface sa halip na limitahan sa lokasyon ng pedalboard. Susisiyasatin namin ang konseptong ito sa pamamagitan ng paglikha ng isang bitcrusher / sample na rate ng epekto ng aparato.

Hakbang 2: Konteksto ng Proyekto

Conteks ng Proyekto
Conteks ng Proyekto

Maraming gitara pedal na ginagamit ng mga musikero upang manipulahin ang tunog ng kanilang mga gitara. Karamihan sa mga ito ay karaniwang nasa mga unit na batay sa rak o stomp box, samakatuwid ay pinaghihigpitan ang kontrol ng mga epekto sa lokasyon ng yunit ng mga epekto. Ang pag-mount ng aparato sa gitara ay nagbibigay-daan sa mga manlalaro na kontrolin ang mga parameter ng epekto kahit saan sa entablado. Nangangahulugan ito na hindi sila pipigilan at maaaring magkaroon ng kalayaan na gumalaw para sa kanilang pagganap.

Dahil ang Arduino ay may kakayahang 8 bit audio lamang, imposibleng gumawa ng mataas na pagpoproseso ng signal ng fidelity. Ito ang dahilan kung bakit pinili namin ang mga epektong ginawa namin, dahil ang mga ito ay batay sa paglikha ng isang mababang katapatan, baluktot na tunog. Ito ang mga tanging epekto na posible na posible sa isang Arduino.

Hakbang 3: Kinakailangan ang Mga Bahagi / Mga Tool

Kinakailangan ang Mga Bahagi / Mga Tool
Kinakailangan ang Mga Bahagi / Mga Tool

● Impact Drill

● Mga Cutter ng Wire

● Mga Striper ng Wire

● Panghinang na Bakal

● Mainit na Baril ng Pandikit

● Desilering Pump

● Gitara ● Enclosure

● maghinang

● Mainit na Pandikit

● Arduino

● Lupon ng Proto

● Pinahiran na Wire

● Mga Audio Jack (x2)

● Mga Potensyal (x3)

● Mga Capacitor: 2.2 uF (x2)

● Nalantad na Cople Wire

● Mga tornilyo (M3.5 * 8)

● Mga resistorista: 1 k, 10 k, 1.2 k, 1.5 k, 390 k

● * Op Amp (LM358) / * Transistor (2N3442)

Hakbang 4: Diskarte sa Teknikal

Diskarte sa Teknikal
Diskarte sa Teknikal

Panloob na Circuitry

Input / Output

Kailangan naming i-convert ang audio signal na nagmumula sa isang gitara sa isang bagay na maaaring magamit at mabago ng arduino. Kakailanganin naming i-convert ang signal na nagmumula sa arduino pabalik sa isang audio signal. Ang Arduino ay nagbabasa ng mga voltages mula 0V hanggang 5V, ang mga audio signal ay mula -1V hanggang 1V. Ang mga conversion na ito ay tapos na gamit ang resistors. Ang signal ay mai-convert sa output circuit din.

Library ng Arduino: ArduinoDSP

Paglalarawan ng Proyekto (Interface)

Knobs Knob 1: Sample Rate

Knob 2: Bit Crusher

Knob 3: Bit Shifter

Hakbang 5: Code

Code
Code

# isama ang "dsp.h"

#define cbi (sfr, bit) (_SFR_BYTE (sfr) & = ~ _BV (bit)) #define sbi (sfr, bit) (_SFR_BYTE (sfr) | = _BV (bit))

boolean div32; boolean div16;

pabagu-bago ng isip boolean f_sample; pabagu-bago ng byte badc0; pabagu-bago ng byte badc1; pabagu-bago ng isip byb 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]; // Audio Memory Array 8-Bit

walang bisa ang pag-setup () {setupIO ();

// reload wave pagkatapos ng 1 segundong fill_sinewave ();

// set adc prescaler to 64 for 19kHz sampling frequency cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-Bit ADC sa ADCH Rehistro sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Timer2 PWM Mode na nakatakda sa mabilis na PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Setup para sa Timer2 cbi (TCCR2B, WGM22); // Timer2 Clock Prescaler sa: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Port Paganahin ang sbi (DDRB, 3); // sij (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

void loop () {

// check status of the potentiometer effect and rotary switch readKnobs ();

// ************* // ***Normal*** // *************

kung (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (kaliwa); output (kaliwa, input); }

// ************* // *** Phasor *** // *************

kung (fx4> 100) {

fx1 = 0; fx2 = 0; fx3 = 0;

habang (! f_sample) {// maghintay para sa Halimbawang Halaga mula sa ADC} // Cycle 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = false; bb = badc1; dd [icnt1] = bb; // sumulat sa buffer fx4 = iw * badc0 / 255; // scale naantala na sample na may potentiometer iw1 = dd [icnt2]; // basahin ang delay buffer badc0 = badc0 / 20; // limit ang halaga sa 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // limit index 0.. icnt1 = icnt1 & 511; // limit index 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Halimbawang Halaga sa PWM Output

PORTD = PORTD ^ 128; output (kaliwa, PORTD); // Output}

// ************* // *** Flanger *** // ************* kung (fx3> 100) {

fx1 = 0; fx2 = 0; fx4 = 0;

habang (! f_sample) {// maghintay para sa Halimbawang Halaga mula sa ADC} // Cycle 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sample = false; bb = dd [icnt]; // basahin ang delay buffer iw = 127 - bb; // substract offset fx3 = iw * badc0 / 255; // scale naantala sample na may potentiometer iw1 = 127 - badc1; // substract offset mula sa bagong sample iw1 = iw1 + iw; // add delayed sample and new sample if (iw1 127) iw1 = 127; // Audio limiter bb = 127 + iw1; // add offset dd [icnt] = bb; // store sample sa audio buffer icnt ++; icnt = icnt & 511; // limit bufferindex 0..511 OCR2A = bb; // Halimbawang Halaga sa PWM Output

PORTD = PORTD ^ 128; output (kaliwa, PORTD); // Output

} }

walang bisa ang readKnobs () {fx1 = analogRead (1); fx2 = analogRead (2); fx3 = analogRead (3); fx4 = analogRead (4);

}

void fill_sinewave () {float pi = 3.141592; lumutang dx; lumutang taut; lumutang fcnt; dx = 2 * pi / 512; // punan ang 512 byte bufferarry para sa (iw = 0; iw <= 511; iw ++) {// na may 50 panahon sinewawe fd = 127 * sin (fcnt); // pangunahing tono fcnt = fcnt + dx; // sa saklaw na 0 hanggang 2xpi at 1/512 na mga dagdag na bb = 127 + fd; // add dc offset to sinewawe dd [iw] = bb; // sumulat ng halaga sa array

} }

// ***** ***** Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // hatiin ang dalas ng timer2 / 2 hanggang 31.25kHz kung (div32) {div16 =! div16; kung (div16) {// sample channel 0 at 1 na halili kaya't ang bawat channel ay nasampolan ng 15.6kHz badc0 = ADCH; // get ADC channel 0 sbi (ADMUX, MUX0); // itakda ang multiplexer sa channel 1} iba pa {badc1 = ADCH; // get ADC channel 1 cbi (ADMUX, MUX0); // set multiplexer to channel 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // maikling pagkaantala bago simulan ang conversion sbi (ADCSRA, ADSC); // simulan ang susunod na conversion}

}

Hakbang 6: Video

Mga Potensyal na Suliranin ● Ang pickup ay medyo mahina sa power circuit - kailangan ng isang amp amp. - Sa video na ginamit namin ang isang signal booster. (Ang kulay-abo na kahon na nakahiga sa mesa.)

Inirerekumendang: