本帖最后由 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打开一个试听,确保音符是完整的。
。。待续
|