1.»ç¿îµå ÆÄÀÏ

¸ÖƼ¹Ìµð¾î ȯ°æ¿¡¼­ »ç¿îµå¸¦ Àç»ýÇÒ ÀÏÀº ÈçÇÏ´Ù. MessageBeep ÇÔ¼ö·Î »à ¼Ò¸®´Â ½±°Ô ³¾ ¼ö ÀÖ°í PlaySound ÇÔ¼ö¸¦ ¾²¸é ÆÄÀÏÀ̳ª ¸Þ¸ð¸®ÀÇ Wave ÆÄÀÏÀ» Àç»ýÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª °í¼öÁØ ÇÔ¼ö´Â ¼Ò¸®¸¦ ³»´Â ±â´É¸¸ ÀÖÀ» »Ó ÀϺΠ±¸°£¸¸ Àç»ýÇѴٰųª ´ë¿ë·®ÀÇ ½ºÆ®¸®¹Ö »ç¿îµå´Â ó¸®ÇÏÁö ¸øÇÑ´Ù. ¼Ò¸®¸¦ ¸¶À½´ë·Î ´Ù·ç¾î º¸°í ½Í´Ù¸é Àú¼öÁØ ÇÔ¼öµµ ¾Ë¾Æ¾ß ÇÑ´Ù.

Waveform API´Â À©µµ¿ì°¡ ±âº»À¸·Î Á¦°øÇÏ´Â »ç¿îµå Àç»ý ¹× ³ìÀ½ ±â´ÉÀÌ´Ù. ¿þÀÌºê »ç¿îµå¸¸ Àç»ýÇÒ ¼ö ÀÖÀ¸¸ç CD-ROMÀ̳ª ¹Ìµð´Â Áö¿øÇÏÁö ¾Ê´Â´Ù. ´õ ¼¶¼¼ÇÑ »ç¿îµå ±â´ÉÀº MCI(Media Control Interface)¸¦ ±ÇÀåÇϴµ¥ À̰͵µ ¿À·¡ µÇ±â´Â ¸¶Âù°¡ÁöÀ̸ç ÀÌÈÄ DirectX·Î ´ëüµÇ¾ú´Ù. ÇÏÁö¸¸ °£Æí¼º¸é¿¡¼­ ¿¹Àü ¶óÀ̺귯¸®µµ ¾ÆÁ÷Àº ¾µ¸¸ÇÏ´Ù.

¸ÕÀú »ç¿îµå ÆÄÀÏÀÇ ±¸Á¶ºÎÅÍ ¾Ë¾Æº¸ÀÚ. °¡Àå ÈçÇÑ »ç¿îµå Æ÷¸ËÀÎ MP3³ª OGG´Â ¿ë·®ÀÌ ÀÛÀº ÀÌÁ¡ÀÌ ÀÖÁö¸¸ ¼Õ½Ç ¾ÐÃà Æ÷¸ËÀ̾ ´Ù·ç±â ¾î·Æ´Ù. Wave´Â ¼Ò¸®¸¦ ÀÖ´Â ±×´ë·Î ÀúÀåÇÏ´Â ºñ¾ÐÃà Æ÷¸ËÀÌ´Ù. PCM(Pulse Code Modulation) ¹æ½ÄÀ¸·Î ½Ã°£ÀÇ È帧¿¡ µû¸¥ À½Æĸ¦ ÀúÀåÇØ ³õ¾Ò´Ù. ¼Ò¸® ÇϳªÀÇ ³ô³·ÀÌ¿¡ ´ëÇÑ Á¤º¸¸¦ »ùÇÃÀ̶ó°í ÇÏ¸ç »ùÇÃÀÌ ¸ð¿© À½¾ÇÀÌ µÈ´Ù.

Wave´Â ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿Í IBMÀÌ ¿î¿µÃ¼Á¦ Â÷¿ø¿¡¼­ Áö¿øÇÏ´Â °ø½ÄÀûÀÎ »ç¿îµå Æ÷¸ËÀÌ´Ù. ºñ¾ÐÃàÀ̾ ´Ü¼øÇÏ¸ç º¹ÀâÇÑ ¾Ë°í¸®ÁòÀ» µ¿¿øÇÏÁö ¾Ê´õ¶óµµ ¾îµð¼­³ª Àç»ýÇÒ ¼ö ÀÖ´Ù. ¾ÐÃà Æ÷¸ËÀÎ MP3µµ ¾ÐÃàÀ» Ç®¸é °á±¹ WaveÀÇ »ùÇðú ºñ½ÁÇÏ´Ù. ±¸Á¶°¡ °£´ÜÇØ ¸î °¡Áö ¿ë¾î¸¸ ÀÍÈ÷¸é ³»ºÎ¸¦ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ°í ÀÔ¸À´ë·Î ´Ù·ê ¼ö ÀÖ´Ù.

 

¢º »ùÇà ºñÆ®¼ö : À½ÀÇ ³ô³·À̸¦ Ç¥ÇöÇÏ´Â °¡Áö¼öÀÌ´Ù. 8ºñÆ®À̸é 256°¡ÁöÀÇ ³ô³·À̸¦ Ç¥ÇöÇÏ°í 16ºñÆ®À̸é 65536 ´Ü°è·Î ¼¶¼¼ÇÏ°Ô À½À» ±¸ºÐÇÑ´Ù. ºñÆ®¼ö°¡ ³ôÀ»¼ö·Ï À½ÁúÀÌ ¼±¸íÇÏ´Ù.

¢º »ùÇà ·¹ÀÌÆ® : ÃÊ´ç ¸î °³ÀÇ »ùÇÃÀÌ Àִ°¡¸¦ ÀǹÌÇÑ´Ù. ÃÖ¼Ò 8000°³ Á¤µµ´Â ÀÖ¾î¾ß À½À» ±¸ºÐÇÒ ¼ö ÀÖÀ¸¸ç 44100°³ Á¤µµ¸é ÈǸ¢ÇÑ À½ÁúÀ» µé·ÁÁØ´Ù.

¢º ä³Î ¼ö : À½ÆÄ È帧ÀÇ °³¼öÀÌ´Ù. 1°³ÀÌ¸é ¸ð³ëÀÌ°í 2°³À̸é ÁÂ¿ì ¾çÂÊÀÇ À½À» ºÐ¸®Çؼ­ Ãâ·ÂÇÏ´Â ½ºÅ×·¹¿ÀÀÌ´Ù. ¿µÈ­ »ç¿îµå´Â ¾ÕµÚ±îÁö ÃÖ´ë 7°³±îÁö ä³ÎÀ» °¡Áö±âµµ ÇÑ´Ù.

 

ÀÌ ¼¼ ¿ä¼Ò´Â ÇÊ¿ä¿¡ µû¶ó °¢°¢ ´Ù¸£°Ô ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ °ªÀÇ Á¶ÇÕ¿¡ ÀÇÇØ À½ÁúÀÌ °áÁ¤µÈ´Ù. »ç¿îµå¸¦ ±¸¼ºÇÏ´Â °¢ ¿ä¼Ò¸¦ ±×¸²À¸·Î ±×·Á º¸ÀÚ.

°¢ ¿ä¼Ò°¡ ³ôÀ»¼ö·Ï À½ÁúÀº ÁÁÁö¸¸ ¿ë·®Àº ºñ·ÊÇؼ­ ´Ã¾î³­´Ù. ºñ¾ÐÃà Æ÷¸ËÀÌ´Ù º¸´Ï À½Áú°ú ¿ë·®ÀÇ °ü°è°¡ Á¤Á÷ÇØ ¸ð³ëº¸´Ù ½ºÅ×·¹¿À°¡ µü 2¹è ´õ Å©´Ù. ¿ì¸®°¡ ÈçÈ÷ µè´Â À½¾Ç ÆÄÀÏÀº 16ºñÆ® 2ä³Î 44K »ùÇà ·¹ÀÌÆ®·Î µÇ¾î ÀÖÀ¸¸ç ¼ÒÀ§ ¸»ÇÏ´Â CD À½ÁúÀÌ´Ù.  1ÃÊÀÇ »ç¿îµå¸¦ ÀúÀåÇϴµ¥ 44100 * 2 * 2 = 176KÀÇ ¿ë·®ÀÌ ÇÊ¿äÇϸç 1M´ç 6ÃÊÀÇ À½À» ÀúÀåÇÑ´Ù. ±×·¡¼­ 640M CD ÇÑÀåÀÇ Àç»ý ½Ã°£ÀÌ ´ë·« 1½Ã°£ Á¶±Ý ³Ñ´Â´Ù.

Wave ÆÄÀÏ¿¡´Â ¾ÕºÎºÐ¿¡ ¾à°£ÀÇ Çì´õ Á¤º¸°¡ ÀÖ°í ½Ã°£ÀÇ È帧¿¡ µû¶ó °¢ ä³ÎÀÇ »ùÇÃÀÌ ±³´ë·Î ÀúÀåµÈ´Ù. ÆÄÀÏÀÇ »ùÇÃÀ» ¼ø¼­´ë·Î ÀÐ¾î ½ºÇÇÄ¿·Î º¸³» ÁÖ¸é À½ÀÌ Àç»ýµÈ´Ù. »ç¿îµå¸¦ Àç»ýÇÏ·Á¸é ¸ÕÀú Ãâ·Â ÀåÄ¡°¡ ÀÖ´ÂÁöºÎÅÍ Á¶»çÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ÇÔ¼ö´Â ½Ã½ºÅÛ¿¡ ÀåÂøµÇ¾î ÀÖ´Â Ãâ·Â ÀåÄ¡ÀÇ °³¼ö¸¦ ±¸ÇÑ´Ù.

 

UINT waveOutGetNumDevs(void);

 

ÀÌ ÇÔ¼ö·Î Á¶»çÇÑ °ªÀÌ 0ÀÌ¸é »ç¿îµå Ãâ·Â ÀåÄ¡°¡ ¾ø´Ù´Â ¶æÀÌ´Ù. ÀÌ »óȲ¿¡¼­´Â »ç¿îµå¸¦ Àç»ýÇÒ ¼ö ¾øÀ¸¹Ç·Î ¿¡·¯ ó¸®ÇØ¾ß ÇÑ´Ù. º¸ÅëÀº ÇÑ °³ÀÇ ½ºÇÇÄ¿°¡ ´Þ·Á ÀÖÀ» °ÍÀÌ´Ù. waveInGetNumDevs ÇÔ¼ö´Â Àִµ¥ ÀÔ·Â ÀåÄ¡, ±¸Ã¼ÀûÀ¸·Î ¸¶ÀÌÅ©ÀÇ °³¼ö¸¦ Á¶»çÇÑ´Ù.

Waveform ¶óÀ̺귯¸®´Â ÀԷ°ú Ãâ·ÂÀ» ¸ðµÎ Áö¿øÇϴµ¥ Ãâ·Â °ü·Ã ÇÔ¼ö´Â waveOutÀ¸·Î ½ÃÀÛÇÏ°í ÀÔ·Â °ü·Ã ÇÔ¼ö´Â waveInÀ¸·Î ½ÃÀÛÇÑ´Ù. ÀÌ °­Á´ Ãâ·Â¸¸ ´Ù·ç¹Ç·Î ÁÖ·Î waveOut ÇÔ¼ö¸¸ ¾Ë¾Æ º»´Ù. ´ÙÀ½ ÇÔ¼ö´Â ÀåÄ¡ÀÇ ´É·ÂÄ¡¸¦ Á¶»çÇÑ´Ù.

 

MMRESULT waveOutGetDevCaps( UINT_PTR uDeviceID, LPWAVEOUTCAPS pwoc, UINT          cbwoc);

 

ù ¹ø° Àμö·Î ÀåÄ¡ÀÇ ID³ª ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ÀåÄ¡ÀÇ ID´Â 0¹øºÎÅÍ ¼ø¼­´ë·Î ºÙÀ̴µ¥ °³¼ö°¡ 3À̸é ID´Â 0, 1, 2°¡ µÈ´Ù. ÀÌ¹Ì ÀåÄ¡¸¦ ¿­¾úÀ¸¸é ÇÚµéÀ» Àü´ÞÇÑ´Ù. WAVE_MAPPER »ó¼ö´Â ÇöÀç ¼±ÅÃÇØ ³õÀº ¿Àµð¿À ÀåÄ¡¸¦ ÀǹÌÇÑ´Ù.

µÎ ¹ø° Àμö´Â ´É·ÂÄ¡¸¦ ¸®ÅÏÇÒ WAVEOUTCAPS ±¸Á¶Ã¼ Æ÷ÀÎÅÍ¸ç ¼¼¹ø° Àμö´Â ±¸Á¶Ã¼ÀÇ Å©±âÀÌ´Ù. Å©±â Àμö´Â Á¤È®ÇÑ ¹öÀü °ü¸®¸¦ À§ÇØ Àü´ÞÇϴµ¥ ´ë°³ÀÇ °æ¿ì sizeof ¿¬»êÀÚ·Î Å©±â¸¦ ÁöÁ¤ÇÏ¸é µÈ´Ù. ÀåÄ¡ÀÇ ´É·ÂÄ¡¸¦ ±¸Á¶Ã¼ÀÇ ¸â¹ö¿¡ ä¿öÁØ´Ù.

 

¸â¹ö

¼³¸í

wMid

Á¦Á¶ÀÚ ID

wPid

Á¦Ç° ID

vDriverVersion

µå¶óÀ̹ö ¹öÀü

szPname

ÀåÄ¡ÀÇ À̸§

dwFormats

Áö¿ø °¡´ÉÇÑ Æ÷¸ËÀÇ ºñÆ® Á¶ÇÕÀÌ´Ù. ¸¹ÀÌ ¾²´Â Æ÷¸ËÀº ´ÙÀ½°ú °°´Ù.

WAVE_FORMAT_1M08 : 11K 8ºñÆ® ¸ð³ë

WAVE_FORMAT_2S16 : 22K 16ºñÆ® ½ºÅ×·¹¿À

WAVE_FORMAT_4S16 : 44K 16ºñÆ® ½ºÅ×·¹¿À

wChannels

ä³Î °³¼öÀÌ´Ù. 1ÀÌ¸é ¸ð³ë, 2ÀÌ¸é ½ºÅ×·¹¿À.

wReserved1

¹Ì»ç¿ë

dwSupport

Áö¿øÇÏ´Â ±â´É¿¡ ´ëÇÑ Ç÷¡±×ÀÌ´Ù.

WAVECAPS_PITCH(0x1) : ÇÇÄ¡ ÄÁÆ®·Ñ Áö¿ø. Àç»ý ¼Óµµ¸¦ Çϵå¿þ¾î·Î Á¶Á¤ÇÑ´Ù. Áö¿øÇÏ´Â Àåºñ°¡ µå¹°´Ù.

WAVECAPS_PLAYBACKRATE(0x2) : Ç÷¹ÀÌ¹é ·¹ÀÌÆ® Áö¿ø. »ùÇÃÀ» °Ç³Ê ¶Ù°Å³ª º¸°£ÇÏ¿© ¼Óµµ¸¦ Á¶ÀýÇÏ´Â ±â¹ýÀÌ´Ù.

WAVECAPS_VOLUME(0x4) : º¼·ý Á¶Àý °¡´É

WAVECAPS_LRVOLUME(0x8) : ÁÂ¿ì º¼·ý ºÐ¸® Á¶Àý °¡´É

WAVECAPS_SYNC(0x10) : µ¿±âÀûÀÎ Àç»ý °¡´É

WAVECAPS_SAMPLEACCURATE(0x20) : Á¤È®ÇÑ À§Ä¡ Á¤º¸ Á¶»ç °¡´É

 

ÇöÀç ½Ã½ºÅÛÀÇ Ãâ·Â ÀåÄ¡¿Í ´É·ÂÄ¡¸¦ Á¶»çÇØ º¸ÀÚ. ºñÁÖ¾ó ½ºÆ©µð¿À·Î ÄÜ¼Ö ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÏ°í WaveTest·Î À̸§À» ÁØ´Ù. Ưº°ÇÑ ¼³Á¤Àº ÇÊ¿ä ¾ø°í µðÆúÆ® ±×´ë·Î ¾²¸é µÈ´Ù. À¯´ÏÄÚµå ¹®ÀÚ ÁýÇÕÀ» »ç¿ëÇصµ º° ºÒÆíÀº ¾ø´Ù. ´ÙÀ½ ¼Ò½º¸¦ ÀÛ¼ºÇÑ´Ù.

 

#include <stdio.h>

#include <windows.h>

 

#pragma comment(lib, "winmm.lib")

 

int main()

{

           UINT wavenum;

           char devname[128];

 

           wavenum = waveOutGetNumDevs();

           printf("ÀåÄ¡ °³¼ö = %d\n", wavenum);

 

           WAVEOUTCAPS cap;

           for (UINT i = 0; i < wavenum; i++) {

                        waveOutGetDevCaps(i, &cap, sizeof(WAVEOUTCAPS));

                        WideCharToMultiByte(CP_ACP, 0, cap.szPname, -1, devname, 128, NULL, NULL);

                        printf("%d¹ø : %d ä³Î,Áö¿ø Æ÷¸Ë=%x,±â´É=%x,À̸§=%s\n",

                                     i, cap.wChannels, cap.dwFormats, cap.dwSupport, devname);

           }

}

ÀåÄ¡ °³¼ö = 3

0¹ø : 2 ä³Î,Áö¿ø Æ÷¸Ë=fffff,±â´É=2e,À̸§=½ºÇÇÄ¿(Realtek(R) Audio)

1¹ø : 2 ä³Î,Áö¿ø Æ÷¸Ë=fffff,±â´É=2e,À̸§=UHD HDMI1(NVIDIA High Definitio

2¹ø : 2 ä³Î,Áö¿ø Æ÷¸Ë=fffff,±â´É=2e,À̸§=LG Ultra HD(NVIDIA High Definit

 

mmsystem.h ÆÄÀÏÀ» ÀÎŬ·çµåÇØ¾ß Çϴµ¥ windows.h¿¡ ÀÇÇØ ÀÚµ¿À¸·Î Æ÷ÇԵȴÙ. winmm.lib´Â ÇÁ·ÎÁ§Æ® ¼Ó¼ºÃ¢ÀÇ ¸µÅ©/ÀԷ¶õ¿¡ ÁöÁ¤Ç쵂 ¼Ò½º¿¡¼­ #pragma ¹®À¸·Î ¸µÅ©ÇÏ¸é °£ÆíÇÏ´Ù. ½ÇÇà °á°ú´Â ½Ã½ºÅÛ¸¶´Ù ´Ù¸¥µ¥ À§ °á°ú´Â ³ªÀÇ ÄÄÇ»ÅÍ¿¡¼­ ½ÇÇàÇÑ ¿¹ÀÌ´Ù.

½ºÇÇÄ¿¸¦ 2°³³ª ´Þ¾Æ ³õ°í ¾²´Â °©ºÎ´Â ¼³¸¶ ¾ø°ÚÁö Çߴµ¥ ³» ÄÄÇ»ÅÍ¿¡ 3°³³ª ´Þ·Á ÀÖ´Ù´Â °ÍÀ» óÀ½ ¾Ë¾Ò´Ù. ¿äÁòÀº ¸ð´ÏÅÍ°¡ ½ºÇÇÄ¿ ¿ªÇÒÀ» °âÇϱ⵵ Çϴµ¥ ÁøÂ¥ ½ºÇÇÄ¿ Çϳª¿¡ µà¾ó ¸ð´ÏÅÍ°¡ ´Þ·Á ÀÖ´Ù. ½ÇÁ¦·Î´Â °ÅÁöÁö¸¸ ³ªµµ ¸ð¸£´Â »çÀÌ¿¡ °©ºÎ°¡ µÈ ±âºÐÀÌ´Ù.

¸ðµÎ 2ä³Î ½ºÅ×·¹¿À ½ºÇÇÄ¿À̸ç Ç¥ÁØ Æ÷¸ËÀº ´Ù Áö¿øÇÑ´Ù. ºñ¾ÐÃà Æ÷¸ËÀÌ¸é ¾î¶² °ÍÀ̵ç Àç»ýÇÒ ¼ö ÀÖ´Ù. Áö¿ø ±â´ÉÀº 0x2e·Î Á¶»ç µÇ´Âµ¥ º¼·ýÀº ÁÂ¿ì °¢°¢ °³º°ÀûÀ¸·Î Á¶Àý °¡´ÉÇÏ°í µ¿±â Àç»ýÀ̳ª ÇÇÄ¡ Á¶Àý ±â´ÉÀº Á¦°øÇÏÁö ¾Ê´Â´Ù.

ÀÌÈÄÀÇ ¿¹Á¦µµ °°Àº ÇÁ·ÎÁ§Æ®¿¡ °è¼Ó ÀÛ¼ºÇϱâ·Î ÇÑ´Ù. ÄÜ¼Ö ÇÁ·ÎÁ§Æ®´Â ¼Ò½º¸¸ ¹Ù²Ù¸é µÇ´Ï ÇÁ·ÎÁ§Æ®¸¦ ÀÏÀÏÀÌ ¸¸µé ÇÊ¿ä´Â ¾ø´Ù. ¹èÆ÷ ÇÁ·ÎÁ§Æ®´Â ÇÑ ¼Ò½º¿¡ ¿©·¯ ¿¹Á¦¸¦ ÁÖ¼®À¸·Î ¹­¾î µÎ¾ú´Ù. ½ÇÇàÇØ º¼ ¿¹Á¦ÀÇ ÁÖ¼®À» Ç®¾î ÄÄÆÄÀÏÇØ º¸¸é µÈ´Ù.