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

サウンドファイルを作る


  サウンドファイルを作る しばっち 2008/02/20 20:13:51 
サウンドファイルを作る  返事を書く  ノートメニュー
しばっち <dihjvcfsyu> 2008/02/20 20:13:51
ご注意

サポート形式は16bit,モノラル,無圧縮形式のみです。
それ以外は分かりません。
別途外部アプリケーション等必要です
なお生成ファイルの動作保障はできません。自己責任でお願いします。

OPTION CHARACTER BYTE
LET CHANNEL=1
LET SAMPLEBIT=16
LET LEVEL=2^(SAMPLEBIT-1)*VOL
INPUT PROMPT "周波数(Hz)=":FREQ
INPUT PROMPT "VOLUME (0 - 100%)=":VOL
LET VOL=VOL/100
INPUT PROMPT "サンプリング周波数 11025Hz(1) 22050Hz(2) 44100Hz(3) ":MODE
SELECT CASE MODE
CASE 1
LET SAMPLINGFREQ=11025
CASE 2
LET SAMPLINGFREQ=22050
CASE 3
LET SAMPLINGFREQ=44100
CASE 4
LET SAMPLINGFREQ=8000
CASE 5
LET SAMPLINGFREQ=16000
CASE 6
LET SAMPLINGFREQ=32000
CASE 7
LET SAMPLINGFREQ=48000
CASE 8
LET SAMPLINGFREQ=96000
END SELECT
INPUT PROMPT "秒数=":SECOND
LET NUM=INT(SAMPLINGFREQ*SECOND)
INPUT PROMPT "SAVE FILENAME(.AIF)=":N$
IF POS(N$,".")=0 THEN LET N$=N$ & ".AIF"
OPEN #1:NAME N$,ACCESS OUTPUT
PRINT #1:"FORM";
PRINT #1:MKL2$(46+2*NUM*CHANNEL);
PRINT #1:"AIFF";
PRINT #1:"COMM";
PRINT #1:MKL2$(18);
PRINT #1:MKI2$(CHANNEL);
PRINT #1:MKL2$(NUM*CHANNEL);
PRINT #1:MKI2$(SAMPLEBIT);
PRINT #1:MKLD2$(SAMPLINGFREQ);
PRINT #1:"SSND";
PRINT #1:MKL2$(2*NUM*CHANNEL+8);
PRINT #1:REPEAT$(CHR$(0),8);
LET RATE=FREQ/SAMPLINGFREQ*2*PI
FOR I=0 TO NUM-1
LET V=INT(LEVEL*SIN(RATE*I))
PRINT #1:MKI2$(V);
NEXT I
CLOSE #1
END

EXTERNAL FUNCTION MKI2$(X)
!'BIG-ENDIAN
OPTION CHARACTER BYTE
DECLARE STRING A$,B$
LET A=INT(X)
IF A<0 THEN LET A=A+65536
LET A$=CHR$(MOD(A,256))
LET B$=CHR$(INT(A/256))
LET MKI2$=B$ & A$
END FUNCTION

EXTERNAL FUNCTION MKL2$(X)
!'BIG-ENDIAN
OPTION CHARACTER BYTE
DECLARE STRING A$,B$,C$,D$
LET A=INT(X)
IF A<0 THEN LET A=A+2^32
LET A$=CHR$(MOD(A,256))
LET B$=CHR$(MOD(INT(A/256),256))
LET C$=CHR$(MOD(INT(A/65536),256))
LET D$=CHR$(MOD(INT(A/16777216),256))
LET MKL2$=D$ & C$ & B$ & A$
END FUNCTION
  続き しばっち 2008/02/20 20:14:39  (修正1回)
   └おまけ しばっち 2008/02/20 20:15:52  (修正1回)

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