LINUX TOYS

บันทึกเรื่องราวเกี่ยวกับประสบการณ์ใช้งานลินุกส์เดสก์ทอปเพื่อความบันเทิง ...

วันอังคารที่ 23 มกราคม พ.ศ. 2550

Nick Karaoke บนลินุกส์ Kubuntu 6.10


ที่มาของบล็อกไตเติ้ลนี้มาจาก กระทู้ ของอาจารย์อวยชัย ถามวิธีการแก้ปัญหา Midi ​บน​ DOSBOX เพื่อทดลองใช้ “นิคคาราโอเกะ” ผมยังโพสต์กระทู้แซวไปว่า “มันสุ่มเสี่ยงต่อการละเมิดลิขสิทธิ์หรือปล่าว” ใจยังคิดว่าคงเป็นไปไม่ได้มั้ง เพราะลักษณะไฟล์เพลงของ ”นิค” มันเป็นแบบ Wavetable ซึ่งต้องใช้ฮาร์ดแวร์ซาวด์พิเศษ หรือไม่ก็ต้องใช้โปรแกรมสังเคราะห์เสียงมาช่วย เช่น Yamaha SoftSynthesizer ถึงจะใช้งานได้สมบูรณ์ ขนาดบนวินโดว์ปกติยังกระป๋องกระแป๋ง ได้บ้าง ไม่ได้บ้าง เลยคิดว่าหมดสิทธิ์แหง๋มๆ แต่มีกระทู้แย้งของ คุณ aaa (ใครก็ไม่รู้แต่ดูท่าทางจะเก่งมาก) ให้ความเห็นทำนองว่าถ้าเรื่องแบบนี้มันไม่ชัดเจนนัก และอีกอย่างก็น่าจะเป็นความรู้ทางวิชาการ ด้านโปรแกรมทดแทน และได้ทิ้งลิงค์วิธีการจำลอง Wavetable บนลินุกส์ อ่านแล้วผมก็รู้สึกคล้อยตามความเห็นดังกล่าว พอเห็นลิงค์วิธีการดังกล่าวก็เข้าไปอ่าน จึงเปลี่ยนความคิดใหม่ งานนี้มีโอกาสเป็นไปได้สูงเหมือนกันนิ ... หัวค่ำวันนั้นศึกษาวิธีการจากลิงค์ดังกล่าวพร้อมกับลิงค์อื่นๆอีก แรกๆก็มึนเหมือนกัน ลองผิดลองถูก จนฟลุ๊กมาสำเร็จประมาณเที่ยงคืนได้ เข้าไปเว็บบอร์ด “อูบุนตุคลับ” แจ้งข่าวดีสักหน่อย ฮ่ะๆ คุณ aaa แกก็ทำได้สำเร็จแล้วเหมือนกัน ตัดหน้าผมไปนิดเดียวเอง ขำดีนิ ... ^^

Karaoke เกิดขึ้นครั้งแรกที่ประเทศญี่ปุ่น จากนั้นกระแสคาราโอเกะก็แพร่สะพัดไปทั่วโลก สำหรับการแพร่หลายเช้ามาในประเทศไทยประมาณสัก 20 ปีที่ผ่านมาได้มั้ง ถึงตอนนี้คาราโอเกะก็ได้กลายเป็นส่วนหนึ่งของวิถีชิวิตคนไทยไปซะแล้ว นิยามของ KaraOK ก็คือเสียงดนตรีที่ปราศจากเสียงของนักร้อง มีอักษรบรรยายและมีแถบสีปาดวิ่งบนอักษรตามท่วงทำนองดนตรี สำหรับเสียงผู้ร้องนั้นก็คือ เราๆ ท่านๆ นี่เอง เพราะเหตุนี้แหล่ะมันถึงโดนใจมหาชนทั่วโลกไม่มีเสื่อมคลาย ...

Karaoke ได้ถูกประยุกต์ใช้งานในโอกาสต่างๆอย่างเราอาจคาดไม่ถึง เช่น วีดีโอ, ซีดี, ดีวีดี, เกมส์, โทรศัพท์มือถือ, รถยนต์, วิทยุ, โทรทัศน์, อินเตอร์เน็ต ฯลฯ สำหรับคาราโอเกะบนคอมพิวเตอร์นั้นก็มีรูปแบบการพัฒนามายาวนานไม่น้อย นอกจากที่เราจะนำ VCD หรือ DVD มาเล่นตามปกติแล้ว ยังมีโปรแกรมพิเศษเฉพาะด้านคาราโอเกะโดยเฉพาะ เริ่มจากเสียง midi ปกติ ต่อมาเป็น Midi Wavetable และ MP3 ตามลำดับ ข้อดีคาราโอเกะบนคอมพิวเตอร์ก็คือหน่วยความจำฮาร์ดดิสต์ที่ใหญ่ ที่สามารถจะจัดเก็บจำนวนเพลงได้เป็นจำนวนมหาศาลมากเท่าที่ผู้ใช้ต้องการ ...

สำหรับ Nick Karaoke ถือว่าเป็นผู้บุกเบิกคาราโอเกะบนคอมพิวเตอร์ในยุคแรกๆทีเดียว เริ่มพัฒนาจากเสียง midi ปกติ คือเสียงที่ช่องเสียงน้อย ลักษณะเหมือนกับการฟังเสียงเปียโน ต่อมาก็พัฒนาเป็นเสียงแบบ midi WaveTable ซึ่งปัจจุบันก็ยังคงอยู่ในลักษณะนี้ไม่มีเปลี่ยนแปลง เสียงดนตรีลักษณะนี้จะมีช่องเสียงมากกว่า midi แบบปกติเยอะ เสียงจะเหมือนอิเล็กโทนผสมกับริทึ่มบล็อก(เสียงกลองชุด) ถึงแม้ปัจจุบันรูปแบบคาราโอเกะบนคอมพิวเตอร์จะถูกพัฒนาโดยเจ้าอื่นๆมากมาย แต่ขวัญใจมหาชนก็ยังอยู่ที่ตัว “นิค” อยู่ดี ถึงแม้จะมีรูปแบบทำงานบน DOS ก็ตาม ทำไมถึงเป็นเช่นนั้น เหตุผลก็เพราะ “นิค” ใช้แฟ้มเสียงแบบ midi ซึ่งใช้เนื้อที่จัดเก็บน้อยมาก เปรียบเทียบซีดีหนึ่งแผ่นมีความจุ 700 MB เชื่อมั้ยว่าเก็บเพลงได้มากกว่า 20000 เพลง โอ้โห!มันมากมายขนาดนี้ร้องกันเป็นปีก็ไม่หมด หาเพลงอะไรก็มีหมด ที่สำคัญเขาอัพเดตเพลงใหม่ๆให้ทุกๆเดือน นี่แหละมันถึงเป็นที่นิยม ถึงแม้เสียงจะเหมือนอิเลคโทนก็เถอะ มันก็สร้างความสุขได้ทันใจทันสมัยดีแท้ ...

ในช่วงแรกของเสียงเพลงแบบ Wavetable บนคอมพิวเตอร์นั้น ผู้ใช้ต้องจัดหาการ์ดซาวด์พิเศษมาเพิ่มเติม ตอนนั้นก็คือ Creative มันก็ต้องแหง๋แหล่ะ ก็เขาเป็นผู้คิดค้นเทคนิค Wavetable Synthesis ขึ้นมา ก็สร้างซาวด์การด์ออกมารองรับ ขายดิบขายดีมากๆในช่วงนั้น ถึงว่าจะแพงขนาดไหนก็ตาม Wavetable Synthesis มีหลักการสร้างเสียงดนตรีแบบmidi ให้มีคุณภาพเสียงคล้ายเสียงดนตรีจริงๆ ซึ่งมาจากความสามารถของชิพพิเศษที่มีชุดตารางเสียงเครื่องดนตรีต่างๆ หลายสิบชิ้น และราคาของการ์ดประเภทนี้ก็ถูกลงเป็นลำดับตามสภาพตลาด ปัจจุบันผู้ผลิตเมนบอร์ดคอมพิวเตอร์จะสร้างซาวด์มาบนแผงวงจรเลย ทำให้บทบาทของซาวน์การ์ดเริ่มน้อยลง จะใช้อยู่ในกลุ่มของผู้เสพความสุนทรีทางเสียงจริงๆ อ้าว! แล้วคาราโอเกะแบบ Wavetabel จะทำอย่างไรล่ะ ไม่ต้องห่วง เดี๋ยวนี้อะไรๆก็ใช้ซอฟต์แวร์จำลองได้หมดแล้ว สำหรับบนวินโดว์ที่นิยมคือ Yamaha SoftSynthesizer เป็นซอฟทแวร์จำลอง Wavetable Synthesis และจะมีชุดคำสั่ง SoundFont เป็นชุด Rom เสมือนจัดเก็บตารางเสียงเครื่องดนตรี ส่วนคุณภาพเสียงจะด้อยกว่าอุปกรณ์ฮาร์ดแวร์ แต่ก็ยังถือว่าอยู่ในเกณฑ์ดีพอรับได้ ...

อย่างที่กล่าวมาก่อนหน้าแล ้วว่า “นิคคาราโอเกะ” เป็นโปรแกรมที่นิยมใช้บนวินโดว์ แล้วถ้าจะนำมาใช้โปรแกรมบันเทิงตัวนี้มาใช้บนลินุกส์ล่ะ จะทำอย่างไรดีเอ่ย? สำหรับโปรแกรม “นิคคาราโอเกะ” เป็นโปรแกรมที่ทำงานบน DOS Base หากนำมาใช้บนลินุกส์ก็ต้องจัดหาโปรแกรมจำลองสภาพแวดล้อมแบบดอส ตัวที่ถูกเลือกขึ้นมาก็คือ DOSBox ผู้พัฒนาเขาสร้างมาเพื่อจุดประสงค์หลักคือ DOSเกมส์ แต่ก็สามารถนำมาประยุกต์กับแอพพลิชั่นอื่นๆได้เหมือนกัน ส่วนโปรแกรมจำลองเสียง Wavetable มีตัวเลือกตัวเดียวคือ Timidity++ มีหลักทำงานในรูปแบบเดียวกับ Yamaha SoftSynthesizer โอเค! เมื่อเครื่องมือปรุงแต่งพร้อมหมดแล้ว เรามาลงมือกันทำเลยดีกว่า

วิธีการจัดทำบน Kubuntu 6.10 Edgy Eft ปัจจุบันได้มีระบบ midi พื้นฐานเข้าไว้ในเคอเนลอยู่แล้ว เพราะเดิมเราต้องคอมไพล์เคอเนลใหม่ให้รับรู้อุปกรณ์ตัวนี้ ก็เลยทำงานง่ายขึ้นเยอะ เริ่มต้นด้วยการตรวจสอบระบบ midi ของลินุกส์เครื่องเราก่อนด้วยคำสั่งนี้
aplaymidi -l
จะแสดงข้อมูลประมาณนี้
Port Client name Port name
14:0 Midi Through Midi Through Port-0
ก่อนติดตั้งแพ็คเก็ตใช้งานควรตรวจสอบแฟ้ม /etc/apt/sources.list ต้องมี reposition เหล่านี้อยู่เป็นอย่างน้อย สถานที่เก็บ http://archive.ubuntu.com หรือจะเป็น Local Mirror อื่นๆก็ได้ เช่น http://th.archive.ubuntu.com หรือ http://us.archive.ubuntu.com
deb http://archive.ubuntu.com/ubuntu/ edgy universe main multiverse restricted
ปรับปรุง repositon ด้วยคำสั่ง
sudo apt-get update
ติดตั้งโปรแกรมที่ต้องการดังนี้
sudo apt-get install timidity freepats dosbox
เนื่องจาก DOS Box เป็นอีมูเลเตอร์ DOS ที่ค่อนข้างดึงทรัพยากรซีพียูพอสมควร ดังนั้นจะควรปิดความสามารถบางตัวของ Timidity ก่อน ด้วยการเข้าไปแก้ไขแฟ้มข้อมูลดังนี้ ตัวเองเลือก nano (pico clone) เป็นตัวแก้ไขแฟ้มต่างๆ
sudo nano /etc/timidity/timidity.cfg
ให้ลบเครื่องหมาย # หน้าบรรทัดที่มีข้อความเหล่านี้
opt EFresamp=d #disable resampling
opt EFvlpf=d #disable VLPF
opt EFreverb=d #disable reverb
opt EFchorus=d #disable chorus
opt EFdelay=d #disable delay
สร้างระบบจำลอง MidiSoftware Synthesis
sudo modprobe snd-seq-device
sudo modprobe snd-seq-midi
sudo modprobe snd-seq-oss
sudo modprobe snd-seq-midi-event
sudo modprobe snd-seq
timidity -iA -B2,8 -Os &
จบขั้นตอนเรื่องระบบเสียง ตรวจสอบความสมบูรณ์ของระบบ midi อีกครั้งด้วยคำสั่ง
aplaymidi -l
จะแสดงข้อมูลประมาณนี้ถือว่าถูกต้อง
Port Client name Port name
14:0 Midi Through Midi Through Port-0
128:0 TiMidity TiMidity port 0
128:1 TiMidity TiMidity port 1
128:2 TiMidity TiMidity port 2
128:3 TiMidity TiMidity port 3
ตำแหน่ง 128:0 เราจะใช้เป็นช่องส่งผ่านกับโปรแกรม DOSBox ลำดับต่อมาเป็นขั้นตอนการตั้งค่าให้กับ DOSBox วิธีการกำหนดค่าใดๆที่ต้องการเพิ่มเติมจะต้องกระทำผ่านแฟ้ม .conf และใช้คำสั่งภายใน DOSBox เป็นตัวสร้างค่าเริ่มต้นของแฟ้มตัวนี้ให้เราก่อน มีวิธีการจัดทำดังนี้

สร้างโพลเดอร์เหล่านี้เพื่อเป็นพื้นที่ทำงาน จัดการงานดอสของเราไว้ก่อน
/home/[ชื่อยูสเซอร์ที่ล็อกอิน]/DOS ---> พื้นที่จำลองC:
/home/[ชื่อยูสเซอร์ที่ล็อกอิน]/DOS/nick ---> พี้นที่จำลอง Drive D:
เข้าโปรแกรม DOSBox ด้วยคำสั่งนี้ผ่าน โปรแกรม Terminal Console
dosbox
จะปรากฏหน้าจอดังนี้


สังเกตุที่ Terminal Console ว่าโปรแกรมแจ้งข้อบกพร่องของระบบ midi ดังนี้
CONFIG:Loading settings from config file dosbox.conf
ALSA:Can't subscribe to MIDI port (65:0)
MIDI:Opened device:oss
สร้างแฟ้ม .conf ด้วยคำสั่ง
config -writeconf /home/[ชื่อยูสเซอร์ที่ล็อกอิน]/DOS/nick.conf
ตอนนี้จบโปรแกรม DOSBox ก่อน เสร็จแล้วแก้ไขแฟ้ม nick.conf ด้วยคำสั่งดังนี้
sudo nano /home/[ชื่อยูสเซอร์ที่ล็อกอิน]/DOS/nick.conf
แก้ไขข้อความในกลุ่มต่างๆ และแก้ไขให้เป็นค่าเหล่านี้
[cpu]
core=dynamic
cycles=8000

[midi]
mpu401=intelligent
config=128:0

[autoexec]
mount c /home/[ชื่อยูสเซอร์ที่ล็อกอิน]/DOS
mount d /home/[ชื่อยูสเซอร์ที่ล็อกอิน]/DOS/nick
หรือกรณีต้องการเรียกโปรแกรมจากซีดี ไม่ต้องการคัดลอกข้อมูล ก็ใช้คำสั่งนี้แทน
mount d /media/cdrom
เสร็จสิ้นการปรุงแต่งสภาพแวดล้อมต่างๆเพื่อโปรแกรม “นิคคาราโอเกะ” ณ ตอนนี้เรายังไม่มีแฟ้มใช้งานของ”นิค”เลย ก็ให้นำแผ่นซีดี Nick Karaoke (ทดสอบด้วย "นิค" เวอร์ชั่น 4.5) มาใส่ในเครื่อง ทำการคัดสำเนาแฟ้มข้อมูล ทุกๆแฟ้ม ทุกๆ โฟลเดอร์ สำเนาไปที่ /home/[ชื่อยูสเซอร์ที่ล็อกอิน]/DOS/nick/ เสร็จเรียบร้อยก็เตรียมตัวโยกลูกคอกัน ด้วยการเรียกโปรแกรมด้วยคำสั่งนี้
dosbox -conf /home/[ชื่อยูสเซอร์ที่ล็อกอิน]/DOS/nick.conf
สังเกตุที่ Terminal Console จะแสดงสถานะความถูกต้องของระบบ midi
CONFIG:Loading settings from config file /home/userone/DOS/nick.conf
ALSA:Client initialised [128:0]
MIDI:Opened device:alsa

Requested buffer size 32768, fragment size 8192
ALSA pcm 'default' set buffer size 33868, period size 3760 bytes
ภายในโปรแกรม DOSBox เรียกโปรแกรม “นิคคาราโอเกะ” ดังนี้
d:
auto หรือ 220
หน้าตา "นิคคาราโอเกะ" เมื่อแรกเริ่มโปรแกรม ...


เมื่อกด Enter จะต้องมีเสียงเปียโนบรรเลงเบาๆให้ได้ยิน ถ้าไม่มีก็ตัวใครตัวมันแล้วล่ะ ...


พิมพ์ชื่อเพลงที่ต้องการ ก็เขย่าลูกคอกันได้แล้วครับพี่น้อง ...


ขั้นตอนก่อนหน้านี้เป็นการจำลองค่า midi ใช้งานเฉพาะกิจ เมื่อปิดเครื่องก็หายไปเมื่อเปิดใหม่ แต่ถ้าหากต้องการให้เปิดแบบถาวร เมื่อเปิดเครื่องแล้วให้จำลองค่าดังกล่าวแบบอัตโนมัติ แต่จะเสียพื้นที่หน่วยความจำไปบ้าง มีวิธีการจัดทำดังต่อไปนี้ เข้าโปรแกรม Terminal Console แล้วพิมพ์คำสั่ง
sudo gedit /etc/modules
เพิ่มคำสั่งเหล่านี้เข้าไปในแฟ้มดังกล่าว
snd-seq-device
snd-seq-midi
snd-seq-oss
snd-seq-midi-event
snd-seq
กำหนดค่าเริ่มต้นของโปรแกรม Timidity++
sudo gedit /etc/default/timidity
แก้ไขบรรทัดที่มีข้อความดังให้เป็นไปตามตัวอย่าง
TIM_ALSASEQ=true
TIM_ALSASEQPARAMS="-B2,8 -Os"
ถ้ารูสึกเสียงที่ได้ยินได้ฟัง คิดว่ายัง ไม่เพราะ ไม่ใส ไม่ชัดเจน มีผู้รู้แนะนำให้หาไฟล์รอม SoundFont มาใช้แทนรอมปัจจุบัน (freepats) (เท่าที่ลองทำดูแล้วดีขึ้นมานิดเดียวเอง) มีขั้นตอนแนะนำดังนี้ คัดลอก SoundFont กรณีนี้เป็น deb ไฟล์
wget -c -P /tmp/ http://www.fbriere.net/debian/dists/etch/misc/deb/timidity-patches-eaw_12-0fbriere.1_all.deb
sudo dpkg -i /tmp/timidity-patches-eaw_12-0fbriere.1_all.deb
ปรับปรุงค่าเริ่มต้นของโปรแกรม Timidity++
sudo gedit /etc/timidity/timidity.cfg
แก้ไขบรรทัดที่มีข้อความดังกล่าวให้เป็นไปตามตัวอย่าง
#source /etc/timidity/freepats.cfg
source /usr/share/doc/timidity-patches-eaw/examples/timidity.cfg
..............................................................................................................................
ที่มาของแหล่งของข้อมูลเบื้องต้น
บล็อกคุณ kitty และ Ubuntu Howto และ DosBox

4 Comments:

    • At 25 มกราคม 2550 เวลา 11:28, Blogger Unknown said…

      ผมรันคำสั่งนี้ timidity -iA -B2,8 -Os & แล้วไม่ผ่านครับ มันบอกว่าให้ไปดูรูปแบบคำสั่งใหม่ใน timidity --help ไม่รู้ว่าจริงๆแล้วควรพิมพ์ว่ายังไงกันแน่ครับ อิอิ อยากได้คาราโอเกะในลินุกส์อ่ะครับ แล้วอีกอย่าง ผมไม่มีซีดี ของ nick จะสามารถใช้โฟล์เดอร์ในคอมของโปรแกรม ncn ได้ไหมครับ(โฟล์เดอร์ใน windows XP)

      ขอบคุณสำหรับความรู้ใหม่ๆครับ

       
    • At 25 มกราคม 2550 เวลา 23:33, Blogger Mr.Somjate said…

      สงสัยมันจะไม่หมูซะแล้วล่ะมั้งเนี่ย ...

      ลองใช้คำสั่งนี้ดูครับ

      timidity -iA &

      หากยังมีปัญหาช่วยคัดลอก Error มาดูหน่อย หรืออาจจะทำขั้นตอนก่อนหน้าขาดหรือผิดพลาดส่วนใดส่วนหนึ่ง ...

       
    • At 12 ตุลาคม 2550 เวลา 19:29, Anonymous ไม่ระบุชื่อ said…

      ดีมากเลยครับผมขอบคุณครับผม

       
    • At 10 ตุลาคม 2554 เวลา 12:20, Anonymous ไม่ระบุชื่อ said…

      Good best blog..

      Thanks

      Black Friday Toys

       
    • แสดงความคิดเห็น