Document converted to plain ASCII for inclusion in Wotsit's Format ;+------------------------------+ ;|MASTER TRACKER 1.1 AKMTRK1.OBJ| ;|BY [PYRO-FYRE]/ARKHAM 06/05/95| ;+------------------------------+ This document is intended for the experienced programmer with knowledge of a good deal of assembly and the 386. This is the documentation for the MASTER TRACKER 2.x AKMTRK1.OBJ sound routine. I realise that several ADLIB players exist on the PC but the editors was never present with the routines for using in demos. And i think the Sound Blaster is not a good device to play several digitized voices when you have a slow PC because this system use a lot of time of the CPU. The FM music is quite fast when you use only 4 voices with an ADLIB or SB. With the new fast registers of the SBPRO/SB16 and GUS, you can use 9 voices without spend a lot of CPU time! I think a demo is more good when you use FM music. I think the only GUS demos are not fantastic without song when you haven't a GUS (arrrg, I haven't got a GUS) and a simple FM music is welcommed! This code and the .OBJ file were writen by [PYRO-FYRE] from ARKHAM. If you want to use this thing as it is though, you will have to code in 100% ASM. But it could be adapted on other language easilly: my editor MASTERTRACKER use these routines with a simple BASIC language. This program don't support the mtr files larger than 64 Kb because of the segmentation in real mode. In fact, MASTERTRACKER 2.x use the REAL FLAT MODE for making music larger than 64 Kb. The old music files formats .MTR (v1.x) consist of: --------------------------------------------------- '------------------------- 'FILE FORMAT: LENGTH '------------------------- 'INFORMATION | 0050 | MTRACK NOM_MUSIQUE (20 CHAR) 00 (NBVOICES%-1) 00 (NB PATTERN-1) 00 (LENGTH) 01F3 (RESTART) 00000000 (LONGUEUR) + CHR(1AH) 'SPEED | 0002 | 'DEVICE | 0001 | 0=SPK 1=ADL 2=SBP ;NOT USED NOW 'POSITIONS | 0256 | 'VOICES TYPE | 0256 | '------------------------- 'INSTRUMENTS: | 4096 | (TOTAL BYTES, 64 INSTRUMENTS) '------------------------- 'INSTRUM NAME | 0020 | 'DATAS | 0044 | (TOTAL BYTES, 1 INSTRUMENT 'IDENTIFICATION---|------|------| ' | 0001 | 0001 | IDENTIFICATION: THIS BYTE=02 WHEN IT IS USED OR 00 WHEN NOT. '1~ OPPERATOR-----|------|------| ' | | 0004B| MODULATOR FREQUECY MULTIPLE ' | | 0001B| KSR ' | | 0001B| EG TYPE ' | | 0001B| VIBRATO ' | | 0001B| AMPLITUDE MODULATION ' | | | ' | | 0006B| TOTAL LEVEL ' | | 0002B| SCALING LEVEL ' | | | ' | | 0004B| DECAY RATE ' | | 0004B| ATTACK RATE ' | | | ' | | 0004B| RELEASE RATE ' | | 0004B| SUBSTAIN LEVEL ' | | | ' | | 0001B| ALGORITHM ' | | 0003B| CONNECTION ' | | | ' | | 0002B| WAVEFORM SELECT ' | | 0004B| MODULATOR FREQUECY MULTIPLE ' | | 0001B| KSR ' | | 0001B| EG TYPE ' | | 0001B| VIBRATO ' | | 0001B| AMPLITUDE MODULATION '2~ OPPERATOR-----|------|------| ' | | 0006B| TOTAL LEVEL ' | | 0002B| SCALING LEVEL ' | | | ' | | 0004B| DECAY RATE ' | | 0004B| ATTACK RATE ' | | | ' | | 0004B| RELEASE RATE ' | | 0004B| SUBSTAIN LEVEL ' | | | ' | | 0001B| ALGORITHM ' | | 0003B| CONNECTION ' | | | ' | | 0002B| WAVEFORM SELECT ' OTHER BYTES UNUSED | | '------------------------- 'PATTERN | ???? | ????=NUMBER OF VOICES * NUMBER OF PATTERN * 256 -> MAX=65536 '------------------------- The new music files formats .MTR (v2.x) consist of: --------------------------------------------------- '------------------------- 'FILE FORMAT: LENGTH '------------------------- 'INFORMATION | 0050 | MTRACK MUSICNAME (20 CHAR) 00 (NBVOICES%-1) 00 (NBDIGITVOICES%) 00 (NB PATTERN-1) 00 (LENGTH) 00 (NB INSTRUM) 01F3 (RESTART) 00000000 (LENGHT) + CHR(1AH) 'POSITIONS | 0256 | '------------------------- 'INSTRUM NAME | 0020 | 'DATAS | 0044 | (TOTAL BYTES, 1 INSTRUMENT 'IDENTIFICATION---|------|------| ' | 0001 | 0001 | IDENTIFICATION: THIS BYTE=02 WHEN IT IS USED OR 00 WHEN NOT. '1~ OPPERATOR-----|------|------| ' | | 0004B| MODULATOR FREQUECY MULTIPLE ' | | 0001B| KSR ' | | 0001B| EG TYPE ' | | 0001B| VIBRATO ' | | 0001B| AMPLITUDE MODULATION ' | | | ' | | 0006B| TOTAL LEVEL ' | | 0002B| SCALING LEVEL ' | | | ' | | 0004B| DECAY RATE ' | | 0004B| ATTACK RATE ' | | | ' | | 0004B| RELEASE RATE ' | | 0004B| SUBSTAIN LEVEL ' | | | ' | | 0001B| ALGORITHM ' | | 0003B| CONNECTION ' | | | ' | | 0002B| WAVEFORM SELECT ' | | 0004B| MODULATOR FREQUECY MULTIPLE ' | | 0001B| KSR ' | | 0001B| EG TYPE ' | | 0001B| VIBRATO ' | | 0001B| AMPLITUDE MODULATION '2~ OPPERATOR-----|------|------| ' | | 0006B| TOTAL LEVEL ' | | 0002B| SCALING LEVEL ' | | | ' | | 0004B| DECAY RATE ' | | 0004B| ATTACK RATE ' | | | ' | | 0004B| RELEASE RATE ' | | 0004B| SUBSTAIN LEVEL ' | | | ' | | 0001B| ALGORITHM ' | | 0003B| CONNECTION ' | | | ' | | 0002B| WAVEFORM SELECT ' OTHER BYTES UNUSED | | '------------------------- 'PATTERN | ???? | ????=NUMBER OF VOICES * NUMBER OF PATTERN * 256 -> MAX=65536 '------------------------- '------------------------- 'NEW FILE FORMAT MTRACK NC 00 00 00 00 00 00 0000 00000000 '------------------------- 'INFORMATIONS | 0050 | MTRACK NC (NO CRUNCHED) MUSICNAME (20 CHAR) 00 (NBVOICES%-1) 00 (NBDIGITVOICES%) 00 (NB PATTERN-1) 00 (LENGTH) 00 (NB INSTRUM) 01F3 (RESTART) 00000000 (LENGHT) + CHR(1AH) 'MUSIC NAME | 0020 | 'POSITIONS | 0256 | '------------------------- 'INSTRUMENTS: '------------------------- 'SAMPLENAME | 0020 | SAMPLES TOTAL MAX=16384, 1 SAMPLE=64 BYTES 'DATAS | 0044 | (TOTAL BYTES, 1 INSTRUMENT 'IDENTIFICATION---|------|------| ' | 0001 | 0001 | IDENTIFICATION: THIS BYTE=02 WHEN IT IS USED OR 00 WHEN NOT. '1~ OPPERATOR-----|------|------| ' | | 0004B| MODULATOR FREQUECY MULTIPLE ' | | 0001B| KSR ' | | 0001B| EG TYPE ' | | 0001B| VIBRATO ' | | 0001B| AMPLITUDE MODULATION ' | | | ' | | 0006B| TOTAL LEVEL ' | | 0002B| SCALING LEVEL ' | | | ' | | 0004B| DECAY RATE ' | | 0004B| ATTACK RATE ' | | | ' | | 0004B| RELEASE RATE ' | | 0004B| SUBSTAIN LEVEL ' | | | ' | | 0001B| ALGORITHM ' | | 0003B| CONNECTION ' | | | ' | | 0002B| WAVEFORM SELECT ' | | 0004B| MODULATOR FREQUECY MULTIPLE ' | | 0001B| KSR ' | | 0001B| EG TYPE ' | | 0001B| VIBRATO ' | | 0001B| AMPLITUDE MODULATION '2~ OPPERATOR-----|------|------| ' | | 0006B| TOTAL LEVEL ' | | 0002B| SCALING LEVEL ' | | | ' | | 0004B| DECAY RATE ' | | 0004B| ATTACK RATE ' | | | ' | | 0004B| RELEASE RATE ' | | 0004B| SUBSTAIN LEVEL ' | | | ' | | 0001B| ALGORITHM ' | | 0003B| CONNECTION ' | | | ' | | 0002B| WAVEFORM SELECT ' OTHER BYTES UNUSED | | '------------------------- 'PATTERN | ???? | NB VOICES * NB PATTERN * 256 -> MAX=256 PATTERN 2097152 BYTES '------------------------- Now you can use easilly this new ADLIB player in your demos and create yourself your music. Attention: if you encounter some synchro problem when you do some animation, you can increment or decrement the value of the 'PUBLIC SPEED:WORD' because the interruption is generaly called 70 times per second as your monitor in several screens modes! See you for new quality production from ARKHAM! [PYRO-FYRE]/ARKHAM (Sorry for my bad english.)