سؤال

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

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

ما أفعله هو "نوع من" أ "مساهمة هيئة التصنيع العسكري لتحويل MIDI"، لذلك يحتاج إلى الاستجابة سريعة جدا.

وبحثت قليلا على الانترنت، وعلى ما يبدو وسيلة للذهاب إما دايركت أو وظائف API WaveIn *. الآن، بحسب ما قرأت، فإن WaveIn واجهات برمجة التطبيقات اسمحوا لي ملء منطقة عازلة من حجم معين، وهذا أمر جيد لتسجيل ومرحلة ما بعد المعالجة، ولكن أنا أتساءل ... كيف أفعل التجهيز في الوقت الحقيقي؟

هل يمكنني استخدام 10ms مخازن والحفاظ على 50ms دائرية أو 100MS مجموعة نفسي، وأحصل على وظيفة الذي يقوم بتشغيل تحليل كل 10ms؟ (التي لديها إمكانية الوصول إلى أحدث 100MS من المدخلات، التي 10ms فقط هي جديدة)

وأنا شيء مفقود هنا؟

وأيضا، كيف يتم ذلك مع دايركت؟ هل تعطيني أي قدرات محسنة على واجهات برمجة التطبيقات Win32 والعادية؟

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

المحلول

وكلا دايركت والموجة API تعطيك في النهاية مخازن مليئة البيانات الصوتية التي يمكنك معالجة. حجم هذه المخازن يمكن أن تختلف، ولكن واقعيا سوف تحتاج للحفاظ على الكمون إلى أقل من 10mS لتجهيز الحقيقي مفيد. وهذا يعني معالجة البيانات داخل 10mS منه وصوله الى العازلة، ناقص الوقت بينه وصوله الى الأجهزة السمعية والوصول إلى المنطقة العازلة، والتي سوف تعتمد على السائق. لهذا السبب أود أن أوصي معالجة ما لا يزيد عن 5MS من البيانات في وقت واحد.

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

لأسباب مختلفة أوصي دايركت على API الموجة للتنمية جديدة - فمن المؤكد أنها ستكون أسهل لتحقيق زمن أقل

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

وهناك أيضا واجهات برمجة التطبيقات البديلة التي قد تكون أكثر ملاءمة. إلقاء نظرة على اسيو ، النواة الجري (لXP فقط - لن يزعج) و، جديدة في ويندوز فيستا، و الأساسية الصوت واجهات برمجة التطبيقات .

نصائح أخرى

وهنا هو وجود صلة ل (مع المصدر) في C ++ أن يفعل في الوقت الحقيقي تحليل التردد.

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