Goals

MadTracker is meant to be a very flexible, powerful and multi-user approach to music composition.

The goals of MadTracker could be summarized with the following keywords:

  • Modularity
  • Portability
  • Flexibility
  • Ease of use
  • Power
  • Network
  • Community
  • Free

At its core, MadTracker is just a sequencer. Its job is to call objects at a specific time with specific parameters (note, volume, etc.). Objects right now are only instruments (with samples, or VST). But we can imagine to have video sequences as well. There are many possibilities...

Design

The design of MadTracker is very flexible yet simple. It consists of one core and several components (extensions) that are loaded by the core.

MT3
The core component. It is in charge of loading the extensions, handling the interface and performing the main program loop.
MTSystem
The extension that is in charge of communicating with the Operating System; for memory management, file management, system information, locks, etc.
MTDisplay
This is the link between MadTracker and the graphical layer. (OpenGL, DirectX, GDI, etc.).
Other extensions can link with this one to add new audio drivers.
MTAudio
This is the link between MadTracker and the audio devices. (MME, DirectX, etc.)
Other extensions can link with this one to add new display drivers.
MTGUI
This extention contains all the graphical user interface (GUI) elements. (Menus, buttons, etc.)
This perticular extension uses its own rendering functions to display the elements. But one could imagine to have a replacement extension that would link against Windows' native interface or GTK, etc.
MTDSP
This one contains all the routines for the sound manipulation. Resampling, filtering, etc.
MTObjects
This is the declaration of all the objects that are part of a musical composition ("module"): instruments, samples, patterns, etc.
Basically, the core has to be aware of the above-mentionned extensions. Other (3rd-party) extensions can expand these extensions - by adding new display/audio drivers, new objects, a new interface, etc.