SimH PDP-8 simulator plays music
Paul Anderson
useddec at gmail.com
Wed Apr 5 20:33:26 CDT 2017
Very nice....I'm getting ready to rack a 2 bay 11/34 system, then I
hopefully have time to finish off an 8E.
I can't wait to have fun with it. I hadn't thought about music, but it
sounds like fun.
On Wed, Apr 5, 2017 at 9:54 AM, SPC via cctalk <cctalk at classiccmp.org>
wrote:
> Impressive. At least for me :-0
>
> Regards
> Sergio
>
> 2017-04-05 16:43 GMT+02:00 Kyle Owen via cctalk <cctalk at classiccmp.org>:
> > I suspected that I could somehow get some music out of the SimH PDP-8
> > simulator for a while now, if I could only make it run real time and
> toggle
> > a GPIO pin fast enough say, on a Raspberry Pi. That may still be doable
> in
> > the future, but I also had a suspicion that I could generate music not in
> > real time.
> >
> > I finally got around to trying out my idea last night. A few lines were
> > added to pdp8_cpu.c to spit out the elapsed instruction cycles every
> time a
> > CAF instruction is executed, the default "noise" instruction in the
> MUSIC.PA
> > program.
> >
> > That's all I did to the simulator. I then ran MUSIC with a given .MU file
> > and watched as many integers are spit out onto the screen. These were
> > copied and pasted into a new text file and saved.
> >
> > The rest of it is in a single C program that I cobbled together. It reads
> > in this new text file and generates a series of pulses as an array of
> > floats. Each interval is about 1.93 microseconds, which I calculated to
> be
> > the average number of pulses for the music program to be "in tune" with
> > A=440 Hz, plus or minus. This value is subject to change, particularly as
> > the notes get higher in frequency, but only by perhaps 6% or so from my
> > experiments. One detail to note is that per the recommendation of the
> > MUSIC.PA manual, these pulses are extended to roughly 6 microseconds, or
> > three time intervals in my program.
> >
> > This array of floats is then downsampled use libsamplerate to 44.1 kHz
> > (from 1/1.93 microseconds, or roughly 520 kHz) and output to a canonical
> > WAV file, 16-bit single channel.
> >
> > What do you know, it worked! Here's a sample:
> > https://www.youtube.com/watch?v=_urDcyluX9c
> >
> > My code can be found here, for those interested:
> > https://github.com/drovak/music
> >
> > Presumably, this technique could be used to generate music from any given
> > computer simulator.
> >
> > Thanks,
> >
> > Kyle
>
More information about the cctech
mailing list