Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
54
Task/Musical-scale/Yabasic/musical-scale.basic
Normal file
54
Task/Musical-scale/Yabasic/musical-scale.basic
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
// Rosetta Code problem: http://rosettacode.org/wiki/Musical_scale
|
||||
// by Galileo, 03/2022
|
||||
|
||||
sample_rate = 44100
|
||||
duration = 8
|
||||
dataLength = sample_rate * duration
|
||||
hdrSize = 44
|
||||
fileLen = dataLength + hdrSize - 8
|
||||
data 261.6, 293.6, 329.6, 349.2, 392.0, 440.0, 493.9, 523.3
|
||||
|
||||
sub int_to_bytes(dato, long)
|
||||
local dato$, esp, esp$, i
|
||||
|
||||
esp$ = "00000000"
|
||||
dato$ = hex$(dato)
|
||||
esp = long * 2
|
||||
dato$ = right$(esp$ + dato$, esp)
|
||||
for i = esp - 1 to 1 step -2
|
||||
poke #fn, dec(mid$(dato$, i, 2))
|
||||
next
|
||||
end sub
|
||||
|
||||
fn = open("notesyab.wav", "wb")
|
||||
|
||||
print #fn, "RIFF";
|
||||
int_to_bytes(fileLen, 4)
|
||||
print #fn, "WAVEfmt ";
|
||||
int_to_bytes(16, 4) // length of format data (= 16)
|
||||
int_to_bytes(1, 2) // type of format (= 1 (PCM))
|
||||
int_to_bytes(1, 2) // number of channels (= 1)
|
||||
int_to_bytes(sample_rate, 4) // sample rate
|
||||
int_to_bytes(sample_rate, 4) // sample rate * bps(8) * channels(1) / 8 (= sample rate)
|
||||
int_to_bytes(1,2) // bps(8) * channels(1) / 8 (= 1)
|
||||
int_to_bytes(8,2) // bits per sample (bps) (= 8)
|
||||
print #fn, "data";
|
||||
int_to_bytes(dataLength, 4) // size of data section
|
||||
|
||||
for j = 1 to duration
|
||||
read f
|
||||
omega = 2 * PI * f
|
||||
for i = 0 to dataLength/duration-1
|
||||
y = 32 * sin(omega * i / sample_rate)
|
||||
byte = and(y, 255)
|
||||
poke #fn, byte
|
||||
next
|
||||
next
|
||||
|
||||
close(fn)
|
||||
|
||||
if peek$("os") = "windows" then
|
||||
system("notesyab.wav")
|
||||
else // Linux
|
||||
system("aplay notesyab.wav")
|
||||
endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue