Obsah:

NeckCrusher (efektový pedál namontovaný na kytaru): 6 kroků (s obrázky)
NeckCrusher (efektový pedál namontovaný na kytaru): 6 kroků (s obrázky)

Video: NeckCrusher (efektový pedál namontovaný na kytaru): 6 kroků (s obrázky)

Video: NeckCrusher (efektový pedál namontovaný na kytaru): 6 kroků (s obrázky)
Video: Tipy na kvalitní pluginy zdarma 2024, Listopad
Anonim
NeckCrusher (kytarový efektový pedál)
NeckCrusher (kytarový efektový pedál)

Dale Rosen, Carlos Reyes a Rob Koch

DATT 2000

Krok 1: Problém

Problém
Problém

Kytarové pedály omezují hudebníka na pedálovou platformu. Řešení: Vytvořte a vložte funkci kytarových pedálů do samotné kytary. To umožňuje hudebníkovi volně se pohybovat po jevišti a používat krk jako rozhraní místo toho, aby byl omezen na umístění pedalboardu. Tento koncept prozkoumáme vytvořením zařízení s efektem bitcrusher/vzorkovací frekvence.

Krok 2: Kontext projektu

Kontext projektu
Kontext projektu

Hudebníci používají mnoho kytarových pedálů k manipulaci se zvukem svých kytar. Většina z nich je obvykle v jednotkách založených na racku nebo dupačkách, což omezuje ovládání efektů na umístění efektové jednotky. Upevnění zařízení na kytaru umožňuje hráčům ovládat parametry efektu kdekoli na jevišti. To znamená, že nebudou omezováni a mohou mít svobodu pohybu za svým výkonem.

Protože Arduino je schopné pouze 8bitového zvuku, není možné provádět zpracování signálu s vysokou věrností. Proto jsme vybrali efekty, které jsme udělali, protože jsou založeny na vytváření zkresleného zvuku s nízkou věrností. Toto jsou jediné efekty, které jsou u Arduina rozumně možné.

Krok 3: Potřebné díly / nástroje

Potřebné díly / nástroje
Potřebné díly / nástroje

● Příklepová vrtačka

● Nůžky na drát

● Odizolovače drátu

● Páječka

● Horká lepicí pistole

● Odpájecí čerpadlo

● Kytara ● Kryt

● Pájka

● Horké lepidlo

● Arduino

● Protokol

● Potažený drát

● Audio konektory (x2)

● Potenciometry (x3)

● Kondenzátory: 2,2 uF (x2)

● Odhalený měděný drát

● Šrouby (M3,5 *8)

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

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

Krok 4: Technická strategie

Technická strategie
Technická strategie

Vnitřní obvod

Vstup výstup

Potřebujeme převést zvukový signál přicházející z kytary na něco, co arduino může použít a upravit. Poté budeme muset převést signál přicházející z arduina zpět na zvukový signál. Arduino čte napětí od 0V do 5V, zvukové signály jsou od -1V do 1V. Tyto převody se provádějí pomocí odporů. Signál bude také převeden do výstupního obvodu.

Knihovna Arduino: ArduinoDSP

Popis projektu (rozhraní)

Knoflíky Knoflík 1: Vzorkovací frekvence

Knob 2: Bit Crusher

Knob 3: Bit Shifter

Krok 5: Kód

Kód
Kód

#include "dsp.h"

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

booleovský div32; booleovský div16;

volatile boolean f_sample; volatile byte badc0; volatile byte badc1; volatile 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; bajt bb;

byte dd [512]; // 8bitové pole zvukové paměti

neplatné nastavení () {setupIO ();

// znovu načíst vlnu po 1 sekundě fill_sinewave ();

// nastavit adcal prescaler na 64 pro vzorkovací frekvenci 19kHz cbi (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8bitový ADC v ADCH Register sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Režim Timer2 PWM nastaven na rychlý PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Nastavení pro Timer2 cbi (TCCR2B, WGM22); // Timer2 Clock Prescaler to: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Port Enable sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

prázdná smyčka () {

// kontrola stavu efektového potenciometru a otočného přepínače readKnobs ();

// ************ // // *** Normální *** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (vlevo); výstup (vlevo, vstup); }

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

if (fx4> 100) {

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

while (! f_sample) {// čekejte na ukázkovou hodnotu z ADC} // cyklus 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = false; bb = badc1; dd [icnt1] = bb; // zápis do bufferu fx4 = iw * badc0 / 255; // škálování zpožděného vzorku potenciometrem iw1 = dd [icnt2]; // číst zpožďovací vyrovnávací paměť badc0 = badc0 / 20; // limitní hodnota na 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // limitní index 0.. icnt1 = icnt1 & 511; // limitní index 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Ukázka hodnoty pro výstup PWM

PORTD = PORTD ^ 128; výstup (vlevo, PORTD); // Výstup }

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

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

while (! f_sample) {// čekejte na ukázkovou hodnotu z ADC} // cyklus 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sample = false; bb = dd [icnt]; // přečtěte vyrovnávací paměť zpoždění iw = 127 - bb; // odečíst offset fx3 = iw * badc0 / 255; // škálování zpožděného vzorku potenciometrem iw1 = 127 - badc1; // odečtení ofsetu od nového vzorku iw1 = iw1 + iw; // přidat zpožděný vzorek a nový vzorek if (iw1 127) iw1 = 127; // Omezovač zvuku bb = 127 + iw1; // přidat offset dd [icnt] = bb; // uložení ukázky do zvukové vyrovnávací paměti icnt ++; icnt = icnt & 511; // limit bufferindex 0..511 OCR2A = bb; // Ukázka hodnoty pro výstup PWM

PORTD = PORTD ^ 128; výstup (vlevo, PORTD); // Výstup

} }

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

}

neplatné fill_sinewave () {float pi = 3.141592; float dx; float fd; float fcnt; dx = 2 * pi / 512; // vyplňte 512 bajtovou vyrovnávací paměť pro (iw = 0; iw <= 511; iw ++) {// 50 tečkami sinewawe fd = 127 * sin (fcnt); // základní tón fcnt = fcnt + dx; // v rozsahu 0 až 2xpi a 1/512 přírůstcích bb = 127 + fd; // přidat DC offset do sinewawe dd [iw] = bb; // zapište hodnotu do pole

} }

// *************************************************** ****************** // Služba přerušení Timer2 na 62,5 KHz // zde je audio a pot signál vzorkován rychlostí: 16Mhz / 256 /2 /2 = 15625 Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // rozdělit časovač2 frekvence / 2 až 31,25kHz if (div32) {div16 =! div16; if (div16) {// střídavě kanál 0 a 1, takže každý kanál je vzorkován s 15,6 kHz badc0 = ADCH; // získat ADC kanál 0 sbi (ADMUX, MUX0); // nastavit multiplexer na kanál 1} else {badc1 = ADCH; // získat ADC kanál 1 cbi (ADMUX, MUX0); // nastavit multiplexer na kanál 0 f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // krátké zpoždění před zahájením převodu sbi (ADCSRA, ADSC); // zahájení další konverze}

}

Krok 6: Video

Potenciální problémy ● Snímač je na napájecí obvod příliš slabý - potřebujete operační zesilovač. - Ve videu jsme použili zesilovač signálu. (Šedý box ležící na stole.)

Doporučuje: