سؤال

كيف يمكنني إرسال رسائل MIDI من برنامج C ++ وجعلهم يلعبون الصوت من بنك MIDI العام؟

لقد نظرت حولي ولا يبدو أن هناك إجابة بسيطة ، ويبدأ عقلي في الذوبان بعد قراءة كتيبات طويلة عن Coremidi وأشياء من هذا القبيل.

لدي مشروع C ++ Superizer بسيط ، وكل ما أريد القيام به هو ، على سبيل المثال ، عندما تضرب هذه الكرة الأرضية ، مما يؤدي إلى C4 من بنك البيانو الكبير. أنا بخير مع غالبية البرنامج ، لكن جزء MIDI المتكامل كان حتى الآن غير شفاف تمامًا بالنسبة لي.

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

شكرا جزيلا على اي مساعدة!

هل كانت مفيدة؟

المحلول

خيار آخر سيكون rtmidi

يهدف إلى أن تكون بسيطة ومتقاطعة

لقد استخدمت rtaudio المماثلة لـ REALTY AUDIO I/O ، وكان من السهل نسبيًا استخدامه.

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

نصائح أخرى

لقد كتبت برنامجًا تعليميًا قد يساعد شخصًا يصادف نفس المشكلة باستخدام Coremidi. يشرح كيفية قراءة ملف MIDI وإخراج Augraph باستخدام المؤثرات الصوتية من ملف خط الصوت. كما يفسر كيفية استخدام نقطة نهاية افتراضية للوصول إلى رسائل MIDI في الوقت الفعلي. هنا.

للقيام بما تتطلع للقيام به ، يمكنك تعديل مشروع العينة الذي أقدمه بما يلي:

result = MusicDeviceMIDIEvent ([AUSampler], midiStatus, note, velocity, 0);

حيث Ausampler هو مؤشر إلى ausampler أي نقطة البداية في Augraph. بدلاً من القراءة من ملف ، يمكنك استخدام الأمر التالي لإرسال ملاحظة MIDI واحدة ليتم تشغيلها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top