--- a/SoundStream.st Sat Jan 04 01:50:41 2020 +0100
+++ b/SoundStream.st Sat Jan 04 02:09:27 2020 +0100
@@ -1635,7 +1635,11 @@
"allocate memory for 1 sec playing time"
numSamples := self sampleRate.
- buffer := WordArray new:numSamples.
+ audioFormat == #U16 ifTrue:[
+ buffer := WordArray new:numSamples.
+ ] ifFalse:[
+ buffer := SignedWordArray new:numSamples.
+ ].
"fill it with a sine wave"
"/ buffer is 1 second,
@@ -1643,12 +1647,12 @@
"/ each of which is 0 .. 2pi
scale := freq * 2 * (Float pi) / numSamples.
1 to:numSamples do:[:i |
- val := (scale * i) sin.
+ val := (scale * (i-1)) sin.
val := (val * 16r7FFF) rounded.
audioFormat == #U16 ifTrue:[
val := val + 16r8000
].
- buffer at:i put:(val bitAnd:16rFFFF)
+ buffer at:i put:val
].
1 to:nSeconds truncated do:[:s |
@@ -1662,7 +1666,7 @@
"of course, the frequency should be below half the
sampleRate - hear below ...
- SoundStream writing setSampleRate:4000; tuneTone16:440 seconds:1; close
+ SoundStream writing setSampleRate:4000; tuneTone16:440 seconds:3; close
SoundStream writing setSampleRate:8000; tuneTone16:440 seconds:1; close
SoundStream writing setSampleRate:10000; tuneTone16:440 seconds:1; close
SoundStream writing setSampleRate:20000; tuneTone16:440 seconds:1; close