جدول المحتويات:
- الخطوة 1: المشكلة
- الخطوة 2: سياق المشروع
- الخطوة 3: الأجزاء / الأدوات المطلوبة
- الخطوة 4: الاستراتيجية الفنية
- الخطوة 5: الكود
- الخطوة 6: الفيديو
فيديو: NeckCrusher (دواسة ذات تأثير مُثبَّت على الجيتار): 6 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
ديل روزين وكارلوس رييس وروب كوخ
دات 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: الفيديو
المشاكل المحتملة ● الالتقاط ضعيف جدًا بالنسبة لدائرة الطاقة - تحتاج إلى أمبير المرجع. - في الفيديو استخدمنا معزز إشارة. (الصندوق الرمادي ملقى على الطاولة).
موصى به:
دواسة Overdrive تعمل بالبطارية DIY لتأثيرات الجيتار: 5 خطوات
دواسة Overdrive التي تعمل بالبطارية DIY لتأثيرات الجيتار: من أجل حب الموسيقى أو من أجل حب الإلكترونيات ، فإن الهدف من Instructable هو إظهار مدى أهمية سكة SLG88104V للسكك الحديدية I / O 375nA Quad OpAmp مع قدرتها المنخفضة والجهد المنخفض. يمكن أن يحدث ثورة في دوائر السرعة الزائدة. تاي
دواسة بروتو لتأثيرات الجيتار DIY: 5 خطوات (مع صور)
دواسة Proto لتأثيرات الجيتار DIY: يعد تصميم تأثيرات الجيتار الخاصة بك وبناءها طريقة رائعة للجمع بين شغفك بالإلكترونيات والغيتار. & nbsp؛ ومع ذلك ، عند اختبار التصميمات الجديدة ، وجدت أنه من الصعب توصيل الدائرة الهشة على اللوح غير الملحوم بالتصحيح c
دواسة زغب الجيتار: 6 خطوات (بالصور)
دواسة زغب الجيتار: إذن ، ارفع أيديكم من يحب الزغب؟ الجميع؟ حسن. أنا أعلم أنني أفعل. لا يوجد شيء يضاهي صوت الزغب القذر لإضفاء البهجة على يومي. الغيتار ، الجهير أو حتى القيثارة الكهربائية ، كل شيء يستفيد من التشويه الناتج عن الصمام الثنائي الثقيل. أحب صنع الأشياء تقريبًا
كيفية صنع تأثير FUZZ على الجيتار من مجموعة أدوات Aliexpress DIY: 20 خطوة (مع صور)
كيفية صنع تأثير جيتار FUZZ من مجموعة أدوات DIY الخاصة بـ Aliexpress: لقد حصلت على تأثير غيتار كهربائي DIY Fuzz على شكل AliExpress وكانت هناك معلومات متواضعة جدًا لدرجة أنني كنت أرغب في تقديم تعليمات إلى مستخدمين أو مشترين آخرين أقل خبرة. اذن هذا هو
Walabot FX - التحكم في تأثير الجيتار: 28 خطوة (بالصور)
Walabot FX - التحكم في تأثير الجيتار: تحكم في تأثير الجيتار المفضل لديك باستخدام لا شيء سوى وضعيات الجيتار الرائعة