ผู้เขียน หัวข้อ: ขอวิธีการทำ soundfont  (อ่าน 8201 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

aunsuwan

  • บุคคลทั่วไป
ขอวิธีการทำ soundfont
« เมื่อ: วันที่ 4 กันยายน 2009, 01:08:10 น. »
ขอ วิธีทำ sound font สแนร์ กับ กระเดื่อง 2อย่างครับ ใฝใช้ viana 2.3 ครับ โดยที่ผมมีไฟล์ wav ครับ ขอขอบคุณล่วงหน้าครับ (หาดูแล้วเห็นแต่ตัวอย่างการทำ sound font กระเดื่อง)ไม่รู้จิงๆครับ (เน้นๆตรงการทำ  :D :D :Dสแนร์นะครับ)

ออฟไลน์ เด็กชายเคยโสด

  • คณะบริหาร
  • ขี้โม้ระดับสุดยอด
  • ****
  • กระทู้: 20090
  • 6E65CE52,7309F48F,48B54692,6E674E74,1E001EF5
Re: ขอวิธีการทำ soundfont
« ตอบกลับ #1 เมื่อ: วันที่ 4 กันยายน 2009, 07:00:07 น. »
ลองเอาไปศึกษาดูนะครับว่าใช่ไหมครับ

ขอบคุณพระอาจารย์สมชายกับท่านอาจารย์อ๊อด  ลำพูนครับ
« แก้ไขครั้งสุดท้าย: วันที่ 4 กันยายน 2009, 07:02:12 น. โดย เด็กชายโสด »

ออฟไลน์ เด็กชายเคยโสด

  • คณะบริหาร
  • ขี้โม้ระดับสุดยอด
  • ****
  • กระทู้: 20090
  • 6E65CE52,7309F48F,48B54692,6E674E74,1E001EF5
Re: ขอวิธีการทำ soundfont
« ตอบกลับ #2 เมื่อ: วันที่ 4 กันยายน 2009, 07:06:56 น. »
และลองศึกษาตรงนี้เพิ่มเติมให้เข้าใจก่อนครับ  จะทำให้จัดระบบระเบียบได้ง่ายขึ้นครับ

SoundFont คืออะไร
หลายคนเคยคงได้ยินคำว่า SoundFont มาบ้าง แต่ไม่รู้ว่ามันเป็นอย่างไร ก่อนจะพูดว่า SoundFont คืออะไร ก็ขออธิบาย ให้รู้จักกับ WaveTable ก่อน Wavetable คือตารางรวมคลื่นเสียง (Wave Samples) ที่อัดมาจากเสียงของเครื่องดนตรีจริง หรืออาจจะเป็นเพียง sine wave ที่ความถึ่ต่าง ๆ ถูกจัดเก็บในรูปแบบ digital ไว้บนชิพ ROM บนตัว Sound Card และเรียกใช้งานโดยผ่าน driver ของตัว sound card นั้น หรือ WaveTable บางแบบจะเป็น software เช่น Soft Synth หรือโปรแกรม WaveTable Emulator ต่าง ๆ ที่จะเก็บข้อมูลเสียงไว้เป็น file ตัวนึง และเรียกใช้งานผ่านทางโปรแกรมของตัวเอง

สำหรับตารางรวมคลื่นเสียงนี้ จะนำมาใช้ในการสังเคราะห์เสียงของคอมพิวเตอร์ โดยปกติแล้ว หากไม่มีตารางเสียงนี้ ตัวคอมพิวเตอร์จะทำการสร้างคลื่นเสียง FM (Frequency Modulator) ที่ความถี่ต่างๆออกมาเอง และนำมาผสมกัน เพื่อให้เกิดเสียงที่ใกล้เคียงกับเสียงเครื่องดนตรีแต่ละชนิด แต่เสียงที่ออกมานั้น จะไม่ได้มีต้นกำเนิด เหมือนการให้กำเนิดเสียงจากเครื่องจริง เสียงที่ได้ออกมาคุณภาพจึงไม่ค่อยดีนัก การนำ WaveTable เข้ามาใช้ จะเข้ามาแทนที่การ สร้างคลื่น FM โดยการนำเอาตัวอย่างเสียงของเครื่องเสียงที่มีบันทึกไว้ มาใช้แทน

SoundCard ที่มี wavetable ส่วนใหญ่แล้ว จะสามารถสังเคราะห์เสียงได้ 32 เสียง (เครื่องดนตรี) พร้อมๆกัน หรือมากกว่านั้น โดยใช้ Software เข้าช่วย ทั้งในการสร้าง (Creation) และการเล่น (Playback) ตารางข้อมูลเสียง หรือ Wavetable จะเป็นตัวอ้างอิงเสียงให้กับการสังเคราะห์เสียงแบบ Musical Instrument Digital Interface (MIDI) ซึ่งข้อมูลแบบ midi จะเป็นข้อมูลที่จัดเก็บ และนำมาใช้โดยผ่านชุดคำสั่ง คล้าย ๆ กับตารางโน้ตดนตรี (ผมไม่รู้จะใช้ศัพท์อะไรเรียก) ที่ใช้เวลาเล่นจริงกัน ชุดคำสั่งนี้ จะโยงบอกถึงเครื่องดนตรีที่ใช้และตัวโน้ตที่ใช้

ข้อเสียของระบบ Wavetable ก็คือ ในการใช้ข้อมูลรูปแบบ MIDI นั้น ข้อมูลจะเก็บเฉพาะข้อมูล การเชื่อมโยงกับตารางเสียงเท่านั้น ไม่ได้เก็บตัวเสียงไว้ด้วย ในการนำมา playback เสียงที่ได้ อาจจะออกมาไม่ตรงกับมาตรฐาน ที่ผู้แต่งได้ทำไว้ (ถ้าเป็นระบบโรงหนัง ก็แห้ว THX ไปแล้ว) จุดบอดของ MIDI คือ ต้องนำไป playback กับอุปกรณ์ชุดเดิมเท่านั้น จึงจะได้เสียงตรงกับที่คนแต่งได้แต่งไว้ ระบบ Sound Font จึงออกมาลบจุดบอดนี้ โดยการย้ายข้อมูลตารางเสียง จากใน ROM ให้มาอยู่ใน RAM และสามารถจัดเก็บเป็น file ต่างหากได้ ซึ่งก็จะมีข้อมูลของ Wave Samples ทั้งหมดอยู่ เมื่อนำมา playback เราก็จะนำข้อมูลของ wave samples ต่างๆเก็บเข้าไว้ใน RAM ของ sound card และ MIDI ก็จะเรียกใช้ข้อมูลจากตัว Sound Font นี้ ทำให้ไม่ว่าจะนำข้อมูล MIDI ไป playback ที่ไหน ก็จะได้เสียงที่ออกมาเหมือนอย่างที่คนแต่งได้ทำไว้ (จริงๆก็ยังไม่เหมือนเดิมหรอก เพราะอุปกรณ์เครื่องเสียงก็ยังต่างกันอยู่ดี แต่ติ๊ต่างว่าใช้อุปกรณ์ชุดเดียวกันละกัน)

ที่เหนือกว่านั้นของ SoundFont เนื่องจาก Sound Font เป็นการเก็บข้อมูลของ wave samples มาไว้ใน file ตัวนึง เราจึงสามารถทำการแก้ไข ดัดแปลงให้เข้ากับความต้องการของเราได้ อย่างไรก็ตาม SoundFont ก็ต้องมีการกำหนดค่ามาตรฐาน ของตำแหน่งเครื่องดนตรีไว้ ไม่ว่าการสร้าง SoundFont จะใช้ sample waves แบบใดก็ตาม เครื่องดนตรีจำเป็น ต้องอยู่ตามตำแหน่งที่กำหนดไว้ ถ้าใส่ไม่ถูกต้อง เสียงที่ออกมาก็จะผิดพลาดด้วยเช่นกัน ตำแหน่งมาตรฐานคือ GM (General MIDI) ซึ่งกำหนดเสียงเครื่องดนตรีไว้ 128 เสียง จาก instrument 000 ไปถึง instrument 127 ใน bank 000

ถ้าเคยเล่นเครื่องดนตรีจริงจะเข้าใจ เปียโน 2 ตัว เสียงยังไม่เหมือนกันเลย กีตาร์สองตัวเสียงก็ใช่ว่าเหมือนกัน แค่เปลี่ยนวัสดุที่ใช้ เสียงก็ต่างกันแล้ว การสร้าง Sound Font ก็เช่นกัน ตัว sample waves มาจากแหล่งกำเนิดเสียงที่ต่างกัน เสียงที่ได้จาก SoundFont แต่ละตัวก็ย่อมไม่เหมือนกัน ขึ้นกับตัวอย่างเสียง ที่นำมาใช้ใน SoundFont นั้นๆ

เพราะฉะนั้น เสียงที่ได้จาก Wavetable ที่ใช้ระบบ SoundFont จึงไม่ตายตัว สามารถเปลี่ยนแปลงได้ตามการเลือกใช้ แต่เนื่องจาก SoundFont คือไฟล์ข้อมูลที่ประกอบด้วยไฟล์ wave หลายๆตัว ซึ่งถ้าต้องการเสียงที่ใกล้เคียงเครื่องดนตรีจริงมาก จะต้องใช้ไฟล์ wave ที่มีจำนวนมาก อาจจะตั้งแต่ 1 sample wave ต่อ 1 octave ไปจนถึง 1 sample wave ต่อ 2-3 semi-tone เพื่อให้เข้าใจง่ายขึ้นอีกนิด ชิพ EMU10K ซึ่งเป็นตัวสังเคราะห์เสียงของ Creative Sound Blaster Live นั้น มีความสามารถที่จะสังเคราะห์เสียงจาก sample wave ให้สูงขึ้นไปได้อีก 2 Octave และต่ำลงไม่จำกัด ถ้าเรามีโน้ตเสียง โด ตัวนึง ชิพตัวนี้จะสามารถนำมาสังเคราะห์เป็น โด เร มี ฟา ซอล ลา ที โด เร มี ฟา ซอล ลา ที โด ได้โดยได้ระดับเสียง ( pitch ) ที่ยังไม่ผิดเพี้ยนนัก โดยการเปลี่ยนค่าความถี่เสียง ( pitch shift ) แต่ เนื่องจากเสียงจากเปียโนจริง เสียงที่สูงขึ้นนั้น เกิดจากการใช้ตัวสายเสียงที่เล็กลง หรือขึงสายให้ตึงขึ้น แต่ขนาดของตัวเครื่องยังเท่าเดิม ในการทำ pitch shift นั้น เป็นการคำนวน โดยลดขนาดสายเสียง ดึงสายให้ตึงขึ้น และลดขนาดของตัวเครื่องลงด้วย เสียงที่ผ่านการ shift หลายๆ octave จึงย่อมผิดเพี้ยนไปจากเสียงที่เกิดขึ้นจริงเช่นกัน การทำ SoundFont จึงต้องมีการเทียบกับเสียงจริงตลอด เมื่อจับได้ถึงการเริ่มเพี้ยนของเสียง ก็จะมีการแทรกเสียง sample wave เข้าไปเป็นข้อมูลเพื่อใช้ดึงข้อมูลใหม่ ทำให้ทุกโน้ต ทุก octave มีเสียงใกล้เคียงกับเครื่องดนตรีจริงมากที่สุด ส่วนคำว่า semi-tone ก็คือการเลื่อนระดับเสียงโน้ตขึ้นไป 1 ชั้น จาก โด เป็น โดชาร์ป เป็น เร เป็น เรชาร์ป เป็น มี เป็น ฟา ฟาชาร์ป แต่ละขั้นคือ 1 semi-tone Sound Font ที่มีเสียงใกล้เคียงกับเสียงจริงมากๆ จึงจำเป็นต้องมี sample wave หลายๆตัว ทำให้ Sound Font ที่มีเสียงดีๆ มีขนาดใหญ่โต และต้องการเนื้อที่ในการเก็บข้อมูลมาก ( ใน AWE32,64 ต้องการ module RAM สำหรับเก็บ ขนาดก็ขึ้นกับ module RAM ที่เพิ่มขึ้น ส่วน Live ใช้ System RAM สำหรับเก็บ ขนาดก็ครึ่งหนึ่งของ RAM ที่มี

ในการเลือกใช้ SoundFont สำหรับเราๆท่านๆ ก็จะแตกต่างกันไป ตามสไตล์การฟัง MIDI ของแต่ละคน บางคนเน้นเครื่องสาย เครื่องเป่า หรือพวกเครื่องดีด Sound Font ที่ถูกสร้างมาแต่ละตัวจะเน้นเสียงที่ต่างกันไป ถ้าจะให้เน้นเสียงทุกตัว คิดเอาเองว่า แค่เสียงระดับคุณภาพพอฟังได้ เครื่องดนตรีละ 1 Mb 128 ชิ้น คุณจะต้องใช้เนื้อที่เท่าไหร่? แล้วจะทำอย่างไร ถ้าเราต้องการให้ได้เสียงที่ดีที่สุดสำหรับการฟัง MIDI ของเรา? ในการสร้าง SoundFont เราไม่จำเป็นต้องใส่ตัวอย่างเสียงให้ครบ 128 ชิ้น สำหรับชิ้นที่ไม่มีการเรียกใช้ใน MIDI ของเรา (ถ้ามีการเรียกใช้ขึ้นมา มันก็จะไม่มีเสียงอะไรออกมา เนื่องจากไม่มีตัวอย่างเสียงให้นำมาเรียกใช้) สำหรับท่านที่ไม่สัดทัดด้านการสร้าง SoundFont ขึ้นมาเอง มีวิธีง่ายกว่านั้น โดยการนำ Sound Font หลายๆตัวมาผสมกันโดย เลือกตัวอย่างเสียงเครื่องดนตรีที่จะนำมาใช้ วิธีทำก็คือ อย่างแรก เราต้องลองฟังเสียงเครื่องดนตรีแต่ละอย่าง ของ Sound Font และเราฟังแล้วรู้สึกว่าตัวไหนดีสุด ก็จำไฟล์นั้นไว้ แล้วเข้าไปทำการเลือกใช้ใน configure instrument ซึ่งเราจะเลือกตำแหน่ง การจัดวางได้อย่างอิสระ