Daftar Isi:

NeckCrusher (Pedal Efek yang Dipasang pada Gitar): 6 Langkah (dengan Gambar)
NeckCrusher (Pedal Efek yang Dipasang pada Gitar): 6 Langkah (dengan Gambar)

Video: NeckCrusher (Pedal Efek yang Dipasang pada Gitar): 6 Langkah (dengan Gambar)

Video: NeckCrusher (Pedal Efek yang Dipasang pada Gitar): 6 Langkah (dengan Gambar)
Video: HARUS PERCAYA DIRI & ANDALKAN TUHAN 2024, Juli
Anonim
NeckCrusher (Pedal Efek Terpasang Gitar)
NeckCrusher (Pedal Efek Terpasang Gitar)

Dale Rosen, Carlos Reyes dan Rob Koch

DATT 2000

Langkah 1: Masalah

Masalah
Masalah

Pedal gitar membatasi musisi ke platform pedal. Solusi: Bangun dan sematkan fungsionalitas pedal gitar ke dalam gitar itu sendiri. Hal ini memungkinkan musisi untuk bergerak bebas melintasi panggung, menggunakan leher gitar sebagai antarmuka alih-alih dibatasi pada lokasi pedalboard. Kami akan mengeksplorasi konsep ini dengan membuat perangkat efek bitcrusher/sample rate.

Langkah 2: Konteks Proyek

Konteks Proyek
Konteks Proyek

Ada banyak pedal gitar yang digunakan oleh musisi untuk memanipulasi suara gitar mereka. Sebagian besar biasanya dalam unit berbasis rak atau stomp box, oleh karena itu membatasi kontrol efek ke lokasi unit efek. Memasang perangkat pada gitar memungkinkan pemain untuk mengontrol parameter efek di mana saja di atas panggung. Ini berarti mereka tidak akan dibatasi dan dapat memiliki kebebasan untuk bergerak untuk kinerja mereka.

Karena Arduino hanya mampu audio 8 bit, tidak mungkin untuk melakukan pemrosesan sinyal fidelitas tinggi. Inilah mengapa kami memilih efek yang kami lakukan, karena didasarkan pada penciptaan suara terdistorsi dengan fidelitas rendah. Ini adalah satu-satunya efek yang cukup mungkin dengan Arduino.

Langkah 3: Bagian / Alat yang Diperlukan

Bagian / Alat yang Dibutuhkan
Bagian / Alat yang Dibutuhkan

● Latihan Dampak

● Pemotong Kawat

● Penari Telanjang Kawat

● Besi Solder

● Pistol Lem Panas

● Pompa Pematrian

● Gitar● Kandang

● Solder

● Lem Panas

● Arduino

● Papan Proto

● Kawat Dilapisi

● Soket Audio (x2)

● Potensiometer (x3)

● Kapasitor: 2,2 uF (x2)

● Kawat Tembaga Terkena

● Sekrup (M3.5 *8)

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

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

Langkah 4: Strategi Teknis

Strategi Teknis
Strategi Teknis

Sirkuit Internal

Input output

Kita perlu mengubah sinyal audio yang berasal dari gitar menjadi sesuatu yang dapat digunakan & dimodifikasi oleh arduino. Kami kemudian perlu mengubah sinyal yang datang dari arduino kembali menjadi sinyal audio. Arduino membaca tegangan dari 0V hingga 5V, sinyal audio dari -1V hingga 1V. Konversi ini dilakukan dengan menggunakan resistor. Sinyal akan dikonversi di sirkuit output juga.

Perpustakaan Arduino: ArduinoDSP

Deskripsi Proyek (Antarmuka)

Knob Knob 1: Tingkat Sampel

Tombol 2: Penghancur Bit

Knob 3: Pengalih Bit

Langkah 5: Kode

Kode
Kode

#sertakan "dsp.h"

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

div32 boolean; div16 boolean;

f_sample boolean yang mudah menguap; byte badc0 yang mudah menguap; byte badc1 yang mudah menguap; byte ibb yang mudah menguap;

int fx1; int fx2; int fx3; int fx4;

int cnta; int ict; int icnt1; int icnt2; int cnt2; int iw; int iw1; int iw2; byte bb;

byte dd[512]; // Array Memori Audio 8-Bit

batalkan pengaturan() { pengaturanIO();

// memuat ulang gelombang setelah 1 detik fill_sinewave();

// setel adc prescaler ke 64 untuk frekuensi sampling 19kHz cbi(ADCSRA, ADPS2); sbi(ADCSRA, ADPS1); sbi(ADCSRA, ADPS0); // 8-Bit ADC di ADCH Register sbi(ADMUX, ADLAR); sbi(ADMUX, REFS0); cbi(ADMUX, REFS1); cbi(ADMUX, MUX0); cbi(ADMUX, MUX1); cbi(ADMUX, MUX2); cbi(ADMUX, MUX3); // Mode PWM Timer2 disetel ke cbi PWM cepat (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); //Pengaturan untuk Timer2 cbi (TCCR2B, WGM22); // Timer2 Jam Prescaler ke: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Port Timer2 PWM Aktifkan sbi(DDRB, 3); //kli(); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = burukc1;

}

lingkaran kosong() {

//periksa status potensiometer efek dan sakelar putar readKnobs();

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

if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) { input byte = analogRead(kiri); keluaran (kiri, masukan); }

// ************* // ***Fasor*** // *************

jika (fx4 > 100) {

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

while (!f_sample) { // tunggu Nilai Sampel dari ADC } // Siklus 15625 KHz = 64uSec PORTD = PORTD | 128; f_sampel = salah; bb = badc1; dd[icnt1] = bb; // tulis ke buffer fx4 = iw * badc0 / 255; // skala sampel tertunda dengan potensiometer iw1 = dd[icnt2]; // baca buffer penundaan badc0 = badc0 / 20; // batasi nilai hingga 512 icnt1++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // batas indeks 0.. icnt1 = icnt1 & 511; // batas indeks 0.511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Nilai Contoh ke Output PWM

PORTD = PORTD^ 128; keluaran (kiri, PORTD); // Keluaran }

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

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

while (!f_sample) { // tunggu Nilai Sampel dari ADC } // Siklus 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sampel = salah; bb = dd[icnt]; // baca delay buffer iw = 127 - bb; // kurangi offset fx3 = iw * badc0 / 255; // skala sampel tertunda dengan potensiometer iw1 = 127 - badc1; // kurangi offset dari sampel baru iw1 = iw1 + iw; // tambahkan sampel tertunda dan sampel baru jika (iw1 127) iw1 = 127; // Pembatas audio bb = 127 + iw1; // tambahkan offset dd[icnt] = bb; // simpan sample di audio buffer icnt++; icnt = icnt & 511; // batas indeks buffer 0.511 OCR2A = bb; // Nilai Contoh ke Output PWM

PORTD = PORTD^ 128; keluaran (kiri, PORTD); // Keluaran

} }

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

}

void fill_sinewave() { float pi = 3.141592; mengambang dx; mengambang fd; fcnt mengambang; dx = 2 * pi / 512; // isi bufferarry 512 byte for (iw = 0; iw <= 511; iw++) { // dengan 50 titik sinewawe fd = 127 * sin(fcnt); // nada dasar fcnt = fcnt + dx; // dalam kisaran 0 hingga 2xpi dan peningkatan 1/512 bb = 127 + fd; // tambahkan dc offset ke sinewawe dd[iw] = bb; // tulis nilai ke dalam array

} }

//************************************************ ****************** // Layanan Interupsi Timer2 pada 62,5 KHz // di sini sinyal audio dan pot diambil dengan kecepatan: 16Mhz / 256 / 2 / 2 = 15625 Hz ISR(TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 = !div32; // bagi frekuensi timer2 / 2 menjadi 31,25kHz if (div32) { div16 = !div16; if (div16) { // saluran sampel 0 dan 1 secara bergantian sehingga setiap saluran diambil sampelnya dengan 15.6kHz badc0 = ADCH; // dapatkan saluran ADC 0 sbi(ADMUX, MUX0); // setel multiplexer ke saluran 1 } else { badc1 = ADCH; // dapatkan saluran ADC 1 cbi(ADMUX, MUX0); // setel multiplexer ke saluran 0 f_sample = true; } ibb++; ib--; ibb++; ib--; // penundaan singkat sebelum memulai konversi sbi(ADCSRA, ADSC); // mulai konversi berikutnya }

}

Langkah 6: Video

Potensi Masalah ● Pickup agak terlalu lemah untuk rangkaian daya - membutuhkan op amp. - Dalam video kami menggunakan penguat sinyal. (Kotak abu-abu tergeletak di atas meja.)

Direkomendasikan: