本帖最后由 dalaoshi 于 2021-9-29 01:22 編輯
有了MAP.TXT 這個文件,就可以寫一個軟件把每個音符剪出來保存為一個音頻文件,在這之前得先知道每個音符真正長度所占的字節是多少,這可以用GOLDWAVE將音色文件中的一個音符復制,保存為ONENOTE.WAV, 然后查看電腦目錄,顯示為734K,由于每個音符都是由CAKEWALK軟件演奏的,長度一樣,因此在軟件中就填上1024次循環,每次讀取734字節,共734K字節,保存為文件:
CUTFILE.BAS
DR$="C:\SOUND\"
FL$="FLUTE.WAV"
CLS
OPEN DR$+FL$ FOR BINARY AS #1 'FIND data
PRINT "ORIGINAL FILE ";DR$;FL$;" LEN=";LOF(1)
FOR I&=0 TO 1000 'LOF(1)
GET$ #1,4, RING$
IF RING$="data" THEN
PRINT "FOUND data AT";LOC(1);"SO IT IS A WAV FILE"
EXIT FOR
END IF
K&=LOC(1)
K&=K&-3
SEEK #1, K&
NEXT I&
CLOSE #1
OPEN DR$+FL$ FOR BINARY AS #1 'FIND DATA
OPEN DR$+"MAP.TXT" FOR INPUT AS #2
PRINT "ORIGINAL FILE ";DR$;FL$;" LEN="LOF(1)
FOR I=1 TO 84
IF EOF(2) THEN EXIT FOR
INPUT #2, MAKE$
SN$=LTRIM$(STR$(VAL(MAKE$))," ") 'FILE
PRINT SN$;",";
MAKE$=MID$(MAKE$,5,18)
START&=VAL(MAKE$) 'START
PRINT "LOCATION:";START&;
MAKE$=MID$(MAKE$,10,10)
LG=VAL(MAKE$)
PRINT "BYTES:";LG
OPEN DR$+SN$+".WAV" FOR BINARY AS #3
CLOSE #3
KILL DR$+SN$+".WAV"
OPEN DR$+SN$+".WAV" FOR BINARY AS #3 'GET 800K
SEEK #1, START&
FOR V= 1 TO 1024
GET$ #1, 734, HG$
PUT$ #3, HG$
NEXT V
CLOSE #3
NEXT I
END
剪切好的音符文件必須用GOLDWAVE打開一個試聽,確保音符是完整的。
note29.jpg (743.19 KB, 下載次數: 62)
下載附件
2021-9-28 17:47 上傳
。。待續
|