I am the custodian of Frotz, an implementation of the Z-machine. The Z-machine was created by Infocom in 1979 to port their text adventure computer games (also known as Interactive Fiction) to many dissimilar computers. Infocom was bought by Activision in 1986 and shut down in 1989. Since then fans of the genre reverse-engineered the Z-machine and created their own implementations. Frotz was one of these. One of the later additions to the Z-machine was the ability to play sound effects. Only two such games were published by Infocom: "Lurking Horror" and "Sherlock Holmes: The Riddle of the Crown Jewels". Since the rise of new Z-machine interpreters, a few more games using sound effects have been produced. Frotz has been able to play them, but with the progress of computing environments, it has not always been able to keep up.
Infocom's original ideas for sound effects were simple: play one sampled sound at any one time. By and by, the Blorb standard was invented to simplify the convoluted and messy process of creating and distributing games that use sound effects. Blorb standardized sound effects as being AIFF samples, Ogg Vorbis samples, and MOD music. Further, it was stated that an AIFF sample should be able to play at the same time as an Ogg Vorbis or MOD. The idea here is that Ogg Vorbis or MOD would provide background music and AIFFs provide sound effects.
One of the most important goals I've set for the Frotz project is to make sure that it will work for very old computers as well as newer ones. Therefore, for the Unix port, I could not use the big audio libraries often used by modern games. To keep the number and size of libraries down, I use only these: libao (for final audio output), libmodplug (for reading MOD data), libsamplerate (to make sure all audio data are compatible with each other for output), libsndfile (for reading AIFF data), and libvorbis (for reading Ogg Vorbis data). Frotz's source code can be found at https://gitlab.com/DavidGriffith/frotz.
I managed to get AIFF, MOD, and OGG playback working individually, but I could not figure out how to correctly mix the data streams without causing distortion and/or crashes. I have found someone who is much better than I am at audio programming who has diagnosed the problem. His recommendation is that the entire audio subsystem be rewritten. He cannot do this for free though. That's why I'm running this Kickstarter. I need to raise approximately $600 to pay for this work. The target of $700 is to account for Kickstarter fees and unexpected potential trouble. Anything extra will be a bonus for the programmer.
The person I found who will do the modifications to Frotz is Mark D McCurry. He's an experienced Linux programmer with a special focus on audio processing. His website is at http://fundamental-code.com/. Technical articles written by him are at http://log.fundamental-code.com/. Some of his programming is available for public view at https://github.com/fundamental.
Most of his open source time is spent maintaining and improving a software synthesizer known as Zynaddsubfx, which can be found at http://zynaddsubfx.sourceforge.net/. He has maintained that project since 2009 at which point it was mostly abandoned by the original author. Since then he helped it through twelve releases, rewrote the audio/midi subsystem, added Open Sound Control (OSC) access to the roughly 8 million parameters, made major changes to improve audio generation robustness (realtime safety), and produced an entirely new user-interface. Indeed, Mark is the programmer for this project.
After this project is successfully funded, Mark's changes to the source code can be followed at https://gitlab.com/DavidGriffith/frotz. His changes will be covered under the GPL version 2, the same as Frotz has been since version 2.40.
Risks and challenges
This project is a matter of hiring a programmer for a few days of work. I don't think he'll take the money and run because he is prominent in the field. My previous Kickstarter project was to fund the production of single board computer kits, the P112. That one succeeded, went very well, and was quite a bit more complex than this one.Learn about accountability on Kickstarter
- (30 days)