新しく発言する  EXIT  インデックスへ

WAV逆再生化


  WAV逆再生化 しばっち 2008/02/20 20:11:09  (修正2回)
  続き しばっち 2008/02/20 20:11:59  (修正2回)
  WAV2CSV しばっち 2008/03/02 22:13:11 
Re: WAV逆再生化  返事を書く  ノートメニュー
しばっち <dihjvcfsyu> 2008/03/02 22:13:11
WAV2CSV

エクセルで読めるCSVファイルに変換します


OPTION CHARACTER BYTE
FILE GETNAME F$,"WAVファイル|*.WAV"
IF F$="" THEN STOP
OPEN #1:NAME F$
LET A$=""
FOR I=1 TO 12
CHARACTER INPUT #1 : X$
LET A$=A$ & X$
NEXT I
IF A$(1:4)<>"RIFF" THEN
PRINT "WAVファイルではありません"
CLOSE #1
STOP
END IF
LET WAVEFILESIZE=CVL(A$(5:8))
IF A$(9:12)<>"WAVE" THEN
PRINT "WAVファイルではありません"
CLOSE #1
STOP
END IF
DO
LET A$=""
FOR I=1 TO 4
CHARACTER INPUT #1 : X$
LET A$=A$ & X$
NEXT I
SELECT CASE A$(1:4)
CASE "fmt "
LET A$=""
FOR I=1 TO 4
CHARACTER INPUT #1 : X$
LET A$=A$ & X$
NEXT I
LET HEADERSIZE=CVL(A$(1:4))
LET A$=""
FOR I=1 TO HEADERSIZE
CHARACTER INPUT #1 : X$
LET A$=A$ & X$
NEXT I
LET WAVETYPE=CVI(A$(1:2))
IF WAVETYPE<>1 THEN
PRINT "対応していません"
CLOSE #1
STOP
END IF
LET CHANNEL=CVI(A$(3:4))
LET SAMPLINGFREQ=CVL(A$(5:8))
LET DATARATE=CVL(A$(9:12))
LET SAMPLESIZE=CVI(A$(13:14))
LET SAMPLEBIT=CVI(A$(15:16))
CASE "data"
LET A$=""
FOR I=1 TO 4
CHARACTER INPUT #1 : X$
LET A$=A$ & X$
NEXT I
LET PCMSIZE=CVL(A$(1:4))
LET SECOND=PCMSIZE/DATARATE
LET NUM=INT(SAMPLINGFREQ*SECOND)
EXIT DO
CASE "fact"
LET A$=""
FOR I=1 TO 8
CHARACTER INPUT #1 : X$
LET A$=A$ & X$
NEXT I
LET SIZE=CVL(A$(1:4))
LET SAMPLE=CVL(A$(5:8))
CASE ELSE
PRINT "対応していません"
CLOSE #1
STOP
END SELECT
LOOP
INPUT PROMPT "SAVE FILENAME(.CSV)=":N$
IF POS(N$,".")=0 THEN LET N$=N$ & ".CSV"
OPEN #2:NAME N$,ACCESS OUTPUT
PRINT #2:"サンプリング周波数,";STR$(SAMPLINGFREQ)
PRINT #2:"サンプルビット数,";STR$(SAMPLEBIT)
PRINT #2:"チャンネル数,";STR$(CHANNEL)
PRINT #2
PRINT #2:"No.,";
SELECT CASE CHANNEL
CASE 1
PRINT #2:"モノラル"
CASE 2
PRINT #2:"左チャンネル,右チャンネル"
CASE 3
PRINT #2:"左チャンネル,右チャンネル,中央チャンネル"
CASE 4
PRINT #2:"左チャンネル,中央チャンネル,右チャンネル,サラウンド"
CASE ELSE
FOR I=1 TO CHANNEL-1
PRINT #2:CHR$(34);"チャンネル";I;CHR$(34);",";
NEXT I
PRINT #2:CHR$(34);"チャンネル";CHANNEL;CHR$(34)
END SELECT
FOR K=1 TO NUM
PRINT #2:STR$(K); !'行ナンバー
FOR I=1 TO CHANNEL
LET B$=""
FOR J=1 TO SAMPLEBIT/8
CHARACTER INPUT #1 : L$
LET B$=B$ & L$
NEXT J
IF SAMPLEBIT=8 THEN LET C=ORD(B$)-128
IF SAMPLEBIT=16 THEN LET C=CVI(B$)
PRINT #2:",";STR$(C); !'PCMデータ
NEXT I
PRINT #2
NEXT K
CLOSE #1
CLOSE #2
END
  │└続き しばっち 2008/03/02 22:14:07 
  CSV2WAV しばっち 2008/03/02 22:15:44 
   └続き しばっち 2008/03/02 22:16:32 

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。