جدول المحتويات:

NeckCrusher (دواسة ذات تأثير مُثبَّت على الجيتار): 6 خطوات (بالصور)
NeckCrusher (دواسة ذات تأثير مُثبَّت على الجيتار): 6 خطوات (بالصور)

فيديو: NeckCrusher (دواسة ذات تأثير مُثبَّت على الجيتار): 6 خطوات (بالصور)

فيديو: NeckCrusher (دواسة ذات تأثير مُثبَّت على الجيتار): 6 خطوات (بالصور)
فيديو: Holiness (Part 1) | J C Ryle | Free Christian Audiobook 2024, شهر نوفمبر
Anonim
NeckCrusher (دواسة تأثير مثبتة على الجيتار)
NeckCrusher (دواسة تأثير مثبتة على الجيتار)

ديل روزين وكارلوس رييس وروب كوخ

دات 2000

الخطوة 1: المشكلة

مشكلة
مشكلة

تقيد دواسات الجيتار الموسيقي على منصة الدواسة. الحل: قم ببناء وظيفة دواسات الجيتار وتضمينها في الجيتار نفسه. يسمح هذا للموسيقي بالتحرك بحرية عبر المسرح ، باستخدام رقبة الجيتار كواجهة بدلاً من التقيد بموقع لوحة الدواسات. سنقوم باستكشاف هذا المفهوم من خلال إنشاء جهاز تأثير معدل العينة / كسارة البت.

الخطوة 2: سياق المشروع

سياق المشروع
سياق المشروع

هناك العديد من دواسات الجيتار التي يستخدمها الموسيقيون للتلاعب بصوت القيثارات الخاصة بهم. غالبًا ما تكون معظمها في وحدات قائمة على الرف أو وحدات صندوقية ، وبالتالي تقيد التحكم في التأثيرات في موقع وحدة التأثيرات. يتيح تركيب الجهاز على الجيتار للاعبين التحكم في معلمات التأثير في أي مكان على المسرح. هذا يعني أنه لن يتم تقييدهم ويمكن أن يتمتعوا بحرية التنقل من أجل أدائهم.

نظرًا لأن Arduino قادر فقط على تشغيل صوت 8 بت ، فمن المستحيل إجراء معالجة إشارة عالية الدقة. هذا هو السبب في أننا اخترنا التأثيرات التي قمنا بها ، لأنها تستند إلى إنشاء صوت مشوه منخفض الدقة. هذه هي التأثيرات الوحيدة الممكنة بشكل معقول مع Arduino.

الخطوة 3: الأجزاء / الأدوات المطلوبة

الأجزاء / الأدوات المطلوبة
الأجزاء / الأدوات المطلوبة

● تأثير الحفر

● قواطع الأسلاك

● أدوات تقشير الأسلاك

● لحام الحديد

● مسدس الغراء الساخن

● مضخة Desoldering

● الغيتار ● الضميمة

● اللحيم

● الغراء الساخن

● اردوينو

● مجلس بروتو

● الأسلاك المطلية

● مقابس الصوت (x2)

● مقاييس فرق الجهد (x3)

المكثفات: 2.2 فائق التوهج (x2)

● الأسلاك النحاسية المكشوفة

● براغي (M3.5 * 8)

● المقاومات: 1 ك ، 10 ك ، 1.2 ك ، 1.5 ك ، 390 ك

● * Op Amp (LM358) / * الترانزستور (2N3442)

الخطوة 4: الاستراتيجية الفنية

الإستراتيجية الفنية
الإستراتيجية الفنية

الدوائر الداخلية

الإدخال / الإخراج

نحتاج إلى تحويل الإشارة الصوتية القادمة من الغيتار إلى شيء يمكن أن يستخدمه اردوينو وتعديله. سنحتاج بعد ذلك إلى تحويل الإشارة القادمة من اردوينو إلى إشارة صوتية. يقرأ Arduino الفولتية من 0V إلى 5V ، والإشارات الصوتية من -1V إلى 1V. تتم هذه التحويلات باستخدام المقاومات. سيتم تحويل الإشارة في دائرة الإخراج أيضًا.

مكتبة اردوينو: ArduinoDSP

وصف المشروع (الواجهة)

المقابض مقبض 1: معدل العينة

المقبض 2: كسارة بت

المقبض 3: بت شيفتر

الخطوة 5: الكود

الشفرة
الشفرة

# تضمين "dsp.h"

# تعريف cbi (sfr ، بت) (_SFR_BYTE (sfr) & = ~ _BV (بت)) # تعريف sbi (sfr ، بت) (_SFR_BYTE (sfr) | = _BV (بت))

منطقية div32 ؛ منطقية div16 ؛

f_sample منطقية متقلبة ؛ البايت المتطاير badc0 ؛ البايت المتطاير badc1 ؛ البايت المتطاير ibb ؛

int fx1 ؛ int fx2 ؛ int fx3 ؛ int fx4 ؛

int cnta ICNT؛ int icnt1؛ int icnt2؛ كثافة العمليات cnt2 ؛ int iw int iw1 ؛ كثافة العمليات iw2 ؛ بايت ب ؛

بايت dd [512] ؛ // صفيف ذاكرة الصوت 8 بت

إعداد باطل () {setupIO () ؛

// إعادة تحميل الموجة بعد 1 ثانية fill_sinewave () ؛

// تعيين adc prescaler إلى 64 لتردد أخذ العينات 19 كيلو هرتز cbi (ADCSRA ، ADPS2) ؛ sbi (ADCSRA، ADPS1) ؛ sbi (ADCSRA، ADPS0) ؛ // 8-Bit ADC في ADCH Register sbi (ADMUX، ADLAR) ؛ sbi (ADMUX، REFS0) ؛ cbi (ADMUX، REFS1) ؛ cbi (ADMUX، MUX0) ؛ cbi (ADMUX، MUX1) ؛ cbi (ADMUX ، MUX2) ؛ cbi (ADMUX ، MUX3) ؛ // Timer2 PWM Mode مضبوط على سرعة 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 Port Enable sbi (DDRB، 3) ؛ // cli () ؛ cbi (TIMSK0، TOIE0) ؛ sbi (TIMSK2، TOIE2) ؛ iw1 = badc1 ؛

}

حلقة فارغة() {

// تحقق من حالة تأثير مقياس الجهد والمفتاح الدوراني readKnobs () ؛

// ************* // ***طبيعي*** // *************

إذا (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {إدخال بايت = analogRead (يسار) ؛ الإخراج (يسار ، إدخال) ؛ }

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

إذا (fx4> 100) {

fx1 = 0 ؛ fx2 = 0 ؛ fx3 = 0 ؛

while (! f_sample) {// انتظر عينة القيمة من ADC} // Cycle 15625 KHz = 64uSec PORTD = PORTD | 128 ؛ f_sample = خطأ ؛ ب ب = badc1 ؛ dd [icnt1] = ب ب ؛ // الكتابة إلى المخزن المؤقت 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 ؛ ب = iw2 ؛ OCR2A = ب ب ؛ // قيمة العينة لإخراج PWM

PORTD = PORTD ^ 128 ؛ الإخراج (يسار ، PORTD) ؛ // انتاج }

// ************* // *** Flanger *** // ************* إذا (fx3> 100) {

fx1 = 0 ؛ fx2 = 0 ؛ fx4 = 0 ؛

while (! f_sample) {// انتظر عينة قيمة من ADC} // Cycle 15625 KHz = 64uSec

PORTD = PORTD | 128 ؛ f_sample = خطأ ؛ bb = dd [icnt] ؛ // قراءة مخزن التأخير iw = 127 - bb ؛ // استبدال تعويض fx3 = iw * badc0 / 255 ؛ // مقياس العينة المتأخرة باستخدام مقياس الجهد iw1 = 127 - badc1 ؛ // استبدال الإزاحة من العينة الجديدة iw1 = iw1 + iw ؛ // إضافة عينة متأخرة وعينة جديدة إذا (iw1127) iw1 = 127 ؛ // محدد الصوت bb = 127 + iw1 ؛ // add offset 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 ؛ تعويم dx تعويم fd تعويم fcnt dx = 2 * pi / 512 ؛ // ملء المخزن المؤقت 512 بايت لـ (iw = 0 ؛ iw <= 511 ؛ iw ++) {// مع 50 فترة sinewawe fd = 127 * sin (fcnt) ؛ // نغمة أساسية fcnt = fcnt + dx ؛ // في النطاق من 0 إلى 2xpi وزيادات 1/512 bb = 127 + fd ؛ // إضافة تعويض التيار المستمر إلى sinewawe dd [iw] = bb ؛ // اكتب القيمة في المصفوفة

} }

// ************************************************** ******************** // Timer2 Interrupt Service عند 62.5 كيلو هرتز // هنا يتم أخذ عينات إشارة الصوت والوعاء بمعدل: 16 ميجا هرتز / 256/2/2 = 15625 هرتز ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1 ؛

div32 =! div32 ؛ // divide timer2 frequency / 2 إلى 31.25 كيلو هرتز إذا (div32) {div16 =! div16؛ if (div16) {// sample channel 0 و 1 بالتناوب بحيث يتم أخذ عينات من كل قناة باستخدام 15.6 كيلو هرتز badc0 = ADCH ؛ // احصل على قناة ADC 0 sbi (ADMUX ، MUX0) ؛ // ضبط المضاعف على القناة 1} else {badc1 = ADCH ؛ // احصل على قناة ADC 1 cbi (ADMUX ، MUX0) ؛ // ضبط معدد الإرسال على القناة 0 f_sample = صحيح ؛ } ibb ++ ؛ ibb-- ؛ ibb ++ ؛ ibb-- ؛ // تأخير قصير قبل بدء التحويل sbi (ADCSRA ، ADSC) ؛ // بدء التحويل التالي}

}

الخطوة 6: الفيديو

المشاكل المحتملة ● الالتقاط ضعيف جدًا بالنسبة لدائرة الطاقة - تحتاج إلى أمبير المرجع. - في الفيديو استخدمنا معزز إشارة. (الصندوق الرمادي ملقى على الطاولة).

موصى به: