ตอบคำถามที่พบบ่อย

ในส่วนนี้จะตอบคำถามที่ถูกถามบ่อยๆในกลุ่มข่าว Usenet และใน mailing list

คำถามอื่นๆยังสามารถหาอ่านได้จากเว็บของไดรเวอร์ OSS

ดีไวซ์ไฟล์สำหรับเสียงต่างๆคืออะไรบ้าง?

ส่วนใหญ่คือชื่อดีไวซ์ไฟล์มาตรฐานแต่ในบางดิสตริบิวชั่นอาจจะใช้ชื่อที่ต่างไปเล็กน้อย

/dev/audio

โดยปรกติจะลิ้งค์ไปยัง /dev/audio0

/dev/audio0

ดีไวซ์ออดิโอที่ compatible กับ Sun workstation (เป็นการ implement แบบบางส่วนเท่านั้นไม่สนับนุนอินเตอร์เฟส Sun ioctl แค่ u-law encoding เท่านั้น)

/dev/audio1

ดีไวซ์ออดิโออันที่สอง (ถ้าสนับสนุนโดยการ์ด หรือมีการ์ดมากกว่าหนึ่งอันติดตั้งอยู่)

/dev/dsp

โดยปรกติลิ้งค์ไปยัง /dev/dsp0

/dev/dsp0

digital sampling device ตัวแรก

/dev/dsp1

digital sampling device ตัวที่สอง

/dev/mixer

ปรกติลิ้งค์ไปยัง /dev/mixer0

/dev/mixer0

sound mixer ตัวแรก

/dev/mixer1

sound mixer ตัวที่สอง

/dev/music

high-level sequencer interface

/dev/sequencer

low level MIDI, FM, และ GUS access

/dev/sequencer2

ปรกติลิ้งค์ไปยัง /dev/music

/dev/midi00

MIDI port แถวที่ 1

/dev/midi01

MIDI port แถวที่ 2

/dev/midi02

MIDI port แถวที่ 3

/dev/midi03

MIDI port แถวที่ 4

/dev/sndstat

แสดงสถานะของไดรเวอร์เมื่อทำการอ่าน (หรืออยู่ใน /proc/sound แต่ถูกเอาออกไปในเคอเนลเวอร์ชั่น 2.4 )

ไดรเวอร์ PC speaker จะให้ดีไวซ์ดังต่อไปนี้:

/dev/pcaudio

เทียบเคียงกับ /dev/audio

/dev/pcsp

เทียบเคียงกับ /dev/dsp

/dev/pcmixer

เทียบเคียงกับ /dev/mixer

จะสามารถเล่นไฟล์ตัวอย่างเสียงได้อย่างไร ?

ไฟล์เสียง Sun workstation (.au) สามารถเล่นได้โดยการส่งมันเข้าไปในดีไวซ์ /dev/audio ส่วน raw samples สามารถส่งไปยัง /dev/dsp แต่มักจะให้ผลที่ค่อนข้างแย่และมักนิยมใช้โปรแกรมอย่าง play มากกว่าเนื่องจากมันรู้จักชนิดของไฟล์ส่วนใหญ่และตั้งค่าการ์ดให้มี sampling rate และอื่นๆ ได้ถูกต้อง

ถ้าคุณใช้เดสทอปกราฟฟิคอย่าง KDE หรือ GNOME ก็จะมีโปรแกรมเล่นไฟล์เสียงแบบกราฟฟิคมาให้แล้ว

โปรแกรมอย่าง wavplay หรือ vplay (ในแพ็คเกจ snd-util )จะให้ผลการเล่นดีที่สุดสำหรับไฟล์ WAV แต่จะไม่รู้จัก ไฟล์ Microsoft ADPCM compressed WAV นอกจากนี้โปรแกรม play เวอร์ชั่นเก่า(จากแพ็คเกจ Lsox )ก็จะใช้งานได้ไม่ดีกับ ไฟล์ 16 bit WAV

คำสั่ง splay ซึ่งอยู่ในแพ็คเกจ snd-util สามารถใช้เล่นไฟล์เสียงส่วนใหญ่ได้หากใส่พารามีเตอร์ที่เหมาะสมในคอมมานไลน์

ทำอย่างไรถึงจะทำการอัดเสียงได้?

การอ่าน /dev/audio หรือ /dev/dsp จะส่งคืนข้อมูลแซมเปิลซึ่งสามารถส่งไปยังไฟล์ได้ โปรแกรมอย่าง vrec ช่วยให้สามารถควบคุม sampling rate, ระยะเวลา และอื่นๆ ได้ง่ายขึ้นคุณยังต้องมี โปรแกรม mixer สำหรับเลือกอุปกรณ์อินพุทที่เหมาะสมด้วย

เราสามารถมีการ์ดเสียงมากกว่าหนึ่งได้หรือไม่ ?

ด้วยไดรเวอร์ในปัจจุบัน เป็นไปได้ที่จะมีการ์ด SoundBlaster, SoundBlaster/Pro, SoundBlaster16, MPU-401 หรือ MSS ติดตั้ง มากกว่าหนึ่งในระบบ การติดตั้ง SoundBlasters สองอันนั้นเป็นไปได้แต่จำเป็นต้องมีการนิยาม macros SB2_BASE, SB2_IRQ, SB2_DMA และ (ในบางกรณี) SB2_DMA2 โดยการแก้ไขไฟล์ไฟล์ local.h ด้วยมือ และยังเป็นไปได้ที่จะมี SoundBlaster พร้อมกับ PAS16

ในเคอเนลเวอร์ชั่น 2 เป็นต้นมา การคอนฟิกระบบเสียงจะใช้การ make config แทน local.h คุณจำเป็นต้องแก้ไขไฟล์ /usr/include/linux/autoconf.h ในส่วนหลังจากที่มีบรรทัดต่อไปนี้:

#define SBC_BASE 0x220
#define SBC_IRQ (5)
#define SBC_DMA (1)
#define SB_DMA2 (5)
#define SB_MPU_BASE 0x0
#define SB_MPU_IRQ (-1)

เพิ่มบรรทัดต่อไปนี้เข้าไป(ด้วยค่าที่เหมาะสมกับระบบของคุณ):

#define SB2_BASE 0x330
#define SB2_IRQ (7)
#define SB2_DMA (2)
#define SB2_DMA2 (2)

ไดรเวอร์ต่อไปนี้ไม่อนุญาตให้มีหลายการ์ดในเวลาเดียวกัน:

ข้อความ Error: No such file or directory for sound devices

คุณจำเป็นต้องสร้างดีไวซ์ไฟล์สำหรับเสียง ดูเอกสารส่วนการสร้างดีไวซ์ไฟล์ ถ้าคุณมีดีไวซ์ไฟล์อยู่แล้วตรวจให้แน่ใจว่า มันมี major และ minor device numbers ถูกต้อง(ในดินตริบิวชั่นเก่าๆ อาจจะสร้างดีไวซ์ไฟล์ไม่ถูกต้องในระหว่างการติดตั้ง)

ข้อความ Error: No such device for sound devices

คุณไม่ได้บูตเข้าด้วยเคอเนลที่มีไดรเวอร์หรือการคอนฟิก I/O address ไม่ตรงกับฮาร์ดแวร์ที่มีอยู่ ตรวจว่าคุณกำลังใช้เคอเนลที่คอมไพล์ใหม่หรือตรวจดูค่าที่ตั้งในตอนคอนฟิกว่าตรงกับฮาร์ดแวร์

ข้อความ Error: No space left on device for sound devices

เกิดขึ้นได้เมื่อคุณพยายามบันทึุกข้อมูลลงสู่ /dev/audio หรือ /dev/dsp โดยไม่ได้สร้างดีไวซ์ไฟล์ที่จเป็นก่อน ทำให้ดีไวซ์เป็นแค่ไฟล์ธรรมดาและกำลังทำให้ดิสค์เต็ม คุณจำเป็นต้องเรียกสคริปท์ตามที่อธิบายในเอกสารส่วน การสร้างดีไวซ์ไฟล์

นอกจากนี้ยังเกิดได้ในลินุกส์เคอเนล 2.0 เป็นต้นมาหากว่าในระบบไม่มี RAM เหลือเพียงพอในขณะที่ทำการเปิดดีไวซ์นั้น ไดรเวอร์ต้องการ RAM อย่างน้อย 8k สำหรับแต่ละ DMA channel จะเกิดปัญหานี้ในเครื่องที่มี RAM น้อยกว่า 16M หรือใ้ช้งานมาเป็นเวลานาน คุณสามารถตั้ง preallocate ค่า DMA buffers เมื่อไดรเวอร์ถูกโหลด ได้โดยการใช้เคอเนลอ็อปชั่น "dma_buf=1"

ข้อความ Error: Device busy for sound devices

อุปกรณ์เสียงสามารถเปิดโดยโปรเซสเพียงหนึ่งอันในแ่ละครั้ง ข้อความดังกล่าวหมายความว่ามีโปรเซสอื่นกำลังใช้อุปกรณ์อยู่ วิธีการหนึ่งที่จะตรวจสอบคือการใช้คำสั่ง fuser :

% fuser -v /dev/dsp
/dev/dsp:             USER       PID ACCESS COMMAND
                      tranter    265 f....  tracker

ในตัวอย่างข้างบนคำสั่ง fuser แสดงให้เห็นว่าโปรเซสหมายเลข 265 กำลังใช้อุปกรณ์นี้อยู่ คุณอาจจะต้องรอให้โปรเซสนั้นเสร็จก่อนหรือทำการ kill มันเพื่อให้สามารถเข้าใช้ดีไวซ์เสียง คุณจะต้องใช้คำสั่ง fuser ในขณะเป็น root เพื่อที่จะแสดงการใช้ของผู้ใช้อื่น

บนเดสทอป KDE นั้น artsd sound server มักจะควบคุมดีไวซ์เสียงอยู่ และแอ็พพลิเคชั่น จะต้องร้องขอไปที่ server เพื่อเล่นเสียงหรือจะต้องทำการหยุด sound server เช่นเดียวกันกับใน GNOME ซึ่งจะมี esd sound

ยังคงได้รับข้อความ device busy

จากข้อมูลจาก Brian Gough สำหรับการ์ด SoundBlaster ที่ใช้ DMA channel 1 นั้นมีโอกาสที่จะชนกับไดรเวอร์ QIC-02 tape driver ซึ่งใช้ DMA 1 เช่นกัน ทำให้เกิดข้อความ "device busy" ถ้าคุณมีใช้ FTAPE คุณอาจจะมีไดรเวอร์นี้อยู่ จากเอกสาร FTAPE-HOWTO นั้นตัวไดรเวอร์ QIC-02 นั้นไม่จำเป็นสำหรับการใช้ FTAPE แค่ไดรเวอร์ QIC-117 เท่านั้นที่จำเป็น ให้ทำการคอนฟิกเคอเนลให้ใช้ QIC-117 แต่ไม่ใช้ QIC-02 เพื่อให้ใช้ได้ทั้ง FTAPE และไดรเวอร์การ์ดเสียง

เล่นไฟล์เสียงได้แค่บางส่วน

อาการนี้มันจะอยู่ในลักษณะว่าเล่นไฟล์ได้แค่เพียงวินาทีเดียวแล้วก็หยุดและมีข้อความผิดพลาดเกี่ยวกับ"missing IRQ" หรือ "DMA timeout" เป็นไปได้มากว่าคุณมีการตั้ง IRQ หรือ DMA channel ผิด ให้ทำการตรวจสอบค่าคอนฟิกของเคอเนลให้ตรงกับการเซ็ตจั้มเปอร์ของการ์ดและไ่ม่มีการชนกับการ์อื่น

อีกอาการคือมีการเล่นเสียงวนซำ้ไปมา อันนี้มักจะเกิดจากการชนกันของ IRQ

มีการหยุดเป็นระยะในการเล่นไฟล์ MOD

การเล่นไฟล์ MOD นั้นต้องการพลัง CPU ค่อนข้างมาก คุณอาจจะมีหลายโปรเซสทำงานอยู่หรือคอมพิวเตอร์ของคุณช้าเกินไปที่จะเล่นในลักษณะ real time คุณมีทางเลือกคือ:

ถ้าคุณมีการ์ด Gravis UltraSound คุณควรจะมีโปรแกรมเล่นไฟล์ mod เฉพาะสำหรับ GUS (e.g. gmod).

เกิด error เมื่อทำการคอมไพล์แอ็พพลิเคชั่นเสียง

ไดรเวอร์เวอร์ชั่น 1.0c หรือที่เก่ากว่านั้นจะมี ioctl() scheme ที่แตกต่างและไม่ compatible ให้คุณหาซอร์สและทำการปรับเพื่อให้มันเข้ากับไดร์เวอร์เวอร์ชั่นใหม่ ให้อ่านไฟล์Readme ของไดรเวอร์เสียงสำหรับรายละเอียด

ตรวจดูว่าคุณใช้ไฟล์ soundcard.h และultrasound.h เวอร์ชั่นล่าสุดในการคอมไพล์ตัวแอ็พพลิเคชั่น

เกิด segmentation violation เมื่อทำการทำการเรียนแอ็พพลิเคชั่นซึ่งทำงานได้ดีก่อนหน้านี้

อาจจะเป็นปัญหาเดียวกับคำถามก่อนหน้านี้

ไดรเวอร์เสียงมีบั๊กหรือข้อจำกัดอะไรหรือไ่ม่ ?

ให้ดูไฟล์ที่มากับซอร์สของไดร์เวอร์

เอกสารของ ioctls() และอื่นๆของไดรเวอร์เสียงอยู่ที่ไหน ?

ในปัจจุบันนอกเหนือไปจากซอร์ดโค้ดเองแล้วเอกสารที่ดีที่สุดอยู่ที่เว็บของ 4Front Technologies, http://www.opensound.com. อีกแหล่งข้อมูลคือเอกสาร Linux Multimedia Guide ที่กล่าวถึงในส่วนเอกสารอ้างอิง

ทรัพยากร CPU ขนาดเท่าใดที่ต้องการในการเล่นหรือบัันทึกเสียงโดยไม่มีการหยุดเป็นระยะ?

คำถามนี้ไม่มีคำตอบง่ายๆ ให้เนื่องจากมันขึ้นกับ:

โดยทั่วไปเครื่อง 386 หรือดีกว่า สามารถเล่นเสียงแซมเปิลหรือ FM synthesized music บนการ์ด 8 bit ได้โดยไม่มีปัญหา

แต่การเล่นไฟล์ MOD จะต้องการทรัพยากร CPU ค่อนข้างมาก จากการทดลองพบว่าการเล่น 44kHz ต้องการมากกว่า 40% ของเครื่อง 486/50 และเครื่อง 386/25 นั้นเล่นที่ความเร็วมากกว่า 22 kHz ได้ยากมาก(ด้วยการ์ด 8 bit อย่าง SoundBlaster) การ์ดอย่าง the Gravis UltraSound มีการทำงานบนฮาร์ดแวร์มากกว่าและทำให้ต้องการ CPU น้อยกว่า

ซึ่งอันนี้คือผลเมื่อเครื่องไม่ได้ทำงานหนักอื่นๆเลย

การแปลงไฟล์หรือการใส่เอ็ฟเฟ็คด้วยยูทิลิตี้อย่าง sox ก็จะเร็วขึ้นมากหากมี math coprocessor (หรือ CPU ที่มี FPU) ไดรเวอร์เองไม่ได้ทำการคำนวณใดๆ

ปัญหากับการ์ด PAS16 กับ Adaptec 1542 SCSI host adaptor

(อฺธิบายโดย [email protected])

ลินุกส์จะเห็น 1542 ที่ address 330 (default) หรือ 334 เท่านั้นและการ์ด PAS จะยอมให้ MPU-401 emulation ที่ 330 เท่านั้นถึงแม้คุณทำการปิด MPU-401 ด้วยซอฟต์แวร์ก็ยงคงเกิดการชนกัน หากมันใช้ค่า address ที่เป็นค่า default ให้คุณย้าย 1542 ไปยัง 334

นอกจากนี้ทั้ง 1542 และ PAS-16 นั้นใช้ 16-bit DMA ดังนั้นถ้าคุณทำการแซมเปิลที่ 16-bit 44 KHz stereo และเซฟไฟล์ ไปยังไดร์ฟ SCSI ที่อยู่บน 1542 คุณก็จะเจอปัญหาเนื่องจากเกิด DMAs overlap และไม่มีเวลาเพียงพอให้ RAM ทำการ refresh คุณก็จะเอจ ข้อความ``PARITY ERROR - SYSTEM HALTED'' และที่แย่ไปกว่านั้นคือมีผู้จัดจำหน่ายพร้อมไดร์ฟ QIC-117 tape drive บางที่แนะนำ ให้ตั้งค่า bus on/off times ที่ทำให้ 1542 นั้นทำงานนานกว่าปรกติ ใ้หคุณเอาโปรแกรม SCSISEL.EXE จาก Adaptec's BBS หรือ จากที่อื่นๆ บนอินเตอรเน็ตและทำากรลดเวลา BUS ON time หรือเพิ่มเวลา BUS OFF time จนกระทั้งปัญหาหมดไป แล้วก็ขยับค่าไปมากกว่านั้นอีกนิด โปรแกรม SCSISEL จะไปเปลี่ยนค่าของ EEPROM settings ดังนั้นมันจะให้ผมถาวรมากกว่าการแก้ไขไดร์เวอร์ของ DOS ใน CONFIG.SYS และใช้งานถ้าเมื่อคุณบูตตรงเข้าสู่ลินุกส์เลย

ปัญหาสุดท้าย ในชิปเซ็ต Symphony เก่าๆ นั้นจะลดเวลาของรอบ I/O cycles เพื่อเพิ่มความเร็วในการเข้าถึง bus ผู้เขียนไม่เคยเจอปัญหากับการลด timing ยกเว้นกับ PAS-16 บน BBS ของ Media Vision จะมีโปรแกรม SYMPFIX.EXE อาจจะแก้ปัญหาได้แต่รับรองไม่ได้ คุณอาจจะต้อง

บริษัท Young Microsystems จะอัพเกรดบอร์ดที่นำเข้าในราคาประมาณ $30 (US); ผู้จัดจำหน่ายรายอื่นก็อาจจะทำเช่นเดียวกันถ้าคุณสามารถหาได้ว่าใครผลิตหรือนำเข้าเมนบอร์ดนั้น

เป็นไปได้หรือไม่ที่จะอ่านและเขียนแซมเปิลให้เวลาเดียวกัน?

ไดรเวอร์สำหรับบางการ์ดจะสนับสนุน full duplex mode ให้คุณดูเอกสารจาก 4Front Technologies สำหรับข้อมูลการใช้

เซ็ต SB16 ไว้ที่ IRQ 2 แต่คอนฟิกไม่ยอมรับค่านี้

บนเครื่อง 286 เป็นต้นมา IRQ 2 interrupt จะ cascaed ไปยัง second interrupt controller และมีค่าเท่ากับ IRQ 9

พอใช้ลินุกส์แล้วบูตเข้า DOS จะเจอข้อความ errors และแอ็พพลิเคชั่นเสียงไม่ทำงานตามปรกติ

ปัญหานี้เกิดหลังจากการทำ soft reboot ไปยัง DOS บางครั้งข้อความ error จะทำให้เข้าใจผิดว่าเกิดจากไฟล์ CONFIG.SYS

ในปัจจุบันการ์ดส่วนใหญ่จะมีการตั้งIRQ และ DMA ด้วยซอฟต์แวร์ ถ้าคุณใช้ค่าที่ไม่เหมือนกันในลินุกส์กับ MS-DOS/Windows ก็อาจจะทำให้เกิดปัญหานี้ได้ การ์ดบางตัวไม่สามารถรับค่าใหม่ได้โดยไม่ทำการ reset โดยสมบูรณ์ (นั่นคือทำการปิดเปิดไฟฟ้าหรือใช้ปุ่ม reset ของเครื่อง)

การแก้ปัญหาอย่างง่ายคือการใช้การ reboot แบบสมบูรณ์โดยปุ่ม reset หรือ power แทนการทำ soft reboot (เช่น Ctrl-Alt-Del)

การแก้ปัญหาที่ถูกต้องคือการใช้ค่า IRQ และ DMA ให้เหมือนกันทั้งบน MS-DOS และ Linux (หรือไม่ใช้ DOS :-)

ปัญหาการเล่นเกม DOOM บน Linux

สำหรับผู้เล่นเกม DOOM ของ ID software บน Linux อาจจะสนใจตรงนี้

เพื่อให้ได้เอ้าพุทถูกต้องคุณต้องใช้ไดรเวอร์เวอร์ชั่น 2.9 หรือใหม่กว่า เพราะมันมีการสนับสนุนสำหรับ real-time DOOM mode.

sound samples จะเป็น 16-bit ถ้าคุณมีการ์ดแบบ 8-bit คุณยังสามารถใช้โปรแกรมช่วยได้ ftp://www.ibiblio.org/pub/Linux/games/doom.

ถ้าคุณภาพของ DOOM นั้นแย่บนเครื่องของคุณ ให้เปิดเสียง(โดยการเปลี่ยนชื่อไฟล์ sndserver) อาจจะช่วยให้ดีขึ้นได้

โดยดีฟ้อลท์แล้ว DOOM ไม่สนับสนุนเสียงดนตรี (เหมือนในเวอร์ชั่นสำหรับ DOS ) แต่โปรแกรม musserver จะเพิ่มการสนับสนุนเสียงดนตรีให้ DOOM บนลินุกส์ได้ ftp://pandora.st.hmc.edu/pub/linux/musserver.tgz.

ทำอย่างไรถึงจะลด noise จากการ์ดเสียงได้ ?

ใช้เคเบิลที่มีการหุ้มอย่างดีและลองการด์บนสล็อตอื่นอาจจะช่วยลด noiseได้ หากการ์ดคุณมีปุ่ม volume comtrol อาจจะลองปรับดู (ค่าสูงสุดอาจจะให้ผลดีที่สุด) การโปรแกรม mixer เพื่อปรับให้อินพุตที่ไม่ได้ใช้ เช่นไมโครโฟรมีค่าเป็นศูนย์

Philipp Braunbeck รายงานว่าบนการ์ด ESS-1868 ของเขามีจั้มเป้อร์ที่สามารถปิดตัวแอมปริไฟเออร์ภายในได้ซึ่งช่วยลด noise เมื่อใช้มัน

บนเครื่อง 386 ผู้เขียนพบว่าตัวอ็อปชั่นสำหรับเคอเนลคือ no-hlt ช่วยลดระดับ noise ได้ โดยอ็อปชั่นนี้จะบอกให้เคอเนลไม่ใช้ halt instruction เมื่อเรียกใช้ idle process loop คุณสามารถลองได้ในขณะบูตหรือใส่ค่า append="no-hlt" ในไฟล์คอนฟิกของ LILO

การ์ดบางตัวมีการออกแบบการป้องกันและการทำกราวด์ไม่ดีและก็จะเกิด noise ได้ง่าย

เล่นไฟล์ได้แต่บันทึกเสียงไม่ได้

หากคุณสามารถเล่นไฟล์เสียงได้แต่บันทึกเสียงไม่ได้ ให้ลอง:

ในบางครั้งการบันทึกเสียงจะใช้ DMA channel ต่างกันเวลาเล่น ในกรณีนี้ก็เป็นไปได้ที่ค่าที่ตั้งสำหรับการบันทึกไม่ถูกต้อง

การ์ดเสียงแบบที่ "compatible" ใช้งานได้เมื่อทำการ initialize บน MS-DOS ก่อนเท่านั้น

ในกรณีส่วนใหญ่การ์ดที่เป็น "SoundBlaster compatible" จะทำงานได้ดีกว่าเมื่อทำการคอนฟิกโดยใช้ไดรเวอร์อื่นที่ไม่ใช่ SoundBlaster การด์ส่วนใหญ่อ้างว่า compatible (เช่น "16 bit SB Pro compatible" or "SB compatible 16 bit") แต่โหมด SoundBlaster นี้ได้แก้ไขให้เข้ากันได้สำหรับเกมบน DOS เท่านั้น

สำหรับการ์ดรุ่นเก่าบางรุ่นเท่านั้นที่จำเป็นจะต้องพยายามใช้มันใน SoundBlaster mode การ์ดรุ่นใหม่ที่เป็นข้อยกเว้นคือการ์ดพวก Mwave-based

การ์ด 16-bit SoundBlaster "compatible" ทำงานแบบ 8-bit เท่านั้น

การ์ด 16-bit ที่เป็น SoundBlaster compatible นั้นจริงๆ แล้วจะ compatible กับ 8-bit SoundBlaster Pro เดิมจะมี 16-bit mode ที่ไม่ compatible กับ SoundBlaster 16 และไม่ compatible กับไดรเวอร์ขอวเคอเนล

คุณอาจจะสามารถใช้มันได้ใน 16-bit mode ด้วยไดรเวอร์ MAD16 หรือ MSS/WSS

จะหาแอ็พพลิเคชั่นสำหรับเสียงบนลินุกส์ได้ที่ไหน?

ไซต์สำหรับค้นหาแอ็พพลิเคชั่น

นอกจากนี้ดูส่วนเอกสารอ้างอิงของเอกสารนี้ด้วย

สามารถคอมไพล์ไดรเวอร์ให้เป็น loadable module ได้หรือไม่?

ในเคอเนลใหม่ๆไดรเวอร์จะอยู่ในรูป loadable modules

ให้ดูไฟล์ใน/usr/src/linux/Documentation/sound, โดยเฉพาะไฟล์ Introduction และ README.modules.

สามารถใช้การ์ดเสียงแทน system console beep ได้หรือไม่?

ลองโปรแกรม oplbeep จาก ftp://www.ibiblio.org/pub/Linux/apps/sound/oplbeep-2.3.tar.gz

หรือ beepจาก ftp://www.ibiblio.org/pub/Linux/kernel/patches/misc/modreq_beep.tgz

แพ็คเกจ modutils จะมีตัวอย่างของโปรแกรมและ patch สำหรับเคอเนลที่สนับสนุนการเรียกโปรแกรมจากภายนอกเพื่อให้สร้าง เสียงเมื่อมีการเรียกจากเคอเนล

ใน KDE เวอชั่น 2 .0 เป็นต้นมา จะยอมให้มีการเล่นไฟล์เสียงสำหรับ console beep ในแอ็พพลิเคชั่นของ KDE เช่น konsole

หรืออีกทางคือในบางการ์ดนั้นจะสามารถต่อ PC speaker output ไปยังการ์ดเสียงได้ทำให้ทุกเสียงออกมาจากลำโพงของการ์ดเสียง

VoxWare คืออะไร?

ไดรเวอร์การ์ดเสียงเชิงการค้าของ 4Front Technologies นั้นรู้จักในชื่ออีกชื่อว่าVoxWare USS (Unix Sound System) และ TASD (Temporarily Anonymous Sound Driver) แต่ในปัจจุบันจะจำหน่ายในชื่อ OSS (Open Sound System) เวอชั่นที่อยู่ในเคอเนลของลินุกส์บางครั้งจึงเรียกว่า OSS/Free.

สำหรับข้อมูลเพิ่มเติม http://www.opensound.com/. ผู้เขียนได้เขียนเกีี่ยวกับ OSS/Linux ใน Linux Journal ฉบับ June 1997

โปรแกรม Sox/Play/Vplay แสดงข้อความ "invalid block size 1024"

การเปลี่ยนแปลงในไดรเวอร์เวอชั่น 1.3.67 ทำให้โปรแกรมเข้าใจว่าผลที่ได้จาก SNDCTL_DSP_GETBLKSIZE ioctl ม่ีค่ามากกว่า 4096 ในไดรเวอร์ตัวล่าสุดนั้นได้รับการแก้ไขแล้ว

โปรแกรม mixer จะรีเซ็ตเมื่อทำการโหลดโมดูล

คุณสามารถ build ไดรเวอร์เป็น loadable module และใช้ kerneld เพื่อโหลดและอันโหลดอัตโนมัติ ซึ่งสามารถทำให้เกิดปัญหาได้อย่างหนึ่งคือเมื่อทำการโหลด โมดูลตัว mixer จะกลับไปอยู่ที่ค่าดีฟ้อลท์ ในบางการ์ดอาจจะปรับเสียงไปดังเกินไป (เช่น SoundBlaster16) หรือเบาเกินไป Markus Gutschke ([email protected]) พบวิธีแก้ปัญหาโดยการแก้ไขไฟล์ /etc/conf.modules ตามนี้:

options sound dma_buffsize=65536
post-install sound /usr/bin/setmixer igain 0 ogain 0 vol 75

ซึ่งจะทำให้โปรแกรม mixer (ในกรณีนี้คือ setmixer) จะทำงานทันทีที่ไดรเวอร์ถูกโหลดขึ้นมา ค่า dma_buffsize เป็นค่าปลอมที่ตั้งขึ้นมาเนื่องจากคำสั่ง option ต้องการให้มีค่าหนึ่งอยู่ ให้คุณทำการแก้ไขบรรทัดดังกล่าวให้ตรงกับโปรแกรม mixer ของคุณและค่าความดัง

ถ้าคุณคอมไพล์ไดรเวอร์เข้าไปในเคอเนลและต้องการตั้งระดับของ mixer เวลาบูตคุณสามารถเรียกโปรแกรม mixer ได้ในไฟล์สำหรับ system startup เช่น /etc/rc.d/rc.local

มีเพียง root ที่สามารถบันทึกเสียงได้

โดยดีฟ้อลท์แล้วตัวสคริปท์ใน Readme.linux ซึ่งสร้างดีไวซ์ไฟล์สำหรับเสียงจะอนุญาตให้ดีไวซ์นั้นใ้ช้ได้โดย root เท่านั้น อันนี้เป็นจุดที่เป็นช่องโหว่ทางความปลอดภัยได้ ในเน็ตเวอร์คผู้ใช้ภายนอกสามารถทำการล็อกอินเข้าเครื่องรีโมตที่มีการ์ดเสียงและไมโครโฟนด้วยการแอบฟัง หากคุณไม่กังวลในเรื่องนี้คุณสามารถเปลี่ยนสิทธิ์ที่ใช้ในสคริปท์ได้

ด้วยการติดตั้งแบบดีฟ้อลท์นั้นผู้ใช้อื่นๆสามารถเล่นไฟล์เสียงได้

ฮาร์ดแวร์เสียงบน IBM ThinkPad ใช้กับลินุกส์ได้หรือไม่?

ข้อมูลเกี่ยวกับการใช้การ์ดเสียง mwave บน IBM ThinkPad สามารถดูได้จาไฟล์ /usr/src/linux/Documentation/sound/mwave ซึ่งเป็นส่วนหนึ่งของเคอเนลซอร์ส (แต่ไม่ใช่ทุกรุ่นของ IBM ThinkPads ที่ใช้ชิปของ MWAVE )

ไม่สามารถใช้แอ็พพลิเคชั่นได้เนื่องการการ์ดไม่มี mixer

การ์ด 8-bit SoundBlaster เก่าๆ บางรุ่นไม่มีวงจร mixer แอ็พพลิเคชั่นบางอันที่สามารถเปิด mixer device แต่ล้มเหลวกับการ์ดนี้ Jens Werner ([email protected]) รายการวิธีการแก้ปัญหานี้โดยการทำลิ้งค์จาก /dev/mixer ไปยัง /dev/null

ปัญหากับ SB16 CT4170

จาก Scott Manley ([email protected]):

เป็นการแบบใหม่ของ Soundblaster ขายในชื่อ SB16 - และมี Model no. บนการ์ดเป็น CT4170 แต่การ์ดพวกนี้มี เพียงหนึ่ง DMA channel ดังนั้นเมื่อคุณพยายามเซ็ตมันเคอเนลจะมีปัญหาในการเข้าถึง 16 bit DMA วิธีการแก้ปัญหาคือ การตั้ง second DMA เป็น 1 แล้วการ์ดก็จะทำงานได้อย่างที่โฆษณา

ทำอย่างไรถึงจะต่อ MIDI keyboard กับการ์ดเสียง

จาก Kim G. S. OEyhus ([email protected]):

ผู้เขียนค้นหาจากอินเตอเน็ตและเอกสารหาสิ่งที่ง่ายๆ อย่างการต่อ MIDI output จาก master keyboard ไปยัง MIDI input บนการ์ดเสียง แต่ไม่พบเลย ปัญหาคือทั้งสองตัวใช้ดีไวซ์เดียวกัน /dev/midi อย่างน้อยเมื่อใช้ OSS ผู้เขียนพบวิธีแล้วต้องการแชร์ให้คนอื่น วิธีนี้ใช้ได้กับ synthesizer แบบง่ายๆ ที่สนับสนุน MIDI อย่างสมบูรณ์

ต่อ MIDI MASTER-KEYBOARD เข้าโดยตรงกับการ์ดเสียง

MIDI master-keyboard คือคีย์บอร์ดที่ไม่มี synthesizer และมีเพียง MIDI-out เท่านั้นซึ่งมันสามารถต่อกับ 15-pin D-SUB port บนการ์ดเสียงส่วนใหญ่ได้ด้วยเคเบิลที่เหมาะสม

คีย์บอร์ดดังกล่าวสามารถใช้ควบคุม MIDI synthesizer device สำหรับการ์ดดังนั้นจึงทำเป็น keyboard controlled synthesizer อย่างง่ายๆ ได้

ทำการคอมไพล์โปรแกรมต่อไปนี้ อย่างเช่นด้ว 'gcc -o prog prog.c' แล้วเรียกใช้:

#include <fcntl.h>

main()
{
  int fil, a;
  char b[256];

  fil=open("/dev/midi", O_RDWR);
  for(;;)
    {
      a=read(fil, b, 256);
      write(fil, b, a);
    }
}

ปัญหากับ IRQ 15 และ Ensoniq PCI 128

จาก Matthew Inger ([email protected]):

ข้อมูลเกี่ยวกับวิธีการทำให้การ์ด Ensoniq PCI 128 ใช้งานได้

ปัญหาที่ที่เกิดคือการ์ดนี้จะพยายามใช้ interrupt 15 โดยดีฟ้อลท์ (Plug and Pray เป็นสาเหตุของปัญหา) ซึ่ง interrupt นี้จะใช้โดย secondary ide controller และไม่สามารถแชร์กับอุปกรณ์อื่นได้ คุณจำเป็นต้องหาวิธีบังคับให้ es1370 ไปยัง interrupt อื่น (ควรจะใช้ interrupt 11 เหมือนในวินโดว์)

ผมพบวิธีการด้วยตัวเอง คุณเช่ื่อหรือไม่

สิ่งที่ผมทำคือ

a) ใน BIOS คุณต้องบอกให้คอมพิวเตอร์ว่าคุณไม่มี Plug and Play OS ซึ่งอยู่ใน advanced option ใน BIOS

b) ใน PCI settings ใน BIOS บอกคอมพิวเตอร์ให้จอง interrupt 15 สำหรับ legacy ISA devices ใน bios ของผมภายใต้ advanced options จะมีส่วนสำหรับ PCI settings ในนี้จะมีส่วน Resource Exclusion และนี่แหล่ะที่คุณต้องเซ็ต

เมื่อทำการ reboot เข้าลินุกส์คุณจะสามารถใช้เสียงได้ ผมได้ลองสั่ง sndconfig อีกครั้งและมันเล่นไฟล์ทดสอบ ซึ่งเสียงไม่ดีนัก แต่เมื่อทำการเล่นแผ่น CD ผลออกมายอดเยี่ยม

ไม่ต้องเป็นห่วงวินโดว์ ผมได้สองทั้งสองการ์ดคือ ISA Modem,และการ์ดเสียง ทั้งสองใช้งานได้ไม่มีปัญหา

BIOS ของคุณอาจจะแตกต่างไปจากที่ผมมีอยู่ คุณก็แค่หาว่าจะทำการต้งสองสิ่งที่กล่าวไปแล้วยังไง

จะหา MIDI patches เพื่อใช้ SoftOSS ได้ฟรีที่ไหนบ้าง ?

SoftOSS เป็น software-based wavetable synthesizer ที่อยู่ในไดรเวอร์เคอเนลที่ compatible กับการ์ด Gravis Utrasound ในการใช้ไดรเวอร์คุณต้องมีไฟล์ GUS compatible MIDI patch ในเอกสารได้กล่าวถึง "public domain MIDIA patchset available from several ftp sites" แต่ SoftOSS ไม่ได้อยู่ในเคอเนล 2.4 แล้ว

ตามที่อธิบายในเว็บของ 4Front Technologies http://www.opensound.com/softoss.html สามารถดาวโหลดได้จาก ftp://archive.cs.umbc.edu/pub/midia/instruments.tar.gz.

1
Hosted by www.Geocities.ws