おまけ
ご注意
サポート形式は16bit,モノラル,無圧縮形式のみです。 それ以外は分かりません。 別途外部アプリケーション等必要です なお生成ファイルの動作保障はできません。自己責任でお願いします。
INPUT PROMPT "周波数(Hz)=":FREQ 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 LET ENCODING=3 LET OFFSET=24 LET DATASIZE=-1 LET CHANNEL=1 INPUT PROMPT "VOLUME (0 - 100%)=":VOL LET VOL=VOL/100 LET LEVEL=(2^15-1)*VOL INPUT PROMPT "秒数=":SECOND LET NUM=INT(SAMPLINGFREQ*SECOND) INPUT PROMPT "SAVE FILENAME(.AU)=":F$ IF POS(F$,".")=0 THEN LET F$=F$ & ".AU" OPEN #1:NAME F$,ACCESS OUTPUT PRINT #1:".snd"; PRINT #1:MKL2$(OFFSET); PRINT #1:MKL2$(DATASIZE); PRINT #1:MKL2$(ENCODING); PRINT #1:MKL2$(SAMPLINGFREQ); PRINT #1:MKL2$(CHANNEL); FOR I=0 TO NUM-1 PRINT #1:MKI2$(INT(LEVEL*SIN(I*FREQ/SAMPLINGFREQ*2*PI))); 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
|