سؤال

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

حاليًا، أستخدم كائن فئة Phonon::AudioOutput كمخزن صوتي وقمت بتوصيله بكائن فئة Phonon::MediaObject لتشغيل الملف الصوتي.

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

لذا، الرجاء مساعدتي في كيفية الحصول على سعة كبيرة من المقاطع الصوتية في أوقات مختلفة.

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

شكرًا.

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

المحلول

يوجد كود يقوم بالأمرين اللذين تسأل عنهما (حساب سعة الذروة، وتخطيط أشكال الموجات الصوتية) في محلل الطيف مثال يأتي مع Qt (في دليل العروض التوضيحية/الطيف).

لقطة شاشة للعرض التجريبي لـ Spectrum Analyzer الذي يعمل على Symbian http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

يقوم هذا العرض التوضيحي أيضًا بحساب وعرض طيف التردد.وكما يشير معلق آخر، فإن هذا يختلف عن مخطط الشكل الموجي:الطيف هو رسم بياني للسعة مقابل التردد، في حين أن شكل الموجة يرسم السعة مقابل الزمن.

يستخدم العرض التوضيحي QtMultimedia بدلاً من Phonon لالتقاط الصوت وتقديمه.إذا كنت مهتمًا فقط بتشغيل الصوت، ولا تحتاج إلى تسجيله، فقد يكون Phonon كافيًا، ولكن عليك أن تدرك أن دعم البث (أي. Phonon::MediaSource(QIODevice *)) غير متوفر على كافة الأنظمة الأساسية. QAudioInput و QAudioOutput من ناحية أخرى، فهي مدعومة جيدًا، على الأقل بالنسبة لبيانات PCM الصوتية، على جميع الأنظمة الأساسية الرئيسية التي يستهدفها Qt.

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