กระดานแสดงความคิดเห็น
Home
Contents
Articles
Quiz
Members
Sponsor
Print-friendly
MENU
ปรับปรุง : 2566-10-15 (กระดานแสดงความคิดเห็น)
เว็บเพจหน้านี้สำหรับผู้ดูแลเท่านั้น
รหัส secure
=>
นำตัวอักษร สีขาวบนพื้นแดง มาป้อนในช่องนี้
edit_topic_password =>
<center><table width=90% border=0 bgcolor=#000080><tr><td><font color=white size=4>รูปแบบแฟ้ม .cur และ .lyr</td></tr></table><table width=90% bordercolor=#000080 border=1><tr><td bgcolor=white><br>ข้อมูลจาก http://sukoom2001.exteen.com/20050216/cur-nick-karaoke<br /> โดย sukoom2001<br /> -------------------------------------<br /> รูปแบบไฟล์ CUR ของ nick karaoke<br /> posted on 16 Feb 2005 00:23 by sukoom2001 อยากเขียนโปรแกรมสำหรับร้องเพลงคาราโอเกะบนลีนุกมานานแย้ว<br /> แต่พบว่า ไฟล์ cur ของ nick karaoke นี่มัน มัน มัน<br /> มันไม่เป็นมาตรฐาน คือ เมืองนอกเขามักใช้ไฟล์ .kar กัน<br /> แต่ใน nick ใช้ .cur กับ .lyr แทน<br /> หาแทบตายว่า cur มันเก็บข้อมูลยังไง โชคดีไปเจอมา<br /> จดไว้ จดไว้<br /> //////////// ข้อความจากเว็บของ Nick karaoke <br /> <br /> How to Read .CUR, .LYR, .MID<br /> <br /> .CUR เป็น MIDI Time Step ที่ผมออกแบบไว้เอง เป็น ข้อมูลแบบ WORD ( 2 Byte ) ต่อกันในแบบ Binary ไฟล์ เป็น Step ที่มีการลาก หรือ ปาดเนื้อเพลง เวลาอ่านค่าจาก ไฟล์ ต้องอ่าน มา 2 Byte ต่อกัน <br /> โปรแกรมตัวอย่างข้างล่างนี้ จะดึงข้อมูลมาทีละ Byte แล้วมาต่อกัน เป็นค่าเวลา แล้วเก็บในตัวแปร ที่เตรียมไว้ในแบบ Array <br /> ท ุกครั้งที่มีการเลื่อนของตัวอักษร ที่เลือกว่าปาดเนื้อเพลง โปรแกรม Karaoke จะเก็บค่าเวลาลงใน File นี้ ดดยดูว่า ณขณะนั้น MIDI Time เป็นเท่าไร <br /> เวลาที่โปรแกรม karaoke เล่นเพลง ก็จะคอย ตรวจเวลาใน MCI ว่าถึงเวลาที่ต้องปาดเนื้อไปที่ตัวอักษรต่อไปหรือยัง โดยเปรัยบเทียบกับค่าใน CUR นี้ <br /> การปาดเนื้อจะนัดทุกตัวอักษร สระ และรวมนับการขึ้นบรรทัดด้วย เช่นมีเพลงที่เนื้อเพลง 10 บรรทัด 250 ตัวอักษร จะมี CUR ประมาณ 250+10 ( ไม่รวม 4 บรรทัดแรก ) <br /> .LYR เป็o Text ไฟล์ธรรมดา บรรทัดที่ 1 เก็บชื่อเพลง, บรรทัดที่ 2 เก็บชื่อศิลปิน , บรรทัดที่ 3 เก็บ Key เพลง , บรรทัดที่ 4 ไม่ใช้, บรรทัดที่ 5 - บรรทัดสุดท้าย เป็นเนื้อเพลง เมื่อประกอบกับ MIDI ก็จะเป็น KARAOKE , MIDI ไม่ต้องทำอะไรมาก ใช้ WINMCI เปิดก็จะใช้ได้เลยครับ สำหรับวิธีเปิด .CUR, .LYR ผมได้คัดลอก Code ให้มาลองดูเป็นตัวอย่างข้างล่างนี้แล้ว เพื่อจะได้เป็นประโยชน์กับ บางท่านที่สนใจในการเปิดอ่านไฟล์เหล่านี้ เขียนไว้เป็น VB นะครับ เป็นตัวอย่างเล็กๆ ที่ ใช้อ่านไฟล์ มาเก็บไว้ในตัวแปร Array ไว้ <br /> <br /> <br /> Indent อาจจะไม่ดีนะครับ เพราะผมไม่ได้ใส่ Space ให้ <br /> <br /> Sub LoadCursor() <br /> '--- Load Cursor <br /> 'ตัวแปร Tmpb1, Tmpb1 เป็น Byte อ่าน Data จาก CUR ที่ละ Byte มาประกอบกันเป็น WORD <br /> ' <br /> Dim Tmpb1 as byte, tmpb2 as Byte <br /> ReDim Cursor(0) 'เตรียม Array สำหรับเก็บค่าเวลา <br /> filenum = FreeFile 'เตรียมเปิด File ดดยกำหนดเลขที่ไฟล์ว่าง <br /> <br /> Open CursorPath & "\" & SongStr & ".cur" For Random As filenum Len = 1 <br /> totalLine = 0 <br /> If Err = 0 Then <br /> Do Until EOF(filenum) <br /> <br /> Get filenum, , tmpb1 'Byte ที่ 1 <br /> Get filenum, , tmpb2 'Byte ที่ 2 <br /> If Not (Asc(tmpb2) = 255) Then 'ท้ายไฟล์ Byte ที่เป็นเลขคู่ จะมีค่าเป็น &HFF <br /> ReDim Preserve Cursor(totalLine + 1) 'ขยาย Array สำหรับเก็บค่าเวลา <br /> 'ใส่ ASC เพื่อถอดค่าที่อ่านมาได้เป็นตัวเลข เพราะค่า Byte ที่อ่านมาได้จะเป็น ตัวอักษรขนาด 1 Byte แล้วคูณด้วย 256 หรือ Shift 16 Bit <br /> Cursor(totalLine) = Asc(tmpb1) + Asc(tmpb2) * 256 <br /> totalLine = totalLine + 1 <br /> End If <br /> Loop <br /> Close #filenum <br /> <br /> End If <br /> <br /> End Sub <br /> <br /> Sub LoadLyrics() <br /> '--- Load Lyrics <br /> ' <br /> ' <br /> <br /> filenum = FreeFile <br /> <br /> Open LyricPath & "\" & SongStr & ".lyr" For Input As filenum <br /> totalLine = 0 <br /> repi = -1 <br /> If Err = 0 Then <br /> Do Until EOF(filenum) <br /> <br /> ReDim Preserve Lyric(totalLine + 1) <br /> Line Input #filenum, tmpstr <br /> Lyric(totalLine) = tmpstr <br /> totalLine = totalLine + 1 <br /> <br /> Loop <br /> Close #filenum <br /> End If <br /> End Sub<br /> <br /> // จะได้มีกำลังใจลองทำซักทีโปรแกรมคาราโอเกะ ฮา ฮา ฮ่า<br><br></td></tr><tr><td align=right bgcolor=black><font color=white><small><b>จากคุณ :</b> บุรินทร์ <a href=mailto:></a><a title='125.25.28.167'>.</a><br> 12:15am (1/01/08)</font></td></tr></table></center>