OpenAL

จริงๆเรื่องการทำงานกับเสียง เช่นการเล่นเสียงเพลงหรือ effect ต่างๆนั้นเป็นเรื่องที่ผมไม่ถนัดเอาซะเลย ออกจะมาทางสาย 3D Graphics ซะมากกว่า แต่เนื่องจากงานประจำที่ทำอยู่ทำให้ต้องมาทำงานด้านนี้ ซึ่งก็นับว่าเป็นโอกาสดี เพราะว่าอยากจะทำมานานแล้วแต่ไม่ได้มีโอกาสทำจริงๆจังๆซะที

ปกติเวลาจะให้ com มันเล่นเสียงออกมานั้น คนทั่วไปก็รู้อยู่แล้วละว่าต้องเอา file เพลงพวก mp3 นี่แหล่ะไปเปิด นอกจากนั้นไม่ค่อยรู้กันหรอกว่าข้างในมันทำงานกันยังไง ผมเองก็รู้นิดๆหน่อยสมัยยังเรียนอยู่ เริ่มจากการบันทึกเสียงก่อนดีกว่าคือ เสียงหรือคลื่นเสียงที่เราได้ยินนั้นมันเป็นสัญญาญ Analog ลักษณะเป็นพวก waveform หนะ แต่ computer บัณทึก analog wave form เก็บไว้โดยตรงไม่ได้ ต้องทำการทำการ Sampling ก่อน ซึ่งข้อมูล analog ก็จะถูกเก็บมาเป็น digital เอาสั้นๆง่ายๆแค่นี้นะเดี๋ยวยาว เรื่องพวกนี้พวกที่เรียนวิศวะไฟฟ้า (สื่อสาร) น่าจะรู้จักกันดี ผมเรียนวิศวะคอมก็พอรู้งูๆปลาๆนั่นแหล่ะ

ข้อมูลที่ถูก Sampling มาเก็บไว้ เค้าเรียกว่า Sample ซึ่งจะถูกจัดเก็บลงบน file ก็พวก .mp3 น่ะแหล่ะ อาจจะมีขั้นตอนการบีบอัดเล็กน้อยให้ file มันมีขนาดเล็ก ที่นี้ถ้าจะเอาออกมาเล่นล่ะจะทำยังไง ง่ายๆเลยก็เปิด file เสียงนั่นขึ้นมา จากนั้นก็ decode แล้วส่ง Sample ที่ decode ได้มานั้นไปยัง buffer ของ sound card แล้วก็สั่งให้มันเล่น เจ้า sound card มันก็จะทำการ reconsturct ข้อมูล คือพยายามสร้าง sample ให้กลับมาเป็น waveform ต้นแบบ แล้วก็ output ออกมา ที่นี้ก็มีเสียงออกมาแล้ว ง่ายมั๊ย!!

แล้วมันเกี่ยวอะไรกับ OpenAL!?

OpenAL (Open Audio Library) มันช่วยให้เราสามารถทำงานกับ sound card ได้ด้วย API ชุดเดียวไม่ว่าจะทำงานบน Platform ไหน ยกตัวอย่างเช่น Windows จะใช้คำสั่งอะไรก็ไม่รู้(55 จำไม่ได้) ในการส่ง Sample ไปยัง sound card แน่นอนมันไม่ใช่คำสั่งเดียวกันบน Linux แน่นอน แต่หากเราใช้ OpenAL แล้วคำสั่งชุดเดียวกันจะสามารถนำไปใช้บนหลายๆ platform ได้ทันที สะดวกสบายมั๊ยละ ก็เหมือน OpenGL น่ะแหล่ะ🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: