Sadržaj:

NeckCrusher (papučica efekta montirana na gitaru): 6 koraka (sa slikama)
NeckCrusher (papučica efekta montirana na gitaru): 6 koraka (sa slikama)

Video: NeckCrusher (papučica efekta montirana na gitaru): 6 koraka (sa slikama)

Video: NeckCrusher (papučica efekta montirana na gitaru): 6 koraka (sa slikama)
Video: Building The World's First MANUAL Dodge Demon! | PT 6 2024, Novembar
Anonim
NeckCrusher (Pedala sa efektom na gitari)
NeckCrusher (Pedala sa efektom na gitari)

Dale Rosen, Carlos Reyes i Rob Koch

DATT 2000

Korak 1: Problem

Problem
Problem

Pedale za gitaru ograničavaju muzičara na platformu pedala. Rješenje: Ugradite i ugradite funkcionalnost pedala za gitaru u samu gitaru. Ovo omogućava muzičaru da se slobodno kreće po pozornici, koristeći vrat gitare kao interfejs, umjesto da bude ograničen na lokaciju pedalboard -a. Istražit ćemo ovaj koncept stvaranjem uređaja za bitcrusher/brzinu uzorkovanja.

Korak 2: Kontekst projekta

Kontekst projekta
Kontekst projekta

Postoje mnoge gitarske pedale koje muzičari koriste za manipulaciju zvukom svojih gitara. Većina njih se obično nalazi u stalcima ili stomp box jedinicama, pa se kontrola efekata ograničava na lokaciju jedinice efekata. Postavljanje uređaja na gitaru omogućava igračima da kontrolišu parametre efekta bilo gdje na pozornici. To znači da neće biti ograničeni i mogu imati slobodu kretanja radi svojih performansi.

Budući da Arduino podržava samo 8 -bitni zvuk, nemoguće je izvršiti obradu signala visoke vjernosti. Zbog toga smo odabrali efekte koje smo napravili, jer se temelje na stvaranju iskrivljenog zvuka niske vjernosti. Ovo su jedini efekti koji su razumno mogući s Arduinom.

Korak 3: Potrebni dijelovi / alati

Potrebni delovi / alati
Potrebni delovi / alati

● Udarna bušilica

● Rezači žice

● Skidači žica

● Lemilica

● Pištolj za vruće ljepilo

● Pumpa za odlemljivanje

● Gitara ● Kućište

● Lemljenje

● Vruće ljepilo

● Arduino

● Proto Board

● Prevučena žica

● Audio priključci (x2)

● Potenciometri (x3)

● Kondenzatori: 2,2 uF (x2)

● Otkrivena bakrena žica

● Vijci (M3,5 *8)

● Otpornici: 1 k, 10 k, 1,2 k, 1,5 k, 390 k

● * Op pojačalo (LM358) / * Tranzistor (2N3442)

Korak 4: Tehnička strategija

Tehnička strategija
Tehnička strategija

Internal Circuitry

Ulaz/izlaz

Moramo pretvoriti audio signal koji dolazi s gitare u nešto što arduino može koristiti i mijenjati. Tada ćemo morati pretvoriti signal koji dolazi s arduina natrag u audio signal. Arduino čita napone od 0V do 5V, audio signali su od -1V do 1V. Ove konverzije se izvode pomoću otpornika. Signal će se pretvoriti i u izlaznom krugu.

Arduino biblioteka: ArduinoDSP

Opis projekta (sučelje)

Dugmad Dugme 1: Sample Rate

Dugme 2: Bit drobilica

Dugme 3: Bit Shifter

Korak 5: Kodirajte

Kod
Kod

#include "dsp.h"

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

boolean div32; boolean div16;

isparljiv boolean f_sample; isparljivi bajt badc0; isparljivi bajt badc1; isparljivi bajt 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; bajt bb;

bajt dd [512]; // Niz zvučnih memorija 8-bit

void setup () {setupIO ();

// ponovno učitavanje vala nakon 1 sekunde fill_sinewave ();

// podesimo adc prescaler na 64 za frekvenciju uzorkovanja 19 kHz cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-bitni ADC u ADCH registru sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Tajmer2 PWM način rada postavljen na brzi PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Postavljanje za Timer2 cbi (TCCR2B, WGM22); // Timer2 Clock Prescaler na: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM port Omogući sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

void loop () {{100} {101}

// provjerite status potenciometra efekta i okretnog prekidača readKnobs ();

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

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {unos bajta = analogRead (lijevo); izlaz (lijevo, ulaz); }

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

if (fx4> 100) {

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

while (! f_sample) {// čekati vrijednost uzorka iz ADC -a} // Ciklus 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = false; bb = badc1; dd [icnt1] = bb; // zapis u bafer fx4 = iw * badc0 / 255; // skaliranje odgođenog uzorka s potenciometrom iw1 = dd [icnt2]; // očitavanje međuspremnika za kašnjenje badc0 = badc0 / 20; // granična vrijednost na 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // granični indeks 0.. icnt1 = icnt1 & 511; // granični indeks 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Uzorak vrijednosti na PWM izlaz

PORTD = PORTD ^ 128; izlaz (lijevo, PORTD); // izlaz}

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

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

while (! f_sample) {// čekajte vrijednost uzorka iz ADC -a} // Ciklus 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sample = false; bb = dd [icnt]; // očitavanje međuspremnika odgode iw = 127 - bb; // oduzimanje pomaka fx3 = iw * badc0 / 255; // skaliranje odgođenog uzorka s potenciometrom iw1 = 127 - badc1; // oduzimanje odstupanja od novog uzorka iw1 = iw1 + iw; // dodavanje odgođenog uzorka i novog uzorka ako (iw1 127) iw1 = 127; // Ograničivač zvuka bb = 127 + iw1; // dodavanje pomaka dd [icnt] = bb; // spremanje uzorka u audio međuspremnik icnt ++; icnt = icnt & 511; // ograničenje međuspremnika 0..511 OCR2A = bb; // Uzorak vrijednosti na PWM izlaz

PORTD = PORTD ^ 128; izlaz (lijevo, PORTD); // Izlaz

} }

void readKnobs () {fx1 = analogRead (1); fx2 = analogRead (2); fx3 = analogRead (3); fx4 = analogRead (4);

}

void fill_sinewave () {float pi = 3.141592; float dx; float fd; float fcnt; dx = 2 * pi / 512; // popunjavamo bafere od 512 bajtova za (iw = 0; iw <= 511; iw ++) {// sa 50 tačaka sinewawe fd = 127 * sin (fcnt); // osnovni ton fcnt = fcnt + dx; // u rasponu od 0 do 2xpi i 1/512 koraka bb = 127 + fd; // dodavanje DC pomaka sinewawe dd [iw] = bb; // upisuje vrijednost u niz

} }

// ********************************************** ****************** // Timer2 Interrupt Service na 62,5 KHz // ovdje se audio i pot signal signali uzorkuju brzinom od: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // podijelite timer2 frekvenciju / 2 na 31,25kHz if (div32) {div16 =! div16; if (div16) {// uzorci kanala 0 i 1 naizmjenično, tako da je svaki kanal uzorkovan sa 15,6kHz badc0 = ADCH; // dobivamo ADC kanal 0 sbi (ADMUX, MUX0); // postavlja multiplekser na kanal 1} else {badc1 = ADCH; // dobivanje ADC kanala 1 cbi (ADMUX, MUX0); // postavlja multiplekser na kanal 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // kratko kašnjenje prije početka konverzije sbi (ADCSRA, ADSC); // započeti sljedeću konverziju}

}

Korak 6: Video

Potencijalni problemi ● Pickup je malo preslab za napajanje - potrebno je pojačalo. - U videu smo koristili pojačivač signala. (Siva kutija leži na stolu.)

Preporučuje se: