İçindekiler:
- 1. Adım: Sorun
- 2. Adım: Proje İçeriği
- Adım 3: Gerekli Parçalar / Araçlar
- Adım 4: Teknik Strateji
- Adım 5: Kod
- 6. Adım: Video
Video: NeckCrusher (Gitar Üstü Efekt Pedalı): 6 Adım (Resimli)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Dale Rosen, Carlos Reyes ve Rob Koch
DATT 2000
1. Adım: Sorun
Gitar pedalları müzisyeni pedal platformuyla sınırlandırır. Çözüm: Bir gitar pedalı işlevi oluşturun ve gitarın içine gömün. Bu, müzisyenin pedal tahtasının konumuyla sınırlandırılmak yerine gitar sapını bir arayüz olarak kullanarak sahnede özgürce hareket etmesine izin verir. Bir bit kırıcı/örnek oranı efekt cihazı oluşturarak bu konsepti keşfedeceğiz.
2. Adım: Proje İçeriği
Müzisyenlerin gitarlarının sesini manipüle etmek için kullandıkları birçok gitar pedalı vardır. Bunların çoğu genellikle raf tabanlı veya pedallı ünitelerde bulunur, bu nedenle efektlerin kontrolünü efekt ünitesinin konumuyla sınırlar. Cihazı gitara monte etmek, oyuncuların efekt parametrelerini sahnenin herhangi bir yerinde kontrol etmelerini sağlar. Bu, kısıtlanmayacakları ve performansları için hareket etme özgürlüğüne sahip olabilecekleri anlamına gelir.
Arduino sadece 8 bit ses kapasitesine sahip olduğundan, yüksek kaliteli sinyal işleme yapmak imkansızdır. Bu nedenle yaptığımız efektleri seçtik, çünkü bunlar düşük kaliteli, bozuk bir ses oluşturmaya dayanıyor. Arduino ile makul olarak mümkün olan tek efektler bunlar.
Adım 3: Gerekli Parçalar / Araçlar
● Darbeli Matkap
● Tel Kesiciler
● Tel Sıyırıcılar
● Havya
● Sıcak Tutkal Tabancası
● Lehim Sökme Pompası
● Gitar● Muhafaza
● Lehim
● Sıcak Tutkal
● Arduino
● Proto Kartı
● Kaplamalı Tel
● Ses Jakları (x2)
● Potansiyometreler (x3)
● Kondansatörler: 2,2 uF (x2)
● Açık Bakır Tel
● Vidalar (M3.5 *8)
● Dirençler: 1 k, 10 k, 1,2 k, 1,5 k, 390 k
● * Op Amp (LM358) / * Transistör (2N3442)
Adım 4: Teknik Strateji
Dahili Devre
Giriş çıkış
Bir gitardan gelen ses sinyalini arduino'nun kullanabileceği ve değiştirebileceği bir şeye dönüştürmemiz gerekiyor. Daha sonra arduinodan gelen sinyali tekrar bir ses sinyaline dönüştürmemiz gerekecek. Arduino 0V ila 5V arasındaki voltajları okur, ses sinyalleri -1V ila 1V arasındadır. Bu dönüşümler dirençler kullanılarak yapılır. Sinyal, çıkış devresinde de dönüştürülecektir.
Arduino Kütüphanesi: ArduinoDSP
Proje Açıklaması (Arayüz)
Düğmeler Düğme 1: Örnekleme Hızı
Düğme 2: Bit Kırıcı
Düğme 3: Bit Kaydırıcı
Adım 5: Kod
#"dsp.h"yi dahil et
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
boolean div32; boolean div16;
uçucu boole f_sample; uçucu bayt badc0; uçucu bayt badc1; uçucu bayt 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; bayt bb;
bayt dd[512]; // Ses Bellek Dizisi 8-Bit
geçersiz kurulum() { setupIO();
// 1 saniye sonra dalgayı yeniden yükle fill_sinewave();
// 19kHz örnekleme frekansı için adc ön ölçekleyicisini 64'e ayarlayın cbi(ADCSRA, ADPS2); sbi(ADCSRA, ADPS1); sbi(ADCSRA, ADPS0); // ADCH Register'da 8-Bit ADC sbi(ADMUX, ADLAR); sbi(ADMUX, REFS0); cbi(ADMUX, REFS1); cbi(ADMUX, MUX0); cbi(ADMUX, MUX1); cbi(ADMUX, MUX2); cbi(ADMUX, MUX3); // Timer2 PWM Modu hızlı PWM cbi'ye ayarlandı (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); //Timer2 cbi için kurulum (TCCR2B, WGM22); // Timer2 Clock Precaler to: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Port Etkinleştir sbi(DDRB, 3); //cli(); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = kötüc1;
}
boşluk döngüsü () {
//etki potansiyometresinin ve döner anahtarın readKnobs() durumunu kontrol edin;
// ************* // ***Normal*** // *************
if (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) { bayt girişi = analogRead(sol); çıktı(sol, girdi); }
// ************* // ***Fazör*** // *************
if (fx4 > 100) {
fx1 = 0; fx2 = 0; fx3 = 0;
while (!f_sample) { // ADC'den Örnek Değeri Bekle } // Döngü 15625 KHz = 64uSec PORTD = PORTD | 128; f_örnek = yanlış; bb = kötüc1; dd[icnt1] = bb; // ara belleğe yaz fx4 = iw * badc0 / 255; // gecikmeli numuneyi potansiyometre ile ölçeklendir iw1 = dd[icnt2]; // gecikme arabelleğini oku badc0 = badc0 / 20; // değeri 512 icnt1++ ile sınırla; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // limit indeks 0.. icnt1 = icnt1 & 511; // limit indeksi 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // PWM Çıkışına Örnek Değer
PORTD = PORTD ^ 128; çıktı(sol, PORTD); // Çıktı }
// ************* // ***Flanger*** // ************* if (fx3 > 100) {
fx1 = 0; fx2 = 0; fx4 = 0;
while (!f_sample) { // ADC'den Örnek Değeri Bekle } // Döngü 15625 KHz = 64uSec
PORTD = PORTD | 128; f_örnek = yanlış; bb = dd[icnt]; // gecikme arabelleğini oku iw = 127 - bb; // ofset çıkar fx3 = iw * badc0 / 255; // gecikmeli numuneyi potansiyometre ile ölçeklendir iw1 = 127 - badc1; // yeni örnekten ofseti çıkar iw1 = iw1 + iw; // gecikmeli örnek ve yeni örnek ekle eğer (iw1 127) iw1 = 127; // Ses sınırlayıcı bb = 127 + iw1; // ofset ekle dd[icnt] = bb; // örneği ses arabelleğinde sakla icnt++; icnt = icnt & 511; // arabellek indeksini sınırla 0..511 OCR2A = bb; // PWM Çıkışına Örnek Değer
PORTD = PORTD ^ 128; çıktı(sol, PORTD); // Çıktı
} }
geçersiz readKnobs() { fx1 = analogRead(1); fx2 = analogRead(2); fx3 = analogRead(3); fx4 = analogRead(4);
}
void fill_sinewave() { kayan nokta pi = 3.141592; yüzer dx; yüzer fd; yüzer fcnt; dx = 2 * pi / 512; // (iw = 0; iw <= 511; iw++) için 512 bayt arabelleği doldurun { // 50 nokta ile sinewawe fd = 127 * sin(fcnt); // temel ton fcnt = fcnt + dx; // 0 ila 2xpi aralığında ve 1/512 artışlarla bb = 127 + fd; // sinewawe'ye dc ofset ekle dd[iw] = bb; // diziye değer yaz
} }
//******************************************************* ****************** // 62.5 KHz'de Timer2 Kesinti Hizmeti // burada ses ve pot sinyali şu hızda örneklenir: 16Mhz / 256 / 2 / 2 = 15625 Hz ISR(TIMER2_OVF_vect) {
PORTB = PORTB | 1;
div32 = !div32; // timer2 frekansını / 2'yi 31.25kHz'e böl if (div32) { div16 = !div16; if (div16) { // alternatif olarak kanal 0 ve 1'i örnekleyin, böylece her kanal 15.6kHz ile örneklenir badc0 = ADCH; // ADC kanalını al 0 sbi(ADMUX, MUX0); // çoklayıcıyı kanal 1'e ayarla } else { badc1 = ADCH; // ADC kanal 1'i al cbi(ADMUX, MUX0); // çoklayıcıyı kanal 0'a ayarla f_sample = true; } ibb++; ibb--; ibb++; ibb--; // dönüştürmeye başlamadan önce kısa gecikme sbi(ADCSRA, ADSC); // sonraki dönüşümü başlat }
}
6. Adım: Video
Olası Sorunlar ● Başlatma, güç devresi için biraz fazla zayıf - bir op amp gerekir. - Videoda sinyal güçlendirici kullandık. (Masanın üzerinde duran gri kutu.)
Önerilen:
Phaser Gitar Pedalı: 14 Adım (Resimli)
Phaser Gitar Pedalı: Phaser gitar pedalı, bir sinyali bölen, devre boyunca bir yolu temiz bir şekilde gönderen ve ikincinin fazını değiştiren bir gitar efektidir. İki sinyal daha sonra tekrar karıştırılır ve faz dışı olduğunda birbirini iptal eder. Bu öyle bir oluşturur ki
Arduino Gitar Pedalı: 23 Adım (Resimli)
Arduino Gitar Pedalı: Arduino Gitar Pedalı, orijinal olarak Kyle McDonald tarafından yayınlanan Lo-Fi Arduino Gitar Pedalını temel alan dijital çok efektli bir pedaldır. Orijinal tasarımında birkaç değişiklik yaptım. En göze çarpan değişiklikler, yerleşik preamp ve ac
Raspberry Pi Zero Gitar Pedalı: 5 Adım (Resimli)
Raspberry Pi Zero Guitar Pedal: Pedal-Pi, Raspberry Pi ZERO Board ile çalışan lo-fi programlanabilir bir gitar pedalıdır. Proje tamamen Açık Kaynak & Açık Donanım ve seslerle denemeler yapmak ve kazı hakkında bilgi edinmek isteyen bilgisayar korsanları, programcılar ve müzisyenler için yapılmıştır
ATMega1284P Gitar ve Müzik Efekt Pedalı: 6 Adım (Resimli)
ATMega1284P Gitar ve Müzik Efektleri Pedalı: Arduino Uno ATMega328 Pedalshield'i (Electrosmash tarafından geliştirilen ve kısmen Açık Müzik Laboratuvarı'ndaki çalışmaya dayalı olarak) Uno'dan sekiz kat daha fazla RAM'e sahip olan ATMega1284P'ye taşıdım (16kB'ye karşı 2kB). Beklenmeyen ek bir fayda
DIY Rat Clone Distortion Gitar Efekt Pedalı - Ölü RAT: 5 Adım (Resimlerle)
DIY Rat Clone Distortion Gitar Efekt Pedalı - Ölü RAT: Bu, Mickey Mouse distorsiyon pedalı değil! Bu pedal, 80'lerdeki favori efekt pedallarımdan birinin klonu… ProCo'nun RAT Distortion'ı. Oldukça basit bir yapı olan klasik LM308N IC çipini kullanan temel bir OpAmp distorsiyon pedalıdır