อ่าน 6 นาที
ไดเร็กซาวด์
DirectSound เป็นส่วนประกอบซอฟต์แวร์ที่เลิกใช้แล้วของ ไลบรารี Microsoft DirectX สำหรับ ระบบปฏิบัติการ Windows ซึ่งถูกแทนที่ด้วย XAudio2 โดยมีอินเทอร์เฟซที่มีความหน่วงต่ำสำหรับ...
ไดเร็กซาวด์
DirectSoundเป็นส่วนประกอบซอฟต์แวร์ที่เลิกใช้แล้วของ ไลบรารี Microsoft DirectXสำหรับ ระบบปฏิบัติการWindows ซึ่งถูกแทนที่ด้วยXAudio2โดยมีอินเทอร์เฟซที่มีความหน่วงต่ำสำหรับ ไดรเวอร์ การ์ดเสียงที่เขียนขึ้นสำหรับ Windows 95 ถึง Windows XP และสามารถจัดการการผสมและการบันทึกสตรีมเสียงหลายรายการได้ เดิมที DirectSound เขียนขึ้นสำหรับ Microsoft โดยJohn Miles [ 1 ]
นอกจากการให้บริการที่จำเป็นในการส่งข้อมูลเสียงไปยังการ์ดเสียงแล้ว DirectSound ยังมีคุณสมบัติที่จำเป็นอื่นๆ เช่น การบันทึกและผสมเสียง การเพิ่มเอฟเฟกต์เสียง (เช่นเสียงก้อง เสียงสะท้อนเสียงแฟลงจ์หรือเอ ฟเฟกต์ ปรับปรุงเสียง อื่นๆ ) การใช้บัฟเฟอร์เร่งความเร็วฮาร์ดแวร์ใน Windows 95 ถึง XP และการวางตำแหน่งเสียงในพื้นที่ 3 มิติ DirectSound ยังมีวิธีการบันทึกเสียงจากไมโครโฟนหรืออินพุตอื่นๆ และควบคุมเอฟเฟกต์การบันทึกเสียงระหว่างการบันทึกเสียง[ 2 ]
หลังจากการพัฒนามาหลายปี ปัจจุบัน DirectSound เป็นAPI ที่มีความสมบูรณ์ และมีคุณสมบัติที่มีประโยชน์อื่นๆ อีกมากมาย เช่น ความสามารถในการเล่นเสียงหลายช่องสัญญาณที่ความละเอียดสูง แม้ว่า DirectSound จะได้รับการออกแบบมาเพื่อใช้ในวิดีโอเกมแต่ปัจจุบันก็ถูกนำมาใช้เล่นเสียงในแอปพลิเคชันเสียงต่างๆ มากมายDirectShowใช้ความสามารถในการเร่งความเร็วเสียงฮาร์ดแวร์ของ DirectSound หากการ์ดเสียงมีคุณสมบัติการเร่งความเร็วเสียงฮาร์ดแวร์และถูกเปิดเผยโดยไดรเวอร์เสียง[ 3 ]
คุณสมบัติ
DirectSound เป็น API ในโหมดผู้ใช้ที่ทำหน้าที่เป็นอินเทอร์เฟซระหว่างแอปพลิเคชันและ ไดรเวอร์ การ์ดเสียงทำให้แอปพลิเคชันสามารถสร้างเสียงและเล่นเพลงได้
DirectSound ได้รับการยกย่องว่าเป็นนวัตกรรมที่ปฏิวัติวงการเมื่อเปิดตัวในปี 1995 เนื่องจากมีคุณสมบัติในการส่งกระแสเสียงพร้อมกันหลายกระแส และอนุญาตให้หลายแอปพลิเคชันเข้าถึงการ์ดเสียงได้พร้อมกัน ก่อนหน้านั้น นักพัฒนาเกมจำเป็นต้องเขียนโปรแกรมประมวลผลเสียงของตนเอง
DirectSound ให้การแปลงอัตราการสุ่มตัวอย่างและการผสมเสียง ( ระดับเสียงและการแพนเสียง ) สำหรับแหล่งเสียงจำนวนไม่จำกัด อย่างไรก็ตาม ข้อจำกัดในทางปฏิบัติคือจำนวนแหล่งเสียงฮาร์ดแวร์และประสิทธิภาพของซอฟต์แวร์มิกเซอร์
สถาปัตยกรรม DirectSound มีแนวคิดเรื่อง "บัฟเฟอร์แบบวงแหวน" ซึ่งจะเล่นเสียงอย่างต่อเนื่องเป็นรอบๆ โปรแกรมเมอร์สร้างบัฟเฟอร์เสียง จากนั้นสอบถามสถานะของบัฟเฟอร์อย่างต่อเนื่องผ่าน "เคอร์เซอร์อ่าน" และอัปเดตสถานะด้วย "เคอร์เซอร์เขียน" บัฟเฟอร์มีสองประเภท คือ บัฟเฟอร์ "สตรีมมิ่ง" ซึ่งเก็บเสียงต่อเนื่อง เช่น เพลงประกอบ และบัฟเฟอร์ "คงที่" ซึ่งเก็บเสียงสั้นๆ
บนการ์ดเสียงที่รองรับ DirectSound จะพยายามใช้บัฟเฟอร์ที่ "เร่งความเร็วด้วยฮาร์ดแวร์" กล่าวคือ บัฟเฟอร์ที่สามารถจัดเก็บไว้ในหน่วยความจำภายในของการ์ดเสียง หรือสามารถเข้าถึงได้จากหน่วยความจำระบบ หากไม่มีการเร่งความเร็วด้วยฮาร์ดแวร์ DirectSound จะสร้างบัฟเฟอร์เสียงในหน่วยความจำระบบและใช้การผสมเสียงด้วยซอฟต์แวร์ล้วนๆ
การ์ดเสียงแบบ " wavetable " ในช่วงปลายยุค DOS บางรุ่นเช่นSound Blaster AWE32และGravis Ultrasoundมีหน่วยประมวลผลสัญญาณดิจิทัล ( DSP ) เฉพาะ ซึ่งยืมมาจากเครื่องดนตรีดิจิทัลการ์ดเหล่านี้มีหน่วยความจำภายในที่สามารถใช้สำหรับการบัฟเฟอร์สตรีมเสียงหลายรายการและผสมผสานกันบนการ์ด ทำให้ลดภาระของ CPU และปรับปรุงคุณภาพเสียงได้อย่างมาก อย่างไรก็ตาม ใน DOS ทำได้เฉพาะการเขียนโปรแกรมฮาร์ดแวร์โดยตรงเท่านั้น และ "การเร่งความเร็วฮาร์ดแวร์" แบบเต็มรูปแบบจากหน่วยความจำภายในไม่เคยถูกนำมาใช้ในการ์ดเหล่านี้ เนื่องจากความซับซ้อนของการบัฟเฟอร์แบบสองชั้นการ์ดรุ่นต่อมา เช่นSound Blaster Live! , Audigy และ X-Fi สามารถเข้าถึงบัฟเฟอร์หน่วยความจำของระบบได้โดยตรง
ไดเร็กต์ซาวด์3D
DirectSound3D (DS3D) เป็นส่วนขยายของ DirectSound ที่เปิดตัวพร้อมกับ DirectX 3 ในปี 1996 โดยมีจุดประสงค์เพื่อสร้างมาตรฐานเสียง 3 มิติ ใน Windows DirectSound3D ช่วยให้นักพัฒนาซอฟต์แวร์สามารถใช้งานเสียงได้โดยเขียนโค้ดเพียงครั้งเดียวสำหรับ APIเสียงเดียวแทนที่จะต้องเขียนโค้ดซ้ำหลายครั้งเพื่อให้ใช้งานได้กับผู้ผลิตการ์ดเสียงแต่ละราย
ใน DirectX 5 นั้น DirectSound3D ได้รับการสนับสนุนสำหรับการ์ดเสียงที่ใช้อัลกอริธึมเสียง 3 มิติจากผู้ผลิตรายอื่น เพื่อเร่งความเร็ว DirectSound3D อย่างเหมาะสม โดยใช้วิธีการที่ได้รับการอนุมัติจาก Microsoft
ใน DirectX 8 นั้น DirectSound และ DirectSound3D (DS3D) ได้ถูกรวมเข้าด้วยกันอย่างเป็นทางการและตั้งชื่อว่าDirectX Audioอย่างไรก็ตาม โดยทั่วไปแล้ว API นี้ยังคงถูกเรียกว่า DirectSound อยู่
อีเอเอ็กซ์
EAX เป็นส่วนเสริมของ DirectSound และ DirectSound3D ซึ่งให้การประมวลผลเอฟเฟกต์เสียงแก่บัฟเฟอร์ที่เร่งความเร็วด้วยฮาร์ดแวร์
การสนับสนุนระบบปฏิบัติการ
วินโดวส์ 9x
ใน Windows 95, 98 และ Me ส่วนประกอบมิกเซอร์ DirectSound และไดรเวอร์การ์ดเสียงต่างก็ถูกใช้งานในรูปแบบไดรเวอร์VxD โหมดเคอร์เนล (Dsound.vxd) ซึ่งอนุญาตให้เข้าถึงบัฟเฟอร์หลักที่ใช้โดยฮาร์ดแวร์เสียงได้โดยตรง ดังนั้นจึงให้ความหน่วงต่ำที่สุดเท่าที่จะเป็นไปได้ระหว่าง API โหมดผู้ใช้และฮาร์ดแวร์พื้นฐาน แต่ในบางกรณีอาจทำให้เกิดความไม่เสถียรและข้อผิดพลาด หน้าจอสีน้ำเงิน ได้
Windows 98 ได้แนะนำ WDM Audio และ ไดรเวอร์ Kernel Audio Mixer ( KMixer ) ซึ่งช่วยให้สามารถผสมเสียงแบบดิจิทัล กำหนดเส้นทาง และประมวลผลสตรีมเสียงพร้อมกันด้วยการแปลงอัตราการสุ่มตัวอย่างที่มีคุณภาพสูงขึ้น รวมถึงการสตรีมเคอร์เนล ภายใต้ WDM นั้น DirectSound จะส่งข้อมูลไปยัง KMixer ที่ใช้ซอฟต์แวร์ Windows 98 รุ่นที่สองได้ปรับปรุงการสนับสนุน WDM Audio โดยเพิ่มการบัฟเฟอร์ฮาร์ดแวร์ DirectSound และการเร่งความเร็วฮาร์ดแวร์ DirectSound, การแยกส่วนฮาร์ดแวร์ DirectSound3D, การแปลงอัตราการสุ่มตัวอย่าง (SRC) ของ KMixer สำหรับสตรีมการจับภาพ, การ สนับสนุนเสียง 5.1และการแนะนำDirectMusic [ 4 ] [ 5 ]หากฮาร์ดแวร์เสียงรองรับการผสมฮาร์ดแวร์ (หรือที่เรียกว่าการบัฟเฟอร์ฮาร์ดแวร์หรือการเร่งความเร็วฮาร์ดแวร์ DirectSound) DirectSound จะบัฟเฟอร์ไปยังอุปกรณ์แสดงผลโดยตรง[ 6 ]หากสตรีม DirectSound ใช้การผสมฮาร์ดแวร์ KMixer และความล่าช้าของมันจะถูกข้ามไป[ 7 ]บน Windows 98 และ Windows Me ไดรเวอร์เสียง WDM เป็นที่นิยมมากกว่า แต่ยังคงรักษาความเข้ากันได้กับโมเดลไดรเวอร์ VxD ไว้
แม้ว่าWindows Driver Model (WDM) จะมีให้ใช้งานตั้งแต่ Windows 98 แต่ผู้ผลิตการ์ดเสียงส่วนน้อยเท่านั้นที่ใช้ WDM สำหรับ Windows 98 FE เนื่องจากการบัฟเฟอร์ภายใน KMixer ทำให้เกิดความหน่วงในการประมวลผลอย่างมาก (30 มิลลิวินาทีในระบบขณะนั้น) Windows 98 ยังมีไดรเวอร์คลาสสตรีมมิ่ง WDM (Stream.sys) เพื่อรองรับความต้องการในการประมวลผลสตรีมข้อมูลมัลติมีเดียแบบเรียลไทม์ เมื่อการ์ดเสียงใช้ไดรเวอร์แบบกำหนดเองสำหรับใช้กับไดรเวอร์คลาสพอร์ตที่ระบบจัดหาให้PortCls.sysหรือใช้มินิไดรเวอร์สำหรับใช้กับไดรเวอร์คลาสสตรีมมิ่ง แอปพลิเคชันสามารถข้าม KMixer ไปได้อย่างสมบูรณ์และใช้ส่วนต่อประสานสตรีมมิ่งของเคอร์เนลแทนเพื่อลดความหน่วง
ใน Windows 95, 98 และ Me นั้น DirectSound ได้รับการ ออกแบบมาสำหรับอุปกรณ์เสียงรุ่นเก่าในสมัยนั้น เช่นAC'97และAudioPCI [ 8 ]
วินโดวส์ 2000/เอ็กซ์พี
ใน Windows 2000 ไมโครซอฟต์ยังได้นำสแต็กเสียงแบบ WDM เดียวกันมาใช้ในWindows NTโดยการแนะนำไดรเวอร์เสียง WDM และส่วนประกอบมิกเซอร์เคอร์เนล ( KMixer ) [ 9 ]ใน Windows XP ไมโครซอฟต์ได้แนะนำไดรเวอร์คลาสสตรีมมิ่งเคอร์เนลที่ได้รับการปรับปรุงอีกตัวหนึ่งคือAVStreamตั้งแต่ Windows XP เป็นต้นไป ยังมีการเพิ่มการเร่งความเร็วฮาร์ดแวร์สำหรับการประมวลผลเอฟเฟกต์การจับภาพ DirectSound [ 10 ]เช่นการยกเลิกเสียงสะท้อนอะคูสติกสำหรับไมโครโฟน USB การลดเสียงรบกวน และการรองรับไมโครโฟนแบบอาร์เรย์
ระบบปฏิบัติการ Windows Server 2003
ในWindows Server 2003การเร่งความเร็วฮาร์ดแวร์ DirectSound ถูกปิดใช้งานโดยค่าเริ่มต้น
วินโดวส์ วิสต้า/วินโดวส์ 7
Windows Vista มีสแต็กเสียงที่เขียนขึ้นใหม่ทั้งหมดโดยอิงตามสถาปัตยกรรมเสียงสากล (Universal Audio Architecture ) เนื่องจากการเปลี่ยนแปลงทางสถาปัตยกรรมในสแต็กเสียงที่ออกแบบใหม่ จึงไม่มีเส้นทางโดยตรงจาก DirectSound ไปยังไดรเวอร์เสียง[ 11 ] DirectSound, DirectMusicและ API อื่นๆ เช่นMMEเป็นตัวห่อความเข้ากันได้เหนือ อินสแตนซ์เซสชัน WASAPI DirectSound ทำงานในโหมดจำลองบนมิกเซอร์ซอฟต์แวร์ของ Microsoft ตัวจำลองไม่มีการแยกส่วนฮาร์ดแวร์ ดังนั้นจึงไม่มีการเร่งความเร็ว DirectSound ด้วยฮาร์ดแวร์ ซึ่งหมายความว่าฮาร์ดแวร์และซอฟต์แวร์ที่อาศัยการเร่งความเร็ว DirectSound อาจมีประสิทธิภาพลดลง เป็นไปได้ว่าผลกระทบต่อประสิทธิภาพที่คาดการณ์ไว้อาจไม่สังเกตเห็นได้ ขึ้นอยู่กับแอปพลิเคชันและฮาร์ดแวร์ของระบบจริง ในกรณีของเอฟเฟกต์เสียง 3 มิติแบบ ฮาร์ดแวร์ ที่เล่นโดยใช้ DirectSound3D จะไม่สามารถเล่นได้ นอกจากนี้ยังทำลายความเข้ากันได้กับส่วนขยาย EAX [ 12 ]ใน Windows Vista/7 WASAPIได้รับการจัดการโดยบริการWindows Audio [ 13 ]
API ของบุคคลที่สาม เช่นASIOและOpenALไม่ได้รับผลกระทบจากการเปลี่ยนแปลงทางสถาปัตยกรรมเหล่านี้ใน Windows Vista เนื่องจากใช้IOCtlเพื่อเชื่อมต่อโดยตรงกับไดรเวอร์เสียง วิธีแก้ปัญหาสำหรับแอปพลิเคชันที่ต้องการใช้ประโยชน์จากเสียง 3 มิติแบบระบุตำแหน่งคุณภาพสูงที่เร่งความเร็วด้วยฮาร์ดแวร์คือการใช้ ASIO หรือ OpenAL อย่างไรก็ตาม วิธีนี้จะใช้ได้ก็ต่อเมื่อผู้ผลิตจัดหาไดรเวอร์ ASIO หรือ OpenAL สำหรับฮาร์ดแวร์ของตน[ 14 ]
ในWindows Vista / Windows 7รวมถึงMicrosoft Windows รุ่น ต่อมา ซอฟต์แวร์จะใช้XACTและแนะนำให้ใช้WASAPI เนื่องจาก WASAPI ได้รับการออกแบบมาสำหรับอุปกรณ์เสียง UAAและ WASAPI สามารถให้ความหน่วงต่ำกว่าเมื่อเทียบกับ MME/DirectSound รุ่นเก่า[ 15 ] [ 16 ]
วินโดวส์ 8
WASAPI audio stack ในWindows 8นำเสนอการสนับสนุนสำหรับ "การถ่ายโอนฮาร์ดแวร์" ของสตรีมเสียงหลายรายการไปยังการ์ดเสียงสำหรับการผสมและการประมวลผลเอฟเฟกต์ นอกเหนือจากการประมวลผลซอฟต์แวร์ที่นำเสนอใน Vista [ 17 ] [ 18 ]อย่างไรก็ตาม ฟังก์ชันการทำงานนี้เปิดเผยเฉพาะสำหรับแอปWindows Runtime เท่านั้น [ 19 ] อินเทอร์เฟซฮาร์ดแวร์ของ DirectSound และDirectMusicสำหรับไดรเวอร์การ์ดเสียงไม่ได้ถูกนำมาใช้ Windows 8 กำหนดให้ไดรเวอร์เสียงต้องเป็นแบบ WDFและUAA
วินโดวส์ 10
Windows 10รองรับการถ่ายโอนฮาร์ดแวร์ ของ เอฟเฟกต์เสียง APO ; ตัวผสมเสียง WASAPIเองยังคงเป็นซอฟต์แวร์[ 20 ] [ 21 ] Windows 10 เพิ่มการสนับสนุนสำหรับตัวเพิ่มประสิทธิภาพเสียงแบบซอฟต์แวร์ที่เรียกว่า Spatial Sound [ 22 ]
วินโดวส์ ซีอี
แม้ว่าการสนับสนุน DirectSound จะมีอยู่ในWindows CEเวอร์ชันสูงสุดถึง 4.2 แต่ก็ถูกลบออกตั้งแต่เวอร์ชัน 5.0 เป็นต้นไป[ 23 ] Windows CE 6.0 ก็ไม่รองรับ DirectSound เช่นกัน แต่สนับสนุนให้แอปพลิเคชันเขียนใหม่เพื่อใช้ Waveform Audio API แทน
การนำไปใช้ทดแทน
หลังจากที่ Windows Vista ได้ถอด DirectSound ออกไป ก็มีโปรแกรมอื่น ๆ ที่ใช้งานทดแทนได้ปรากฏขึ้นมา
Creative ALchemy (2007) ของ Sound Blaster ให้การเร่งความเร็วฮาร์ดแวร์ของ DirectSound3D และเอฟเฟกต์เสียง เช่น EAX [ 24 ] Creative ALchemy ดักจับการเรียกใช้ DirectSound3D และแปลงเป็นการเรียกใช้ OpenAL เพื่อประมวลผลโดยฮาร์ดแวร์ที่รองรับ เช่นSound Blaster X-FiและSound Blaster Audigyสำหรับโซลูชันเสียง Creative ที่ใช้ซอฟต์แวร์ ALchemy จะใช้เอ็นจิ้นเสียง 3 มิติในตัวโดยไม่ต้องใช้ OpenAL เลย
Realtekผู้ผลิตชิปเสียง HD ในตัว มีผลิตภัณฑ์ที่คล้ายกับ ALchemy เรียกว่า 3D SoundBack ส่วนC-Mediaผู้ผลิต ชิปเซ็ต การ์ดเสียง สำหรับพีซี ก็มีโซลูชันที่เรียกว่า Xear3D EX เช่นกัน แต่ทำงานโดยการดักจับการโทร DirectSound3D อย่างโปร่งใสในพื้นหลังโดยไม่ต้องมีการแทรกแซงจากผู้ใช้
IndirectSound เป็นไลบรารีฟรีแวร์ที่จำลอง DirectSound 3D โดยใช้ XAudio2 โดยไม่ต้องใช้การเร่งความเร็วฮาร์ดแวร์[ 25 ]
DSOAL เป็นไลบรารีโอเพนซอร์สที่จำลอง DirectSound 3D และ EAX โดยใช้ OpenAL สามารถใช้งานได้ทั้งการใช้งาน OpenAL ที่เร่งความเร็วด้วยฮาร์ดแวร์หรือ OpenAL Soft (ซึ่งให้ HRTF) [ 26 ]
ขีดจำกัดสูงสุดของอัตราการสุ่มตัวอย่าง
อัตราการสุ่มตัวอย่างสูงสุดที่ DirectSound สามารถรองรับได้คือ 200 kHz [ 27 ]และหาก Windows ถูกตั้งค่าอัตราการสุ่มตัวอย่างสูงกว่า 192kHz เช่น 384kHz ซึ่งรองรับโดยอุปกรณ์เสียงเช่น USB-DAC แอปพลิเคชันที่จัดการ DirectSound (เช่น เกมเก่าที่สร้างขึ้นก่อนปี 2010) อาจไม่เริ่มทำงาน หรือหากเริ่มทำงานได้ ก็อาจไม่มีเสียงออกมาเลย เพื่อแก้ไขปัญหานี้ ให้ตั้งค่าอัตราการสุ่มตัวอย่างเป็น 192 kHz หรือต่ำกว่า แล้วจะทำงานได้อย่างถูกต้อง
แอปพลิเคชันที่ใช้ XAudio2, WASAPIหรือASIOแทน DirectSound ยังคงสามารถทำงานที่ความถี่ 384 kHz ได้
ดูเพิ่มเติม
- ไดเร็กต์มิวสิค
- โอเพ่นเอแอล
- สถาปัตยกรรมเสียง Linux ขั้นสูง
- สถาปัตยกรรมเสียงของ Windows Vista
- ส่วนประกอบเสียงแบบดั้งเดิมของ Windows
- เครื่องมือสร้างเสียงข้ามแพลตฟอร์ม
- เอ็กซ์ออดิโอ2
- ส่วนขยายมัลติมีเดีย
ลิงก์ภายนอก
- MSDN DirectSound
- ระบบเสียง 3 มิติภายใต้ DirectX ทำงานอย่างไร
- ระบบเสียงใน Windows Vista
- Creative ALchemy {บน Internet Archive}
- คำศัพท์: การ์ดเสียงใน PC Gaming Wiki พร้อมหมายเหตุเกี่ยวกับตัวเลือกทดแทน DirectSound
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ไดเร็กซาวด์
DirectSound เป็นส่วนประกอบซอฟต์แวร์ที่เลิกใช้แล้วของ ไลบรารี Microsoft DirectX สำหรับ ระบบปฏิบัติการ Windows ซึ่งถูกแทนที่ด้วย XAudio2 โดยมีอินเทอร์เฟซที่มีความหน่วงต่ำสำหรับ...
คุณสมบัติ
DirectSound เป็น API ในโหมดผู้ใช้ ที่ทำหน้าที่เป็นอินเทอร์เฟซระหว่าง แอปพลิเคชัน และ ไดรเวอร์ การ์ดเสียง ทำให้แอปพลิเคชันสามารถสร้างเสียงและเล่นเพลงได้
ไดเร็กต์ซาวด์3D
DirectSound3D (DS3D) เป็นส่วนขยายของ DirectSound ที่เปิดตัวพร้อมกับ DirectX 3 ในปี 1996 โดยมีจุดประสงค์เพื่อสร้างมาตรฐาน เสียง 3 มิติ ใน Windows DirectSound3D ช่วยให้นักพัฒนาซอฟต์แวร์สามารถใช้งานเสียงได้โดยเขียนโค้ดเพียงครั้งเดียวสำหรับ API...
อีเอเอ็กซ์
EAX เป็นส่วนเสริมของ DirectSound และ DirectSound3D ซึ่งให้การประมวลผลเอฟเฟกต์เสียงแก่บัฟเฟอร์ที่เร่งความเร็วด้วยฮาร์ดแวร์