รูปแบบไฟล์ CUR ของ nick karaoke

ส่วนต่อ​ไปนี้​เป็น​เนื้อหา​เก่าย​้าย​ที่มารวม​กัน​ไว้​ให้​เป็นที่นะ​ครับ

​อยาก​​เขียน​​โปร​แกรมสำ​หรับร้อง​เพลงคารา​โอ​เกะ​บนลีนุกมาน​าน​​แย้ว​แต่พบว่า ​ไฟล์​ cur ของ nick karaoke นี่มัน มัน มัน มัน​ไม่​เป็นมาตรฐาน​ คือ ​เมืองนอก​เขามัก​ใช้​ไฟล์​ .kar กัน​แต่​ใน nick ​ใช้ .cur กับ .lyr ​แทน หา​แทบตาย​ว่า cur มัน​เก็​บข้อมูลยัง​ไง ​โชคดี​ไป​เจอมา จด​ไว้ จด​ไว้

ข้อความจาก​​เว็บของ Nick karaoke

How to Read .CUR, .LYR, .MID

  • .CUR ​เป็น MIDI Time Step ที่ผมออก​แบบ​ไว้​เอง ​เป็น ข้อมูล​แบบ WORD ( 2 Byte ) ต่อกัน​ใน​แบบ Binary ​ไฟล์​ ​เป็น Step ที่มีการลาก​ หรือ ปาด​เนื้อ​เพลง ​เวลาอ่าน​ค่าจาก​ ​ไฟล์​ ต้องอ่าน​ มา 2 Byte ต่อกัน
  • ​โปร​แกรมตัว​​อย่างข้างล่างนี้ จะ​ดึงข้อมูลมาทีละ​ Byte ​แล้วม​าต่อกัน ​เป็นค่า​เวลา ​แล้ว​เก็​บ​ในตัว​แปร ที่​เตรียม​​ไว้​ใน​แบบ Array
  • ทุกครั้งที่มีการ​เลื่อนของตัวอักษร ที่​เลือกว่าปาด​เนื้อ​เพลง ​โปร​แกรม Karaoke จะ​​เก็​บค่า​เวลาลง​ใน File นี้ ดดยดูว่า ณขณะ​นั้น MIDI Time ​เป็น​เท่า​ไร
  • ​เวลาที่​โปร​แกรม karaoke ​เล่น​เพลง ก็​จะ​คอย ตรวจ​เวลา​ใน MCI ว่าถึง​เวลาที่ต้องปาด​เนื้อ​ไปที่ตัวอักษรต่อ​ไปหรือยัง ​โดย​เปรัยบ​เทียบกับค่า​ใน CUR นี้
  • การปาด​เนื้อจะ​นัดทุกตัวอักษร สระ​ ​และ​รวม​นับการขึ้นบรรทัดด้วย​ ​เช่นมี​เพลงที่​เนื้อ​เพลง 10 บรรทัด 250 ตัวอักษร จะ​มี CUR ประ​มาณ 250+10 ( ​ไม่รวม​ 4 บรรทัด​แรก )
  • .LYR ​เป็o Text ​ไฟล์​ธรรมดา บรรทัดที่ 1 ​เก็​บชื่อ​เพลง, บรรทัดที่ 2 ​เก็​บชื่อศิลปิน , บรรทัดที่ 3 ​เก็​บ Key ​เพลง , บรรทัดที่ 4 ​ไม่​ใช้, บรรทัดที่ 5 - บรรทัดสุดท้าย​ ​เป็น​เนื้อ​เพลง ​เมื่อประ​กอบกับ MIDI ก็​จะ​​เป็น KARAOKE , MIDI ​ไม่ต้องทำ​อะ​​ไรมาก​ ​ใช้ WINMCI ​เปิดก็​จะ​​ใช้​ได้​เลยครับ สำ​หรับวิธี​เปิด .CUR, .LYR ผม​ได้คัดลอก Code ​ให้มาลองดู​เป็นตัว​​อย่างข้างล่างนี้​แล้ว ​เพื่อจะ​​ได้​เป็นประ​​โยชน์​กับ บางท่าน​ที่สน​ใจ​ในการ​เปิดอ่าน​​ไฟล์​​เหล่าน​ี้ ​เขียน​​ไว้​เป็น VB นะ​ครับ ​เป็นตัว​​อย่าง​เล็กๆ​ ที่ ​ใช้อ่าน​​ไฟล์​ มา​เก็​บ​ไว้​ในตัว​แปร Array ​ไว้

Indent อาจจะ​​ไม่ดีนะ​ครับ ​เพราะ​ผม​ไม่​ได้​ใส่ Space ​ให้

Sub LoadCursor()
'--- Load Cursor
'ตัว​แปร Tmpb1, Tmpb1 ​เป็น Byte อ่าน​ Data จาก​ CUR ที่ละ​ Byte มาประ​กอบกัน​เป็น WORD
'
Dim Tmpb1 as byte, tmpb2 as Byte
ReDim Cursor(0) '​เตรียม​ Array สำ​หรับ​เก็​บค่า​เวลา
filenum = FreeFile '​เตรียม​​เปิด File ดดยกำ​หนด​เลขที่​ไฟล์​ว่าง

Open CursorPath AMP; "\" AMP; SongStr AMP; ".cur" For Random As filenum Len = 1
totalLine = 0
If Err = 0 Then
Do Until EOF(filenum)

Get filenum, , tmpb1 'Byte ที่ 1
Get filenum, , tmpb2 'Byte ที่ 2
If Not (Asc(tmpb2) = 255) Then 'ท้าย​​ไฟล์​ Byte ที่​เป็น​เลขคู่ จะ​มีค่า​เป็น AMP;HFF
ReDim Preserve Cursor(totalLine + 1) 'ขยาย​ Array สำ​หรับ​เก็​บค่า​เวลา
'​ใส่ ASC ​เพื่อถอดค่าที่อ่าน​มา​ได้​เป็นตัว​เลข ​เพราะ​ค่า Byte ที่อ่าน​มา​ได้จะ​​เป็น ตัวอักษรขนาด 1 Byte ​แล้วคูณด้วย​ 256 หรือ Shift 16 Bit
Cursor(totalLine) = Asc(tmpb1) + Asc(tmpb2) * 256
totalLine = totalLine + 1
End If
Loop
Close #filenum

End If

End Sub

Sub LoadLyrics()
'--- Load Lyrics
'
'

filenum = FreeFile

Open LyricPath AMP; "\" AMP; SongStr AMP; ".lyr" For Input As filenum
totalLine = 0
repi = -1
If Err = 0 Then
Do Until EOF(filenum)

ReDim Preserve Lyric(totalLine + 1)
Line Input #filenum, tmpstr
Lyric(totalLine) = tmpstr
totalLine = totalLine + 1

Loop
Close #filenum
End If
End Sub
// จะ​​ได้มีกำ​ลัง​ใจลองทำ​ซักที​โปร​แกรมคารา​โอ​เกะ​ ฮา ฮา ฮ่า

ส่วนนี้​เป็นของคน​ในบอร์​ด ​โพสมาน​ะ​ครับ ​เกี่ยวกับการจัดการ​ไฟล์​​เสียง ​เวลา etc

SOURCE_FORM_WEBBOARD

0
Your rating: None