Мазмуну:

NeckCrusher (Гитарага орнотулган эффект педалы): 6 кадам (Сүрөттөр менен)
NeckCrusher (Гитарага орнотулган эффект педалы): 6 кадам (Сүрөттөр менен)

Video: NeckCrusher (Гитарага орнотулган эффект педалы): 6 кадам (Сүрөттөр менен)

Video: NeckCrusher (Гитарага орнотулган эффект педалы): 6 кадам (Сүрөттөр менен)
Video: По багам как по крышам ► 5 Прохождение Dying Light 2: Stay Human 2024, Июль
Anonim
NeckCrusher (Гитарага орнотулган эффект педалы)
NeckCrusher (Гитарага орнотулган эффект педалы)

Дэйл Розен, Карлос Рейес жана Роб Кох

DATT 2000

1 -кадам: Көйгөй

Көйгөй
Көйгөй

Гитаранын педалдары музыкантты педаль аянтчасына чектейт. Чечим: Гитаранын педальдык функциясын гитаранын өзүнө куруңуз. Бул музыкантка педаль тактасынын жайгашкан жери менен чектелбестен, гитаранын моюнун интерфейс катары колдонуп, этап боюнча эркин жылууга мүмкүнчүлүк берет. Биз бул түшүнүктү биткрушка/ылдамдык эффекти түзмөк түзүү аркылуу изилдейбиз.

2 -кадам: Долбоордун контексти

Долбоордун контексти
Долбоордун контексти

Музыканттар гитарасынын үнүн башкаруу үчүн колдонгон көптөгөн гитара педалдары бар. Булардын көбү адатта стойкага негизделген же стомп кутуларында, андыктан эффекттерди көзөмөлдөөнү эффекттер бирдигинин жайгашкан жерине чектөө. Түзмөктү гитарага орнотуу оюнчуларга эффектин параметрлерин сахнанын каалаган жеринде башкарууга мүмкүнчүлүк берет. Бул алар чектелбейт жана алардын аткарылышы үчүн ары -бери эркин жүрө алат дегенди билдирет.

Arduino 8 биттик аудиого гана жөндөмдүү болгондуктан, сигналды жогорку тактыкта иштетүү мүмкүн эмес. Мына ошондуктан биз эффекттерди тандап алдык, анткени алар аз ишенимдүүлүккө, бурмаланган үндү түзүүгө негизделген. Бул бир гана Arduino менен мүмкүн болгон эффекттер.

3 -кадам: Бөлүктөр / Куралдар керек

Бөлүктөр / Куралдар керек
Бөлүктөр / Куралдар керек

● Impact Drill

● Сым кескичтер

● Сым тазалагычтар

● Паяльник

● Hot Glue Gun

● Тазалоочу насос

● Гитара ● Корпус

● Solder

● Ысык клей

● Arduino

● Proto Board

● Капталган зым

● Аудио джекстер (x2)

● потенциометрлер (x3)

● Конденсаторлор: 2.2 uF (x2)

● Ачык жез зымы

● Бурамалар (M3.5 *8)

● Резисторлор: 1 к, 10 к, 1,2 к, 1,5 к, 390 к

● * Op Amp (LM358) / * Транзистор (2N3442)

4 -кадам: Техникалык стратегия

Техникалык стратегия
Техникалык стратегия

Ички микросхема

Киргизүү/чыгаруу

Гитарадан келген аудио сигналды arduino колдоно турган жана өзгөртө турган нерсеге айландырышыбыз керек. Андан кийин биз ардуинодон келген сигналды кайра аудио сигналга айландырышыбыз керек. Arduino 0Vдан 5Vга чейинки чыңалууларды окуйт, аудио сигналдар -1Vдан 1Vга чейин. Бул которуулар резисторлордун жардамы менен жасалат. Сигнал ошондой эле чыгаруу схемасында айландырылат.

Arduino китепканасы: ArduinoDSP

Долбоордун сүрөттөмөсү (Interface)

Knobs Knob 1: Sample Rate

2 -баскыч: Бит майдалагыч

3 -баскыч: Бит которгуч

5 -кадам: Код

Code
Code

#"dsp.h" кошуу

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

логикалык div32; логикалык div16;

туруксуз логикалык f_sample; туруксуз байт badc0; туруксуз байт badc1; туруксуз байт 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; байт bb;

байт dd [512]; // Audio Memory Array 8-Bit

void setup () {setupIO ();

// толкун 1 секунддан кийин кайра жүктөлөт fill_sinewave ();

// adc prescaler'ди 19 кГц ылдамдыкта cbi үчүн 64кө коюңуз (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // ADCH Register sbiдеги 8-бит ADC (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Timer2 PWM режими тез PWM cbiге коюлган (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Timer2 cbi үчүн орнотуу (TCCR2B, WGM22); // Timer2 Clock Prescaler: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM портун иштетүү sbi (DDRB, 3); // cli (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

void loop () {

// эффект потенциометринин жана айлануучу которгучтун абалын текшерүү readKnobs ();

// ************* // *** Кадимки *** // *************

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {байт киргизүү = analogRead (солдо); чыгаруу (сол, киргизүү); }

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

эгер (fx4> 100) {

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

while (! f_sample) {// ADCден үлгү маанисин күтө} // Цикл 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = жалган; bb = badc1; dd [icnt1] = bb; // буферге жазуу fx4 = iw * badc0 / 255; // потенциометр iw1 = dd [icnt2] менен кечиктирилген үлгү; // кечигүү буферин оку badc0 = badc0 / 20; // 512 icnt1 ++ чек чеги; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // чек индекси 0.. icnt1 = icnt1 & 511; // чек индекси 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // PWM Чыгаруусуна Үлгү Мааниси

PORTD = PORTD ^ 128; чыгаруу (сол, PORTD); // Чыгуу}

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

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

while (! f_sample) {// ADCден үлгү маанисин күтүү} // Цикл 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sample = жалган; bb = dd [icnt]; // кечигүү буферин оку iw = 127 - bb; // субстраттык жылыш fx3 = iw * badc0 / 255; // потенциометр менен масштаб кечиктирилген үлгү iw1 = 127 - badc1; // жаңы үлгүдөгү субстраттык жылыш iw1 = iw1 + iw; // кечиктирилген үлгүнү жана жаңы үлгүнү кошуу, эгерде (iw1 127) iw1 = 127; // Аудио чектөөчү bb = 127 + iw1; // кошуу dd [icnt] = bb; // үлгүнү аудио буферинде сактаңыз icnt ++; icnt = icnt & 511; // чектик буфериндекс 0..511 OCR2A = bb; // PWM Чыгаруусуна Үлгү Мааниси

PORTD = PORTD ^ 128; чыгаруу (сол, PORTD); // Чыгуу

} }

жараксыз 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; // (iw = 0; iw <= 511; iw ++) {// үчүн 512 байт буферликти толтуруңуз 50 sinewawe fd = 127 * sin (fcnt) менен; // фундаменталдык обон fcnt = fcnt + dx; // 0дон 2xpi жана 1/512 өсүш аралыгында bb = 127 + fd; // scwawe dc ордун кошуу dd [iw] = bb; // массивге маанини жазуу

} }

// ********************************************** ****************** // Timer2 Interrupt Service 62.5 KHz // бул жерде аудио жана казан сигналы ылдамдыкта тандалат: 16Mhz / 256/2/2 = 15625 Гц ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // бөлүү таймер2 жыштыгы / 2ден 31.25кГцке чейин (div32) {div16 =! div16; if (div16) {// 0 жана 1 үлгүлүү канал кезектешип ар бир каналга 15.6kHz badc0 = ADCH; // ADC каналын алуу 0 sbi (ADMUX, MUX0); // мультиплексорду 1 -каналга кой} башка {badc1 = ADCH; // ADC канал 1 cbi алуу (ADMUX, MUX0); // мультиплексорду 0 каналына коюу f_sample = true; } ibb ++; ibb--; ibb ++; ibb--; // конверсияны баштоо алдында кыска кечигүү sbi (ADCSRA, ADSC); // кийинки конверсияны баштоо}

}

6 -кадам: Видео

Потенциалдуу көйгөйлөр ● Пикап электр схемасы үчүн бир аз алсыз - оп -амп керек. - Видеодо сигналды күчөткүчтү колдондук. (Боз куту столдун үстүндө.)

Сунушталууда: