ご注意
サポート形式は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
|