Album
米Teen唔鐘意玩現成品,喜歡由零件開始砌。99次失敗唔係問題,最緊要係有1次成功!
米Teen總部設在聖公會白約翰會督中學506室,在午膳後和放學後集會。有興趣參與的同學,請與會長或導師聯絡。
溫度 26℃ 濕度 95%
街景 2020-11-04 21:41:52
溫度 22℃ 濕度 95%
街景 2020-11-04 21:34:34
Sine wave generator
Sine wave ...
> >Wave file format
A wave file consists of a 44 bytes header and sound wave samples.
data chunk size = number of sample frames * 4 (4 bytes for stereo and 16 bit samples)
file size = 44 + data chunk size
numbers are stored with least significant byte first (little-endian)
[4]-[7] value=file size-8=data chunk size+36
[22]-[23] number of channels, stereo=2
[24]-[27] sampling rate
[28]-[31] byte rate=sampling rate * NumChannels * BitsPerSample/8
[34]-[35] bits per sample, value 16 for 16 bits
[40]-[43] data chunk size
[44]- the sound samples (16 bit signed integer, 2 bytes for the left followed by 2 bytes for the right)
ref: bit rate for 44100Hz 16bit stereo = 1411200bps
Left (Hz): | |
Right (Hz): | |
Duration (max 8s): | |
A=amplitude
f=frequency of the sine wave
T=period=1/f
R=sampling rate
t=time=i*1/R (i=loop counter)
s=sample=A*sin(2*pi*t/T)
=A*sin(2*pi*f*t)
=A*sin(2*pi*f*i/R)
Unlike many other programming languages, JavaScript numbers are always stored as double precision floating point numbers. 16-bit wave samples are stored as 2's-complement signed integers, ranging from -32768 to 32767 (little-endian). Therefore, negative JavaScript numbers must be converted to 2's complement format before converting to base64 characters.
if (s<0) s=s+65536;
Album
米Teen唔鐘意玩現成品,喜歡由零件開始砌。99次失敗唔係問題,最緊要係有1次成功!
米Teen總部設在聖公會白約翰會督中學506室,在午膳後和放學後集會。有興趣參與的同學,請與會長或導師聯絡。
溫度 26℃ 濕度 95%
街景 2020-11-04 21:41:52
溫度 22℃ 濕度 95%
街景 2020-11-04 21:34:34