@haitchfive<p>I can't believe I'm still doing this. Anyway, it now has sound. Not perfect sound, but pitch-accurate sound at least, using ebitengine's excellent package 'oto' <br><a href="https://github.com/ebitengine/oto" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">github.com/ebitengine/oto</span><span class="invisible"></span></a></p><p>Accurate enough to identify a tune, possibly less accurate AY-3-8912 streaming, but I designed an audio manager with a proper pipeline, a ringbuffer and independent volume channels going into a mixer. That made replacing the audio backend quite straightforward. Sophisticated for this kind of project, perhaps unnecessary, but that was part of the fun too.</p><p><a href="https://oldbytes.space/tags/ZXSpectrum" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ZXSpectrum</span></a> <a href="https://oldbytes.space/tags/Speccy" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Speccy</span></a> <a href="https://oldbytes.space/tags/Spectrum" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Spectrum</span></a> <a href="https://oldbytes.space/tags/audio" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>audio</span></a> <a href="https://oldbytes.space/tags/foss" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>foss</span></a> <a href="https://oldbytes.space/tags/golang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>golang</span></a> <a href="https://oldbytes.space/tags/emulator" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>emulator</span></a> <a href="https://oldbytes.space/tags/retrocomputing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>retrocomputing</span></a> <a href="https://oldbytes.space/tags/retrogaming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>retrogaming</span></a></p>