سؤال

أنا موسيقي ومبرمج وأرغب في إنشاء برنامجي الخاص لصنع الموسيقى. سأبدأ بتطبيق وحدة تحكم في C ++ قبل أن أقوم بعمل واجهة المستخدم الرسومية.

أنا هادئ جديد على C/C ++ وأعرف كيفية تقديم تطبيق وحدة تحكم أساسية وقرأت عن واجهة برمجة تطبيقات Win32.

كنت أبحث في MSDN للوسائط المتعددة في تطبيقات Win32 ووجدت الكثير من الوظائف لـ MIDI: http://msdn.microsoft.com/en-us/library/dd798495(vs.85).aspx

يمكنني تلقي عدد أجهزة MIDI التي يتم توصيلها بهذه الطريقة:

#include <windows.h>
#include <iostream>
using namespace std;
int main() {
    cout << midiInGetNumDevs();
    cout << " MIDI devices connected" << endl;
    return 0;
}

لكن الآن أريد أن أعرف كيف تسمى هذه الأجهزة ، مع midiInGetID وظيفة أعتقد و while عقدة. هل يمكن لأي أحد أن يساعدني بهذا؟ تتطلب الوظيفة أ HMIDIIN المعلمة وأنا لا أعرف كيف يمكنني الحصول على واحدة لأن جميع وظائف MIDI تقريبًا تستخدم هذه المعلمة.

أعلم أن هذا ليس هو الموضوع الأكثر وضوحًا ، لكن سيكون من الرائع أن يساعدني شخص ما.

شكرًا :)

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

المحلول

للحصول على معلومات ، يمكنك الاتصال midiingetdevcaps, ، مع المعلمة الأولى تتراوح من 0 مدرجة إلى نتيجة midiInGetNumDevs مستبعد. كل مكالمة تملأ أ midiincaps struct (تقوم بتمرير مؤشر إلى البنية عند الاتصال بالوظيفة) بمعلومات حول الجهاز التاسع. ل افتح جهاز ، وملء hmidiin اللازمة للمكالمات الأخرى ، يمكنك الاتصال midiinopen مع رقم الجهاز (مرة أخرى ، من 0 إلى N-1 المدرجة) كمعلمة ثانية.

ينطبق نفس المفهوم على أجهزة الإخراج ، باستثناء أن الأسماء لها Out بدلاً من In (وللهياكل OUT بدلاً من IN).

نصائح أخرى

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

ها هو رمزتي:

#include <windows.h>
#include <iostream>
using namespace std;
int main() {
    unsigned int devCount = midiInGetNumDevs();
    cout << devCount << " MIDI devices connected:" << endl;
    MIDIINCAPS inputCapabilities;
    for (unsigned int i = 0; i < devCount; i++) {
        midiInGetDevCaps(i, &inputCapabilities, sizeof(inputCapabilities));
        cout << "[" << i << "] " << inputCapabilities.szPname << endl;
    }
}

وشكرا لمساعدتكم!

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