العالم الداخلي للفومانتس P432



قصة كيف اشتريت آلة توليفة بشكل غير متوقع ، أصلحتها ، اكتشفت كيف تعمل ، وكتبت محاكيًا.

بدأت هذه القصة خلال مهرجان تشاوس للإنشاءات في نهاية الأسبوع الماضي في أغسطس 2019. أثناء النظر إلى Avito في المساء بحثًا عن القطع الأثرية المثيرة للاهتمام التي تعود إلى حقبة ماضية ، صادفت جهاز توليف Formant P432 رخيص الثمن. بدا الأمر مألوفًا تمامًا بالنسبة إلى المزج الرقمي: يوجد في الجزء السفلي لوحة مفاتيح مؤلفة من 41 مفتاحًا (3.5 أوكتافات) ، وفي الجزء العلوي هناك أزرار لاختيار نغمة ، وتشغيل جوقة وتأثيرات انسجام ، وكذلك مقابض لضبط تأثير الاهتزاز. يتم تثبيت ذراع التحكم على يسار لوحة المفاتيح ، مما يسمح لك بإزاحة الملعب لأعلى ولأسفل ، بالإضافة إلى توصيل الاهتزاز بسلاسة.

كان الشيء الأكثر إثارة للاهتمام بالنسبة لي هو أن هذا المزج كان رقميًا وأنشأ أصواتًا باستخدام طريقة wavetable ، أي أنه في وقت الضغط على المفتاح ، قام بإنشاء صوت بناءً على بيانات جدولية مخزنة في رقائق ROM. بعد التعارف السريع مع الدوائر على الإنترنت ، أصبح من الواضح أن التحكم في المزج يعتمد على المعالج الدقيق المعروف KP580VM80 (i8080) ، ويتم تخزين الأصوات في 8 شرائح ROM مع إجمالي حجم 8 * 2 = 16 كيلو بايت.

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

ولكن الدافع الرئيسي للشراء كان الرغبة في التعامل مع الجهاز الداخلي واستخراج عينات من الأصوات من ذاكرة القراءة فقط في المزج.

إخلاء المسئولية : تم اختراع أسماء الأجزاء المكونة لعقد المزج والإشارات (بخلاف تلك المشار إليها في "علامات اقتباس" وأحرف كبيرة) من قبلي وقد تختلف عن ما يقصده المطورون. يعتمد وصف تشغيل العقد على معرفتي (المحدودة) ، والمواد من الإنترنت ونصيحة الأشخاص ذوي الخبرة.

إصلاحات


عندما حصلت علي P432 [ 2 ] آمنة وسليمة ، أول شيء فعلته هو تفكيكها. في الداخل لم أكن أتوقع مشهدًا رائعًا من حزم الأسلاك والعديد من لوحات الدوائر المطبوعة.

عقدة التحكم
اللوحة التي تكون فيها الأزرار والضوابط على اللوحة الأمامية ملحومة ، بالإضافة إلى إشارة إلى أوضاع التشغيل.

عقدة المعالج
أنه يحتوي على المعالج الدقيق KR580VM80 ورقائق 580 أخرى ، 2KB ROM على RF2 ، ورقتي ذاكرة الوصول العشوائي الساكنة بسعة إجمالية 256 بايت (K541RU2). أيضًا ، يتم تثبيت وحدات فك الترميز على اللوحة ، التي تخصص أجزاء من مساحة العنوان للتفاعل مع لوحة المفاتيح ، مع أزرار التحكم والسجلات ، عند إخراج إشارات التحكم التي يتم إنشاؤها لعقدة المولد.

واجهة واجهة MIDI
يتم تثبيته أعلى عقدة المعالج ويتألف من ROM منفصل مع إجراءات MIDI المراسلة ، والمنطق الدقيق واثنين من الدوائر الصغيرة الكبيرة: وحدة تحكم المقاطعة VN59 واجهة BB51 في سلسلة. بالنسبة لجهات الاتصال TX / RX VN51 ، يتم توصيل دائرة تنفيذ حلقة التيار القياسية المتوسطة مع عزل optocoupler.

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

مجموعة المولدات
الوحدة الرئيسية من المزج. يحتوي على 8 شرائح ذاكرة وصول عشوائي (ROM) بسعة 2 كيلوبايت ، والمنطق الرقمي (السجلات ، والإضافات) ، واثنان من DAC ، ومرشح تناظري مع معلمات متغيرة ، وثبات حراري. تحتوي العقدة أيضًا على مولد ساعة يتم مزامنة تشغيل سجلات عقدة المعالج به. تحتوي اللوحة البنت الموجودة على هذه العقدة على لوحة VCO (مولد يتم التحكم فيه بالجهد) ، وهي عبارة عن مصنع يتم تنقيحه من المراجعات اللاحقة من المزج.

المعدل المعدل والتجمع
مصدر طاقة خطي ينتج + 5 فولت للطاقة المنطقية و + 12 / -15 فولت لمكبرات الصوت التشغيلية. تم تثبيت + 5 فولت بواسطة KR142EN5 ، والذي يكون المبرد هو العلبة المعدنية للمُخلِق ، و + 12 / -15 فولت هو أبسط مثبتات حدوديّة على ثنائيات زينر والترانزستورات. يتم تشكيل جهد إمداد إضافي من -5V لـ KR580VM50 بواسطة صمام ثنائي زينر من -15 فولت مباشرةً على لوحة وحدة المعالج. يتم فصل الأرض التناظرية والرقمية بشكل منفصل ويتم توصيلها فقط في هذه الكتلة.

لوحة المفاتيح الصك
مفتاح Reed ، غير حساس للسرعة ، كما هو الحال في أجهزة المزج الأخرى في مصنع راديو Kachkanar من Formant.



ترجع إزالة عقدة MIDI على لوحة منفصلة مع ROM الخاص بها إلى وجود مُزج آخر في خط P432 - "Formant MINI" ، الذي لا يحتوي على واجهة MIDI وتأثير HOR. تختلف عقدة المعالج MINI قليلاً في البرامج الثابتة ، وعقدة المولد هي نفسها كما في P432.

لذلك ، عند تشغيلي لأول مرة ، لاحظت مشكلتين: مستوى إشارة ضعيف للغاية في الخرج الخطي والصوت المذكور بالفعل عند الضغط على أكثر من مفتاح في وقت واحد. تجدر الإشارة إلى أن P432 عبارة عن توليف مجسمة ، ويمكن أن تلعب في وقت واحد 4 أصوات (ترددات) من جرس واحد. ومع تضمين تأثير UNISON ، يرتفع عدد الأصوات التي يتم التعبير عنها في وقت واحد إلى 8 ، اثنان لكل مفتاح.

تم العثور على سبب الصوت الهادئ على الفور تقريبًا ، وكان الناتج المحترق OU K544UD1A هو السبب.

بعد استبدالها ، بدأت الأداة تصدر صوتًا عاليًا حتى عند توصيل سماعات الرأس المنفعلة بالإخراج.

ولكن مع الأصوات الغريبة ، كان الموقف غير مفهوم للغاية ، لأنه حتى عندما تم الضغط على المفاتيح الفردية ، لم تكن أصوات النغمات مثل العرض التوضيحي P432 من youtube.

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

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

  • كيف هي عملية توليف الصوت
  • ما يتم تخزينه في ROM من وحدة المولد
  • كيف يعمل المرشح وخصائصه
  • حيث يتم تخزين التكوين لكل نغمة والمعلمات المغلف

كانت نتيجة هذا العمل هي محاكاة برامج P432 باستخدام بيانات من ROM الأصلي.

مجموعة المولدات


يتكون الشكل الموجي عند إخراج DAC الرئيسي لوحدة المولد من مبدأ التوليف الرقمي المباشر (DDS) [ 1 ]. يتم تمرير الإشارة التناظرية المستقبلة عبر مرشح تمرير منخفض ، ثم ، إذا لزم الأمر ، يتم خلطها مع إخراج مجموعة الكورال ، تضخيمها بواسطة مضخم إخراج ، ويتم تغذيتها إلى خرج خطي. يتكون المرشح في P432 وفقًا للمخطط المستخدم مسبقًا في مُصنع Polyvox [ 3 ].


يوضح المخطط وحدة المولد وكتله الوظيفية الرئيسية. تشير الأسهم البرتقالية إلى مدخلات ومخرجات الإشارات الرقمية الخارجية ، والإشارات الرقمية السوداء داخل الوحدة ، والإشارات التناظرية الزرقاء.


أولاً ، فكر في المدخلات والمخرجات:

  • "تردد" الإدخال (11 بت) - لكل صوت ، بما في ذلك انسجام ، والقيم المقابلة للمفتاح المضغوط أو مذكرة MIDI تأتي من عقدة المعالج.
  • مدخلات المضخم (8 بت) - قيمة المغلف لسعة الإشارة.
  • إدخال "مرشح" (8 بت) - قيم غلاف الظرف الخاص بتردد القطع للمرشح.
  • إدخال "التحكم" - (8 بت) - 3 بتات الأقل أهمية هي المسؤولة عن اختيار شكل الموجة ، و 2 بت لإزاحة المرشح ، واثنين آخرين لمستوى جودة مرشح Q (الرنين) ويحدد الجزء الأخير ما إذا كان تأثير UNISON قيد التشغيل أم لا.
  • الإخراج "العنوان" (3 بت) - المسؤول عن التزامن مع عقدة المعالج.

الآن لنرى كيف تعمل الكتل الرئيسية للعقدة.

تولد دارة التزامن بمساعدة متعددة الهزازات ، عناصر مضادة ومنطقية نبضات تحكم للعديد من وحدات وحدة المولد وتعطي الرقم الصوتي الحالي للمخرج "العنوان". عندما يكون وضع "العنوان" UNISON نشطًا ، فإنه يأخذ القيم [0،1،2،3،4،5،6،7] وعندما يكون غير نشط: [0،2،4،6]. يمكن تغيير تردد المذبذب الرئيسي إلى حدٍ كبير باستخدام مقبض الضبط الموجود على اللوحة الأمامية وعصا التحكم على يسار لوحة المفاتيح.

مخطط توقيت نبضات الساعة. تفسيرات: انسجام - سجل. 0 المستوى النشط ، FA0-2 - إخراج "العنوان" ، DD8-12 - سجل مجمع الطور ، DD33-35 - سجل التصويت الكلي ، DD36-37 - سجل لجنة المساعدة الإنمائية.


الجزء الرقمي من لوحة المولد لكل من 4 (8) أصوات في وقت واحد مع تغيير في قيمة الإخراج "العنوان" ينفذ العمليات التالية. من عقدة المعالج ، يستقبل إدخال "التكرار" قيم تردد الإشارة. يتم تحويل القيمة الخطية للتردد إلى زيادة الطور بواسطة وحدة فك الترميز على ROM. يتم تلخيص الزيادات في تراكم الطور (20 بت) ، والذي يتكون من أفعى وذاكرة وصول عشوائي مكونة من 8 كلمات. يتم تغذية أعلى 9 بت من المجموع إلى مدخلات عنوان ROM الموجي. يتم اختيار منطقة ROM محددة بواسطة البتات الثلاثة الأقل دلالة من دخل "التحكم". يتم تلخيص 10 بتات من إخراج ROM بالقيمة عند إدخال "المضخم" ويتم تغذيتها إلى مدخلات ROM للتحجيم ، الذي يولد رمز ثنائي القطب لـ DAC. يقع الإخراج في المخزن المؤقت التراكم ، مبني على إضافات وسجلات ، والتي تلخص بالتتابع قيم الكود لجميع الأصوات (8) 4. في نهاية كل دورة ، يتم قفل الرمز النهائي بواسطة سجل التخزين ويصل إلى DAC ذي 12 بت. إن تكرار إصدار الكود على DAC هو تردد أخذ العينات للإشارة ، وبالنسبة لـ P432 حوالي 33 كيلو هرتز. وفقًا لـ Nyquist ، يبلغ الحد الأقصى لتردد الصوت المتاح لمولد P432 حوالي 16.5 كيلو هرتز.

إذا كانت النغمة المحددة تتطلب تغييرًا ديناميكيًا لمعلمات المرشح ذي المرور المنخفض ، فإن قيم الظرف يتم إخراجها إلى دخل المرشح ، الذي يمثل ، عبر DAC ذي 10 بتات ، الجهد الكهربي للتحكم في مرشح op-amp. يتم تصنيع المرشح منخفض التمرير وفقًا لمرشح غير المكثف لمرشح الحالة المتغير ويتضمن دائرة تثبيت درجة الحرارة وكتلة لتغيير عامل Q في Q والتحيز الأولي.


يُظهر مخطط التوقيت هذا فترتين لتقدير لوحة المولد. انسجام. يتلقى إدخال التردد (Freq_in) بشكل متزامن مع تغيير العنوان أرقام التردد لأربعة مفاتيح مختلفة. ولكن يتم ضغط فقط الأخيرتين منهم (Volume_in = 0xFF). في الوقت نفسه ، يتم إصدار قيمة ثابتة (Filter_in = 0x60) لمدخلات "Filter". الرمز النهائي هو إدخال إلى DAC (DAC) بعد التقاط في سجلات التخزين (DD36-37).

ل UNISON المدرجة
يبدو كل شيء كما هو ، فقط إدخال "التردد" يتلقى زوجًا من الأرقام: للحصول على الصوت والانسجام الرئيسي.

ملاحظة: يتم عرض فترة واحدة فقط.



وصف أكثر تفصيلا لمجموعة المولد


فيما يلي التفاصيل والمخططات التخطيطية الكهربائية لأولئك الذين يرغبون في فهم جهاز المزج بمزيد من التفاصيل. تم العثور على الدوائر على الإنترنت ، على الرغم من أن كتيب التشغيل [ 4 ] ومجموعة كاملة من الدوائر الورقية [ 5 ] تم إرفاقها بمزجعي. شارك الأشخاص الطيبون الأرشيف مع محتويات جميع ROMs في منتدى واحد ، ولكن كما اتضح ، حدث خطأ في أحد الملفات ، لذلك اضطررت إلى إلغاء الاشتراك في ROMs الفردية ومقارنتها مع البرامج الثابتة في الأرشيف.

تجدر الإشارة إلى أنه أثناء إنتاج P432 ، أصدرت الشركة المصنعة عدة تنقيحات من لوحات المزج من أجل تحسين الخصائص التقنية ، والتي قد تختلف عن مخططات المراجعة الأولى المعروضة أدناه.



  1. يحتوي ROM - زيادة تحويل ROM - DD1-2 ، الذي تم تنفيذه على جهازي 573RF2 ، على جدول مراسلات لقيمة التردد الخطي بزيادة الطور الأسي. بيانيا ، محتوياته تبدو مثل هذا



    بشكل متزامن مع حدوث تغيير في القيمة في مخرجات "العنوان" ، تصدر عقدة المعالج قيمة تردد 11 بت للصوت المقابل لإدخال "التردد" ، والتي يتم تحويلها إلى زيادات 16 بت.

    إذا أخذنا في الاعتبار محتويات أول 16 كلمة من DD1-2 ، تتم كتابة بعض الأرقام الغريبة التي تبدو غير مستخدمة في تركيب الصوت:

  2. تراكم الطور - يتكون من إضافات DD3-7 (561IM1) وسجلات DD8-12 (561IR11). يتم تضمين إضافات في السلسلة بسعة إجمالية قدرها 20 بت. تسمح لك كتلة التسجيل بتخزين ثماني قيم طور إشارة 20 بايت. يتم توصيل مدخلات عنوان سجلات القراءة / الكتابة بالحافلة "العنوان". يتيح لك هذا التضمين الحصول على القيمة السابقة عند إخراج نبض الساعة وحفظ القيمة الحالية من الإدخال. هذا يضمن تراكم المرحلة بشكل منفصل لكل جهاز صوتي. يتم تغذية 9 بت عالية من إخراج التسجيل إلى مدخلات عنوان ROM الموجي.
  3. يحتوي ROM waveform - DD13-14 ، DD18-19 (5732) على جداول من ثمانية أشكال موجية يمكن توليفها بواسطة مجموعة المولد. يتم تحديد منطقة ذاكرة محددة وزوج من الأقراص المدمجة بواسطة البتات S0-S2 من إشارة "التحكم". تحت وصف كل إشارة ، يتم تخصيص 512 كلمة بسعة بت من 11 بت. أهم 10 بت له غرض فائدة ، مما يشير إلى قطبية الإشارة: 1-موجب ، 0 سلبي. يتم إعطاء ظهور الأشكال الموجية مع مراعاة عكس القيم السلبية:

    Wave_00
    Wave_01
    Wave_02
    Wave_03
    Wave_04
    Wave_05
    Wave_06
    Wave_07
  4. Envelope Adder - 8 Amp Envelope (تحول إلى اليسار بمقدار 2 بت) ، والتي يتم تلخيصها على عناصر DD23-25 ​​(561IM1) مع 10 بتات الإخراج الأقل أهمية من ROM الموجي ، هو إدخال إلى إدخال مكبر للصوت. يحتوي المغلف على 4 مراحل: الهجوم ، الاضمحلال ، الاستدامة ، الإطلاق ، والتي يتم تشكيلها بواسطة وحدة المعالج بشكل منفصل لكل من الأصوات الأربعة الرئيسية اعتمادًا على الوقت الذي يتم فيه الضغط / إطلاق المفتاح.
    مثال على مظروف للنغمة 00: من الواضح أن الهجوم السريع إلى 255 مرئي بوضوح ، ثم الانخفاض إلى مستوى الدعم 239 ، ثم الانخفاض السلس في المستوى ، والذي ينتهي بتوهين حاد إلى 0 عند تحرير المفتاح. على المحور الأفقي هو الوقت بالثواني ، على المحور العمودي هي قيمة الإدخال "مكبر للصوت".

    مغلف الإدخال \ "مكبر للصوت \"


    يتم تحديد القيم في ROM المزج بطريقة بحيث عند 0 من عند إدخال "Amplifier" ، فإن ناتج DAC سيكون له أيضًا مستوى إشارة صفرية ، على الرغم من أن جميع الدوائر الوسيطة تغير باستمرار قيم المتغيرات وتولد إشارات مختلفة.
  5. يحتوي ROM التحجيم ، الذي يتكون من DD27-28 (5732) ، على منحنيات للحصول على رمز الإشارة الثنائية القطب وفقًا لقيمة البت العالي الترتيب للموجة. في شكل رسوم بيانية ، تبدو محتويات ROM مثل هذا.



    إذا كانت قيمة البتة 10 هي 1 ، فسيتم استخدام القيمة من الإخراج DD28 + 256 ، وإذا كانت 0 ، ثم DD27 + 1.
  6. يجمع مُجمّع الأصوات على DD30-32 (561IM1) ويسجل DD33-DD35 (5619) قيم رموز جميع الأصوات قبل إصدارها إلى DAC. بعد معالجة رمز آخر صوت ، يتم نقل القيمة المستلمة إلى سجل التخزين ، وتتم إعادة تعيين سجل الأفعى إلى صفر.

    على سبيل المثال: كما ذكر أعلاه ، إذا كان "Amplifier" = 0 ، والحد الأقصى لقيمة السعة الممكنة عند إخراج ROM الموجي (1 << 10) -1 = 1023 ، ثم عند إخراج ROM للتحجيم نحصل إما على 0 + 256 أو 255+ 1 اعتمادًا على 10 بت من الطول الموجي ، والذي يعطي إجمالي 256 * 8 = 2048 ويتوافق مع 0 عند إخراج DAC.
  7. يستقبل سجل التخزين على العناصر DD36-37 (555TM9) ويخزن قيمة الشفرة عند الإخراج أثناء فترة أخذ العينات. يساوي تردد أخذ العينات لعقدة المولد حوالي 33000 هرتز.
  8. DA38 DAC (534PA1) - يحول قيمة 12 بت إلى إشارة ثنائية القطب تناظرية ، الكود 2048 يتوافق مع التناظرية 0.
  9. مرشح تمرير منخفض - تم إنشاؤه وفقًا للمخطط الذي طورته فلاديمير كوزمين لمُصنع Polivox ، ومع ذلك ، تمت إضافة عقدة للتثبيت الحراري لتيار التحكم في مرشح OA إلى P432. علاوة على ذلك ، إنه مأخوذ من نفس Polivox ، حيث تم استخدامه لتثبيت وتيرة المولدات. على موقع المؤلف ، يمكنك العثور على إرشادات حول كيفية تكوين هذه العقدة [ 6 ].

    لقد تم بالفعل كتابة الكثير عن المرشح نفسه ، لذلك يمكننا الاستغناء عن التفاصيل.
    تم بناء عنصر التحكم في الفلتر على DAC ذي 10 بتات (572PA1) ، والذي يتم تزويد مدخلاته بإشارة "Filter" ذات 8 بتات ، وهي مغلف المرشح ، واعتمادًا على timbre ، يمكن أن تكون قيمة ثابتة ، وتساوي عمومًا الصفر. تتأثر معلمات المرشح أيضًا بقيمة 4 بتات من إشارة "التحكم": تعين F0-F1 إزاحة جهد إخراج DAC ، وتكون Q0-Q1 مسؤولة عن عامل الجودة (مستوى الرنين) للمرشح.
  10. بعد التصفية ، يتم تثبيت مفتاح يسمح لك بتمكين الاختلاط مع الإشارة الرئيسية لنسخته التي تمت معالجتها بواسطة تأثير HOP. في التعديلات المبكرة لجهاز P432 ، تم استخدام نفس المفتاح لإيقاف إخراج الصوت عند عدم الضغط على أي مفتاح. ولكن في المراجعات اللاحقة تم رفض هذا ، بدأوا في قطع المسارات ، ورمي الأسلاك وإضافة عناصر جديدة إلى الدائرة.
  11. مكبر للصوت - يرفع مستوى إشارة الخرج إلى 250mV.

تكوين وحدة المعالجة المركزية والعقدة


لذلك ، اكتشفنا المولدات. الآن يبقى أن نفهم من أين تأتي جميع إشارات التحكم ومن أين يتم تخزين المعلمات التي تصفها.

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

باستخدام إدخال "التكرار" ، كان يكفي أيضًا تسجيل قيم التردد لمفتاح واحد لكل جرس ، وحساب كل القيم الأخرى بناءً عليه.

وفقًا لكتيب التعليمات ، يحتوي P432 على لوحة مفاتيح من 41 مفتاحًا مع حجم 3 و 5/12 أوكتافات مع مجموعة من C1-E4 في تدوين علمي أو C1-e1 بترميز Helmholtz. ومع ذلك ، في الممارسة العملية (للنغمة 00) ، استنادًا إلى المراسلات A4 = 440 هرتز ، اتضح أن المفتاح A في أوكتاف اليسار الثاني ينتج صوتًا لهذا التردد ، وهذا يعطي بالفعل نطاق C3-E6. كما اتضح فيما بعد ، اعتمادًا على النغمة النشطة ، يمكن أن يختلف نطاق الترددات المستنسخة ، حيث يتغير بمقدار 1 أو 2 أوكتاف.

لقد سجلت أيضًا قيم البايتات من مدخلات "التحكم" بواسطة محلل المنطق لجميع النغمات الممكنة وأحضرتهم إلى لوحة.

قائمة الأصوات وقيم التحكم في الإدخال

كان من الواضح أنه يجب تخزين جميع معلمات التكوين هذه في أحد ROM المدمجة ، وبعد قليل من البحث ، تم العثور عليها في النصف الثاني من البرنامج الثابت DD16 على عقدة المعالج. اسمحوا لي أن أذكرك أن حجم ROM 573RF2 هو 2048 بايت.



تم تقسيم 1024 بايت من مساحة التكوين بسهولة إلى 32 نغمة ، مع تخصيص 32 بايت لإعدادات كل جرس. قضيت الكثير من الوقت في البحث عن ارتباط بين إعدادات النغمة والمراحل الحقيقية للمغلف وتردد الصوت والمزيد. كان علي أن أنظر إلى العديد من مقالب المحلل المنطقي.

والنتيجة هي مثل هذا الجدول.
لا يشمل جميع وحدات بايت التكوين ، لأنها إما 00 / FF ، أو لم يتم فك تشفيرها بعد.
بايتوصف
0FA_min
1FA_dt
2FA_max
3؟؟
4FD_ft
5FD_dt
6FS_lvl
7FREQ_u1
8FS_ft
9FS_dt
10FR_ft
11FR_dt
12؟؟
1300
14FREQ_u2
15Ctrl«»
16A_min
17A_dt
18A_max
19FF
20D_ft
21D_dt
22S_lvl
23FF
24S_ft
2500
2600
27R_dt
28؟؟
2900
30FREQ_1
31FREQ_2

كما يتضح من الجدول ، يمكن تقسيم جميع القيم إلى أربع مجموعات: وصف مغلف مدخلات "Amplifier" ، مغلف المدخلات "Filter" ، بايت بايت الإدخال "Control" والبايتات المسؤولة عن ترددات الصوت الرئيسي و UNISON عند إدخال "التردد".

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

تحدد المعلمات ذات اللاحقة * _dt دلتا تغيير مستوى الإشارة في المرحلة المقابلة ، على سبيل المثال ، للنغمة 00: A_min = 0 ، A_dt = 48 و A_max = 255. هذا يعني أنه يجب زيادة القيمة الأولية للهجوم 0 بمقدار 48 حتى تصل إلى 255. بالنسبة لمرحلة السقوط ، يجب خفض قيمة D_dt من A_max إلى المستوى S_lvl ، إذا كان S_ft> 0 ، فيجب أن ينخفض ​​مستوى الدعم مع كل فاصل زمني S_ft بمقدار 1 ، محاكاة يتلاشى بسلاسة الصوت. تشير المعلمة R_dt إلى دلتا مرحلة التوهين: يجب خفض مستوى الظرف الحالي بمقدار R_dt في كل فاصل زمني حتى يصل إلى المستوى 0. وتكون القيمة الحقيقية هي 1 إذا كانت قيمة المعلمة * _dt <= 1 والقيمة * _dt في الحالات الأخرى.

تحدد المعلمات * _ft الوقت الذي يجب أن تظل فيه القيمة دون تغيير ، وهو نوع من الفاصل الزمني لأخذ العينات للأظرف. من الناحية التجريبية ، تم العثور على أن القيمة الصفرية لهذه المعلمة تقابل ~ 100 فترة أخذ عينات DAC أو ~ 3 مللي ثانية. بالنسبة للقيم التي تزيد عن الصفر ، يجب حساب الوقت باستخدام الصيغة int (256 / * _ft) * 100 ، أي * _ft هو مضاعف الفاصل الأساسي لـ 100 فترة DAC.

شكل توضيحي يوضح جميع خيارات المغلف. على الجانب الأيمن ، يتم تكرارها بتقدير واضح لفهم أفضل لجوهر المعلمات * _ft / * _ dt.



تزامنت بايت "الإدارة" في منطقة التكوين مع ما تلقيته تجريبياً باستخدام محلل منطقي.

تحدد بايتات التردد قيمة مدخلات التردد. كما ذكرنا سابقًا ، يمكن لمُزج الصوت أن يلعب 4 أصوات في نفس الوقت (تعدد الأصوات) ، كل منها ، عند تشغيل UNISON ، يمكن إضافتها في انسجام تام مع مولد آخر مع تفكيك بسيط أو إزاحة من الصوت الرئيسي بواسطة 1-2 أوكتافات.

يتم تشفير الترددات في وحدتي بايت: FREQ_1 ، FREQ_2 بالنسبة إلى main و FREQ_u1 ، FREQ_u2 للتنسيق. معادلة مشتقة تجريبياً لحساب قيمة التردد للملاحظة A الخاصة بأوكتاف الثانية بلوحة المفاتيح P432.

freq_offset = {4:0xd0, 5:0x90, 6:0x50} freq = (config['FREQ_1'] << 8) + freq_offset[config['FREQ_1']] + config['FREQ_2'] 

مثال على النغمة 00 ، حيث: FREQ_1 = 6 ، FREQ_2 = 8 ، نحصل على: 6 * 0x100 + 0x50 + 8 = 0x658 ، وهو ما يتوافق مع بيانات محلل المنطق لجميع النغمات. ل انسجام ، حساب مشابه.

تجدر الإشارة إلى أنه بالنسبة إلى النغمة 00 ، تتطابق القيمة 0x658 مع تردد قدره 440 هرتز أو الملاحظة A4.
لقد ثبت بشكل تجريبي أن الفاصل "الترددي" للمفاتيح المجاورة (بما في ذلك الأسود) هو 16 (0x10) وحدة. لذلك ، إذا علمنا قيمة المفتاح 22 على اليسار (A من أوكتاف الثاني) - 0x658 ، فيمكننا بسهولة الحصول على قيمة أقصى اليسار (رقم 1): 0x508 و أقصى اليمين (رقم 41): 0x788.

بناءً على ذلك ، يمكنك حساب نطاق لوحة المفاتيح والترددات المستنسخة لنغمات مختلفة. سيكون عمود "التكرار" صحيحًا فقط في الأشكال الموجية البسيطة.
FREQ_1تتراوح منتردد هرتزنغمات
4C1 - E432.70 - 329.6301 ، 07 ، 13 ، 14 ، 25 ، 30 ، 31 ، 32 ، 33 ، 34 ، 35
5C2 - E565.41 - 659.2603 ، 05 ، 06 ، 10 ، 15 ، 17 ، 23 ، 24 ، 27 ، 37
6C3 - E6130.81 - 1318.5100 ، 02 ، 04 ، 11 ، 12 ، 16 ، 20 ، 21 ، 22 ، 26 ، 36
ما ورد أعلاه أكثر من كافٍ لإنشاء محاكي P432 ، لذلك دعنا ننتقل إليه.

إنشاء محاكاة P432 في Python


اعتقدت أنه سيكون من الجيد فصل تخزين التكوين وتوليد الصوت ، لذلك تم إنشاء فئتين رئيسيتين:

  • P432data ، المسؤول عن تحميل القيم من صور ROM وإحضار تكوين النغمات إلى نموذج مناسب للاستخدام ؛
  • P432 ، يحتوي على طرق لإنشاء أشكال مغلف وتوليد عينات رقمية بالفعل.
لن أتطرق إلى P432data بالتفصيل ، ويمكن الاطلاع على شفرة المصدر على جيثب.
لكن طرق P432 تعتبر بمزيد من التفصيل.

العنصر الرئيسي ، بالطبع ، هو عينات جينية مع معلمة تشير إلى عدد العينات التي يجب أن ترجع. في هذه الطريقة ، تتم إعادة إنشاء معالجة الإشارات من استلام القيمة عند إدخال "التردد" إلى الإخراج إلى DAC في أقرب وقت ممكن من النموذج الأولي. من حيث المبدأ ، مع التركيز على مخطط P432 ، يمكنك العثور بسرعة على معادلات بايثون من وحدات مجموعة المولد. الشيء الوحيد الذي كان يجب إضافته بشكل صريح هو تقليل المتغيرات إلى البعد المحدد: 20 بت لمراكم الطور ، 11 بت لمغلف المظروف ، و 12 بت لمصوت الأصوات. هذا التقييد ضروري لمنطق الفائض من هذه المتغيرات للعمل بشكل طبيعي.

تسرد طرق إنشاء الأظرف الخاصة بمضخم getADS ونموذج مرشح getFADS بقيم اتساع المغلف ، والتي تأخذ منها نماذج الجينات القيم في لحظة الضغط على المفاتيح. لديهم اثنين من أساليب getR و getFR في شركتهم التي تشكل مرحلة التخفيف Envelope. يأخذون معلمة المستوى كمدخلات - القيمة الحالية لمستوى الظرف ، تبدأ من حيث ستنخفض إلى 0.

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

وفقًا لدليل التعليمات ، تصدر P432 أرقام مذكرة MIDI من 36 إلى 77 (في الواقع 76) لمفاتيح لوحة المفاتيح من 1 إلى 41 على التوالي. من أجل عدم إعادة اختراع العجلة ، قررت استخدام النطاق 36-76 في المحاكي كأرقام للمفتاح المضغوط ، لذلك كنت بحاجة إلى طريقة midi2freq ، والتي تحول رقم المفتاح إلى قيمة "التكرار" ، مع مراعاة النغمة المحددة.

كان الزوجان الأخيران من الطرق هما key_press (midi_note) و key_release (midi_note) ، اللذين شكلا قاموسًا لمراسلات الصوت مع تكرار النغمة الأساسية للمرحلة والموضع الحالي للمغلف.

الطريقة الرئيسية الأخيرة هي setprog (prog، clean = True) ، المصممة لتحديد النغمة النشطة. يقوم Setprog بتحميل تكوين النغمة المطلوبة ، وإذا لم يتم مسح العلامة النظيفة ، فقم بمسح المتغيرات الداخلية. إذا تم ضبط Clean على False ، فلن تتم إعادة تعيين المتغيرات الداخلية ، مما يتيح لك التبديل بين النغمات أثناء توليد الصوت دون أي نقرات أو أصوات غير سارة.

لكتابة العينات التي تم إنشاؤها إلى ملف WAV ، تم إنشاء طريقة الأداة المساعدة write_wav استنادًا إلى وحدة الموجة. لكل عينة ، يتم إجراء القياس لزيادة السعة وإيصالها إلى نموذج 16 بت موقّع.

هذه الطرق كافية للحصول على ملف wav مع تسجيل بضع ثوانٍ لأي من الأصوات المزج.

 #    p432=P432() #   p432.setprog(0) #     (  ) p432.unison=False p432.filter_en = False #   A   p432.key_press(57) #  3   samples=p432.gen_samples(33000*3) #   p432.key_release(57) #    p432.write_wav('test_00.wav',samples) 

إن الشكل الموجي لـ timbre 00 هو الجيوب الأنفية ، لذلك في الخرج نحصل على الجيوب الأنفية مع غلاف مغلف. للاستماع.



سيكون تسجيل النغمة 14 أكثر إثارة للاهتمام مع تشغيل المرشح. للاستماع.



واجهة رسومية


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

تأثرت الواجهة بـ P432 الحقيقي مع إضافة وسيلة إيضاح لوحة المفاتيح وزر تحديد MIDI والقدرة على إيقاف تشغيل الفلتر.


سيظهر زر "Midi In" إذا كان لديك وحدة "python-rtmidi" مثبتة. بعد الضغط عليه وتحديد جهاز Midi-input ، يقوم البرنامج بتنشيط وظيفة رد الاتصال التي تلتقط أحداث Note-On و Note-Off و Change Program في جميع قنوات midi الستة عشر. من خلال "تغيير البرنامج" ، يمكنك تغيير رقم نغمة المحاكي النشط.

لاعتراض ضربات لوحة المفاتيح ، استخدم Tkinter bind ('<KeyPress') ، وطريقة bind ('<KeyRelease') ، ثم في وظيفة رد الاتصال ، يتم التحقق من رقم المفتاح باستخدام القائمة المسموح بها ، ويتم تحويلها إلى ملاحظة midi ، ويتم استدعاء أساليب p432.key_press () ، p432.key_release () . يتم تنشيط الاعتراض عند بدء تشغيل البرنامج وإلغاء تنشيطه في النهاية.

لإخراج دفق الصوت ، يتم استخدام وحدة pyaudio في وضع عدم الحظر. بعد تقديم الواجهة ، يبدأ في مؤشر ترابط منفصل ، ويستمر tkinter في العمل بشكل أساسي. في وظيفة رد الاتصال ، يمر pyaudio بعدد العينات المراد إنشاؤها ، وفي المقابل يتلقى عينات من نماذج جينية وعلامة الحالة. لتقليل زمن الوصول بين حدث الملاحظة (بالضغط على مفتاح) وظهور الصوت ، يتم تحديد مخزن مؤقت صغير إلى حد ما: 200 عينة. يتم تعيينه بواسطة المعلمة frames_per_buffer للأسلوب pyaudio المفتوح.

يمكن تنزيل نسخة pyinstall المترجمة من P432_emulator لنظام التشغيل Windows من الإصدارات .

استنتاج


في هذه المقالة ، لم يتم الكشف عن تفاصيل تشغيل المرشح التمثيلي في عقدة المولد (وتطبيقه الرقمي في المحاكي) ، وعقدة المعالج ، وتأثير HOP ، وواجهة MIDI. تم التركيز على تصميم الجزء الرقمي من وحدة المولد ، وطريقة تخزين المعلمات من الأخشاب واستخدامها عند إنشاء المحاكي.

إذا كان الموضوع موضع اهتمام ، فسأخطط لمقال ثانٍ مع تحليل ما تبقى.

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

شفرة المصدر للمشروع ، البرامج الثابتة ROM ، الرسوم البيانية ودليل التشغيل متوفرة على جيثب .

مراجع


  1. Ridiko L. DDS: توليف التردد الرقمي المباشر.
  2. متحف المزج السوفياتي ، فورمانت P432. www.ruskeys.net/base/form432.php
  3. ويكيبيديا. Polivoks.
  4. أداة لوحة المفاتيح الكهروميكانيكية "Formant P432". دليل التشغيل .
  5. المخططات التخطيطية الكهربائية لـ "Formant P432".
  6. تحديد درجة حرارة الاستقرار من Polyvox.

Source: https://habr.com/ru/post/ar482292/


All Articles