Mahoromatic !

เมื่อวานเขียนถึงลูกหยี มีคนอ่านแล้วส่ง im มาให้กำลังใจ ขอบคุณทุกคนครับ

แวะเวียนไปเยี่ยม blog พี่เทพ bact’ และ mk เห็นทำลิงค์หากันด้วย นี่ถ้าเป็นกลุ่มก้อนใหญ่กว่านี้อาจจะได้ทำหน้ารวม blog :)

ข่าววันนี้ พี่เทพอัพเดต developer’s wishlist ไว้ที่ LTN แล้ว เข้าไปอ่านคงเห็นภาพกว้างๆ ของการสนับสนุนภาษาไทยในลินุกซ์ครับ อีกเรื่องที่ลืมไม่ได้คือ TLE LiveCD Released เรียบร้อย .. MrChoke ให้ผมทดสอบเบต้า ไม่กี่สิบชั่วโมงออกรีลีสแล้ว ฮ่วย แบบนี้แผ่นเบต้าผมก็หมดค่าไปแล้วสิเนี่ยะ ต้องเบิกๆ

Flight Gear ออกเวอร์ชันใหม่แล้ว วันนี้อัพเดตแพ็กเกจก้อนโตทีเดียว plib, metakit, simgear, และ flightgear รวมเฉียดร้อยเม็ก .. build จนถึง flightgear ปรากฏว่าแป๊ก build ไม่ผ่าน ยังแก้ไม่ได้เลย ไร้สามารถยิ่งนัก อดเล่นจ้อย

.. ระยะหลังผมลงลินุกซ์ไว้สองพาร์ติชัน ติดตั้งทะเลสำหรับทำงานของตัวเองหนึ่ง และติดตั้งทะเลสะอาดๆ สำหรับ build แพ็กเกจอีกหนึ่ง ปกติจะบูตเข้าพาร์ติชันทำงาน พอจะ build แพ็กเกจที่ก็ chroot เข้าไปทะเลสะอาด วิธีนี้ทำให้ได้ dependency ที่แน่นอนกว่า ไม่เจอ dependency ไม่พึงประสงค์ เช่น libGL ของ NVIDIA (โดนประจำ) เข้าไปรวมอยู่ด้วย … ทำ chroot แบบนี้เกิดอาการสองจิตสองใจอีกแล้ว จะเปลี่ยนเป็น gentoo ซักอันดีมั้ยน้อ .. คิดเรื่องนี้ทีไรก็โยงไปถึง rpmmerge ซะทุกที .. ก็ gentoo ยังมี epm ได้ ทำไมทะเลจะมี rpmmerge มั่งไม่ได้ :D

ปิดท้าย .. วันนี้ดูการ์ตูนเรื่อง mahoromatic จบทั้งสองภาคแล้ว (26 ตอน 5.9 GB การ์ตูน M) .. แฮปปี้เอ็นดิ้งแบบเหงาๆ ชอบกล แต่เอาไปเลยห้าดาว ให้เป็นการ์ตูน top10 ของผมเลยเอ้า .. ใครชอบการ์ตูนคอมเมดี้ โรแมนติกนิดๆ ติดเรตหน่อยๆ (ecchi .. ไม่ใช่ hentai นะ) ไม่ผิดหวังครับ :)

ปิดท้ายจริงๆ .. ขออนญาตตัดเนื้อหาบันทึกวันที่ 21 ออกบางส่วน เพราะเป็นเรื่องที่ไม่ควรเปิดเผยครับ (- -‘)

ก็แค่หมาตัวนึง

หลายปีก่อนบ้านเราได้ลูกหมาเทอร์เรียขนสีดำมาตัวนึง ขนมันยาวปรกหน้าจนมองไม่เห็นลูกตา ตัวป้อมๆ ขาสั้นๆ ที่บ้านตั้งชื่อมันว่า “ลูกหยี” .. ลูกหยีเป็นหมาที่เชื่องที่สุดในบ้าน เรียกง่าย เลี้ยงก็ง่าย กินเก่ง ไม่นานมันก็หนักสิบกว่าโล ผมชอบเล่นกับลูกหยีมากที่สุดในบรรดาหมา 13 ตัวที่บ้าน (ในตอนนั้น) ด้วยความที่มันเชื่อง แล้วก็น่ารัก .. ทุกๆ เช้า กินข้าวเสร็จแล้วลูกหยีจะไปนั่งเฝ้าประตูหน้าบ้าน แล้วก็เห่าคนเดินผ่านไปผ่านมา ใครเห็นมันเห่าก็ต้องยิ้ม สิ่งที่ลูกหยีชอบที่สุดคือเกาพุง ไม่ก็เกาหลัง หยุดเกาเมื่อไหร่มันจะเอาหัวมาถูมือ เป็นการอ้อนให้เกาอีก (จนกว่ามันจะหลับ) ..

.. ห้าปีที่ผ่านมา ผมมาอยู่กรุงเทพฯ .. เดือนนึงจะกลับบ้านสักหน .. ทุกครั้งที่กลับถึงบ้าน ลูกหยีจะวิ่งมารับถึงที่ประตูรถ กระดิกหางวิ่งวนไปวนมาจนหอบ .. หมามันก็ดีใจเป็นเหมือนกัน .. ผมจะลูบหัว เกาพุง นั่งเล่นกับลูกหยี แล้วก็ตัวอื่นๆ ก่อนจะขึ้นห้องเอาสัมภาระไปเก็บ .. ลูกหยีอายุสิบกว่าปีแล้ว แต่ยังแข็งแรง วิ่งได้ทั่วบ้าน ทำตัวเป็นลูกหมาเหมือนเดิม

หลายเดือนก่อน ขณะนั่งทำงานอยู่ที่แล็บตอนบ่ายๆ คุณแม่ก็ผมก็โทรมาบอกว่า “ไอ้หยีตายแล้วนะลูก” .. ผมใจหาย .. ลูกหยีช็อคตายอยู่ที่ร้านหมอ คุณแม่เล่าว่าพาลูกหยีกับเฉาก๊วยไปอาบน้ำตัดขนที่ร้านหมอ ปกติลูกหยีจะชอบไปอาบน้ำตัดขนที่ร้านหมอมากชนิดที่ไปแล้วไม่อยากกลับมาบ้านก็เคยมาแล้ว แต่วันนี้มันไม่อยากไป คุณแม่บอกว่าเรียกเท่าไหร่ก็ไม่มาหาทั้งที่ปกติมันเรียกง่าย ไปถึงร้านหมออยู่ๆ ลูกหยีก็ตัวสั่น ตอนแรกก็ไม่ได้คิดอะไรจนกระทั่งมันช็อคแล้วก็นิ่งไป หมอรีบตรวจแล้วก็รีบปั๊มหัวใจอยู่พักนึง แต่มันก็ไม่ฟื้น มันไม่กลับมา .. คุณแม่เอามันไปฝังที่วัด กลับมาถึงบ้าน เฉาก๊วยมันวิ่งวนทั้งบ้าน เหมือนจะหาว่าลูกหยีหายไปไหน ..

ลูกหยีจากไปหลายเดือนแล้ว แต่ผมก็ยังอดคิดถึงมันไม่ได้ .. ก็แค่หมาตัวนึง .. เปล่า .. หนึ่งในเพื่อนที่ดีที่สุด จากผมไป แล้วทำไมผมจะไม่เสียใจ ?

บางทีเพราะมันเป็นแค่หมา ก็เลยเสแสร้งไม่เป็นเหมือนคน ..

บางทีเพราะมันเป็นแค่หมา ก็เลยเข้าใจมันได้ง่ายกว่าคน ..

บางทีเพราะมันเป็นแค่หมา ก็เลยไม่เรียกร้องมากมายเหมือนคน ..

บางทีเพราะเหตุผลพวกนี้ เป็นแค่หมาก็ยังเป็นเพื่อนได้ดีกว่าคนเหมือนกัน ..

ถ้ามันเป็น “แค่หมาตัวนึง” .. แล้วคนล่ะ ?

LinuxTLE LiveCD !

วางแผนทำ TLE LiveCD มาตั้งนาน แต่เพราะผมขี้เกียจตัวเป็นขน เลยไม่ทำออกมาซะที MrChoke ก็เลยตัดหน้าไปซะแล้ว 555 .. ดีเหมือนกัน วันนี้ MrChoke เอา iso แผ่น beta มาให้ลอง ก็เลยเผาแผ่นมาลองดูสักหน่อย เด่นๆ คงเป็น GNOME 2.6 ภาพรวมเหมือนใช้ทะเลธรรมดาๆ เลย การตอบสนองก็อยู่ในขั้นดี (ทดสอบบน AthlonXP 2000+, RAM 384 MB, GeForce4 MX440 64MB) .. แต่ก็ยังมีขาดๆ เกินๆ อยู่บ้าง สรุปเบต้าแรกนี้ถือว่าดีทีเดียว ตัวจริงน่าจะดีขึ้นอีก ออกเมื่อไหร่จะได้เอามาทำเป็นต้นฉบับใช้เองมั่ง เหตุที่จะทำเอง คือ ไม่ชอบการจัด default desktop ของ TLE บวกกับ apps บางตัวผมก็ไม่ได้ใช้แต่ใส่มาเป็น default และบางตัวผมต้องใช้แต่ไม่มีให้ใช้ ตรงนี้ไม่ได้ comment ว่า TLE ดีหรือไม่ดี ภายใต้เงื่อนไขการทำดิสโตรอย่างทะเล และภายใต้หน่วยงานที่ทำ ก็คงต้องเป็นอย่างที่เห็นนั่นล่ะเหมาะแล้ว .. ส่วน LiveCD มันไม่ได้ทำยากทำเย็นอะไรนักหนา ยิ่งมีฐานดีๆ อย่าง Knoppix หรือ Fedora LiveCD หรือ TLE LiveCD อยู่แล้ว จะเอามาทำเองยิ่งสะดวก .. ไว้ผมทำได้แล้วจะเขียนวิธีสร้าง LiveCD ไว้ให้อ่าน :)

blog code updated / gaim 0.77

วันนี้เพิ่ม code ในหน้า blog ให้สร้างและจัดการเรื่องปฏิทิน ก็ได้อาศัย code ทำปฏิทินจาก zend บวกกับเชื่อมการแสดงผลกับ mysql และทำให้แสดงเป็นภาษาไทย ผลที่ได้ก็อย่างที่เห็นนี่ล่ะครับ :)

gaim รีลีสเวอร์ชัน 0.77 แล้ว system log ที่หายไปนาน เวอร์ชันนี้กลับมาแล้ว .. วันนี้เลยนั่งทดสอบและทำแพ็กเกจ gaim 0.77 ให้ทะเล 5.5 .. gaim ยังคงมีปัญหากับ sim อยู่เหมือนเดิม .. ส่วนภาษาไทย ต้องทำแพตช์กันใหม่เพราะแพตช์ตัวเดิมใช้กับ 0.77 ไม่ได้ .. TLE 5.5 สั่ง apt-get update ตามด้วย apt-get upgrade ครับ

Tip of the day: ลินุกซ์อัพเดต atime (access timestamp) ของไฟล์ตลอดเวลา ฮาร์ดดิสก์จึงมีการเขียนข้อมูลตลอดเวลา .. ปกติแล้ว atime ไม่ใช่ attribute ที่สำคัญนักสำหรับเครื่องที่ทำงานแบบเดสก์ท็อป เราสามารถยกเลิก atime ได้โดยแก้ไฟล์ /etc/fstab ใส่ option noatime เพิ่มเข้าไป เช่น

/dev/hda2   /   ext3  defaults,noatime 1 1

จากนั้นก็รีบูต เป็นอันเรียบร้อย

Ogg-ize my CDs

เรื่องของเรื่องก็คือวันนี้ อยากฟังเพลง Praise ของ T-Square (ชุด Gravity) ก็เลยตั้งใจว่าจะเอาแผ่น CD มา rip + encode เป็น ogg .. แต่ไหนๆ ก็ไหนๆ ยก CD มาทั้งลังโลด .. ว่าแล้วก็นั่งเอา grip มา rip + encode ไปหลายสิบแผ่น ไล่จาก A ยัน Z ขาดไปไม่กี่ตัว ก็มี

  • Al Jarreau
  • Boy Thai
  • Casiopea
  • Dave Grusin
  • Dave Koz
  • David Foster
  • Earl Klugh
  • Fourplay
  • George Benson
  • George Winston
  • Larry Carlton
  • Lee Ritenour
  • Mile Davis
  • Shakatak
  • Steve Vai
  • T-SQUARE
  • Thom Rotella Band
  • Tommy Emmanuel
  • Zard

.. พื้นที่ฮาร์ดดิสก์หายไปเป็นกิ๊กๆ .. :P

gaim v.s. sim

เปล่าๆๆ ไม่ใช่จะเปรียบเทียบข้อดีข้อเสีย แต่ที่เขียนถึงเพราะมันมีปัญหาต่ะหาก เรื่องของเรื่องก็คือ sim ส่ง instant message เป็น HTML มาให้ gaim ซึ่งเดิม gaim < 0.76 แสดงผลได้ไม่มีปัญหา เพราะ parse HTML ให้ด้วย แต่มาถึงเวอร์ชัน 0.76 ทีมพัฒนาพิจารณาแล้วว่าโพรโตคอล Oscar ICQ มันไม่ได้ออกแบบให้สนับสนุน HTML มาตั้งแต่แรก ก็เลยตัดส่วน parse HTML ออกไป ทำให้ message ของ sim แสดงเป็น HTML tag อันไม่พึงประสงค์ขึ้นมาด้วย .. วันนี้ผมเลยทำ workaround patch เติมเข้าไปใน gaim 0.76 แล้ว build package สำหรับ TLE 5.5 .. patch นี้คงไม่ submit เข้าต้นน้ำเพราะไม่ใช่วิธีแก้ปัญหาจริงๆ (ซึ่งทาง gaim บอกว่าต้่องให้ sim เป็นคนแก้ .. ไม่รู้ทีมพัฒนาของ sim จะว่ายังไง :P)

kitty.in.th ขึ้นปีที่สามแล้ว

ที่รู้ก็เพราะ …. มีใบทวงค่าโดเมนเนมมาน่ะสิ (T_T)

ปีละ 800 + VAT 7%

.. ไม่มาก ไม่น้อย .. ใครจะบริจาคเพื่อช่วยเหลือไซต์กิ๊กก๊อกแห่งนี้ ติดต่อ kitty (a) kitty · in · th ได้ตลอดเวลาครับ :P

Site History

ใส่ไว้เป็นหลักฐานเสียหน่อย

Fri, 01 Mar 2002       :: Born
Fri, 01 March 2002     :: Under Construction Page
Sun, 17 March 2002     :: Mail Configured
Fri, 4 May 2002        :: Site Configured
Thu, 16 May 2002       :: VirtualHost Configured
Sun, 2 June 2002       :: Zen Content Acquired
Mon, 10 June 2002      :: PHP Implemented
Sat, 15 June 2002      :: Favicon Created
Tue, 23 July 2002      :: Upgrade to gzipslack 8.1
Thu, 3 October 2002    :: Severely crashed by electric shock
Sat, 11 October 2002   :: Server recovered
Sat, 02 November 2002  :: New server, FreeBSD 4.5-RELEASE
Sat, 19 April 2003     :: Script rewritten
Sun, 03 August 2003    :: Upgrade OS to FreeBSD 4.8-RELEASE
Sat, 28 September 2003 :: Site update / Rewrite all scripts
Thu, 8 January 2004    :: Site update / Add gallery management
Tue, 13 January 2004   :: Add APT supported
Fri, 19 January 2004   :: Upgrade OS to FreeBSD 4.9-RELEASE
Thu, 4 March 2004      :: Add repository page

กรุงเทพ – ขอนแก่น = 10 ชั่วโมง

ขับรถไป-กลับระหว่างกรุงเทพกับขอนแก่นมาเป็นร้อยๆ รอบแล้ว เพิ่งจะมีครั้งนี้ล่ะที่ใช้เวลานานถึงสิบชั่วโมง กะว่ากลับวันอาทิตย์รถจะไม่ติดแล้วเชียวนะ .. เซ็งครับ เซ็ง

ระยะทางจากเอไอทีถึงขอนแก่นประมาณสี่ร้อยกิโลเมตร ปกติผมใช้เวลาประมาณสี่ถึงห้าชั่วโมง (ดีที่สุดที่ทำได้คือสามชั่วโมงสิบนาที) วันนี้ออกจากเอไอที ถึง สระบุรีก็ปกติดีอยู่หรอก แต่หลังจากนั้นก็ติดอนาถ .. จากสระบุรีถึงสี่คิ้วร้อยกิโลนิดๆ ฟาดไปเกือบเจ็ดชั่วโมง “เจ็ด” ชั่วโมง ครับพี่น้อง .. มันอะไรกันเว้ยยย

.. ก็ยังดี หลังจากพ้นสี่คิ้วก็ไม่ติด ถึงแม้รถจะเยอะกว่าปกติ .. สรุป ออกจากเอไอทีบ่ายสอง ถึงขอนแก่นสี่ทุ่ม .. เฮ่อ ประเทศไท๊ยย

ALSA : Playback เสียงพร้อมกันด้วย Dmix

ปกติแล้วระบบเสียงบนลินุกซ์ ไม่ว่าจะใช้ ALSA หรือ OSS อนุญาตให้แอพพลิเคชันใช้งานได้เพียงตัวเดียวเท่านั้น เพราะเหตุนี้ หาก XMMS กำลัง playback ผ่าน ALSA แล้ว โปรแกรมอื่นๆ จะใช้ ALSA ไม่ได้ .. ที่จริงแล้วระบบเสียงทุกๆ โอเอสก็เป็นแบบนี้ล่ะครับ เพราะข้อจำกัดจริงๆ อยู่ที่ซาวด์การ์ดซึ่งเกือบทั้งหมดนี้มีชิปสังเคราะห์เสียงเพียงตัวเดียว .. เพื่อแก้ปัญหานี้ บนลินุกซ์จึงมีซอฟต์แวร์ที่เรียกกันว่าซาวด์เซิร์ฟเวอร์ เช่น aRTs ESD NAS หรือ JACK ทำหน้าที่เป็นตัวบริการแทนไดรเวอร์ โดยรับหน้าที่ในการมิกซ์เสียงเพื่อให้แอพพลิเคชันหลายๆ ตัวใช้งานระบบเสียงได้พร้อมๆ กัน .. อย่างไรก็ตาม ข้อเสียของซาวด์เซิร์ฟเวอร์ที่พบในปัจจุบันคือคุณภาพเสียงจะลดลงเมื่อแอพพลิเคชันใช้งานกันหลายตัว โดยเฉพาะการ playback ในอัตราแซมปลิ้งที่ต่างๆ ไปจากความสามารถของซาวด์การ์ด อีกทั้งโปรแกรมต้องเขียนให้สนับสนุนซาวด์เซิร์ฟเวอร์นั้นๆ ด้วย

ที่จริงแล้ว หากใช้ ALSA แล้ว ไม่จำเป็นต้องมีซาวด์เซิร์ฟเวอร์ แอพพลิเคชันก็สามารถสั่ง playback เสียงพร้อมๆ กันได้ โดยใช้ Dmix plugin

ใช้งาน Dmix

Dmix เป็น PCM direct stream mixing plugin ของ ALSA ปลั๊กอินนี้ทำหน้าที่มิกซ์เสียงเพื่อให้แอพพลิเคชันสั่ง playback เสียงได้พร้อมๆ กัน .. Dmix ฝังอยู่ใน libasound มาตั้งแต่ ALSA เวอร์ชัน 0.9 กว่าๆ แล้ว เพียงแต่ไม่ค่อยมีใครรู้และเอามาใช้งานมากนัก ข้อดีของ Dmix คือมันไม่ได้ใช้โมเดลแบบไคลเอนด์/เซิร์ฟเวอร์เหมือนซาวด์เซิร์ฟเวอร์ แต่ใช้วิธีรับข้อมูลแล้วเขียนลงบัฟเฟอร์ของซาวด์การ์ดโดยตรงผ่านทาง DMA ผลคือ Dmix ไม่มีข้อจำกัดเรื่องจำนวนไคลเอนด์ และได้คุณภาพเสียงที่ดี

ในขั้นพื้นฐานที่สุด การใช้งาน Dmix ทำได้โดยระบุดีไวซ์ของ ALSA เป็น Dmix plugin เช่น โปรแกรม aplay ใช้พารามิเตอร์ -D กำหนดดีไวซ์ที่ต้องการใช้ ลองเปิดเทอร์มินัลสองตัว แล้วเรียกใช้ aplay ตามข้างล่างนี้:

$ aplay -Dplug:dmix file.wav

ควรจะได้ยินเสียงจาก file.wav สองเสียงพร้อมกัน

หรือ XMMS ก็สามารถใช้ ALSA plugin แล้วระบุดีไวซ์เป็น plug:dmix ได้เช่นกัน

อย่างไรก็ตาม การใช้งาน Dmix โดยตรงนี้มักจะให้คุณภาพเสียงที่ไม่ดีมากนัก และมักจะมี noise การใช้งานจริงจึงมักจะสร้างดีไวซ์ PCM ขึ้นมาใหม่ โดยสร้างหรือแก้ไขไฟล์ ~/.asoundrc ตามนี้

pcm.intel8x0 {
    type dmix
    ipc_key 1313
    slave {
        pcm "hw:0,0"
        period_time 0
        period_size 1024
        buffer_size 8192
        rate 44100
    }
}

อธิบายคร่าวๆ

~/.asoundrc เป็นคอนฟิกไฟล์ของ libasound นอกเหนือจากคอนฟิกค่าปริยายใน /usr/share/alsa/alsa.conf เราสามารถสร้างดีไวซ์ PCM ของ ALSA ขึ้นมาใหมได้โดยการกำหนดไว้ในไฟล์นี้ จากตัวอย่างนี้ผมสร้างดีไวซ์ PCM ของ ALSA ในชื่อ “intel8x0” ชื่อนี้จะตั้งเป็นอะไรก็ได้ครับ ขอเพียงไม่ซ้ำกับที่กำหนดไว้ก่อนหน้านี้เท่านั้น

  • ผมตั้งเป็น intel8x0 ตามไดรเวอร์ของ i830 AC’97
  • ชนิดของ PCM เป็น dmix หมายความว่า PCM ตัวนี้จะใช้ Dmix plugin เป็นตัว playback ส่วนของ
  • slave มีไว้กำหนดดีไวซ์ที่ intel8x0 ทำงานครอบอยู่ จากตัวอย่างนี้กำหนดเป็น
    • ดีไวซ์ PCM “hw:0,0” อ้างอิง ฮาร์ดแวร์ PCM (บนซาวด์การ์ด) ไอดี 0 พอร์ต 0
    • period_time ขนาดของข้อมูลที่ส่งเข้า/ออกซาวด์การ์ด หน่วยเป็น usec ค่าปริยายจะส่งข้อมูลเข้าซาวด์การ์ดเป็นจังหวะทุก 125 msec (ค่าปริยาย = 125000 usec) กำหนดเป็น 0 เพื่อ override ค่าปริยาย
    • period_size ขนาดของข้อมูลที่ส่งเข้า/ออกซาวด์การ์ด หน่วยเป็นไบต์ ค่าที่กำหนดต้องเป็นสองยกกำลัง n กำหนดมากหรือน้อยไปจะมี noise รบกวน
    • buffer_size กำหนดขนาดของบัฟเฟอร์ กำหนดมากไปอาจจะทำให้มี latency สูง กำหนดน้อยไปก็จะทำให้เสียงขาดช่วง
    • rate อัตราแซมปลิ้ง ที่ 44.1 kHz (ค่าปริยาย = 48 kHz)

ออปชันอาจจะมากหรือน้อยกว่านี้ก็ได้ ค่า period_size กับ buffer_size ไม่จำเป็นต้องเป็นค่า 1024/8192 เสมอไป เพราะขึ้นกับซาวด์การ์ดและชิป PCM ด้วย ต้องลองปรับกันเอาเองครับ

หลังจากได้ดีไวซ์ PCM ตัวใหม่แล้วทีนี้เราก็สามารถอ้างอิงดีไวซ์นี้เพื่อใช้ playback เช่น

$ aplay -Dintel8x0 file.wav

และ หากต้องการกำหนดให้ใช้ดีไวซ์ Dmix โดยปริยาย สามารถทำได้โดยเพิ่มบรรทัดต่อไปนี้ ลงไปใน %HOME/.asoundrc

pcm.!default {
    type plug
    slave.pcm "intel8x0"
}

กรณีนี้แอพพลิเคชันที่ตั้งดีไวซ์ PCM เป็น default ไว้แล้ว เช่น xine และ xmms ก็จะใช้งาน Dmix โดยอัตโนมัติ โปรแกรมอื่นๆ ก็เพียงกำหนดให้ใช้ดีไวซ์ที่เป็น Dmix เท่านั้น เช่น กรณีของ mplayer/gmplayer หากใช้ ALSA จะ playback ออก hw:0,0 โดยตรง เราสามารถกำหนดดีไวซ์ที่ต้องการ playback ได้โดยใช้ออปชัน -ao เช่น

$ mplayer -ao alsa9:intel8x0 file.mpg

หรือ

$ mplayer -ao alsa9:default file.mpg

หากจะตั้งถาวรก็ตั้งในไฟล์ ~/.mplayer/config เช่น

ao=alsa9:intel8x0

หรือในกรณีของ gaim ซึ่งไม่สนับสนุน ALSA โดยตรง ก็สามารถใช้โปรแกรม aplay แทนได้ โดยเลือก

Preferences -> Sounds เลือก Method เป็น Command กรอกในช่อง Sound command เป็น

$ aplay -Dintel8x0 %s

โดยสรุปคือ

ถ้าตั้งดีไวซ์ได้ ก็ให้ตั้งเป็นดีไวซ์ที่มี type เป็น Dmix หรือมี slave เป็น Dmix

ถ้ากำหนดคำสั่งในการ playback ได้ ให้ใช้ aplay โดยกำหนดให้ใช้ดีไวซ์ที่มี type เป็น Dmix หรือมี slave เป็น Dmix

ปัญหาที่เจอเมื่อใช้ Dmix

เวลานี้มีอยู่สองอย่างคือ

  1. xmms อาจจะหยุด playback กลางคัน โปรแกรมไม่แครช กด play อีกครั้งก็จะเริ่ม playback ได้ปกติ .. ตอนนี้ยังไม่มีทางแก้ครับ
  2. mplayer หาก playback ไฟล์ที่อัตราแซมปลิ้งสูงหรือต่ำกว่าที่ตั้งไว้ใน .asoundrc เสียงจะเพี้ยน (xine ไม่มีปัญหาตรงจุดนี้) ทางแก้คือกกำหนดให้ใช้ดีไวซ์ที่เหมาะกับการ playback เช่น กรณีที่ playback ไฟล์ที่มีอัตราแซมปลิ้ง 44.1 kHz อาจใช้ -ao alsa9:default หรือ -ao alsa9:intel8x0 แต่ถ้าไฟล์มีอัตราแซมปลิ้งที่ 48 kHz ให้ใช้ -ao alsa9:hw เป็นต้น

.. ลองใช้งานกันดูนะครับ :)