|
You are here: The Oldskool PC/Oldskool PC Software/MONOTONE |
Changes in 0.34:
+ Implemented Vibrato (4xy). MONOTONE has reached it's milestone
for effect support.
- Had CGA profiling forced on -- this might or might not have caused
crashes on non-CGA machines, sorry! This build has all profiling
turned off.
Changes in 0.33:
+ Implemented effect Portamento To Note (3xy).
+ Implemented effect Arpeggio (0xy).
+ Implemented effect Slide Up (1xx).
+ Implemented effect Slide Down (2xx).
- Fixed PC speaker and Adlib not shutting down properly.
- Rewrote the PC speaker code so that it performs the timer reconfig
in a lot less steps if the speaker is already sounding. This was
necessary because implementing slides/portamentos (see above) showed
that the speaker sound was not very smooth as the code was turning
the speaker and timer completely off and on between each tick.
* Spent 8 hours optimizing; player engine is now 40% faster and pattern
display repaint is now 20% faster. (On 4.77Mhz machines, this kind
of optimization matters!)
* Doubled the size of the manual by adding information in all areas.
Still unfinished though.
* Distribution now includes the manual in two formats: monotone.txt,
which is the manual formatted for on-screen display as well as any
dot-matrix or daisywheel printer that supports BS (backspace) and
FF (form feed), and monotone.rtf, for laser or inkjet printers.
* Optimized keyboard handling for slightly better speed and smaller
code.
MONOTONE started as a bit of a joke between Necros and myself, where we were laughing about how nobody had created a tracker for the PC speaker. I like vintage PC challenges (see 8088 Corruption for another example), so I went about making one. MONOTONE's original design goals were:
As development continued, I decided to use the opportunity to finally see what all of the fuss was about with Object Oriented Programming (OOP) and designed MONOTONE as my first OOP exercise. This increased development time greatly (it took me three months of free time to complete, which is a heck of a lot of time for such a simple program), but had the benefit that song data handling, output device handling, screen handling, and the player engine are all objects. This allows descendants of each object to only need a few routines to support a completely new screen/file format/output device. (This decision has turned out to be fruitful, as people have already ported MONOTONE's engine to other devices; see External Links below.)
A very basic version of MONOTONE that met these goals was entered into Block Party 2008's Wild Competition and happily won 2nd place. Here is a short video of me demonstrating MONOTONE as part of the competition.
MONOTONE development is ongoing, but already it's quite a useful little program, so you are encouraged to download it and try it out. Full source code is included, so you can alter MONOTONE to your needs.
The documentation in the .zip file contains more information than this web page, so feel free to grab it and take a look.
The full roadmap is in the manual, but here's the quick rundown on the development milestones:
Version 1 will have 8 effects; support PC speaker, Adlib, and Tandy/PCjr; run on any 128KB or greater PC with a color monitor. All of these have been met except the Tandy/PCjr support, and half the editor functions are still missing.
Version 2 will add support for up to 12 tracks; all Protracker effects; volume control; more sound devices such as true multi-squarewave PC speaker output, the CMS/Game Blaster, and the Bank Street Music Writer card; more powerful and flexible editor features.
Version 3 will add support for a generic instrument concept that will support ADSR volume envelopes, but also some way of specifying hardware-dependant features such as a noise channel; one more sound device, General MIDI, will be added.
If you'd like to follow MONOTONE development, suggest improvements, request features, etc. feel free to join the MONOTONE mailing list.
Sprite_TM ported the MONOTONE playback engine to the AVR! (specifically, an ATTiny84) Here's a video of it in action. He also figured out a low-cost way to decrease the size of the file format, which I will document in the manual when I get a chance.
Need to record the output of the PC speaker?
Feel free to show MONOTONE some love on pouet.