Description
The AM1 Synthesizer is a real-time, Midi-controlled, software synthesizer for the Mac OS Classic platform. The program was designed and written as the final project to earn my Master’s degree in computer science from the University of Toledo. The AM1 produces sound in response to Midi input that it receives by calculating combinations of mathematical waveforms. The characteristics of the sounds that it creates are specified in text files using a (fairly) simple syntax. The AM1 uses Opcode’s Open Music System (OMS) to receive Midi input and the user can choose any source for Midi messages that OMS recognizes on their computer. This can include external Midi hardware such as music keyboards and sequencers as well as other Midi software running on the same computer.
The AM1 Synthesizer generates sound in real-time (i.e. immediately in response to receiving input about what notes to play) using a combination of up to six oscillators and a waveshaping unit. Each oscillator can produce a square wave or sine wave, tuned independently of each other. These waves are combined by adding them together or via ring modulation, amplitude modulation, or logic modulation. Logic modulation is a unique feature of the AM1 that allows two or more audio signals to be combined using one of the “bit-wise” logical functions AND, OR, or XOR. The result is similar to ring modulation but is more “gritty” and “digital” sounding.
In addition to these audio resources, the AM1 provides many sources for control-rate modulation of sounds. These include envelopes, LFOs (low frequency oscillators), multipliers, Midi controllers, Midi “aftertouch”, key followers, and some others which have not been completely implemented yet. All modulation sources may be assigned to affect any of the parameters of the sound generation units which are modifiable in real-time and in some cases, they may modify the parameters of other modulation sources as well. There is no limit to the number of modulation routings which the user may specify.
Availability
The AM1 Synthesizer is free software as defined by the Free Software Foundation. The copyright is owned by the University of Toledo which has graciously consented to allow the software to be distributed under a “modified BSD-style” license.
The current version of the AM1 Synthesizer is version 0.50 beta. This is the version that I presented to my Master’s project committee and it contains MANY, MANY unfinished features as well as some serious technical deficiencies that I am aware of and will fix in the next release. Please understand that this software is still very rough. The interface is terrible and there are documented features that do not do anything as well as many undocumented features that do do something (In general, there is very little documentation!) Still, you may find it interesting to play with for now.
Because the AM1 is free software, the source code is available and you are free to use it, modify it, and redistribute it however you want as long as you comply with all of the terms in the license. While the software is unfinished, it is, in my opinion, a good source for some real, working audio code that runs on Mac OS Classic. I used CodeWarrior (version Pro 4) to compile the project but you may need to do some work to get it to compile with a different version or other tools (such as Apple’s MPW).
This product includes software developed by Tim Kientzle and published in “The Programmer’s Guide to Sound” by Addison-Wesley. Those portions of the software are copyright 1997 by Tim Kientzle and are subject to their own license contained in the Read Me file and the applicable source files. (This license is almost identical to the one I have used for the rest of the software but please be sure to read it!)
Downloads:
AM1 Synthesizer 0.50beta with (minimal) docs
AM1 Synthesizer 0.50beta with docs and source code
Here is a slightly newer version of just the source code in a ZIP file:
AM1 Synthesizer 0.51beta source code with docs
AM1 Synthesizer Sourceforge project
Sending Feedback
I am always happy to hear from people who are using my work but I currently have no plans to continue working on this software. Feel free to leave a public comment below or send other feedback via the email address on my contact page.
THANKS!!