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

เจาะลึกไฟล์เคอร์เซอร์ NCN (.cur) และสูตรคำนวณแปลงค่า Cursor เป็น MIDI Ticks

โครงสร้างไบนารีไฟล์เคอร์เซอร์ .cur, การอ่านไบต์แบบ 16-bit Little-Endian, การอ้างอิงความละเอียด 24 PPQ และสูตรคณิตศาสตร์แปลงค่าเป็น MIDI Ticks

1. ข้อกำหนดไฟล์ไบนารีเคอร์เซอร์ NCN (.cur)

ไฟล์ .cur (Cursor) เป็นไฟล์แทร็กเวลาสำหรับการปาดสีตัวอักษรในเพลง NCN คาราโอเกะ โดยไฟล์นี้เป็น **ไฟล์ไบนารีบริสุทธิ์ (Raw Binary)** บันทึกตัวเลขจำนวนเต็ม 16-bit Unsigned Integer ซึ่งถูกบีบอัดขนาดลงโดยอ้างอิงกับค่าความละเอียดมาตรฐาน **24 PPQ (Pulses Per Quarter Note)**

2. อัลกอริทึมการอ่านไบต์ไฟล์เคอร์เซอร์

อัลกอริทึมการถอดรหัสไบนารีจะอ่านข้อมูลจาก DataView ครั้งละ 2 ไบต์ ตามลำดับ Little-Endian ดังนี้:

สูตรคำนวณอ่านไบต์และตัวระบุจุดสิ้นสุดไฟล์ (EOF Marker)

3. สูตรคำนวณแปลงค่า Cursor เป็น MIDI Ticks (cursorToTick)

เนื่องจากค่าเวลาในไฟล์ .cur ถูกบีบอัดให้อยู่บนฐาน 24 PPQ ในการเล่นเพลงจริงบน Web Audio Synth ต้องนำค่าเคอร์เซอร์มาแปลงให้ตรงกับความละเอียด PPQ ของไฟล์ MIDI นั้นๆ (เช่น 480 หรือ 960 PPQ) ด้วยสูตรคณิตศาสตร์ดังนี้:

สูตรคำนวณการแปลงค่า (Mathematical Formula)

สูตรคำนวณการแปลงค่า (Mathematical Formula)

terminal
realTick = Math.round((cursorValue * ticksPerBeat) / 24)

4. การแมปตัวอักษรเข้ากับลำดับเวลา (1-to-1 Mapping)

เมื่อแปลงค่าเคอร์เซอร์ทั้งหมดเป็น realTick เรียบร้อยแล้ว ระบบจะนำตัวอักษรและช่องว่างจากไฟล์ .lyr มาจับคู่แบบ 1-ต่อ-1 เข้ากับอาร์เรย์ realTick เมื่อเพลงเล่นไปข้างหน้า ระบบเรนเดอร์ (Canvas/DOM) จะทำการเปลี่ยนสีไฮไลท์ตัวอักษรแต่ละตัวแบบเรียลไทม์ทันทีที่เวลา MIDI Tick ในขณะนั้นเดินทางมาถึงตำแหน่ง realTick ของตัวอักษรนั้นๆ