กลับไปหน้าบทความ

อ่าน 8 นาที

โอเพ่นเอแอล

OpenAL ( Open Audio Library [ 3 ] [ 4 ] ) เป็น อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน เสียง (API) ข้ามแพลตฟอร์ม...

โอเพ่นเอแอล

โอเพ่นเอแอล
ผู้เขียนต้นฉบับซอฟต์แวร์โลกิ
นักพัฒนาเทคโนโลยีสร้างสรรค์
เวอร์ชันเสถียร
1.1 (ตัวติดตั้ง 2.1.0.0) [ 1 ] / พฤศจิกายน 2552 ( 2009-11 )
เขียนเป็นซี
ระบบปฏิบัติการ15 ระบบปฏิบัติการดู: แพลตฟอร์มที่รองรับ
พิมพ์อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน
ใบอนุญาต
  • ตัวอย่างการใช้งาน: เป็นกรรมสิทธิ์ตั้งแต่เวอร์ชัน 1.1, LGPLก่อนเวอร์ชัน 1.1, BSDในเวอร์ชันแรกๆ[ 2 ]
  • เครื่องหมายการค้า "OpenAL": ไม่ชัดเจน เป็นกรรมสิทธิ์ของ Creative Labs, Inc.
เว็บไซต์www.openal.org แก้ไขข้อมูลนี้บนวิกิดาต้า

OpenAL ( Open Audio Library [ 3 ] [ 4 ] ) เป็นอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันเสียง (API) ข้ามแพลตฟอร์มออกแบบมาเพื่อการเรนเดอร์เสียงสามมิติแบบหลายช่องสัญญาณอย่างมีประสิทธิภาพ รูปแบบและข้อกำหนดของ API นั้นคล้ายคลึงกับOpenGLโดยเจตนา OpenAL เป็น ไลบรารี เสียงสามมิติ สำหรับสภาพแวดล้อม ซึ่งสามารถเพิ่มความสมจริงให้กับวิดีโอเกมหรือสภาพแวดล้อมเสมือนจริงอื่นๆ โดยการจำลองการลดทอน (การลดทอนของเสียงตามระยะทาง) เอฟเฟกต์ ดอปเปลอร์ (การเปลี่ยนแปลงความถี่อันเป็นผลมาจากการเคลื่อนไหว) และความหนาแน่นของวัสดุ

เดิมที OpenAL มีเป้าหมายที่จะเป็นมาตรฐานเปิดและ ซอฟต์แวร์โอ เพนซอร์สที่ใช้ทดแทน API เสียง 3 มิติ แบบกรรมสิทธิ์ (และโดยทั่วไปแล้วไม่สามารถใช้งานร่วมกันได้) เช่นDirectSoundและCore Audioแต่ในทางปฏิบัติแล้ว OpenAL ถูกนำไปใช้ในแพลตฟอร์มต่างๆ ในรูปแบบของ ตัวห่อ หุ้ม (wrapper)รอบ API แบบกรรมสิทธิ์ดังกล่าว หรือในรูปแบบของเวอร์ชันที่แยกออกมาเฉพาะสำหรับผู้ผลิตแต่ละราย แม้ว่าเวอร์ชันอ้างอิงจะกลายเป็นแบบกรรมสิทธิ์และไม่มีการบำรุงรักษาในภายหลัง แต่ก็ยังมีเวอร์ชันโอเพนซอร์ส เช่นOpenAL Softให้ใช้งานได้

ประวัติศาสตร์

OpenAL ได้รับการพัฒนาขึ้นครั้งแรกในปี 2000 โดยLoki Softwareเพื่อช่วยพวกเขาในธุรกิจการพอร์ต เกมWindows ไป ยังLinux [ 5 ]หลังจากที่ Loki ล้มเหลว โครงการนี้ได้รับการดูแลต่อโดย ชุมชน ซอฟต์แวร์เสรี / โอเพนซอร์สและถูกนำไปใช้งานบน การ์ดเสียงและเมนบอร์ด NVIDIA nForce โดยได้รับการดูแล (และพัฒนาส่วนใหญ่) โดยCreative Technologyจนถึงประมาณปี 2012

ตั้งแต่เวอร์ชัน 1.1 (ปี 2009) การใช้งานตัวอย่างโดย Creative ได้เปลี่ยนเป็นซอฟต์แวร์กรรมสิทธิ์ โดยเวอร์ชันล่าสุดที่ยังคงใช้ใบอนุญาตแบบฟรียังคงสามารถเข้าถึงได้ผ่านทางคลังเก็บซอร์สโค้ดSubversion ของโครงการ อย่างไรก็ตามOpenAL Softเป็นทางเลือกโอเพนซอร์สที่ใช้กันอย่างแพร่หลายและยังคงได้รับการดูแลและพัฒนาอย่างต่อเนื่อง

แม้ว่าในธรรมนูญของ OpenAL จะระบุว่าจะมี "คณะกรรมการตรวจสอบสถาปัตยกรรม" (ARB) ซึ่งมีรูปแบบคล้ายกับ ARB ของ OpenGL แต่ก็ไม่มีการจัดตั้งองค์กรดังกล่าวขึ้น และโดยทั่วไปแล้วข้อกำหนดของ OpenAL จะได้รับการจัดการและหารือผ่านทางอีเมลในรายชื่อผู้รับจดหมายสาธารณะของ OpenAL เอง

รายชื่อผู้รับจดหมายดั้งเดิม openal-devel ซึ่งดูแลโดย Creative ดำเนินการตั้งแต่เดือนมีนาคม พ.ศ. 2546 ถึงประมาณเดือนสิงหาคม พ.ศ. 2555 [ 6 ] Ryan C. Gordon ผู้เชี่ยวชาญของ Loki ซึ่งต่อมาได้พัฒนาSimple DirectMedia Layerได้เริ่มรายชื่อผู้รับจดหมายและเว็บไซต์ใหม่ที่ OpenAL.org ในเดือนมกราคม พ.ศ. 2557 [ 7 ]ณ เดือนกุมภาพันธ์ พ.ศ. 2566 รายชื่อดังกล่าวยังคงใช้งานอยู่

โครงสร้างและฟังก์ชันการทำงานของ API

ฟังก์ชันการทำงานโดยทั่วไปของ OpenAL ถูกเข้ารหัสไว้ในอ็อบเจ็กต์แหล่งข้อมูลบัฟเฟอร์เสียงและตัวรับฟัง เพียงตัวเดียว อ็อบเจ็กต์แหล่งข้อมูลประกอบด้วยตัวชี้ไปยังบัฟเฟอร์ ความเร็ว ตำแหน่ง และทิศทางของเสียง และความเข้มของเสียง อ็อบเจ็กต์ตัวรับฟังประกอบด้วยความเร็ว ตำแหน่ง และทิศทางของผู้รับฟัง และค่าเกนทั่วไปที่ใช้กับเสียงทั้งหมด บัฟเฟอร์บรรจุข้อมูลเสียงใน รูปแบบ PCMทั้งแบบ 8 หรือ16 บิตใน รูปแบบ โมโนหรือสเตอริโอ เอ็นจิ้นการเรนเดอร์จะทำการคำนวณที่จำเป็นทั้งหมดสำหรับการลดทอนตามระยะทางเอฟเฟกต์ดอปเปลอ ร์ ฯลฯ

ผลลัพธ์โดยรวมสำหรับผู้ใช้ปลายทางคือ ในแอปพลิเคชัน OpenAL ที่เขียนอย่างถูกต้อง เสียงจะทำงานได้อย่างเป็นธรรมชาติเมื่อผู้ใช้เคลื่อนที่ผ่านพื้นที่สามมิติของโลกเสมือนจริง จากมุมมองของโปรแกรมเมอร์ แทบไม่ต้องทำงานเพิ่มเติมมากนักเพื่อให้สิ่งนี้เกิดขึ้นในแอปพลิเคชันกราฟิก 3 มิติที่ใช้ OpenGL อยู่แล้ว

แตกต่างจากข้อกำหนด OpenGL ข้อกำหนด OpenAL ประกอบด้วยAPI สองส่วนย่อย ได้แก่ ส่วนหลักซึ่งประกอบด้วยการเรียกใช้ฟังก์ชัน OpenAL จริง และ API ALC (Audio Library Context) ซึ่งใช้ในการจัดการบริบทการเรนเดอร์ การใช้งานทรัพยากร และการล็อกในลักษณะข้ามแพลตฟอร์ม นอกจากนี้ยังมีไลบรารี 'ALUT' (Audio Library Utility Toolkit) ที่ให้ฟังก์ชัน 'อำนวยความสะดวก' ระดับสูง ซึ่งคล้ายคลึงกับ ' GLUT ' ของ OpenGL อย่างมาก

เพื่อให้สามารถเพิ่มฟังก์ชันการทำงานเพิ่มเติมในอนาคต OpenAL จึงใช้กลไกการขยายฟังก์ชันการทำงาน ผู้จำหน่ายแต่ละรายจึงสามารถรวมส่วนขยายของตนเองเข้ากับการแจกจ่าย OpenAL ได้ โดยทั่วไปแล้วเพื่อจุดประสงค์ในการเปิดเผยฟังก์ชันการทำงานเพิ่มเติมบนฮาร์ดแวร์ที่เป็นกรรมสิทธิ์ของตน ส่วนขยายสามารถได้รับการเลื่อนระดับเป็นสถานะ ARB (Architecture Review Board) ซึ่งบ่งชี้ว่าเป็นส่วนขยายมาตรฐานที่จะได้รับการดูแลรักษาเพื่อความเข้ากันได้กับเวอร์ชันก่อนหน้า ส่วนขยาย ARB มีโอกาสที่จะถูกเพิ่มเข้าไปใน API หลักหลังจากช่วงระยะเวลาหนึ่ง

สำหรับการประมวลผลสัญญาณดิจิทัลขั้นสูงและเอฟเฟ็กต์เสียงที่เร่งความเร็วด้วยฮาร์ดแวร์ สามารถใช้ EFX (Effects Extension) หรือส่วนขยายเสียงสภาพแวดล้อม (EAX) ได้

ข้อจำกัด

แบบ จำลอง ผู้ฟังเดี่ยวใน OpenAL ออกแบบมาสำหรับผู้ใช้ที่เป็นมนุษย์เพียงคนเดียว และไม่เหมาะสำหรับปัญญาประดิษฐ์หรือการจำลองหุ่นยนต์ หรือผู้เข้าร่วมที่เป็นมนุษย์หลายคน เช่น ในการแสดงดนตรีร่วมกัน[ 8 ] ในกรณีเหล่านี้ จำเป็นต้องใช้แบบจำลองผู้ฟังหลายคน OpenAL ยังไม่คำนึงถึงความล่าช้าในการแพร่กระจายของเสียง (ความเร็วของเสียงใช้สำหรับปรากฏการณ์ดอปเปลอร์เท่านั้น) ระยะห่างจากแหล่งกำเนิดเสียงจะแปลงเป็นผลกระทบของแอมพลิจูด (การลดทอน) เท่านั้น ไม่ใช่ความล่าช้า ดังนั้น OpenAL จึงไม่สามารถใช้สำหรับ การคำนวณ ความแตกต่างของเวลาในการมาถึงได้ เว้นแต่จะมีการเพิ่มฟังก์ชันนั้นเข้าไปแยกต่างหาก[ 9 ]

เพื่อให้สามารถใช้ประโยชน์จากความเร็วเต็มที่ของ OpenAL จำเป็นต้องมีการใช้งานเฉพาะของผู้ผลิต/ฮาร์ดแวร์ ซึ่งมักจะไม่เปิดเผยเป็นโอเพนซอร์ส แพลตฟอร์มที่รองรับจำนวนมากใช้งาน OpenAL ในรูปแบบของwrapperซึ่งทำหน้าที่แปลงการเรียกใช้เป็น API เสียงดั้งเดิมของแพลตฟอร์ม ซึ่งมักจะเป็น API เสียงเฉพาะของผู้ผลิต บน Windows หากไม่พบการใช้งานเฉพาะของผู้ผลิต ระบบจะใช้ไลบรารี wrapper wrap_oal.dll แทน ซึ่งทำหน้าที่แปลง OpenAL เป็น DirectSound (ซอฟต์แวร์ทั่วไป) หรือ DirectSound3D (ฮาร์ดแวร์ทั่วไป) การลบ DirectSound3D ออกจากWindows Vistaเป็นต้นไป ทำให้การเร่งความเร็วฮาร์ดแวร์ทั่วไปบน Windows รุ่นใหม่ใช้งานไม่ได้[ 10 ] [ 11 ]

แพลตฟอร์มที่รองรับ

API สามารถใช้งานได้บนแพลตฟอร์มและระบบปฏิบัติการ ต่อไปนี้ : [ 12 ] Android (รองรับOpenSL ES ), AmigaOS 3.x และ 4.x, [ 13 ] Bada , BlackBerry 10 , [ 14 ] BlackBerry PlayBook , BSD , iOS (รองรับCore Audio ), IRIX , Linux (รองรับALSA , OSS , PortAudioและPulseAudio ), Mac OS 8 , Mac OS 9และMac OS X ( Core Audio ), Microsoft Windows (รองรับDirectSound , Windows Multimedia APIและ Windows Multimedia Device (MMDevice) API), MorphOS , OpenBSD , [ 15 ] Solaris , QNXและAROS [ 16 ]

อุปกรณ์เล่นเกมที่รองรับ ได้แก่GameCube , PlayStation 2 , PlayStation 3 , Xbox , Xbox 360 , WiiและPlayStation Portableเป็นต้น

แอปพลิเคชัน

เกมส์

เกมวิดีโอต่อไปนี้เป็นที่ทราบกันว่าใช้ OpenAL:

แอปพลิเคชันอื่นๆ

  • Blender – ใช้ OpenAL สำหรับโปรแกรมตัดต่อวิดีโอ
  • 3DMark06 – เครื่องมือทดสอบประสิทธิภาพสำหรับเกมเมอร์
  • Dolphin (โปรแกรมจำลอง) – โปรแกรมจำลอง GameCube และ Wii
  • Vanda Engine [ 28 ] – ใช้ OpenAL 1.1 เพื่อจำลองเสียง 2 มิติและ 3 มิติ
  • โครงการโครเกต์[ 29 ]
  • Bino [ 30 ] - ซอฟต์แวร์เล่นวิดีโอที่รองรับวิดีโอสามมิติแบบสเตอริโอและวิดีโอหลายจอแสดงผล

การนำไปใช้

OpenAL SI
ตัวอย่างการใช้งาน OpenAL เป็นการใช้งานดั้งเดิมจาก Loki และปัจจุบันไม่มีการดูแลรักษาแล้ว
โอเพ่นเอแอล ซอฟต์
OpenAL Soft เป็นซอฟต์แวร์ที่ได้รับอนุญาตภายใต้ LGPL และใช้งานได้บนหลายแพลตฟอร์ม ไลบรารีนี้มีจุดประสงค์เพื่อเป็นการอัปเดต/ทดแทน OpenAL Sample Implementation ที่ล้าสมัยและเป็นกรรมสิทธิ์ ซึ่งใช้งานได้ฟรี OpenAL Soft รองรับเอาต์พุตแบบโมโน สเตอริโอ (รวมถึง HRTF และ UHJ) 4 แชนเนล 5.1 6.1 7.1 และ B-Format รองรับไฟล์เสียง Ambisonic [ 31 ] [ 32 ]
เอออนเวฟ-โอเพ่นเอแอล
AeonWave-OpenAL เป็นเลเยอร์จำลอง OpenAL ที่ได้รับอนุญาตภายใต้ LGPL ซึ่งใช้ประโยชน์จากการเร่งความเร็วฮาร์ดแวร์ที่จัดหาโดย ไลบรารีเสียง 4 มิติ AeonWave ที่ ไม่ฟรีแต่มีต้นทุนต่ำสำหรับ Linux และ Windows ที่สร้างโดยAdalin BVผู้เขียนอ้างว่าการใช้งาน AeonWave-OpenAL แสดงผลเสียง 3 มิติได้เร็วกว่าOpenAL SIหรือOpenAL Soft ถึงห้าเท่า (บน AMD Athlon 64 X2 ) ถึงเจ็ดเท่า (บนIntel Atom N270 ) ภายใต้เงื่อนไขเดียวกัน[ 33 ]ด้วยการใช้ ไลบรารี AeonWaveการใช้งานนี้รองรับ HRTF เช่นเดียวกับเสียงเซอร์ราวด์แบบมีมิติสำหรับลำโพงสูงสุดแปดตัว
ไดรเวอร์ Rapture3D OpenAL
ไดรเวอร์ Rapture3D OpenAL เป็นซอฟต์แวร์เชิงพาณิชย์ที่ไม่ฟรี สำหรับ Windows เท่านั้น ซึ่งพัฒนาโดย Blue Ripple Soundไลบรารีนี้มีจุดประสงค์เพื่อใช้ทดแทนการใช้งานอื่นๆ ที่มีประสิทธิภาพสูง โดยมีคุณสมบัติดังนี้: [ 34 ]
  • เส้นทางเสียงแบบจุดลอยตัว 32 บิต
  • การแปลงอัตราการสุ่มตัวอย่างคุณภาพสูง (ใช้สำหรับวัตถุประสงค์ต่างๆ รวมถึงการเปลี่ยนแปลงความถี่แบบดอปเปลอร์)
  • เอฟเฟกต์และฟิลเตอร์คุณภาพสูง
  • รองรับแหล่งเสียงหลายช่องสัญญาณ (รวมถึงไฟล์เสียงที่เข้ารหัสโดยใช้Ambisonics )
  • ข้อจำกัดเพียงอย่างเดียวของจำนวนแหล่งกำเนิดเสียงหรือเอฟเฟ็กต์คือพลังการประมวลผลของ CPU สามารถประมวลผลแหล่งกำเนิดเสียงหลายร้อยแหล่งและเอฟเฟ็กต์หลายอย่างได้บนฮาร์ดแวร์ที่ค่อนข้างเก่า
  • ระบบเสียง Ambisonics ระดับสูง (HOA) ทำงานที่ระดับสูงสุดถึงลำดับที่สี่
Apple OpenAL [ 35 ]
Apple จัดส่งการใช้งาน OpenAL ใน macOS และ iOS ซึ่งเป็นเลเยอร์ที่บางมากเหนือคุณสมบัติ 3D Mixer (kAudioUnitSubType_3DMixer) ในระบบปฏิบัติการ การใช้งานนี้เดิมทีเขียนโดย Ryan C. Gordon สำหรับระบบ Altivec Mac OS X [ 36 ]
โมโจอัล
การใช้งาน OpenAL 1.1 แบบเต็มรูปแบบขนาดเล็ก (ไฟล์เดียว) ที่สร้างขึ้นบนSDL2โดย Ryan C. Gordon [ 37 ]

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการของ OpenAL

การนำไปใช้งาน:

  • โอเพ่นเอแอล ซอฟต์
  • เอออนเวฟ-โอเพ่นเอแอล
  • ไดรเวอร์Rapture3D ขั้นสูง OpenAL 1.1

แหล่งข้อมูลสำหรับนักพัฒนา:

  • บทเรียน OpenAL จาก DevMaster.net (หมายเหตุ: บทเรียนเหล่านี้อาจดูเก่าไปบ้าง เช่น การใช้ฟังก์ชันที่เลิกใช้แล้วอย่าง alutLoadWAVFile)
  • คลังส่วนขยาย OpenAL (ดูแลโดย Raulshc ณ ปี 2023; พร้อมตารางส่วนขยายที่รองรับในแต่ละการใช้งาน)
  • แพ็คเกจ OpenALใน Conan ซึ่งเป็นตัวจัดการแพ็คเกจ C++
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=OpenAL&oldid=1354019377 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ โอเพ่นเอแอล

OpenAL ( Open Audio Library [ 3 ] [ 4 ] ) เป็น อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน เสียง (API) ข้ามแพลตฟอร์ม...

ประวัติศาสตร์

OpenAL ได้รับการพัฒนาขึ้นครั้งแรกในปี 2000 โดย Loki Software เพื่อช่วยพวกเขาในธุรกิจ การพอร์ต เกม Windows ไป ยัง Linux [ 5 ] หลังจากที่ Loki ล้มเหลว โครงการนี้ได้รับการดูแลต่อโดย ชุมชน ซอฟต์แวร์เสรี / โอเพนซอร์ส และถูกนำไปใช้งานบน การ์ดเสียงและเมนบอร์ด NVIDIA...

โครงสร้างและฟังก์ชันการทำงานของ API

ฟังก์ชันการทำงานโดยทั่วไปของ OpenAL ถูกเข้ารหัสไว้ใน อ็อบเจ็กต์แหล่งข้อมูล บัฟเฟอร์ เสียง และ ตัวรับฟัง เพียงตัวเดียว อ็อบเจ็กต์แหล่งข้อมูลประกอบด้วยตัวชี้ไปยังบัฟเฟอร์ ความเร็ว ตำแหน่ง และทิศทางของเสียง และความเข้มของเสียง...

ข้อจำกัด

แบบ จำลอง ผู้ฟังเดี่ยว ใน OpenAL ออกแบบมาสำหรับผู้ใช้ที่เป็นมนุษย์เพียงคนเดียว และไม่เหมาะสำหรับปัญญาประดิษฐ์หรือการจำลองหุ่นยนต์ หรือผู้เข้าร่วมที่เป็นมนุษย์หลายคน เช่น ในการแสดงดนตรีร่วมกัน [ 8 ] ในกรณีเหล่านี้ จำเป็นต้องใช้แบบจำลองผู้ฟังหลายคน OpenAL...