PDA

View Full Version : دریافت صدا از speaker کامپیوتر



hbs592
چهارشنبه 23 تیر 1389, 11:36 صبح
آیا امکان نوشتن برنامه هست که بتوان صدای پخش شده را ازSpeaker کامپیوتر و نه اسپکر داخلی کامپیوتر اگر ممکنه کمکم کنید.

LORD AELX
چهارشنبه 23 تیر 1389, 12:26 عصر
آیا امکان نوشتن برنامه هست که بتوان صدای پخش شده را ازSpeaker کامپیوتر و نه اسپکر داخلی کامپیوتر اگر ممکنه کمکم کنید.

سوالتون اصلا واضح نیست، فعلش کو؟؟!! :اشتباه:

بگذریم، بله میشه صدا رو از اسپیکر اجرا کرد. حالا اگر منظورتون از صدا، beep هست، باید از تابع beep استفاده کنید:


#include <stdio.h>
#include <unistd.h>
#if !(WIN32)
#define beep(x,y)
#endif

int main()
{
puts("using winAPI Beep(frequency_hrz, duration_ms)...");
Beep(523,500); /* 523 hertz (C5) for 500 milliseconds*/
Beep(587,500);
Beep(659,500);
Beep(698,500);
Beep(784,500);
usleep(500); // 500 ms delay
puts("\n\\a makes a beep on the internal speaker too ...");
usleep(500);
puts("\a");
usleep(500);
puts("\a");
getchar(); // key wait
return 0;
}


ولی اگر موزیک و هر گونه صدای ذخیره شده بصورت فایل های صوتی رو بخواهید پخش کنید، بحث کمی پیچیده تر می شود. :متفکر: براتون اجرای فایل های WAV رو توضیح می دهم:

ابتدا کتابخانه libwinmm رو به پروژه تون اضافه کنید. سپس کد زیر را در برنامه وارد کنید:


#include <windows.h>
#include <mmsystem.h>
#include <conio.h>

using namespace std;

int main(int argc, char *argv[])
{
PlaySound("chimes.wav",NULL,SND_FILENAME|SND_ASYNC); //PLAY WAV SOUND ONCE
//PlaySound("chimes.wav",NULL,SND_FILENAME|SND_LOOP|SND_ASYNC); //ANOTHER OPTION PLAY REPEATED WAV SOUND
getch();
return 0;
}


تابع اول، فقط یکبار صدا را پخش می کند، ولی تابع دوم می تواند آن را بصورت loop پخش نماید.

پخش فرمت های مختلف صوتی با هم تفاوت داره و برای هر کدوم باید از روش جداگانه ای استفاده کرد. البته فکر می کنم با کتابخانه هایی مثل FMOD می توان فرمت های مختلف صوتی را پخش کرد. این هم یک نمونه سورس کد برای پخش MP3 توسط کتابخانه FMODا:


#include <conio.h>
#include "inc/fmod.h"

FSOUND_SAMPLE* handle;

int main ()
{
// init FMOD sound system
FSOUND_Init (44100, 32, 0);

// load and play mp3
handle=FSOUND_Sample_Load (0,"my.mp3",0, 0, 0);
FSOUND_PlaySound (0,handle);

// wait until the users hits a key to end the app
while (!_kbhit())
{
}

// clean up
FSOUND_Sample_Free (handle);
FSOUND_Close();
}


کتابخانه های دیگری نیز موجود هستند، مثل BASS (http://www.un4seen.com/) و یا MAD (http://www.underbit.com/products/mad/) و MPG123 (http://www.mpg123.de/) (هر دو برای فرمت MPEG) و ... .

موفق باشید :قلب:

hbs592
یک شنبه 28 شهریور 1389, 11:19 صبح
سوالتون اصلا واضح نیست، فعلش کو؟؟!! :اشتباه:

بگذریم، بله میشه صدا رو از اسپیکر اجرا کرد. حالا اگر منظورتون از صدا، beep هست، باید از تابع beep استفاده کنید:


#include <stdio.h>
#include <unistd.h>
#if !(WIN32)
#define beep(x,y)
#endif

int main()
{
puts("using winAPI Beep(frequency_hrz, duration_ms)...");
Beep(523,500); /* 523 hertz (C5) for 500 milliseconds*/
Beep(587,500);
Beep(659,500);
Beep(698,500);
Beep(784,500);
usleep(500); // 500 ms delay
puts("\n\\a makes a beep on the internal speaker too ...");
usleep(500);
puts("\a");
usleep(500);
puts("\a");
getchar(); // key wait
return 0;
}


ولی اگر موزیک و هر گونه صدای ذخیره شده بصورت فایل های صوتی رو بخواهید پخش کنید، بحث کمی پیچیده تر می شود. :متفکر: براتون اجرای فایل های WAV رو توضیح می دهم:

ابتدا کتابخانه libwinmm رو به پروژه تون اضافه کنید. سپس کد زیر را در برنامه وارد کنید:


#include <windows.h>
#include <mmsystem.h>
#include <conio.h>

using namespace std;

int main(int argc, char *argv[])
{
PlaySound("chimes.wav",NULL,SND_FILENAME|SND_ASYNC); //PLAY WAV SOUND ONCE
//PlaySound("chimes.wav",NULL,SND_FILENAME|SND_LOOP|SND_ASYNC); //ANOTHER OPTION PLAY REPEATED WAV SOUND
getch();
return 0;
}


تابع اول، فقط یکبار صدا را پخش می کند، ولی تابع دوم می تواند آن را بصورت loop پخش نماید.

پخش فرمت های مختلف صوتی با هم تفاوت داره و برای هر کدوم باید از روش جداگانه ای استفاده کرد. البته فکر می کنم با کتابخانه هایی مثل FMOD می توان فرمت های مختلف صوتی را پخش کرد. این هم یک نمونه سورس کد برای پخش MP3 توسط کتابخانه FMODا:


#include <conio.h>
#include "inc/fmod.h"

FSOUND_SAMPLE* handle;

int main ()
{
// init FMOD sound system
FSOUND_Init (44100, 32, 0);

// load and play mp3
handle=FSOUND_Sample_Load (0,"my.mp3",0, 0, 0);
FSOUND_PlaySound (0,handle);

// wait until the users hits a key to end the app
while (!_kbhit())
{
}

// clean up
FSOUND_Sample_Free (handle);
FSOUND_Close();
}


کتابخانه های دیگری نیز موجود هستند، مثل BASS (http://www.un4seen.com/) و یا MAD (http://www.underbit.com/products/mad/) و MPG123 (http://www.mpg123.de/) (هر دو برای فرمت MPEG) و ... .

موفق باشید :قلب:


از اینکه راهنماییی فرمودید متشکرم
فقط بنده دقیقاً متوجه نشدم با چه نرم افزار و چه ورژنی باید این موارد را اعمال کنم