25 lines
779 B
Julia
25 lines
779 B
Julia
using PortAudio
|
|
|
|
function paudio()
|
|
devs = PortAudio.devices()
|
|
devnum = findfirst(x -> x.maxoutchans > 0, devs)
|
|
(devnum == nothing) && error("No output device for audio found")
|
|
return PortAudioStream(devs[devnum].name, 0, 2)
|
|
end
|
|
|
|
function play(ostream, pitch, durationseconds)
|
|
sinewave(t) = 0.6sin(t) + 0.2sin(2t) + .05sin(8t)
|
|
timesamples = 0:(1 / 44100):(durationseconds * 0.98)
|
|
v = Float64[sinewave(2π * pitch * t) for t in timesamples]
|
|
write(ostream, v)
|
|
sleep(durationseconds * 0.9)
|
|
end
|
|
|
|
# C major scale starting with middle C
|
|
# pitches from //pages.mtu.edu/~suits/notefreqs.html
|
|
const scale = [261.6, 293.7, 329.6, 349.2, 392, 440, 493.9, 523.3]
|
|
const ostream = paudio()
|
|
for pitch in scale
|
|
play(ostream, pitch, 0.5)
|
|
sleep(0.4)
|
|
end
|