Sadržaj:

NeckCrusher (papučica s efektom na gitari): 6 koraka (sa slikama)
NeckCrusher (papučica s efektom na gitari): 6 koraka (sa slikama)

Video: NeckCrusher (papučica s efektom na gitari): 6 koraka (sa slikama)

Video: NeckCrusher (papučica s efektom na gitari): 6 koraka (sa slikama)
Video: Бронепоезд едет в ад #3 Bloodstained: Ritual of the Night 2024, Prosinac
Anonim
NeckCrusher (papučica s efektom montirana na gitaru)
NeckCrusher (papučica s efektom montirana na gitaru)

Dale Rosen, Carlos Reyes i Rob Koch

DATT 2000

Korak 1: Problem

Problem
Problem

Pedale za gitaru ograničavaju glazbenika na platformu pedala. Rješenje: Ugradite i ugradite funkcionalnost papučica za gitaru u samu gitaru. To omogućuje glazbeniku da se slobodno kreće po pozornici, koristeći vrat gitare kao sučelje, umjesto da bude ograničen na mjesto pedalboard -a. Ovaj ćemo koncept istraživati stvaranjem uređaja za bitcrusher/efekt brzine uzorkovanja.

Korak 2: Kontekst projekta

Kontekst projekta
Kontekst projekta

Glazbenici koriste mnoge papučice za gitaru kako bi manipulirali zvukom svojih gitara. Većina ih se obično nalazi u stalcima ili stamp box jedinicama, stoga se kontrola učinaka ograničava na mjesto jedinice efekata. Postavljanje uređaja na gitaru omogućuje igračima kontrolu parametara učinka bilo gdje na pozornici. To znači da neće biti ograničeni i mogu imati slobodu kretanja radi svoje izvedbe.

Budući da je Arduino sposoban samo za 8 -bitni zvuk, nemoguće je izvršiti obradu signala visoke vjernosti. Zato smo odabrali učinke koje smo napravili jer se temelje na stvaranju iskrivljenog zvuka niske vjernosti. Ovo su jedini učinci koji su razumno mogući s Arduinom.

Korak 3: Potrebni dijelovi / alati

Potrebni dijelovi / alati
Potrebni dijelovi / 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 ploča

● Prevučena žica

● Audio priključnice (x2)

● Potenciometri (x3)

● Kondenzatori: 2,2 uF (x2)

● Otvorena 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

Unutarnji krug

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 pretvorbe se izvode pomoću otpornika. Signal će se pretvoriti i u izlaznom krugu.

Arduino knjižnica: ArduinoDSP

Opis projekta (sučelje)

Dugmad Ručica 1: Brzina uzorkovanja

Ručka 2: Bit drobilica

Gumb 3: Bit Shifter

Korak 5: Kodirajte

Kodirati
Kodirati

#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; promjenjivi 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]; // 8-bitni audio memorijski niz

void setup () {setupIO ();

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

// postavimo 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); // Timer2 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); // Odbrojavač sata Timer2 do: 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 učinka 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) {// čekajte vrijednost uzorka iz ADC -a} // Ciklus 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = false; bb = badc1; dd [icnt1] = bb; // zapisivanje u međuspremnik fx4 = iw * badc0 / 255; // skaliranje odgođenog uzorka s potenciometrom iw1 = dd [icnt2]; // očitavanje međuspremnika odgode 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 izlaz PWM -a

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; // dodamo odgođeni uzorak i novi uzorak ako (iw1 127) iw1 = 127; // Ograničivač zvuka bb = 127 + iw1; // dodaj pomak dd [icnt] = bb; // spremanje uzorka u audio međuspremnik icnt ++; icnt = icnt & 511; // ograničenje međuspremnika 0..511 OCR2A = bb; // Uzorak vrijednosti na izlaz PWM -a

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; // popunjavanje memorijskog prostora od 512 bajtova za (iw = 0; iw <= 511; iw ++) {// s 50 točaka sinewawe fd = 127 * sin (fcnt); // temeljni ton fcnt = fcnt + dx; // u rasponu od 0 do 2xpi i 1/512 prirasta bb = 127 + fd; // dodamo DC pomak u sinewawe dd [iw] = bb; // upisuje vrijednost u polje

} }

// ********************************************** ****************** // 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) {// kanal uzorka 0 i 1 naizmjence, tako da se svaki kanal uzorkuje s 15,6kHz badc0 = ADCH; // dobiti ADC kanal 0 sbi (ADMUX, MUX0); // postavi multiplekser na kanal 1} else {badc1 = ADCH; // dobiti ADC kanal 1 cbi (ADMUX, MUX0); // postavljanje multipleksera na kanal 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // kratko kašnjenje prije početka pretvorbe 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čeni: