คู่มือการใช้งานอ่านประมาณ 4 นาที

เจาะลึกโครงสร้างไฟล์เนื้อเพลง NCN (.lyr) และกลไกการแมปปิ้งตัวอักษร

คู่มือทางเทคนิคของไฟล์เนื้อเพลง NCN .lyr, การถอดรหัสภาษาไทย Windows-874, โครงสร้าง Header บรรทัด และกลไกการแมปปิ้งตัวอักษรร่วมกับไฟล์เคอร์เซอร์ .cur

1. ข้อกำหนดไฟล์เนื้อเพลง NCN (.lyr)

ไฟล์เนื้อเพลง NCN .lyr เป็นไฟล์ข้อความแบบแบ่งบรรทัดสำหรับระบบเพลงคาราโอเกะไทย ไฟล์นี้ **ต้องถอดรหัสด้วยรหัสอักขระ Windows-874 (TIS-620)** เพื่อให้แสดงผลสระและวรรณยุกต์ภาษาไทยได้อย่างถูกต้องโดยไม่ล้มหรือเพี้ยนเป็นตัวต่างดาว

โครงสร้างบรรทัดในไฟล์ .lyr

  1. 1
    บรรทัดที่ 0 (ชื่อเพลง): บันทึกชื่อเพลง
  2. 2
    บรรทัดที่ 1 (ศิลปิน): บันทึกชื่อศิลปินหรือผู้ขับร้อง
  3. 3
    บรรทัดที่ 2 (คีย์เพลง): บันทึกคีย์ดนตรีเริ่มต้น
  4. 4
    บรรทัดที่ 3 เป็นต้นไป (เนื้อร้อง): ข้อความเนื้อร้องแบ่งตามท่อนเพลง โดยเนื้อร้องจริงที่จะนำไปเรนเดอร์บนหน้าจอจะเริ่มต้นตั้งแต่บรรทัด Index 3 เป็นต้นไป

2. อัลกอริทึมการเชื่อมโยง: .mid, .lyr และ .cur มาสร้างเนื้อร้องพร้อมเวลาได้อย่างไร

คำถามสำคัญในการพัฒนาระบบคาราโอเกะคือ: ไฟล์แยก 3 ไฟล์ (.mid, .lyr, .cur) มาเชื่อมโยงกันอย่างไรให้กลายเป็นเนื้อร้องที่ปาดสีตรงตามจังหวะดนตรี? นี่คืออัลกอริทึมทีละขั้นตอนที่ใช้อยู่ในระบบ:

ขั้นตอนการแมปปิ้งตัวอักษรเข้ากับเวลา MIDI Tick

  1. 1
    1. อ่านความละเอียดเวลา PPQ: เครื่องเล่นถอดรหัส Header ของไฟล์ MIDI (MThd) เพื่อดึงค่าความละเอียดเวลา ticksPerBeat (เช่น 480 PPQ)
  2. 2
    2. แปลงเคอร์เซอร์เป็นเวลาจริง: อ่านไบนารีจากไฟล์ .cur แล้วแปลงเป็นเวลา MIDI Ticks จริงด้วยสูตร: ticks[i] = Math.round((cursor[i] * ticksPerBeat) / 24)
  3. 3
    3. แยกเนื้อร้องจริงออกจาก Header: แยกบรรทัด 0-2 เก็บเข้า Metadata แล้วนำบรรทัดตั้งแต่ Index 3 เป็นต้นไปมาเป็นข้อความเนื้อร้อง
  4. 4
    4. จับคู่ตัวอักษรทีละตัวแบบ 1-ต่อ-1: นำเนื้อร้องแต่ละท่อนมาเติมช่องว่างปิดท้ายและแยกตัวอักษรทีละตัว จากนั้นดึงค่าเวลาจากอาร์เรย์ ticks มาเข้าคู่กับตัวอักษรทุกตัว (รวมสระ วรรณยุกต์ และช่องว่าง) แบบเรียงลำดับต่อเนื่อง 1-ต่อ-1
  5. 5
    5. ไฮไลท์เรียลไทม์บนหน้าจอ: ขณะดนตรีเล่น ระบบเรนเดอร์จะเปรียบเทียบเวลา currentTick >= event.tick เพื่อเปลี่ยนสีตัวอักษรบนหน้าจอแบบเรียลไทม์