์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

1. ๊ฐœ์š”2. ์„ค๋ช…3. ํ”Œ๋ ˆ์ด์–ด ์„ธํŒ…๋ฒ•4. ๊ด€๋ จ ๋งํฌ


Windows Audio Session API

1. ๊ฐœ์š”[ํŽธ์ง‘]

Microsoft์—์„œ Windows Vista ์ดํ›„ ๋ฒ„์ „์—์„œ ์ œ๊ณตํ•˜๋Š” Sound Device์™€ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ๋ฐฉ๋ฒ•.

2. ์„ค๋ช…[ํŽธ์ง‘]

DirectSound๋Š” ์•„ํ‚คํ…์ฒ˜์ƒ Hardware Abstract Layer๋ฅผ ์ง€๋‚  ๋•Œ Kernel Wave Audio Mixer(์ดํ•˜ KMixer)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ปค๋„ ๋ฏน์„œ๋ฅผ ํ†ต๊ณผํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.[1] ์ด KMixer๋ฅผ ํ†ต๊ณผํ•  ๋•Œ ์Œ์งˆ ์—ดํ™” ๋ฐ ํฐ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, Vista๋ถ€ํ„ฐ๋Š” ์ด ๋ถ€๋ถ„์˜ ์•„ํ‚คํ…์ฒ˜ ์ž์ฒด๋ฅผ ์™„์ „ํžˆ ๋œฏ์–ด๊ณ ์ณ์„œ KMixer๋ฅผ ๋ฐฐ์ œํ•œ ์˜ค๋””์˜ค ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๊ธฐ์— ์ด๋ฅธ๋‹ค.

ASIO์™€ ๊ฐ™์ด Exclusive Mode(๋‹จ๋… ๋ชจ๋“œ)๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹จ๋… ๋ชจ๋“œ๋กœ ๋™์ž‘ ์‹œ์—๋Š” ๋ฆฌ์ƒ˜ํ”Œ๋ง ์—†์ด ๋น„ํŠธ ํผํŽ™ํŠธ๋กœ ์‚ฌ์šด๋“œ ๋“œ๋ผ์ด๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋””์ง€ํ„ธ ๋ฐ์ดํ„ฐ ์ „์†ก๊ตฌ๊ฐ„[2]์—์„œ๋Š” ์Œ์งˆ ์—ดํ™”๊ฐ€ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹จ๋… ๋ชจ๋“œ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šด๋“œ ๋“œ๋ผ์ด๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๋ฏ€๋กœ ๋‹จ๋… ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”์‹œํ‚จ ํ”„๋กœ๊ทธ๋žจ ์™ธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์†Œ๋ฆฌ๋Š” ๋“ค์„ ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹จ๋… ๋ชจ๋“œ๋กœ ๋…ธ๋ž˜ ๋“ค์œผ๋ฉด์„œ ๊ฒŒ์ž„์„ ํ•˜๋ฉด ๊ฒŒ์ž„ ์‚ฌ์šด๋“œ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค.

๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๋งค์šฐ ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์–ด[3], ๋””์ง€ํ„ธ ์˜ค๋””์˜ค ๋…น์Œ ์ž‘์—… ๋ฐ ์Œ์•… ๊ฒŒ์ž„ ๋“ฑ๊ณผ ๊ฐ™์ด ์Œ์•…์˜ ์ง€์—ฐ์— ๋ฏผ๊ฐํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” DirectSound๋ฅผ ๋น ๋ฅด๊ฒŒ ๋Œ€์ฒดํ•˜๊ณ  ์žˆ๋‹ค.

Windows Vista ์ด์ƒ์˜ ์šด์˜์ฒด์ œ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ KMixer๊ฐ€ ์™„์ „ํžˆ ์‚ญ์ œ๋˜์—ˆ์œผ๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์—์„œ MME๋‚˜ DirectSound๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ๋กœ๋Š” WASAPI(Shared Mode)๋กœ ์ถœ๋ ฅ๋œ๋‹ค. ๋˜ํ•œ ์ด๋Ÿฌํ•œ ์ด์œ  ๋•Œ๋ฌธ์— EAX์™€ ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๊ธฐ๋Šฅ์„ ์ •์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, ๋ฐ˜๋Œ€๋กœ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๊ธฐ๋Šฅ์ด ์—†๋Š” ๋‚ด์žฅ ์‚ฌ์šด๋“œ ์นฉ์…‹[4]์€ WASAPI๋กœ ์ธํ•ด ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๋Š” ๋œป๋ฐ–์˜ ์ด๋“(?)[5]์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

Windows Vista์™€ Windows 7์—์„œ๋Š” MME WaveIn/WaveOut API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ƒ˜ํ”Œ ๋ ˆ์ดํŠธ ๋ณ€ํ™˜์„ ์š”๊ตฌํ•  ๋•Œ ํ’ˆ์งˆ์ด ์ €ํ•˜๋˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์—ˆ๋‹ค. MME๋ฅผ WASAPI๋กœ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๋“œ๋ผ์ด๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ์ด ๋ฌธ์ œ๋Š” Windows 7 SP1 ๋ฐ Windows Server 2008 R2 SP1 ํ•œ์ •์œผ๋กœ ํ•ซํ”ฝ์Šค๋ฅผ ์„ค์น˜ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ ํ•ซํ”ฝ์Šค ์ œ๊ณต์„ ์ค‘๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค. 64๋น„ํŠธ 32๋น„ํŠธ Windows 8๋ถ€ํ„ฐ๋Š” ํ•ด๊ฒฐ๋˜์–ด์„œ ๋”ฐ๋กœ ์ ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

3. ํ”Œ๋ ˆ์ด์–ด ์„ธํŒ…๋ฒ•[ํŽธ์ง‘]

๊ธฐ๋ณธ ํ˜•์‹ ์„ค์ • ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  • ์ œ์–ดํŒ - ์†Œ๋ฆฌ - ์Šคํ”ผ์ปค๋‚˜ ํ—ค๋“œํฐ ๋“ฑ ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ์žฅ์น˜ ๋”๋ธ” ํด๋ฆญ - ๊ณ ๊ธ‰์—์„œ ๊ธฐ๋ณธํ˜•์‹์„ ๋ณ€๊ฒฝ

๋ฐ˜๋””์บ , ๊ณจ๋“œ์›จ์ด๋ธŒ, ๊ณฐ๋…น์Œ๊ธฐ(2.0 ์ดํ›„) ๋“ฑ์—์„œ๋Š” WASAPI๋ฅผ ์ด์šฉํ•ด์„œ ๋…น์Œํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ถœ๋ ฅ๋˜๋Š” ์†Œ๋ฆฌ๋ฅผ Loopback ๋ฐฉ์‹์œผ๋กœ ๋…น์Œํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์Œ์งˆ์ด ์†์ƒ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์‹œ์Šคํ…œ ๋งˆ์Šคํ„ฐ ๋ณผ๋ฅจ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ ์Šคํ…Œ๋ ˆ์˜ค ๋ฏน์Šค๊ฐ€ ์—†๋Š” ์‚ฌ์šด๋“œ ์นด๋“œ์—์„œ๋„ ๋…น์Œ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

4. ๊ด€๋ จ ๋งํฌ[ํŽธ์ง‘]

[1] kmixer.sys ์ปค๋„ ๋“œ๋ผ์ด๋ฒ„ ๋‚ด๋ถ€๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด OS ์˜ต์…˜์„ ํ†ตํ•ด ์ด๋ฅผ ์šฐํšŒํ•˜๋Š” ์กฐ๊ฑด๋ฌธ์ด ์žˆ๊ธฐ๋Š” ํ•˜๋‚˜ ์ผ๋ฐ˜์ ์ธ ์˜ต์…˜์ด ์•„๋‹ˆ๋‹ค.
[2] ๋””์Šคํฌ โ†’ ๋ฉ”๋ชจ๋ฆฌ โ†’ (CPU ํ˜น์€ DMA) โ†’ ์‚ฌ์šด๋“œ์นด๋“œ ๊ฒฝ๋กœ
[3] ํ•ด์™ธํฌ๋Ÿผ์˜ ๋ฐ˜์‘๋“ค ๊ฐ€์šด๋ฐ์—๋Š” 70ms โ†’ 4ms ๋ผ๋Š” ๋ณด๊ณ ๋„ ์žˆ๋‹ค. ์ด๋Š” ASIO๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ๊ฑฐ์˜ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ์ด๋‹ค. ASIO๋Š” ์‚ฌ์šด๋“œ์นด๋“œ๊ฐ€ ์ „์šฉ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ์œ ์ €๊ฐ€ ASIO4ALL์„ ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋ฐ˜๋ฉด, WASAPI๋Š” Windows Vista ์ด์ƒ OS๋งŒ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ๋ฐ”๋กœ ๋™์ž‘ํ•˜๋ฏ€๋กœ ASIO๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๋‹ค.
[4] ๋ฉ”์ธ๋ณด๋“œ์— ๋ถ™์–ด์žˆ๋Š” CODEC์—์„œ ์‹ ํ˜ธ๋ฅผ ์ž…/์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๋์ด๋‹ค. ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šด๋“œ ์ฒ˜๋ฆฌ๋Š” ๋ชจ๋‘ CPU์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.
[5] ๋˜‘๊ฐ™์ด CPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด ๊ฐœ์„ ๋˜๊ณ  ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด์„œ ์‹ค์ œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.