News:

Want an XLerator? Please participate in the market research thread: https://lisalist2.com/index.php/topic,594.msg4180.html

Main Menu

Lisavox: sampled audio playback for Lisa 1 and Lisa 2/5 computers!

Started by stepleton, January 04, 2026, 06:45:13 PM

Previous topic - Next topic

stepleton

Hi folks! Following on from this thread, I'm happy to announce the availability of the code behind the demo. It's all right here:

https://codeberg.org/stepleton/lisavox

For folks who missed it: "Lisavox" is a project that attempts to play sampled audio on an Apple Lisa 1 or Lisa 2/5 computer. (It doesn't work on the Lisa 2/10 yet for a complicated reason.)

Here is a video that shows Lisavox at work:
https://photos.app.goo.gl/zeySfaPfufn3TayA7
(beware rickroll!)

Like some of my other stunts, Lisavox isn't a program that you run under MacWorks or the Office System but instead has a bit of standalone "bare metal" code that you boot into directly. The program doesn't even use the screen, so it works on stock and screen-modded Lisas alike. I'm not sure whether it works with any type of accelerator, and again, the 2/10 is not eligible for the time being.

If you have a hard drive emulator (or a free ProFile and a lot of patience), it's pretty easy to try Lisavox for your own audio. You'll need to be able to run Python scripts from the command line, and you'll need to have a way to make "raw" 32-bit floating-point audio files. The free software program Audacity can do the second job. Once you've done that, the build_lisavox_disk_image.py does all the work of converting the audio into "Lisavox format", pairing it with the Lisavox program, and putting it all on a hard drive image.

If you don't have a hard drive emulator, you can actually fit a fair amount of audio onto even a single 400k floppy disk: at least a minute and a half at a "standard" sample rate. Let me know if you would like instructions for this: basically, you use the --loaded_program_and_data_dump flag to the drive image building script and then use my old floppy disk bootloader project to make a floppy disk image. Talking of the bootloader: after many years, I've finally updated the floppy drive image building script from Python 2 to Python 3; better late than never, I guess!

If you just want to hear what Lisavox audio can sound like on your Lisa (provided it isn't a 2/10), just try these hard drive images mentioned in the earlier thread:

https://archive.mg-1.uk/tmp/bill.zip
https://archive.mg-1.uk/tmp/julie.zip
https://archive.mg-1.uk/tmp/kevin.zip
https://archive.mg-1.uk/tmp/kris.zip
https://archive.mg-1.uk/tmp/richard.zip

As is typical for my hobby work, Lisavox comes with lots of documentation. The most abundant technical information is at the top of the original lisavox implementation, but basically all of the files contain a fair amount of explanation.

Thanks to folks for checking it out and thanks to @sigma7 for the technical insights he shared late last year on interfacing with Lisa peripherals. I hope this is of interest or is at least good for a chuckle!

ried

Brilliant work, Tom! Thank you. The filenames of each are the cherries on top  :D

bmwcyclist

Using my LISA for writing blogs and other work projects and fun and games at home.
LISA 2/10, AST RAM board, ESProfile, FloppyEMU, reproduction LISA 1 mouse, BlueSCSI

stepleton

I don't know about a short one, unfortunately! It is complicated. But the post I shared earlier (and linked above) has a section called "Why it fails on a 2/10" and another called "The nature of the failure".

Basically the same information appears in the source code as well, including some of the same text.

If you know for electronics: the Lisa 2/10 sticks a flip-flop wired up as a 2:1 clock divider between the speaker and the audio bitstream coming out of the VIA. This changes what the bits do to the speaker in a pretty fundamental way. Rather than the audio bitstream's 1s and 0s pushing the speaker out and in respectively, on the 2/10 the speaker position is now only changed when it sees a "10" pair: if it was sucked in it gets pushed out, and if it was pushed out it gets sucked in. Very different.

It may be possible to fix, but it will be a challenge! The code that pumps data audio to the speaker will probably have to be twice as fast, and it also may need to use twice as much memory in order to do its job. And the code already has (what I think is) a lot of optimisation done to it as it is, so there may not be a lot of headroom for improvements to it. On the bright side, the 68000 doesn't take as long to talk to the VIA on the 2/10 as it does on the Lisa 1 and Lisa 2/5.

bmwcyclist

Using my LISA for writing blogs and other work projects and fun and games at home.
LISA 2/10, AST RAM board, ESProfile, FloppyEMU, reproduction LISA 1 mouse, BlueSCSI