💾 Archived View for mirrors.apple2.org.za › archive › apple.cabi.net › Music.and.Sound › GS.MUSIC.RE… captured on 2024-06-16 at 14:07:09.

View Raw

More Information

⬅️ Previous capture (2023-01-29)

-=-=-=-=-=-=-

Imported MODfiles, Noise Tracker GS and SoundSmith 
(A Collective GS Music Report and Review)
                                  
Compiled and Edited 
by Charles Turley, Ph.D.

A FREEWARE - Copyright (c) 1994 by Charles Turley, Ph.D. 

An amazingly user friendly computer for music compositions, enjoyment
and file format versatility, the IIgs has remained useful and popular
with its music users, from it introduction in 1986.  Now that Apple has
discontinued the IIgs' production and the commercial efforts have
diminished to nearly 'ZERO' with the music and sound related software,
it's effectively become a user supported computer.

As such, the IIgs gives both the users and hobbyist programmers,
virtual freedom to develop, research and share their knowledge with
other users, to keep the computer in an active, enjoyable and useful
status, with so many applications, especially music and sound.

Imported MODfiles, Noise Tracker GS and SoundSmith, have continued to
show their popularity and abilities to preform what the IIgs' other
music and MIDI programs can't.  With their continual use and inventive
applications with music compositions, programs and utilities, it's
clear that they still remain popular with the IIgs' music users.

While all of the music and sound programs for the IIgs, have their own
special effects, abilities, limitations and restrictions, both
SoundSmith and Noise Tracker GS have consistently shown their
popularity, expanded potentials, faithful use and continued support by
the music user.

Realizing the IIgs music users need for clear and informative detail,
with technical information concerning these programs, their abilities,
usefulness and relation to Imported Module files, I've composed this
collective report and reviews, with personal notes and general
(updated) information I've obtained, concerning; Noise Tracker GS,
SoundSmith, Imported Module files - (MODfiles), accessory programs and
utilities that compliment and enhance their abilities with each other.

I hope that my personal experience, collectives and knowledge will be
of some useful value towards the understanding of these programs, in
order to stimulate their use, with more creative efforts by their
users.

The IIgs had no useful modification utilities or editors, that could be
used directly with the 'Imported MODfiles' or create them from scratch
and then, allow you to save your music efforts back to the same
'Imported MODfiles' format, until just recently.

That missing aspect with the IIgs, is no longer present.  With the
development efforts underway and nearing completion, with respect to
the rewrite of Noise Tracker GS v2.00, as a GS/OS application program.

Featuring new options such as; converting, editing and saving
multi-format music files to the 'Imported MODfiles' format, in
(Protracker file format) and supporting most major special effects of
the MODfiles, the IIgs and its music users will have the abilities to
make, edit, play and 'EXPORT' MODfiles to all of those other computers.

With the (FIRST) release of Noise Tracker GS v2.00, you'll have the
abilities to create a NATIVE IIgs MODfile from scratch, with your own
score and samples, save it and then load and play it with any of the
IIgs' MOD Players and EXPORT these new NATIVE IIgs MODfiles to any
other computer that can accept and play MODfiles, in the current
(Protracker) MODfile format.

You'll also have the abilities to do the same things that you could do
with the original ProDOS 8 versions of Noise Tracker GS, such as; load,
convert, edit with cut/copy/paste (within the music score and/or to the
clipboard - for multiple merge scores); Noise Tracker GS files, (all
formats), SoundSmith and Imported MODfiles.

The added advantages with NTGS v2.00, will allow you to also save your
altered, merged/enhanced or original compositions and music scores as,
MODfiles, (4 track - Protracker file format, with up to 31 RAM bank
samples, of a maximum size of 128k each) to use, edit, enhance and
play, on the IIgs or export, to the other computers for their use and
enjoyment.

The program will let you save any of the music as NTGS file formats;
module or score/wavebank sets.  But, you can't save them as SoundSmith
music scores and wavebank files.  It has full editing features, with
the new additions of full score cut/copy/paste for; tracks, individual
blocks, individual or multiple positions.

With all the major 'user friendly' editing (SPREED-SHEET STYLE) score
abilities that SoundSmith has to offer, the new NTGS v2.00 program
should certainly give the IIgs music users a lot of enjoyment and
hopefully,  will help this computer gain its respected place within
other computer groups, with the creations of NATIVE MODfiles on the
IIgs for export to those other computers.

I'm currently consumed with beta testing the b8 version and
coordinating its design and development.  It just keeps getting better
and better,  with each new beta I get from Dave Swanson.  It's a great
music program and I'm sure everybody will enjoy this complete rewrite
and major upgrade of Noise Tracker GS.

While everybody waits for the new (FREEWARE) Noise Tracker GS v2.00
release, projected to be around September 21, 1994, I'm presenting
information on other new and useful programs to use with MODfiles,
along with a collective of information on MODfiles and reviews of all
the IIgs' programs that can be used with them, as well as, a few
experimental MODfile; editing and creation, modification and
enhancement suggestions.

PATtern CHanger (PATCH), by Tony Morales, is a ShareWare utility basic
program, which allows you to perform various actions on Amiga MOD
pattern data structures.  Pattern data structures are simply
collections of notes, (sometimes called blocks), that when combined
together, produce a musical sequence.

PATCH takes any Amiga MODfile, and allows you to adjust all notes in
the sequence.  PATCH allows you to increment or decrement each note. 
This may sound like nothing special.  But, giving PATCH the correct
parameters, you can often produce pleasant sounding alternatives with
MODfiles.

There are 12 basic notes in each musical octave, (C, C#, D, D#, E, F,
F#, G, G#, A,  A#,B).  If you hear a song in the key of G, this means
it's playing  with note offsets relative to the note G.  Example given,
(G, B, D).  It's possible to play a piece of music in a different key,
such as C.  This is the equivalent of the above example, played in the
key of C, (C, E, G).

Think how many possible notes occur between each corresponding note in
the examples.  Three notes between G and B, and three notes between C
and E.  Two notes between B and D, [go up an octave] and two notes
between E and G.

PATCH takes each note in a MODfile and slides it up or down as many
notes as you desire.  To play in a different key, slide each note up or
down x many notes, where x is the number of notes, (up or down the
scale), it takes to reach the new key.  If you're confused, consult a
person, who knows music for more details.

Always make a backup copy of your MODfiles before altering them with
PATCH.  If you make some alterations that don't sound good, you won't
harm the original MODfile. PATCH's unique modification features follow.

You're prompted to type in the pathname of the MODfile you're going to
use.  If the MODfile's in a different directory or folder, than the one
you ran PATCH from, you'll need to type in the complete pathname,
(/RAM5/MOD.xxx, for example).

PATCH then displays the MODfile title, type and number of patterns,
with the number of the first and last pattern in the MODfile.

Next, you're asked for the start and end patterns to work on.  If
entering the same values as displayed, PATCH will convert the entire
MODfile.  You can't enter an ending pattern less than the starting
pattern and vice versa.  Nor can you enter a negative pattern.

MODfiles (that the IIgs can currently deal with), have 4 basic tracks
to play notes on.  PATCH prompts you if it should operate on a
particular track.  Type in Y for yes, N for no, at each of the track
prompts, (1 thru 4).  PATCH then asks you if it should increment or
decrement the specified notes.  Type I or D, at this prompt.

The last option will ask the offset to adjust the notes.  There's no
way of knowing, other than by listening, which key a particular MODfile
was designed in.  The best way, is to explore or experiment with
various values.  Values of 1 or 2 usually raise, or lower, MODfiles by
1 whole note.

When you've entered the value, the conversion process begins.  PATCH
informs you with each pattern it's converting.  Most MODfiles only
support 3 octaves. So, most likely a note, when adjusted, will fall
outside the allowable octave range.  If this occurs, PATCH won't touch
the note, leaving it the way it was.  This results in a pattern that is
partially converted.

PATCH alerts you and gives you the options to; save the pattern or not
save it.  If you select no, the pattern remains unconverted.  All good
patterns are written automatically to disk over the original MODfile. 
That's why I suggest you backup the MODfile before you alter it. 
Chances are that your first session with PATCH won't produce a
masterpiece.  It's possible to do some nice things with MODfiles using
PATCH.  But, like everything new that you try, it takes practice to
make it right.

TRACk ediTOR is another very useful MODfile utility basic program by
Tony Morales and it's a copyrighted FreeWare. TRACk ediTOR, (TRACTOR)
lets you rearrange the tracks in any MODfile.  Each MODfile has 4
tracks, and TRACTOR prompts you to specify 2 track numbers, then flips
those corresponding tracks around.

It requires a IIgs to run, and works fine under any memory
configuration. It operates on any valid pattern or range of patterns,
in the MODfile.  When tracks are flipped the instruments on each track
plays from opposite channels.  The following table shows which tracks
use which channels.

Note: (Virtually all '4 Track MODfiles' use this channel configuration).
      
Track        Channel
1            Right
2            Left
3            Left
4            Right
                                      
It's certainly a user friendly program.  Launch it, from any application
that's capable of running Applesoft ProDOS BASIC programs.  The file
TRACTOR.BIN, must reside in the same folder as, "TRACTOR."

The program prompts you to type in the pathname for the MODfile you'd
like to work with.  Keep in mind, if the MODfile resides in a different
directory, you'll need to type in the complete pathname.

It then displays the MOD's title, type, and number of patterns.  As
previously mentioned, patterns are blocks of notes.  It shows you the
number of the first and last pattern in the MODfile.

First, you're asked to define the range of patterns it should be
constrained to when swapping tracks.  If you enter the same values as
displayed, it swaps tracks with the entire MODfile.

You can't enter an ending pattern less than the starting pattern, nor a
starting pattern greater than the ending pattern and you can't enter a
negative pattern.

You're next prompted to enter the number of the first track in the pair
of tracks to swap.  Enter a number between 1 and 4.  You're then
prompted for the second track in the pair.  This can't be the same as
the first track you selected.

After you've entered all of this information, the swapping will begin. 
It will inform you of each pattern it's currently swapping.  The
pattern is saved to disk as soon as it's swapped.

Tony Morales, is the first person to have created MODfiles, better
stated  'NATIVE IIGS MODfiles' (ProTracker file format), entirely on
the IIgs, using his own digitized samples, with his own manual and
original score/sequence efforts, then assembling them by hand.  This
gives him the status of being the originator and inventor of 'Native
IIgs MODfiles'.

A two part article written by Tony, featuring his process in
'STEP-BY-STEP' detail, is presented in 'II Alive' Magazine, with the
first part in the current issue and the second to be presented in the
next issue. Tony could best be described as: 'THE NEW IIGS MASTER OF
MODFILES'.

I'm sure Tony plans to make many more, MODfile modification,
manipulation, enhancement and file conversion programs, to release them
for the IIgs users to enjoy.

His assistance with techniques and information have been a valued
asset, with our development of Noise Tracker GS v2.00.

He has developed a vast knowledge and profound understanding of the
Noise Tracker GS files, MODfiles and their related players, programs
and utilities.  He's sincerely commited to the IIgs and the needs of
its many faithful users.

All he needs, is a little encouragement and support from you, to
stimulate him into creating some amazing, user friendly and very useful
programming 'WORKS OF ART' for the IIgs.

You can write or EMAIL Tony at the following addresses:       
Tony Morales 
2260 Rock St, Apt K 
Mountain View, CA  94043

GEnie: T.MORALES
Internet: hexman@netcom.com

---------------------------------------------------------------------------

I've been fasinated and involved with sound and music for many years.  I
bought my first IIgs 01 ROM computer, in 1986.  Because, I found it
very useful for my sound and music efforts.  I've been working with
sound design and engineering efforts for 26 years now. I still enjoy
using the IIgs, over either the MAC or PC.

As time progressed over the years, I've used all of the IIgs music
programs.  The IIgs is unique, with its built-in Ensoniq DOC.  But, I
found the limitations of 64k RAM samples with the music composition and
the lack of music program special effects frustrating.  Compared to
some of the other computers and what they had to offer, with sound and
music, I was seriously considering another computer.

Al Switzer, the same friend who first introduced me to the IIgs back in
1986, also introduced me to Noise Tracker GS via: beta v0.30 release. 
As soon as I listened to the music it presented, I knew the limitations
with all the other music programs, was no longer of any concern to me.

Noise Tracker GS, with its ability to use both the RAM based sound bank
and the 64k Ensoniq RAM bank, for sample sound presentations, via
swap/caching, limited only by the amount of RAM memory available,
opened up an entirely new series of creative and expressive music
composition options with the IIgs.

With each updated release of Noise Tracker GS, the abilities of the
program expanded the IIgs' music formats and composition options. 
Version 0.70 presented the NT module format and support, along with
refined options for loading SoundSmith GS music and importing music
modules originally created on the Amiga's, Atari ST's and more recently
MAC's and PC computers.

The abilities of Noise Tracker GS fascinated me.  I began spending all
of my spare time studying the program and what it could present with
music compositions.  I was eager to attempt some Virtual (3-D) Audio
compositions and needed to use both right and left channels together,
for such efforts.

I was able to do this, using the RAM based sound bank.  But, when
attempting the same with the Ensoniq RAM bank, problems resulted. The
program often would lock up or crash, with such dual (Right-Left
channel) Ensonic RAM sample assignments.

With the release of version 1.0, these problems with assigning both
right and left channels to a sample in the Ensoniq RAM bank were
eliminated.  Version 1.0 allowed me to do this fine with either or both
RAM banks and all of their samples.

I was eager to see additional functions, improvements and enhancements
with updates to the program.  After waiting for over a year for an
update and finding none available, I decided to write to the author,
Olivier Goguel, to ask him when an update to Noise Tracker GS would be
released.

I mailed Olivier a package with many of my Virtual (3-D) Audio music
compositions and thanked him for his efforts, in developing such a
fantastic music program for the IIgs.  I enclosed $20 as a contribution
and requested any updates he had for release of Noise Tracker GS.  I
also enclosed a list of improvements and enhancements, I thought would
be useful with updates to the program, for his review and comments.

I received a reply from him a few weeks later, expressing that he was
sorry to inform me that v1.0 was his final release for Noise Tracker
GS, because the FTA was dead, 'FEU' in french and he had no plans to do
any more with the program.  He expressed how much he liked the music I
sent him, thanked me for the $20 contribution and told me that my
wishes for an update to Noise Tracker GS from him, would not be
available.

Most Noise Tracker GS users assume that the program was an FTA creation
and release. Actually, Olivier Goguel was the programmer and author
entirely, for the program.  He conceived it, developed it, coded it and
released it with music, animation, icons and graphic routine
contributions from his friends and past members of the FTA, as a final
tribute to the memory of the FTA.

If you'll carefully check the v1.0 of Noise Tracker GS, you'll note
that it saves sound files noted as v0.60, which is actually what Noise
Tracker GS v1.0 was developed from.

When I pointed this out to Olivier in one of our many lengthy
international telephone conversations and asked him about it, he
explained that it was indeed, developed from that unreleased beta
version and he simply forgot to change the reference to v0.60 in the
dialog.  We discussed the possibility of upgrades for Noise Tracker GS
in many of our telephone conversations.

I wrote to Olivier again, expressing how much this computer needed the
continuation with the upgrade and development of Noise Tracker GS,
asking him if I could continue with such efforts.  With his reply by
mail, came the entire SRC.CODES for Noise Tracker GS v1.0 with the
rights, to continue with development and upgrades for it.

I continued to keep in close contact with Olivier by phone and mail. 
We developed a friendship and co-founded the One World Software Wizards
development team in June of 1992.

I was given the rights and SRC.CODES by Olivier for many of his
authored programs, music, demos, routines, (both released and
unreleased - finished and unfinished) to continue with their upgrades
and development efforts for the 1WSW team and thru my own OmniSoft
Research LAB (OSRL), for release on the IIgs.

With Noise Tracker GS as the top priority development effort,the first
basic improvements to Noise Tracker GS resulted, when I furnished the
SRC.CODES to our (now past) 1WSW team associate, Ken for his assistance
with upgrade efforts.

With Ken furnishing the SRC.CODES, Ian Schmidt and James Brookes made
several modifications, patches and basic improvements with it, by
enhancing the sound abilities, filtering efforts, improving its
abilities to load more imported module formats and faster swap
routines.

After reviewing the first upgrade of Noise Tracker GS with Olivier, we
expressed  concern with several problems the upgrade presented.  We
both felt, while there had been some basic improvements with enhancing
the sound abilities, filtering efforts added, improving its abilities
to load more imported module formats and faster swap routines, this was
a very hasty and unprofessional effort, having several problems that
required prompt action to correct. It was all done in a little over 24
hours, uploaded to the major on-line services and released for
downloads, without my knowledge, review or premission.

We expressed displeasure at having the copyright to the program,
improperly replaced with 2 Meg Music and Ian Schmidts claim to
copyright of Noise Tracker GS.  I assured Olivier, that I would take
the matter up with Ian, A.S.A.P. and make certain these things that
displeased both of us were promptly corrected.

Taking the appropriate actions, I discussed the matters with Ian at
length and had this unauthorized version removed from the major on-line
services from any further down-loads or distribution.

With the release of version 1.20, we eliminated some problems that
resulted with saving and reloading samples from the Ensoniq RAM bank,
along with various other minor sound improvements and proper dialog
changes, with respect to certain LAME comments in the saved samples and
the correct copyright status of Noise Tracker GS to 1WSW and OSRL.

When Dave Swanson joined our 1WSW team, he updated Noise Tracker GS to
v1.30, our holiday release in December of 1993, giving it additional
sound enhancements, filter refinements and faster sound swap
improvements, repaired its abilities to correctly save and reload sound
samples from both RAM based banks and Ensoniq RAM banks, as either RAW
Binary or IFF sound files,  plus some additional dialog changes.

Noise Tracker GS has been a well received, favored music program and a
blessing for this computers music composition abilities.  It's gone
through many changes, with a few trials and tribulations along the way.

It's transcended from its very first conceptual alpha state, as a small
binary file named NoiseBlaster II v0.1, when it was nothing more than a
simple RAM bank sound/sample loader-player and preview utility from
Olivier Goguel, (featured in a past VAMPS/NTV release), thru its Noise
Tracker GS beta versions; 0.30, 0.50 and 0.70, on up to its most
current upgraded ProDOS 8 release v1.40, with many major internal auto-
functional modes and improvements by our 1WSW 'Master Programmer', Dave
Swanson.

You could say it's gone through its; Alpha, Beta, Delta and Gamma
states, now progressing on toward its ultimate 'Omega Factor'
capabilities, with continual upgrade efforts from our 1WSW team
members, to improve it to the fullest abilities.

Now it's under restricted beta testing, as a complete rewrite by Dave
Swanson.  It's now a GS/OS application program, in the final stages of
development as an (ALL-NEW),  Noise Tracker GS v2.00.

Tony Morales, has developed the NT MOD Player GS/OS application program
for loading and playing the NT music module format, from any storage
device, having included the functionality of tool 220 in the program,
thus eliminating the necessity of tool 220.  This program gives you the
ability to load and play the NT Module file format via your GS/OS
v6.0.1, from the finder, via either your hard drive, 3.5 disk or
whatever other device you use to launch GS/OS applications from.

Dave Swanson is working on the next (pending) release of Noise Tracker
GS v2.00, with many more amazing enhancement and improvement efforts,
along with the assistance of many of our other team members, IIgs
associates and friends.

It has little, if resemblance to the P8 versions of Noise Tracker GS. 
It has so many new features and improvements, you'll be astounded with
its abilities.

With its release (COMING SOON !) and continual upgrades, you'll be able
to; import MODS and convert them to both of Noise Tracker GS' file
formats, using all of their major special effects and vice versa,
compose, edit and save your own original MODfiles from scratch.  Import
SoundSmith music and wavebanks or instrument files, any of the current
NT music file formats, save them all and/or create and convert, modify,
manipulate, combine and enhance them with ease, to your own
specifications.

Then, you can save them as a MODfile (IN THE PROTRACKER FILE FORMAT),
with all of the major special effects that MODfiles have, for use with
any of the IIgs' MOD players or you can port them over to the other
computers for their enjoyment by; Amiga, Atari ST, MAC and PC users.

The new (FREEWARE) GS/OS application program, rewrite and release of
Noise Tracker GS v2.00, will not convert and save any of the music
formats to SoundSmith music formats.  That ability already exist with
the MODCONVERT and MODIFIER programs for the MODfiles.

It won't have MIDI support either.  Several IIgs MIDI music programs
and pending file format converters for them, with the SoundSmith
program and its MIDI abilities, will cover any such needs.  The
SoundSmith MIDI music can be imported into the new Noise Tracker GS
v2.00, for additional enhancements and conversion efforts.

Nor will it have any intro-music, SHR graphic intro-screen, whistles,
bells, dazzle graphic players, screen savers, alarm clocks, jukebox
options or the like.  It's being presented and released as a serious
multi-music format editor, converter, 'user friendly' expressive music
sequencer and GS/OS application program, with full featured MODfile
creation, edit and save abilities.

There will be no upgrades from our 1WSW team, for the P8 Noise Tracker
GS program. However, the new GS/OS rewrite of NTGS, will support,
import and export, allowing you to convert all of the ProDOS NTGS music
files.

Soon, you'll all have the abilities to create, convert, edit, enhance,
alter and modify MODfiles to your own individual specifications and
desires, with GS/OS user friendly ease and do it with Noise Tracker GS
v2.00 on your own wonderful IIgs music machine.

I'm deligently coordinating its beta testing and development, every day
and having a blast creating, editing, saving and playing native IIgs
and anhanced original Imported MODfiles, via; ShellPlay, sonicTracker
and MODZap.

Within a few weeks, you too can do the same (using the popular
PROTRACKER file format) and dazzle all those other computer users with
your own impressive 'NATIVE IIGS EXPORTED MODFILE' creations and
musical works of art.

I just finished an international telephone conversation with Olivier
Goguel, in FRANCE, informing him of the (ALL-NEW) Noise Tracker GS
v2.00.  We discussed many things about it and he's looking forward to
my sending him the program, so he can warm up his 'friendly old IIgs'
and check it out.  He was very happy to hear about all the new NTGS
rewrite has to offer.

Noise Tracker GS lives on, and will continue to push the IIgs to its
maximum musical abilities, with each future upgrade and release.

About MODCONVERT v1.2 - (FREEWARE)

This program consist of two files; a basic file (MODCONVERT) and a
binary file (MODCONVERT.BIN).  They must remain together in the
folder/directory they were copied to in order for the program to work. 
The program was originally written by our (now past) 1WSW team member
Alex, from Germany and given to me to improve, upgrade and distribute
as a FREEWARE.

The program will convert any MOD music file, from any computer; MAC,
AMIGA, IBM or ATARI ST, to a SoundSmith GS or SSP music file.  You must
make sure that the MOD file is a binary file (BIN).   If it's not, the
program will not recognize it or attempt to do a conversion.   If it's
not a binary file, then you should change the MOD file to a binary
file, (BIN - file type 06), before you attempt to do any converting
with this program.  You can use any file type changer utility to do
this.

I've found, in using this program, that it has many limitations with
both; quality and construction of the samples/instrument files that it
saves with the converted music file.  Thus, I use Noise Tracker GS to
load the MOD file, then I save the instruments via Noise Tracker GS as
'IIF' files, for use with the converted SoundSmith music file.

I usually don't select the option to convert both the music and the
instruments of a MOD file, for this reason.   When you do use this
mode, the program saves the instruments files with default names; INST1
- INST15 and so on, as raw binary file types.

The older versions of MODCONVERT, wouldn't handle any MODfiles that
were too large or that had too many instruments or tracks to convert. 
The older versions of the program would simply lock-up or break into
the basic line where the error was.  This version was updated to allow
you the option to ' DO IT ANYWAY ', without such problems occurring.

KEEP IN MIND THAT WHEN YOU: ' DO IT ANYWAY ' YOU'll MOST LIKELY,  GET
SOME BIZARRE SOUNDS WHEN SAVING THE INSTRUMENTS.  SO DO WHAT I
SUGGESTED AND LOAD THE MODULE FILE VIA NTGS, THEN SAVE THE
SAMPLES/INSTRUMENTS AS IFF.  BE SURE TO USE THE DEFAULT NAMES; INST1 -
INST15, ETC. SO THAT THE SAVED IFF INSTRUMENTS -  SAMPLE/SOUND FILES
CAN THEN BE CONVENIENTLY LOADED BY SS OR SSP, TO MATCH THE CORRECT
INSTRUMENTS NEEDED FOR THE MUSIC SCORE.

The only advantage I can see currently, to converting an imported
module to the SoundSmith GS or SSP music format is to be able to
manipulate, enhance and modify the music score, to save that file, then
import it to NTGS for additional changes, enhancements, modifications,
etc.

With the release of the new GS/OS application program (FREEWARE), Noise
Tracker GS v2.00 and its continual upgrades, having implemented the
special editing functions of SoundSmith, i.e.; track, block, individual
position, volume fade-in and fade-out, etc., the logic to such
conversions will become antiquated !

You can also use the most current release of MODZap (v00.90b3) to save
MOD sounds, as raw data sound binary files, (KEEP IN MIND, THAT MODZAP
CAN'T CURRENTLY SAVE A LOOP SAMPLE, AS A LOOP SAMPLE) then convert them
to IFF files, modifying, cut & paste EDIT functions and a vast host of
other special effects, using such programs as; AudioZAP, SSS Sound
Editor (SE.SYSTEM), NTGS v1.40, Noise Tracker GS v2.00, Sound Ace,
Sound Edit (USE), DigitalSessions, Sound Shop, etc.

The MODCONVERT basic program is slow and works best if copied to RAM
disk.  You can make the conversion process fast and simple by copying
the MOD files and the program files to RAM, with ProDOS and the
Basic.system file, then run the program and save the converted music
and/or instruments to RAM also.

You can also copy and use MODCONVERT on your hard-drive.  After you've
done your conversion,  you can copy the converted files to where you
want them, load them into SoundSmith GS or SSP and make the
modifications, etc. to the music score, rearrange or substitute the
instruments, etc., to make your own customized version of the original
MOD music file, as a new SoundSmith GS or SSP music and instruments
wavebank set, then save them, via SoundSmith GS  or SSP to the disk or
device of your choice.

I'm sure those of you that enjoy using the SoundSmith GS or SSP program
will be glad   1WSW has updated and released this MODCONVERT P8 basic
program.  You'll enjoy using it and if you do any conversions with it
and SoundSmith GS or SSP compositions, I'd like for you to send them
out for down-loads, to other IIgs music users to listen to and enjoy. 
If you can't, send them to me and I will !

It's still far from perfect in many respects, but it's a FREEWARE and
it's the only program I know of that will allow you to convert MODfiles
to SoundSmith GS music files from P8 basic.

I received a beta of MODCONVERT II in April, from Alex, which is a P8
system file.  It has problems when saving the samples and converting
the music score from an imported MODfile.  But, it looks like it will
be a useful program, when the final version is perfected and released.

Alex also expressed in his letter with the beta, that his Ninja Force
group have several unique music programs and utilities, that will work
with Noise Tracker GS, SoundSmith and imported  MODfiles for the IIgs,
under development for release soon.

The Ninja Force group from Germany are a very talented team of
programmers that are devoted to the IIgs and its many users and should
prove to contribute many worthy wares for the IIgs users needs.

The 'Compact' option found in the AudioZAP Sound Editor, can reduce the
size of the 'IIF' files, to about 1/2 their original size.  Then you
can save the sound files for use with SoundSmith GS or SSP GS in the SS
file type/format.

This would effectively, allow you to load and include more complex
sample/sounds and still remain within the 64k maximum, for the total of
15 instrument limitations, with SoundSmith.

The FREEWARE program, Modifier by Ian Schmidt, is a GS/OS application
program for converting the imported MODfile score and sounds or
instruments/samples.  It saves the music score and instruments as files
that SS or SSP can load and use.  Modifier has its limitations also. 
It saves the score and all samples, without regard for the (64k) limits
the Ensoniq RAM places on the amount of samples possible, which total
15.  MODifier makes no effort to insure that the instruments fit into
64k of DOCRAM, nor does it 'synthesize' effects SoundSmith doesn't
support.

It converts many module effects into SoundSmith equivalents.  MODifier
can't  coherently convert all MOD music scores, as there are thousands
of MODs and at least 19 programs on the Amiga which use some variant of
the module format.

MODifier primarily supports ProTracker, NoiseTracker, and StarTrekker modules.
Some programs such as DeliTracker use a completely incompatible format so
don't even attempt to convert DeliTracker MODs, MED MODS, OKTAMODS, OKTA-MED
MODS and other like varieties.  None of these Imported MODfile formats can be used with the IIgs currently and most like won't be of any use for any IIgs program support for a long time to come, 'IF EVER'.

MODifier has detailed, ample documentation to assist you with using it
proficiently, to its maximum abilities.

SuperSound PRO is a program developed and released by 1WSW, during
1992-93, (that is a generic FREEWARE clone of SoundSmith GS) when
Huibert Aalbers was a 1WSW team member.

Several bugs and problems were found with the SHAREWARE and final
v1.0.1 release of SoundSmith GS.  In a conversation I had with Huibert
Aalbers, (the author of SoundSmith GS) he informed me that he
accidently destroyed some 37 lines of the SRC. CODE for SoundSmith GS
v1.0.1, and was attempting to reconstruct them, to send me, so that our
One World Software Wizards team could develop the SuperSoundPro music
program, with continual upgrades and release it as FREEWARE.

Our 1WSW team worked on it to correct some of the problems, as best we
could and released it in 1993 as a FREEWARE: SSP DEMO, with Huiberts
blessings and full consent.

Huibert has given up on any more efforts with the IIgs, moved to Canada
and from what he related in our last conversation, is now devoting all
of his efforts to developing a MAC version of SoundSmith.  Thus, both
SoundSmith GS and the SSP programs are at their FINAL states of
development.  No more work is planned for either of them !

If you have the need, skills and patients to convert your MODfiles
collection to SoundSmith music files, you'll have a lot of creative
media to work with and can do some impressive SoundSmith GS music
compositions for additional use as imports for NTGS.

The following information concerning: SoundSmith GS and the
SuperSoundPRO GS DEMO is an update and excerpt from the SuperSoundPRO
GS (SSP) DEMO Reference Manual.  This information is a concise review
for the SuperSoundPro.GS (SSP) DEMO.  It is also  equally applicable to
both SoundSmith GS v1.0 and v1.0.1.

Please note: Updates to SuperSoundPRO or SoundSmith GS have been
abandoned.

About: SuperSoundPro.GS (SSP) DEMO

First you should know that the program is not public domain and is
FREEWARE.  It's constructed SRC.CODES are available to any sincere and
talented programmer for the asking, if they wish to do any rewrites or
upgrades.

SuperSoundPro is a functional and combined upgrade of SoundSmith GS
v1.0 and v1.0.1.

The name SuperSoundPro was suggested to me in a conversation back in
1992, I had with Earl Childers, Pres. of Seven Hills Software.  They
were hoping to be able to develop SoundSmith GS to a commercial version
and release it.  But, many problems resulted and the project was
canceled.

A beta version of SoundSmith GS v1.0, the (never released) commercial
program by Seven Hills and ESP, was uploaded (without any
authorization) to Internet and many BBS' around the world, which
created many problems, bad feelings and destroyed any further
development efforts from Seven Hills and the European Software
Partners, (ESP).

Next the SHAREWARE v1.0.1 of SoundSmith GS, released by Huibert Aalbers
arrived, on-line as an alternative and hopeful solution to the
abandoned SoundSmith GS v1.0 project.

Realizing that SoundSmith v1.0.1 had some major bugs and limitations
with MIDI functions and several other problems, our 1WSW team, (with
the assistance, knowledge and blessings of our past team member Huibert
Aalbers) decided to release this FREEWARE for all of you to use and
enjoy, while we were (then beginning) to work on a project, for a major
commercial upgrade of SoundSmith GS v2.0.

As a result of many additional complications, SoundSmith GS v2.0 has
been abandoned, as have any future efforts with any more upgrades to
SoundSmith GS.

If any of you have sent Huibert a shareware fee for SoundSmith v1.0.1
and you feel that the program didn't meet up to your expectations,
please contact the 1WSW team Executive Coordinator to rectify your
discontent, to the best abilities possible.

SuperSoundPro.GS (SSP) is a (FREEWARE release) and full function Apple
IIgs GS/OS application program, that's relevant and functional in all
respects, with SoundSmith GS, using MIDISYNTH (tool 35), designed to
create both; regular and 3-D enhanced stereo music with ease on your
IIgs.

A unique FREEWARE NDA, was also included with its release.  This is a
full function, SL player/recorder new desk accessory (NDA), that allows
you to; play/modify/record and save synthLAB v1.1 music, from within
the SSP program.

You even have the ability (with an Apple MIDI interface and the proper
GS/OS MIDI setup, I/O port setups and the appropriate MIDI instruments,
keyboard or synthesizers) to port the synthLAB music into the SSP.GS
program, via MIDI file to enhance it, as you wish, save it and use it
the way you decide to use it.

These options, should open up a new creative door to all Apple IIgs
MIDI composers and music devotees.  The program was released at Apple
Expo West and to Internet in April of 1993.

The SSP program is 100% compatible with all previous SoundSmith GS
music, with the exception and excluding the first 'ANTICS' SoundSmith
release, which saved the music score files as a P8 system file.

If anybody still has music made with the first 'ANTICS' version, (CRUDE
AND LIMITED AS THEY WERE) if you so wish, you can simply use any file
type changer program and change the music P8 system file to the current
SoundSmith GS file type.

It should then load and function properly, via any current SoundSmith
GS versions 0.94 thru 1.0.1 or the SSP DEMO program.  The sound/sample
wavebank file was a binary file and you don't need to convert it.

However, keep it in mind, that neither SoundSmith or SSP can directly
load and use the GS wavebank file format generated and saved by the SS
or SSP programs, with its score.  You can conviently, load and/or
import the SS or SSP  GS wavebank file, via either AudioZAP or Noise
Tracker GS, extract the individual samples, save each as IFF file
formats, then you can load the SS/SSP music score and the SS/SSP
programs will automatically load the correct samples for the score.

The SSP DEMO (FREEWARE) release, is an improved enhancement of the
(OFFICIALLY) unreleased SoundSmith GS v1.0 and has somewhat better MIDI
compatibility support and sync. functions, than the SHAREWARE release
v1.0.1 of SoundSmith GS, having combined some improved aspects of each.

About SuperSoundPro GS  DEMO Instruments:

The instruments (sounds/samples) used by SuperSoundPro GS DEMO, must be
standard ASIF, Polysons or (NT instrument/sample/sound (IFF) files)
which can be import constructed and saved with either NoiseTracker GS,
any of the SSS Sound Editor versions or any of the many other Sound
Editors that save IFF/AIFF samples or SoundSmith file format sound
samples.  As mentioned above, you can also extract and save the sample
files via AudioZAP, from the SS/SSP wave bank file.

SS/SSP instruments/sounds/samples are available from a multitude of
sources or they can be designed, converted and saved via;  the Sound
Editors, which are included with many other exceptional SSP compliment
programs, utilities and music/sample data disks, in the response and
reply kit, you'll receive promptly, when you send your request with
disks for them, with return postage.  The special conversion program
update of MODCONVERT, to directly convert Amiga Music Modules to SSP or
SS music will be included also.

About Launching:

Insert the SuperSoundPRO GS DEMO. MUSIC LAUNCH/BOOT disk in disk drive
1.  Point and click your mouse on the SSP.GS, to launch it from your
GS/OS Turbo mini- Launcher.  For those of you with limited RAM memory
in your Apple IIgs, we have included a FREEWARE mini-launcher: TURBO
LAUNCHER - (START), donated for update, by Seven Hills Software.

If you need to use this fast load mini-launcher to conserve RAM memory,
you can select the TURBO LAUNCH  (START) application program, via your
favorite file copy utility and replace the finder application program 
or your start program with it.

You can then use this 'START' application (mini-launcher) program to
select and launch SuperSoundPRO GS DEMO (SSP), any other P16, GS/OS
application program or P8 system program.   When SSP is launched, the
TITLE.SCREEN appears, the 3-D Stereo INTRO.MUSIC plays and then the
programs GS/OS desktop appears with one open window.

About the Windows, Menu and Options:

Instruments Window:

This window is for a list of loaded instruments (sounds/samples) used
with the SS/SSP music or songs you load.  There are 4 buttons in this
window for your use to: load, remove/delete instruments and save SSP
music wavebank files (not music files).

It's possible (currently) to load only up to 15 instruments for use
with SS/SSP music.  We are working on a duel RAM bank, with unlimited
multiple samples/sounds, like NoiseTracker GS uses.  We hope to have
this included in the next release of SSP.  Just when this will be
released, (if ever)  will depend on you  'the user'.  If you want
updates and improvements for the SSP DEMO program, you'll have to write
and tell us what updates and improvements you want !

You can see how much memory is available by viewing the size of the
largest free block at the bottom of the window.  This value doesn't
however, always represent the size of the largest loadable instrument,
as the IIgs handles DOC Memory in a unique and special way.   We can't
explain how everything works in the IIgs DOC memory in this SSP.GS
reference manual.

You can find more information in your Apple IIgs Hardware Reference
Manual.  Using the DOC Memory option from the SSP.GS DEMO  'Information
menu', lets you see a map of the ENSONIQ DOC Memory.

When an instrument has been loaded, two other windows become active. 
The first one gives you information about the instrument selected in
the instrument list.  You'll find the fully functional and compatible
MIDI parameters. The keyboard window allows you to hear the selected
instrument and also see the note played in the top right part of the
screen.  Playing on the keyboard while the music is running with MIDI,
will record the notes.

The Open Music option of the File Menu allows you to load music.  After
loading the instruments and the music, a new window will appear. This
window should look familiar to everyone who ever used; Appleworks GS
spreadsheets, the older versions of SoundSmith and other programs that
use this layout for: Cut/Copy/Paste functions of data.

You can edit the music by selecting any zone (clicking the mouse on the
block number selects the whole block, on a line number selects the line
(single note position), on a track number (selects the track), using
the; Cut, Paste, Copy and Clear commands.

The selected zone can be extended by holding the Shift key down while
pressing the mouse button.  When a single case is highlighted, you can
move around by using the arrow keys. These commands are identical to
the ones used by AppleWorks GS, SoundSmith GS and many other programs,
to make them easy to learn and user friendly.

To enter a new note, you can enter the values in the three editable
boxes on the music window (a single case must be selected) and pressing
RETURN or you may use the keyboard shortcuts;

To change the Octave press 1-7 on the numeric keypad.
To change the instrument press 1-F on the main keyboard.
To enter a note using the current instrument, effect and octave press:
G for C , Y for C#
H for D , U for D#
J for E
K for F , O for F#
L for G , P for G#
;  for A , [ for A#
'  for B

The effects are composed by an effect number and an effect value. They
modify the way a note is played (except the set tempo effect which
modifies the tempo for all the following notes).

The following effects are defined;

Effect: 0 = Arpeggio              Value: 0 = no Arpeggio
                                  nm = Increment1=n, Increment2=m
             3 = Set Volume       nm = New Volume (0-$FF)
             5 = Decrease Volume  nm = Volume to subtract from:                                                                        (Instrument Volume)
             6 = Increase Volume  nm = Volume to add to: (Instrument Volume)
             F = Set Tempo        nm = New tempo

You can now start to compose by using the New Music File option from the
File menu.  Before you start to compose new music you need to know the
way SSP plays the music.  You can use up to 14 tracks (0-13)
simultaneously, and you can use any instrument sample/sound in any
track.  But, you can only play one instrument at a time in one track. 
We'll show you how this works with an example:

                                              Track 00
                                  00.    C#3      1000
                                  01.    E3       2000
                                  02.    ---      0000
                                  03.    C#3      1000
                                  04.    STP      0000

SSP DEMO will first play line 00. This means that it will play a C#3
note using the first sample. Then it will play line 01. To do this, it
will first stop to play the C#3 note and then play the E3 note, using
the second sample. This means that if the first sample is long, you
won't hear it completely.

If you want to continue to play a note, you must do what we did on line
02.  You can repeat this many times, if your sample is very long.  The
instrument will continue to be played until the end of the wave is
reached or a new note is played.  If you want to stop a note without
playing another one, you must enter a STP command instead of a note
(line 04).

SSP DEMO gives you total control over the stereo and 3-D (dimensional
sound scape) enhancement effects.  There are two different ways to
select on which channel, a note will be played. The first one is used
by all the IIgs music programs.  Each one of the instruments has a
stereo parameter that indicates, on which channel it will be played.

To use this method you must select (for each instrument) in the
(Instrument data Window), the stereo channel (Right or Left - R, L) 
that you want to assign to that particular instrument. Then, you must
go to the Tracks option from the Information menu and click on the (Use
Instrument data) button.

The other way to use stereo is powerful and more impressive.  You
assign a stereo channel to each track. This means that an instrument
will play on the right or left channel depending on which track it is
played on.

This is a very interesting and creative option.  Because, it allows you
to create incredible 3-D Stereo sound effects. This option is activated
by clicking on the: (Use Channel/Track data) button on the: Tracks
dialog box.

This is the same basic Channel/Track data format used by almost all of
the 'Imported MODfiles', using their four tracks.  SSP, allows you to
do this with up to 14 tracks, for some vivid 3-D sound scape
dimensional and localization points, sweeps, etc.

The Music option from the Information menu allows you to set some
important parameters like the length of the music, the tempo, etc.  The
length of the music is given in number of blocks. If the music is for
example four blocks long, you must tell the program which four blocks
to play. This is necessary because you may want to repeat some blocks.

You can play blocks 0,1,2 and 3 or 0,1,0,1 or 2,4,6,8, etc.  Imagine
that you want to play the following sequence: 0,1,2,2.  Set position to
0 and then block number to 0. Then set position to 1 and block number
to 1. Repeat the same steps for positions 2 and 3, setting the block
number to 2.  On the Music data dialog box there is also a check
button.  If you click on it, the entire music score will loop (or play
from start to end - over and over again).

The Preferences option from the Information menu, lets you set some
more important parameters.  The volume scroll bar sets the main volume
(this is the same value that you set on the control panel). The
Keyboard translation scroll bar is used to set the keyboard octave (if
the keyboard translation is 2, the first note of the keyboard will be
C2).

The sound file format buttons allow you to select the type of file that
will be used when saving a sound file (not a music file !). When the
sound file format is set to Music Studio, SuperSoundPro GS will save
two files, a wavebank and a sound file.

These files can be loaded by Music Studio. If you're wondering why
Music Studio is an option on SuperSoundPro GS, some IIgs users still
enjoy using Music Studio.  This allows you to use new instruments with
the Music Studio program.

The SuperSoundPro GS (SSP GS) binary file has the following structure:
                      Number of instruments: 2bytes
                      DOC Memory: 64K
                      Instrument Definition: 92bytes*Number of instruments

The Play options from the Play menu doesn't need to be explained.  When
using the Graphic Player option you'll see that you can move a cursor
that looks like an electric guitar.  Use it to select the active tracks
and the ones that are displayed on the screen.

Since no more than four tracks can be displayed at once, you must first
un-select a track to be able to select another one. The Continue and
Graphic Continue options use the value of the Position scroll bar (on
the music data dialog box) to know where to start to play the music.

The following is an edited and compiled collection of notes originally
available from several on-line services, dealing with composing music
with: SSP DEMO or SoundSmith GS.

If you can't read spread-sheet music, you're probably going to initally
be confused, no matter how simply I try to explain this.  Although when
I first started, I couldn't read spread-sheet music either. It took me
about a week to get used to it.  But, now it's really easy to use and
fairly simple to understand.

The beauty of this method for music score display and manipulation, is
that it's real easy to understand and use, and the only 'user friendly'
alternative to composing music, if you can't read or write normal music
scores, (LIKE ME, who plays by ear).

If you can read and/or write music, you'll have to learn how to
translate a note on a scale to a SUPERSOUNDPRO DEMO spread-sheet-like
note. It's fairly straight forward, but like anything else you've never
done before: practice is the only logical way to learn how to get it
all right.

When you first run SUPERSOUNDPRO DEMO, you are greeted by the INTRO
MUSIC AND INTRO PICTURE. If you like the program, PLEASE send your
comments, (LIKES & DISLIKES).  The effort and price for a postage stamp
and a postcard or letter to show your interest and appreciation would
be very welcomed.  It's really a small price to pay for such a great
(FREEWARE) MIDI sequencer composition program.

Next, you'll see a dialog box containing various instrument options. 
At this point, as you probably already know, you can load in a song to
be played (from the FILE menu.)  Another thing you can do is load in an
instrument (see that big "Load Instrument" button).

Try loading an instrument now.  Just pick one from any song you happen
to have (KEEP IN MIND THAT SSP IS FULLY SOUNDSMITH MUSIC COMPATIBLE)
(you'll probably have to swap disks unless you have a hard drive.)  Now
you'll see a keyboard & an instrument data box appear.

Try clicking a few notes on the keyboard with your mouse.  Nothing too
spectacular here.  The only reason you'll ever use the keyboard is to
test an instrument before you use it to see what it sounds like.  Or,
if you'll be writing your own songs, this is how you'll probably do it
(just like a real keyboard.)  For now, don't worry about the stuff in
the instrument data box. I'll get to that later.

If it appears that SUPERSOUNDPRO DEMO has a problem sometimes when it
comes to starting a new song.  If you're not careful, you could waste a
lot of time entering notes only to find out later that the tempo is
stuck on zero!   What this means is that your song has no tempo & it
will NOT play!  Here's what you do to avoid this:

	1. Load in any song (ie. "open" it from the FILE menu.)
	2. Close the song.
	3. Start a new song by selecting "New" from the FILE menu.
	4. Open the "Music" option from the INFORMATION menu.
	5. Make sure the "Tempo" is set to something other than zero.
	6. You're ok!  Now you can start composing.

There are other ways to start a new song.  But, this method works the
best. From here, it's a good idea to save your empty song & reload it. 
Then check the tempo again.  You can never be too sure!

While you were in the "Information" box, you might have noticed the
other items: Position, Block, etc. This is where you tell SUPERSOUNDPRO
how to play your song. Since SUPERSOUNDPRO uses a spread-sheet instead
of a musical staff, you'll be typing your notes into "Blocks" and
"Tracks."  Each block can contain up to 896 notes (64 rows * 14 Tracks,
0-13).  The "Information" box is where you choose how many blocks
(positions) are in your song & in what order you want to play them.
SUPERSOUNDPRO can play blocks in any order.  For example:

            Position             Block
            --------             -----
               0                  0
               1                  1
               2                  1
               3                  2
               4                  2
               5                  1
               6                  3

This tells SUPERSOUNDPRO to play block #0 followed by #1 (twice), #2
(twice), #1 again, & #3 last.  For your first few songs, you'll
probably just play the blocks in order: 0,1,2,3,... without repeating
any blocks.  When you get used to using SUPERSOUNDPRO, you'll realize
that many songs repeat themselves.  So instead of wasting blocks on
identical music, you can just repeat a block each time it's needed.

So, set the number of positions to something like 5. Then set position
#0 to block #0, position #1 to block #1, and so on up to position #4
(since positions start at 0, #4 is actually the fifth position.)

Now you're ready to start typing in notes. Get back to the main screen
by clicking "OK."   you'll see the familiar blank spread-sheet.  Make
sure you have at least one instrument loaded & you're ready to go.

Before you start entering notes, make sure your "Caps Lock" key is
down. SUPERSOUNDPRO will only recognize upper case notes.  Another
thing you have to get used to is the numbers on the keypad and the main
keyboard are DIFFERENT & they do different things.  Ok, hit your "G"
key.  Notice that a "C" note was placed in highlighted box.  The number
after the "C" is the note's octave.  For example, C5 means "C" in the
fifth octave.  You'll find that different instruments sound better in
different octaves.  Octave 0 is a lower note than Octave 5.  Why, you
might ask, did the letter "G" produce a "C" note?   Well, the keyboard
is mapped out like a musical keyboard as follows:

	key:      G  H  J  K  L  ;
	note:    C  D  E  F  G  A

Where is the "B"???  Well, there is no key for "B". Normally,  If you
want a "B" you have to enter it manually.  Click on the "Note" box at
the top & type "B5" & hit Return to put a fifth octave B in the box.


ALTERNATIVE:
Because the original program was authored in SPAIN, an alternative to
the 'No key for "B", does exist.  As an alternative, go into the
Control Panel (by pressing; Control, Option and ESC. keys) and select
options.  For Keyboard layout, select Spanish.  Return to the program
and  the ";" key will give you a B note, the "M" key will give you an A
note and the "\" key (to the right of the spacebar), gives you an A#
note.

Make certain to change back to your normal keyboard layout in the
Control Panel when you quit and start with another GS/OS application
program, such as a word processor or the like.  Otherwise, they will be
in Spanish !


Without using the 'ALTERNATIVE', in the normal keyboard layout (U.S.A.),
sharp notes are done the same way as covered before the ALTERNATIVE:

	key:      Y   U   O   P   [
	note:    C#  D#  F#  G#  A#

Again, please note: (using U.S.A.), that some sharps don't exist: B & E.
  The B# is a C and a E# is an F.

Notice that the keys for sharps are just above and to the right of the
regular notes (just like on a real keyboard.)  What about flat notes? 
There aren't any.   Don't worry though. If you want a flat note, just
use its equivalent.  For example, if you need a A flat, simply use a G
sharp (they are the same note anyway.) Here are the flat equivalents:

	flat:    D   E   G   A   B
	use:     C#  D#  F#  G#  A#

As before, some flats don't exist: F & C. Fb is an E and Cb is B.

Look at the keyboard below & you'll see why certain notes can't be sharp
or flat:

 _________________________________________
|   | C | | D |   |   | F | | G | | A |   |
|   | # | | # |   |   | # | | # | | # |   |
|   |   | |   |   |   |   | |   | |   |   |
|   | D | | E |   |   | G | | A | | B |   |
|   | b | | b |   |   | b | | b | | b |   |
|   |___| |___|   |   |___| |___| |___|   |
|     |     |     |     |     |     |     |
|  C  |  D  |  E  |  F  |  G  |  A  |  B  |
|_____|_____|_____|_____|_____|_____|_____|



For those who can't read sheet music, (LIKE ME, WHO PLAYS BY EAR) here's
where the notes are on the scale:


      _________________________________________   F

    E                                                           T
      _____________________________ R __________   D 
                                                                 E
    C                                                           B
      _________________________________________   B             
                                                                 L
    A                                                           E
      _________________________________________   G

    F
      _________________________________________   E


------------------------------------------------------------------------

      _________________________________________   A

    G
      _________________________________________   F
                                                                 B
    E                                                           A
      _____________________________ S___________  D             
                                                                 S
    C
      _________________________________________   B

    A
      _________________________________________   G

(Hopefully, that didn't confuse or mystify you to much.  As above and
below, I didn't lay it out or character draw it.  I only obtained it
from on-line text files and tech. notes, including it for your
reference, hoping it might be useful).

On sheet music, the clefs are marked with:

            T            /\                      __
            R           | /            B        /  \
            E            /              A        \   |
            B          / /\           S           /
            B         < <  |           S          /
            L          \__/                     _/
            E


Pardon the bad (lunatic ?) artwork, but you get the idea.

Now you'll notice that all your notes have no instrument associated
with them yet. If you plan on using a single instrument for an entire
track, you cam simply click on the track number to highlight it. Then
choose "Change Sample" from the EDIT menu (instruments are also called
"samples").

You'll want to change from "0" to the number of the instrument you
want. The sounds, samples or instruments are numbered from 0-F (hex)
according to how they are listed in the "Instruments" box.

Another way to choose an instrument is to insert it manually with each
note. Here's where you have to remember that the keypad numbers are
different from the main numbers. The keypad is used to set a note's
octave, & the main row of numbers above the keyboard are used to set
the sample (instrument.) - (Samples, Instruments and Sounds are all the
same thing)

Here's how to usually enter notes:

	1.  Enter the octave using the keypad.
	2.  Enter the instrument using the regular numbers.
	3.  Enter the actual note using the proper key (see above.)

You must hit the keys in this order or it might not work. If you hit the
wrong key, just go back and try again. Also note that this won't work
for "B" notes because they have to be typed in manually. Any note can
be typed manually, & I know some people prefer to do it this way.  Just
click on the Note & Sample boxes to enter the note & instrument
manually.  The octave is set along with the note (C#5, for example).

The box labeled "Effect" is for effects. These include changing tempo &
volume. When you enter an effect for a note, the change is not just for
that note. Whatever you do will effect all notes after the one you
changed.

To change tempo within the score, click on the effect box & enter "F"
followed by hex number from 1-F. DO NOT TYPE "0" FOR TEMPO!!! I can't
stress this enough. If you enter a zero, your song will have no tempo &
will not play. To change volume, type "3" followed by a hex number from
00-FF. 00 is no volume, FF is full volume.

Now for the hard part. SUPERSOUNDPRO doesn't use time signatures. In
other words, there is no 4/4 2/4 3/4, etc. You have to scan your music
first & see what the shortest note is. This will usually be a sixteenth
note.

In this case, a sixteenth note is simply one box long. An eighth note
would be two boxes long.  A quarter note, 4 boxes. A half note, 8
boxes. A whole note, 16 boxes. This means that for a half note, you
must leave 7 empty boxes after the note. For a sixteenth note, you
don't have to leave any empty boxes.

You may find that when you play your song, it's too fast or too slow.
Go back to the "Music" box (from the INFORMATION menu) & reset the
tempo to make it sound right.

Tips & hints on writing music with: SUPERSOUNDPRO DEMO or SoundSmith GS


After booting SUPERSOUNDPRO DEMO and getting past the title screen &
Title song a small, empty box with 4 buttons is displayed.  The only
button you can use at this point is Load instrument.  This is how you
load instruments.

You can load instruments from any disk and use them.  The author of
SUPERSOUNDPRO, was gracious enough to include a plethora of instruments
for our use, all of which sound better than any of Music Studio's
sounds (but, SSP sounds may be saved into MS Wave-files.

If you do this, make sure you change the envelope form in the Design
instrument section of Music Studio).  To change the default volume of
an instrument, highlight the instrument and use the scrollbar to set
the volume.  You can test the notes on the keyboard and what you play
on a keyboard will be recorded into your song.

Now that you have selected all your instruments (you can still select
more later on if you don't have enough), ( UP TO 15 INSTRUMENTS
TOTALING NO LARGER THAN 64K) go to the file menu and select 'New Song.'

This will give you the familiar spread-sheet that you usually see
littered with 'D#5's and stuff, except that it is empty.  You are now
ready to begin composition.  First of all, select MUSIC from the pull
down menu.

You should get a screen with 'Number of Positions','Position','Block'
and 'Tempo'.  Set the number of positions to about 10 or so, and then
set POSITION #0 to BLOCK #0 and Position #1 to Block #1 and so on and
so forth and then set Tempo to whatever you want.

(REMEMBER DON'T USE 0 (ZERO))   1 is the fastest and 16 is the slowest.
 The Position bar and the Block bar are vital.  The program plays the
blocks according to how you tell it to: for example, SSP starts at
position zero and at position zero, you have instructed SSP to play
Block #0.

After playing Block #0, SSP moves on to the next position.  At position
#1, you have instructed SSP to play block #1.  But, let's say you want
to repeat a block.  Set position #10 (or whatever) to block #10 and
Position #11 to block #10.  This will repeat the 10th block.  Hit the
'OK' button to get back to the Spreadsheet.

What you should do at this point, is put any note on the screen and
save it to /RAM5 and then close the spreadsheet and load the song back
up (but, 'Cancel' the loading of new instruments).  This way, you have
loaded a song and are modifying it.  Delete the dummy note you have
placed on the screen and now you are ready to begin.

On some other songs, you may have noticed the way the notes were
arranged:

        Note  instrument
         ||      |
      |  D#5  |  4000  |
           |      |||
        Octave   Effect

Note:  This is the note.  The musical alphabet is CDEFGAB and that is
how SSP looks at it's notes.  Some times a note will have # after it. 
This denotes a  'Sharp' or an increase in the notes pitch.  Since SSP
doesn't recognize flats, only sharps may be used, such as  G# instead
of Ab (these are both the same note).  Sometimes, though, notes can't
be sharp.  These notes are B and E.  This is because B# is C and E# is
F.  Keep that in mind.  (The following is an example of a musical
staff.  If you'll notice, they are in alphabetical order from bottom to
top, counting spaces and lines)

Spaces                                               Lines(Treble)

     _______________________________________________   F(ine)
   E _______________________________________________  D(oes)
   C _______________________________________________  B(oy)    
   A _______________________________________________  G(ood)
   F _______________________________________________  E(very) 
                                                      
     _______________________________________________   A(lways)
   G _______________________________________________  F(ine)
   E _______________________________________________  D(o)     (Bass)
   C _______________________________________________  B(oys)
   A _______________________________________________  G(ood)

Octave:  This is what pitch the note will be played at.  Each new octave
starts  at C(ex: A4 B4 C5 D5). You can usually use the C in the Treble
Clef as C5, the C  in between the two clefs (middle C) as C4 and the C
in the Bass Clef as C3.  Your octave may range from a low 2 to a high
7.

Instrument:  This is the instrument number to play.  They range from 1
to F(a   Hex number{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}).  You can use any
instrument in  any row. Effect:  A very useful tool.  This affects the
way a note preforms.

The most useful effects are Volume and Tempo.  To change the volume of
your score, go up to the effect box and type 3 (this says, I'm changing
volume, to SSP) followed by any number from 00 to  FF (again, this is
Hex).  00 is no volume at all and FF is full blast.  This type of
volume only affects the current note.

To change the Tempo, go to the Effect box and type F (again, "I'm
changing Tempo now!!") followed by any  number from 01 to 0F.
(WARNING-WARNING: Under NO circumstances type F00 and play it as it
will shut off the speed of your song.  There is no way out of this (the
Tempo Bar in the pull-down is now all solid, and you can't change Tempo
again in your song because your song isn't moving!) Your only option is
to reload  the song.

Again please make note of it. The first question everyone asks is "How
do you set the Time Signature?"  Forget this.  There are no time
signatures in SUPERSOUNDPRO.  If you want to make a whole note, put
down a note and leave 3 blank spaces after it.  If you want to make an
eight note, put down a note and leave no spaces after it (if you aren't
adding anything after it, that's fine.

The note will play to it's full extent, but it won't mess anything up. 
If you're pickey, place 'STP' in place of the note/octave.  This should
stop the note.  Let's say you have sixteenth notes in your song:  to
make a whole note, put down the note and leave 7 blank spaces after it.

To make a quarter note, put down a note with 1 blank space.  As you can
see, I've doubled the distance between all notes, and with this, you
may also need to half the tempo.  Usually, however, duration doesn't
mean anything in SSP.  What is important is when each note starts since
that is all that is really audible.

Shortcuts:  Instead of typing in each note, octave, instrument, and
effect, you can simply highlight the square you want to work on by
clicking on it.  Then, typing any number on the keypad will set the
octave, and any number on the top-number-row will set the instrument
(apparently, 5 on the keypad and 5 on the keyboard are different!).

Typing the keys between [G] and [:;] on the keyboard will produce the
notes C though A.  The letters on the row above will produce the sharp
notes.  Ex:

          [Y][U]                               [C#][D#]   
          [G][H]     will give you   [C ][D ]

Of course, all the Open Apple-commands work as well.  Cut and Paste is
vital to a song writer.  If you want to copy part of your song, take
your mouse, click and hold at the top part of your segment and drag the
mouse all the way to the bottom part of your segment.  You may also
drag it across several rows.

Now that it's all highlighted, release the mouse and select Cut or Copy
(cut removes the selection and puts it into memory, copy copies it into
memory).  Now take the mouse and move it to the top corner of where you
want your segment to end up and then select paste(or hit Open Apple-V).
and, there it is.

You may notice Fade IN and Fade Out in the menu(OA+ and OA-).  This is
a real effective item.  All you do is select the area of the song (for
example, the last block) and then select Fade Out or Fade In.  SSP
automatically calculates the variables needed for a nice, even fade
in/out.

Change Sample:  If, for some reason, you decide you don't like the
instrument you wrote your song with, select the portion of the song
with the instrument (you can select whole rows, columns, and blocks by
clicking on the heading), and go to change sample.  Put simply, SSP is
asking: You, do want me to change all the instruments Number x to
instruments Number y.  This is useful.

Set Octave:  This is rather useful.  Sometimes, you make a really great
Drum Beat, and when you listen to it, you discover it sounds like your
supper is attacking you from the inside because the octave is to low. 
(THIS IS A GROWL EFFECT, THAT I USE IN SOME OF MY VAMPS COMPOSITIONS). 
Select the area and then pick Change Octave from the Menu.  This will
set everything in the selected area to Octave x.

A drawback of this is when you have multiple octaves such as B3 C4 D4,
it will change them all to the same octave, such as B5 C5 D5 (which
will produce 1 high note and 2 low notes instead of 3 low notes).
(WELL, NOTHING IS PERFECT)!

Never forget about the UNDO item.  If you make a bad mistake (such as
fading a part of a song you don't want to) go up and select Undo and it
will undo it.

DOC: It shows exactly what memory specifically designated for your DOC
(Digital Oscillator Chip (the ENSONIQ sound chip!) is used up by the
instrument data.

Play and Graphic Play are used to listen to your music.  Continue and
Graphic Continue doesn't continue the song from where you stopped it,
it acts as a loop so it will play forever.  Stop Sound stops it from
playing.  (You can do Continue and listen to the song while you're
writing it.  It'll play the notes after you add them.)

After you have a song all written out, go back to MUSIC in the
Pull-down and set the Total Positions to the greatest position +1. 
This will cause the song to end right after the last position.  (+1
because Number of Positions starts with 1 and Position Number starts
with 0).  Clicking on the LOOP box will make the song start over after
the last position.

A few Hints:

To give your song a spacial hollow type sound, copy all the tracks and
fill up all 14 tracks with your music.  The sound effect is
interesting.

The lower the octave of a note, the longer it gets.  To make a long
fuzzy sound, use C2 with the instrument.

If you're just starting out, I recommend adding a drum beat to a
classic song such as 5th Symphony,  Blue Danube, etc.  See the example
of Pachelbel's Canon in D under the name 'New.Cannon'.

To give that BassDrum2  more bass, play 2 or 3 notes at the exact same
time.  Echo the note, by staggering in adjacent tracks, positioned one
above and one below the original tracks note position.

If there are any questions at all, please, feel free to write me or
give me a call.  I look forward to your reply.

I hope this SSP GS Reference Manual will help you to understand the
basics for using  SuperSoundPro GS,  how the program works and how to
compose some music. This SSP GS  Reference Manual covers all the
important functions of this program.

I know that some points could be explained in greater details. 
However, since I wanted to include this compiled Reference manual, with
the SSP.GS program, I couldn't spend more time on it.  I will furnish
any MORE comprehensive SSP.GS program operations that I can, which you
request with the REPLY KIT, that includes some useful compliment
programs, utilities and music/sample data disks.  As soon as you send
your (REPLY/RESPONSE)  with your disks and return postage, to cover
mailing cost you'll receive your reply kit, promptly.

Make sure the program is distributed on a FREE basis, please be
advised, this program is FREEWARE.  We spent a great deal of time,
energy and effort designing the SuperSoundPro GS DEMO for the Apple
IIgs world to use and enjoy FREELY, as an alternative to the SoundSmith
ShareWare versions.

Hopefully, you'll like this (FREEWARE) full-function MIDI program
enough to send your comments, (LIKES & DISLIKES) about the
SuperSoundPro GS DEMO program. The REPLY/RESPONSE accessories package
will be sent to you when you respond with your comments and any
problems that you find with the SSP DEMO program, when you use it. 
Please send your responses, with four 800k (3.5) DSDD disks, return
postage and your comments, if you want the REPLY/RESPONSE accessories
package to:

Charles T.  Turley, Ph.D. - (Dr. Tom)
Executive Coordinator
One World Software Wizards
115 Santa Clara St.
Brisbane, CA. 94005
USA
Tel. (415) 468-1609

Remember, you'll receive a wonderful collection of useful accessories,
sounds and music, along with any additional detailed information or
updated files I can present, that you request, covering every function
of these SSP compliment programs, with tips, tricks and special Noise
Tracker GS (VAMPS/NTV) Virtual (3-D) Audio Global Stereo sound scape
design techniques.

I hope you'll enjoy using the SuperSoundPro GS DEMO.  If you like the
SSP GS DEMO please let me know.  If you don't, let me know also.  If
you have any problems with the program, please let me know what they
are, so I can advise you how to correct them.  If you can't locate it
anywhere, send two blank disks with return postage and it will be
mailed to you promptly, for your use, review and comments.

A final (reminder) note to all SS and SSP users:  Huibert Aalbers
accidently destroyed some of the SRC.CODE for his release of SoundSmith
GS v1.0.1.  He is a full time university student and he is involved
with writing a SoundSmith for the MAC and also an assembly language
tutorial for the MAC, with whatever spare time he has.

Without the SRC.CODES for the original SoundSmith GS v1.0.1 our team
was not able to do very much to improve the problems that were
discovered with SoundSmith GS v1.0.1.  We have attempted to reconstruct
the codes and do the best we could to correct those problems by
rewriting, enhancing, patching and releasing the SSP GS DEMO as a
FREEWARE for the IIgs world to use.

Huibert had a disabled IIgs that refused to function.  He's bought a
new MAC and has moved to Quebec, Canada. to go to, live, work and
continue with his education.  Effective, last November of 1993, Huibert
left the 1WSW team and has abondoned any more efforts for any upgrades
with either SoundSmith GS or SuperSoundPRO GS or any efforts with the
IIgs.

KNOWN BUGS WITH THE SSP GS DEMO PROGRAM

THERE IS ONLY ONE KNOWN BUG WITH THE DEMO PROGRAM ITSELF.  BE VERY
SELECTIVE WHEN YOU DO ANY CUTS AND PASTES INTO TRACK 13.

(don't cut & paste an entire track into track 13-do your cut & paste
efforts to track 13 in small increments or sections only !)

THIS TRACK MAY LOCK UP YOUR ENTIRE PROGRAM AND CAUSE YOU TO HAVE TO
RE-BOOT, THUS YOU WOULD LOSE ANYTHING YOU HAD DONE SO FAR WITH THE
COMPOSITION OF YOUR SONG/MUSIC.   BE SURE TO SAVE YOUR WORK OFTEN TO
AVOID THIS PROBLEM.

CONCERNING THE 3-D SL MIDI NDA:  IF YOU LOAD A (SL FILE)  AND PLAY IT
THEN LOAD A SS OR SSP MUSIC FILE OR SONG, YOU MAY HAVE SOME SEVERE
CONFLICTS WITH THE SAMPLES AND THE SOUND OF THE SAMPLES.  THEY WILL
OFTEN RETAIN THE SOUNDS OF SAMPLES FROM THE SL MUSIC FILE.  OTHER
STRANGE CONFLICTS AND PROBLEMS MAY ALSO RESULT WITH THE INCORRECT USE
OF THIS NDA WITH THE SSP DEMO PROGRAM.  TRIAL AND ERROR ARE YOUR BEST
TEACHERS USING THIS NDA WITH THIS PROGRAM.   SO, USE IT WITH CARE !

I'VE ATTEMPTED TO DISCOVER AND RELATE ALL THE BUGS I COULD FIND WITH
THIS SPECIALLY DESIGNED AND CONSTRUCTED SSP DEMO BOOT DISK AND SSP DEMO
PROGRAM DATA DISK.  IF YOU ENCOUNTER ANY OTHER BUGS OR ANOMALIES,
PLEASE WRITE AND LET ME KNOW, SO THAT I CAN RELATE THE INFORMATION,
WITH ANY POSSIBLE SOLUTIONS ON TO OTHER USERS.

I hope you'll understand that we have done the best we could, with what
we had to work with, our limited resources and the limited time we had
to work with it. If you have the talents and/or skills, resources and
time to improve this SSP GS DEMO (FREEWARE) release, please do !  I'll
be happy to furnish you with the SRC.CODES.

Next comes an edited excerpt, dealing with notes for tuning with
SoundSmith GS from: Ian Schmidt, via his original on-line posting. 
Note that MegaTracker is Ian's SoundSmith Player.

How to sample perfectly tuned SoundSmith/MegaTracker instruments
      
First off, print out the tuning table at the end of this SECTION. 
Compare the frequencies to those offered by your favorite sampler (I
personally  wouldn't do this without either Audio Animator and its sw,
or AudioZap.  Once you find the closest one, its a matter of checking
which note that corresponds to and then sampling that note from your
instrument at that frequency.  Then clean it up, convert to ASIF, and
you're done.

Tuning for standard MOD-type sequencers (including SoundSmith GS)
(note: NoiseTracker is slightly flat from these specs) (note2: MOD/SS's
definition of MIDI octaves is one above the Intl. MIDI
Associations's...so subtract 1 octave to get a normal MIDI note)

Note      Frequency (Hz)        Note        Frequency (Hz)
C1           N/A                           C2	      2107
C#1         1130                         C#2                2193
D1           1182                         D2                  2346
D#1         1233                         D#2                2499
E1           1336                         E2                  2601
F1           1387                         F2                  2754
F#1         1490                         F#2                2958
G1           1542                         G2                 3111
G#1         1645                         G#2               3315
A1           1747                         A2                 3519
A#1         1850                         A#2               3723
B1           1953                         B2                 3927
Note      Frequency (Hz)        Note        Frequency (Hz)
C3          4182                         C4	     8313
C#3        4386                         C#4                8823
D3          4692                         D4                  9333
D#3        4947                         D#4                9894
E3          5253                         E4                 10506
F3          5559                         F4                 11067
F#3        5865                         F#4               11730
G3          6222                         G4                 12444
G#3        6579                         G#4               13158
A3          6681                         A4                 13974
A#3        7395                         A#4               14790
B3          7854                         B4                 15657
Note      Frequency (Hz)        Note        Frequency (Hz)
C5          16626                      C6	    33303
C#5        17646                      C#6                35292
D5          18717                      D6                  37383
D#5        19788                      D#6                39627
E5          20961                      E6                   41973
F5          22236                      F6                   44472
F#5        23562                      F#6                 47124
G5          24939                      G6                   49929
G#5        26418                      G#6                 52887
A5          27999                      A6                   55998
A#5        29682                      A#6                 59364
B5          31467                      B6                   62883
---------------------------------------------------------------------------

EXPLORING SOUNDSMITH

"Exploring SoundSmith" is an 82 page guide to all the features of
SoundSmith.  The publication, from Al Crout and Gareth Jones, covers
every  possible aspect of making music with the IIgs and SoundSmith.

Sections include such topics as; getting the best possible sound from a
IIgs,  musical composition using the SoundTracks module (THE MUSIC
SCORE AND EDITING PORTION OF THE PROGRAM), MIDI recording and play back
and saving your work to storage devices.  It has appendices which
briefly cover a number of items of shareware and freeware for the
enhancement of SoundSmith including DreamVoir, AudioZap and Noise
Tracker GS.

I found the MIDI recording information, reviews and tech. materials
very revealing, informative and easy to understand.  This portion alone
makes the publication a very worthy addition for anybody using
SoundSmith that never fully understood its MIDI abilities before.

Exploring SoundSmith costs $15.00 (US) post paid and can be ordered
from:

Gareth Jones
Apartment 1 
3872 Sunset Street
Burnaby
British Columbia
Canada V5G 1T3

Tel. (604) 435-1416

Gareth furnished me with a copy for review and I must say it's an very
informative and well written publication, that all serious SoundSmith
users should have.

In a lengthy, friendly and informative conversation, I had last week,
with Al Crout, he informed me that he was working on a HyperStudio
stack, that had a lot of information from the publication with undated
information and other things of interest for SoundSmith users.  If you
should care to make contact with him for information about this, his
mailing address follows:

Al Crout
Apt. 102, 215 Mowat Street
New Westminster
British Columbia
CANADA
V3M 4B1
 
Next, is my compiled and edited collection of notes and on-line
postings, that deal with Imported Modules, with some possible novel and
experimental procedures, you might care to try.

A composite of all related information concerning the construction and
operation of Imported MODULE files (MODfiles) from the Amiga, follows.
They were passed along to me from many people and collected over the
past few years, from many on-line services.

They all pertain to commands, special effects and native languages of
the Amiga computer.  You shouldn't confuse the context of this portion
of this collective article and reviews, with programming languages or
commands native to the IIgs.

The content of this portion is presented for experimental and research
use only, to help any of you, that care to take on the challenging
adventure of modifying, altering, enhancing or reconstructing an
Imported Module file that's a standard text file type.

If you have an Imported Module file that is a text file, you should be
able to load it into  WRITE AWAY!, a (ShareWare) which is a very
useful, well designed and unique word processor GS/OS application.  You
might also try using the ShadowWrite (FreeWare) NDA.

If you have an Imported Module file that isn't a text file, change it
to a text file with any file type changer program.

Such efforts, will become needless and antiquated, for their originally
intended purpose, within couple of months or so, with the release of
Noise Tracker GS v2.00.

But, pending its release, which will allow you to construct, edit and
arrange MODfiles (ProTracker file Format) music scores, then save them,
(Native MODfiles from the IIgs - AT LAST), you can review this
following information to gain an over-all understanding of MODfiles,
for whatever use you care to apply the knowledge you might gain, for
your future efforts with MODfile music on the IIgs.

Even with the release of Noise Tracker GS v2.00, (the first GS/OS
application program for composing, editing and saving MODfiles), you
can still experiment and play around with the MODfiles or even with the
Noise Tracker GS v2.00 music file format, and (with trial & error),
obtain some interesting results.  Sometimes they could result in unique
effects and sometimes they could result in completely corrupting the
files structure and usefulness.

As with any file you are experimenting, attempting to modify or alter,
you should always keep a copy of the original, in the event you mess
up, with your efforts.

---------------------------------------------------------------------------
 Protracker 2.1A Song/Module Format Information:
 Courtesy of: Lars Hamre and Peter Hanning

 Offset   Bytes  Description
 ------  -----  -----------
 0            20        Songname. Remember to put trailing null bytes at the end.

 Information for sample 1-31:

 Offset   Bytes  Description
 ------  -----  -----------
 20          22        Samplename for sample 1. Pad with null bytes.
 42          2          Samplelength for sample 1. Stored as number of words.
                           Multiply by two to get real sample length in bytes.
 44          1          Lower four bits are the finetune value, stored as a signed
                           four bit number. The upper four bits are not used, and
                           should be set to zero.
                           Value:  Finetune:
                            0         0
                            1       +1
                            2       +2
                            3       +3
                            4       +4
                            5       +5
                            6       +6
                            7       +7
                            8       -8
                            9       -7
                            A       -6
                            B       -5
                            C       -4
                            D       -3
                            E       -2
                            F       -1

 45         1           Volume for sample 1. Range is $00-$40, or 0-64 decimal.
 46         2           Repeat point for sample 1. Stored as number of words offset
                           from start of sample. Multiply by two to get offset in bytes.
 48         2           Repeat Length for sample 1. Stored as number of words in
                           loop. Multiply by two to get replen in bytes.

 Information for the next 30 samples starts here. It's just like the info
 for sample 1.

 Offset   Bytes  Description
 ------  -----  -----------
 50          30        Sample 2...
 80          30        Sample 3...
    .
    .
    .
 890        30        Sample 30...
 920        30        Sample 31...

 Offset   Bytes  Description
 ------  -----  -----------
 950        1          Songlength. Range is 1-128.
 951        1          This little byte is set to 127, so that old
                           trackers will search through all patterns when loading.
                           Noisetracker uses this byte for restart, but we don't.
 952        128      Song positions 0-127. Each hold a number from 0-63 that
                           tells the tracker what pattern to play at that position.
 1080      4          The four letters "M.K." - This is something Mahoney & Kaktus
                           inserted when they increased the number of samples from
                           15 to 31. If it's not there, the module/song uses 15 samples
                           or the text has been removed to make the module harder to
                           rip. Startrekker puts "FLT4" or "FLT8" there instead.

 Offset   Bytes  Description
 ------  -----  -----------
 1084      1024    Data for pattern 00.
    .
    .
    .
 xxxx  Number of patterns stored is equal to the highest patternnumber
       in the song position table (at offset 952-1079).

 Each note is stored as 4 bytes, and all four notes at each position in
 the pattern are stored after each other.

 00 -  chan1  chan2  chan3  chan4
 01 -  chan1  chan2  chan3  chan4
 02 -  chan1  chan2  chan3  chan4
 etc.

 Info for each note:

  _____byte 1_____   byte2_    _____byte 3_____   byte4_
 /                \ /      \  /                \ /      \
 0000          0000-00000000  0000          0000-00000000

 Upper four    12 bits for    Lower four    Effect command.
 bits of sam-  note period.   bits of sam-
 ple number.                            ple number.

 Periodtable for Tuning 0, Normal
   C-1 to B-1 : 856,808,762,720,678,640,604,570,538,508,480,453
   C-2 to B-2 : 428,404,381,360,339,320,302,285,269,254,240,226
   C-3 to B-3 : 214,202,190,180,170,160,151,143,135,127,120,113

 To determine what note to show, scan through the table until you find
 the same period as the one stored in byte 1-2. Use the index to look
 up in a notenames table.

 This is the data stored in a normal song. A packed song starts with the
 four letters "PACK", and then comes the packed data.

 In a module, all the samples are stored right after the pattern data.
 To determine where a sample starts and stops, you use the sample info
 structures in the beginning of the file (from offset 20). Take a look
 at the mt_init routine in the playroutine, and you'll see just how it
 is done.


Amiga Imported MOD tips from Mike:

This is an explanation for how the notes are played on the Amiga.  So, you can
figure out how to handle them. 

The Amiga's audio DMA runs on a bus cycle of 2.79365E-07 seconds. (All
you really need to know about the Amiga's audio DMA for your purposes
is this number.)  All the sample playback periods are based on this
number.

The table can be constructed of Amiga playback sample periods
with the following formula:

                              1
    Sample period=---------------------------
                  Sampling rate * 2.79365E-07

And you get the following table.

           C    C#   D    D#   E    F    F#   G    G#   A    A#   B
        ------------------------------------------------------------
1st Octave.| 856  808  762  720  678  640  604  570  538  508  480  453
        |
2nd Octave.| 428  404  381  360  339  320  302  285  269  254  240  226
        |
3rd Octave.| 214  202  190  180  170  160  151  143  135  127  120  113


This gives the values for the 3 octaves the Amiga can play from a raw
sample.

To get the sample rates in samples per second that you'll need you
use the formula:

                                    1
     Sample rate(Hz) =---------------------------
                      Sample period * 2.79365E-07
                      (from table)

So for a note C-2 the sample rate is 8363 Hz.

The fine tuning is accomplished buy adding/subtracting to the periods
taken from period table at playback. Thus you get this conversion
formula:

                                        1
     Sample rate(Hz) =------------------------------------------
                      (Sample period + Finetuning) * 2.79365E-07

(Finetuning value can be positive or negative)

MED and the newer Trackers can also use IFF instrument files which
contain a sample for each octave.  With these instruments you use only
the playback rates from one octave but a different sample from the
file. This allows five instead of three octaves per instrument.


Tempo (playing speed)

To understand this completely, you need to know some technical aspects. 

MED uses the CIAB timers for timing.  They give " timing pulses " that
trigger the MED's player interrupt.  On each timing pulse effects are
handled (e.g. commands  1,2,3,4,5,D, hold/decay, synthsounds).  But,
the new note is usually not played on each pulse.  The time between
timing pulses can be changed (primary  tempo).  The new note is usually
played on every 6th pulse. But, this can be changed also (secondary
tempo).   For example, if new note was played on every 3rd pulse, the
playing speed would be twice as fast.  This doesn't affect the speed of
effects.

Graphically:
pulse   \         PLAY NOTE
         the time between pulses can be changed (primary tempo)
pulse   /         DO EFFECTS  \
                               \
pulse             DO EFFECTS    \ The number of pulses between
                                / notes can be changed (4 in this example).
pulse             DO EFFECTS   /  This is the secondary tempo.
                              /
pulse             PLAY NOTE

MED V3.2 player commands/effects:

This section gives information about commands/effects.  They are events
which affect the playing and they are handled by the MED player routine.

         C - 2  1 2 3 4
                  | \ |
     command number  \|
                      data byte

You insert the commands usually by hand (turn editing on, move cursor on the
command  numbers and type the numbers).  It may be a bit easier if you turn
off automatic-advance with Ctrl-A.

Here are the descriptions of each of the currently recognized commands:

Command 0:  ARPEGGIO       MIDI: controller value 

This command changes the pitch of the note quickly (6 times during 1 note).
It can be used to create "chords" or special effects.  If you've listened
to music made with the C-64, you MUST have heard arpeggios. The pitch is
changed between 3 different pitches during one note:
         the 1st pitch is the pitch of the original note
         the 2nd pitch is the pitch of the original note + the 1st number
                of databyte halfsteps up
         the 3rd pitch is the pitch of the original note + the 2nd number
                of databyte halfsteps up

Note: 3rd pitch | 2nd pitch | 1st pitch | 3rd pitch | 2nd pitch | 1st pitch
          changed 6 times during note

It may be a bit difficult to understand, so here's an example:
You want to make an arpeggio which sounds like C-major chord.

The lowest pitch is C (C-2 in this example).
The second is E-2 (4 halfsteps higher than C-2).
The third is G-2 (7 halfsteps higher than C-2).

4 halfsteps from C-2 -+ 7 halfsteps from C-2
                      |/
That produces:  C-2 1047
                --- 0047
                --- 0047 and so on...

Data byte for a minor chord would be 37.

The arpeggios sound better with some instruments than others.

MIDI: See command 5 for a description.

Command 1:  SLIDE UP       MIDI: pitchbender up

This command slides up the pitch of the current track.

With Amiga samples:
         Decreases the period of the note the amount of databyte on each
         timing pulse. Sounds rather technical ??  Yes. The instructions for
         previous (before 2.10) versions of MED contained detailed
         instructions for making good-sounding slides with this command.
         Because this version now contains the easy automatic slide making
         (Amiga-T), I felt that these instructions are not necessary any more.
         If you use this function for special effects (not real slides) then
         you can experiment with the values for the databyte.
         Example:
                A-1 1000
                --- 0000
                --- 010F <- slide up a bit

With MIDI:
         This commands works very differently with MIDI. It actually
         "turns" the pitchbender 8 * databyte steps up on each timing pulse.
         Because the actual range of the pitchbender may be different with
         different MIDI-devices, you must find the right value by
         experimenting. There's also one thing you should know: when a new
         note is played, the pitchbender isn't reset automatically. To
         reset the pitchbender, you use this command with databyte zero.
         Example:
                G-2 L1FF <-turn it up very quick
                --- 0000
                --- 0100 <- then reset the pitchbender


Command 2:  SLIDE DOWN     MIDI: pitchbender down

It's just like command 1 except it slides
down.



Command 3:  PORTAMENTO     MIDI: set pitchbender

This is another slide command (on some old MED versions (2.00) this was
a vibrato command, see command 5 now). It can be used to make perfect
slides more easily.  First an example:

         C-2 5000 <- played note C
         --- 0000
         E-2 5305 <- this note is not played!! Instead, slide target is set
         --- 0300    to G-2 and slide speed is 5
         --- 0300 <- when speed is zero, use the previous speed
         --- 0306 <- the speed can be changed, of course

This example would slide from C-2 to E-2, but the slide stops EXACTLY
when E-2 is reached. The remaining 3's have no effect. This command
is easier to handle with automatic slide making (see Edit/S1 above).

MIDI: By using this command, you can set the pitchbender to an absolute
value, instead of sliding as commands 1 and 2 do. The data byte is the
pitchbender value, expressed as a signed hexadecimal digit (a nightmare
to non-programmers!).
        00 = center position
        80 (-7F) = smallest value
        7F = largest value

Example:
        C-2 3000
        --- 037F <- pitchbender to max. value
        --- 0300 <- reset

Command 4:  VIBRATO        MIDI: modulation wheel 

The first number of the data byte is vibrato speed, the second is
vibrato depth.  If the numbers are zeros, the previous speed and depth
is used.

Example: F-215000
         --- 0000
         --- 0433 <- slow, not much depth
         --- 0437 <- more depth
         --- 043F <- full depth
         --- 0482 <- fast, not very deep

MIDI: This command affects the modulation wheel of the current channel.
      The data byte can be 00 - 7F.  00 = no modulation, 7F = maximum.
      Values 80 - FF are reserved for future expansion (and won't work).


Command 5:  OLD VIBRATO    MIDI: controller number

This is the old vibrato command (previously it was 3). The command 3 is
automatically converted to 5 when loading old MED songs. The pitch of
the note is changed between two values, databyte is the depth.

Example: A#1 J502
         --- 0507 increasing depth
         --- 0517 v
         --- 0527
         --- 0537

MIDI: Command 5 in conjunction with command 0 allows you to change any
controller of MIDI (command $Bx cc vv, where cc = controller number,
vv = value).

First you set the number of controller you want to change with command
5. Then you can select the value with command 0. Subsequent uses of
command 0 will affect the controller previously set with command 5.
Each channel has its own controller number. If the controller value is
$00, you can't use '00', because the command '000' means 'do nothing'.
Instead, you type '80'. Acceptable controller numbers and values are
$00 - $7F.

For example: (assuming instrument 3 is set to MIDI channel 1)
        C-2 3000
        --- 0507 <- controller $07, volume, according to MIDI standard
        D-2 307F <- set max. volume ($7F), command $B0 $07 $7F is sent
        --- 0000
        F-3 3001 <- small volume ($01)
        --- 055C <- select controller $5C (tremolo depth)
        G-4 3080 <- set to 0 (note: $80 = $00)

Command 8:  SET HOLD/DECAY MIDI: set hold only 

This command must be located on the same line with a note. The command
assigns the hold and decay values for the note (see above for description
about hold/decay).

                hold value
decay----------+|
               ||
Example: C-3 3824
         -|- 3000
         -|- 3000
         --- 0000

Command 9:  SEC. TEMPO     MIDI: no action 

This command sets the secondary tempo (the number of timing pulses/note).
The argument must be 01 - 20.

Example: --- 0903 <= double tempo
         --- 0000


Command A:  VOLUME SLIDE   MIDI: polyph aftertouch

This is the same as command D (for Noisetracker/Protracker compatibility).
However, please use D instead of this.

MIDI: Command A changes the polyphonic aftertouch of the most recent note.
The value should be $00 - $7F.
Example:
        C-3 4000
        --- 0A30 <- aftertouch $30
        --- 0000
        --- 0A00 <- aftertouch $00


Command B:  POSITION JUMP  MIDI: position jump

This command lets you make songs that have a beginning which is played
only once and then some part which is looped forever.  Position jump
causes the jump to play sequence number pointed by the data byte. If the
data byte is 0, then the playseq jumps to the first entry.

Example:	--- 0B02 <- start playing from play sequence number 3


Command C:  SET VOLUME     MIDI: set volume

You can override the default volume of the instrument with this command.
Example:
         A-3 4C20 <- played with volume 20

There are 65 volume levels (0 - 64), 0 = no sound, 64 = maximum. The
data byte of command C can be 00 - 64 or 00 - 40 (decimal or hex).
Non-programmers will probably want to use the decimal numbers. See
(Play/[Dec/Hex]). If you want the playroutine to have maximum performance,
then use hex values.

It's also possible to change the volume of already played note.  Note
that it doesn't work with MIDI-instruments.

Example:
         A-3 4000
         --- 0000
         --- 0C10 <- volume to 10

It's possible to change the default volume of an instrument (MED V2 and
later). The value must be between 80 and C0 (always hex!). Value $80 = volume
0, and $C0 = 64. Note: This can cause trouble in multi-modules, because the
set of instruments (and their default volumes) are common.  I recommend that
you change the default volume only on non-multi-modules.

Command D:  VOLUME SLIDE   MIDI: channel pressure 

You can increase/decrease volume smoothly with this command.  The data
byte is divided in two parts:

         C-3 3D01
               ||
               |+- Amount of decresdendo
               +-- Amount of crescendo

If crescendo is zero, then the decrescendo is performed. Otherwise only
crescendo is performed.

Example:
         C-2 3C40
         --- 0D01 <- a bit more quiet
         --- 0D01 <- even more
         --- 0D20 <- and crescendo back to original

One unit in these commands means six actual volume units, so this example
would look like this, when using the C-command (except that it doesn't
sound so smooth):
         C-2 3C40 (volumes are decimal in this example)
         --- 0C34 <- -6
         --- 0C28 <- -6
         --- 0C40 <- +12

MIDI: This command sends a channel pressure (channel aftertouch) message
using the channel in which the most recent note was sent. The databyte
should be $00 - $7F.
         D#5 J000
         --- 0D40 <- channel aftertouch $40
         --- 0D00 <- to $00

Command E:  SYNTH/JMP      MIDI: pan control

When used with synth/hybrid instruments, this command triggers a jump
in the waveform command sequence. The databyte is the jump destination
(line number).

Example: C-4 4000 <- this should be synth/hybrid instrument
         --- 0000
         --- 0E05 <- cause a jump to line # 5

With MIDI-instruments, this command controls the stereo location of the
sound. The data byte can be 00 - 7F.

        left           mid            right
         |              |               |
        00             3F               7F

If you've used MED V2.00/V2.01 or NoiseTracker/SoundTracker, you may remember
that this command controls the low-pass filter. I think that it was
unnecessary to spend the command E only for controlling only a single
switch. See command F.

Command F:  TEMPO/MISC.    MIDI: tempo/misc.

Command F has many different actions depending on the data byte.

If the data byte is zero (00), this command causes the immediate jumping
to the next block on the playing sequence (or to the beginning of this
block if you're only playing the block). This function is better to
implement by making the block shorter (takes less memory).

Example:
         C-2 4F00 <- this is the last note of this block

When the data byte if 01 - F0, the command changes the tempo. This is the
primary tempo (length of the pause between timing pulses).

If the new tempo is 01 - 0A, it is compatible with Trackers, but now you
should use the command 9 instead of this command, as it's directly
Tracker-compatible (set the primary tempo to 33).

Example:
         E-3 6FF0 <- highest tempo
         --- 0000
         --- 0F0B <- slowest

Data bytes FF1 - FFF are reserved for special actions, some of them
are currently used:

FF1 causes the same note played actually twice. This way it's possible
to create fast rhythms.

         C-3 2FF1 is same as C-3 2000
                             C-3 2000 with double tempo

FF2 plays the note only once, but it is not started immediately:

         C-3 2FF2 is same as --- 0000
                             C-3 2000 with double tempo

FF3 works like FF1 except the note is played three times (very fast).

FF8 turns off the low-pass filter (power-LED will dim).

FF9 turns the low-pass filter on (bright LED).

FFA sends MIDI "hold pedal on"-command (works only with MIDI-instruments).

FFB sends MIDI "hold pedal off"-command (works only with MIDI-instruments).

FFD works only with Amiga-samples. It causes the pitch of the channel to
    be set to the pitch of the new note, but the new note is not replayed.

         C-1 2000 <- play note
         --- 0000
         C-2 2FFD <- don't replay the note, just set the pitch to C-2

FFE stops playing immediately. If you want to make a song which plays only
    once, put this command to the end of the song. This command can be
    easily entered: Click "Stop playing" while holding the Shift-key.

FFF Stops the note on the current track. Works with both Amiga- and MIDI-
    instruments. Nearly identical to "C00" on Amiga-samples, but because
    "C00" doesn't work with MIDI, I made this command.

About MMD:


Tempo (playing speed)

To understand this completely, you need to know some technical aspects.  MED
uses the CIAB timers for timing.  They give " timing pulses " that trigger the
MED's  player interrupt.  On each timing pulse effects are handled (e.g.
commands  1,2,3,4,5,D, hold/decay, synthsounds).   But, the new note is usually
 not played on each pulse.  The time between timing pulses can be changed
(primary  tempo).   The new note is usually played on every 6th pulse. But
this can be changed also (secondary tempo).   For example, if new note was
played on every 3rd pulse, the playing speed would be twice as fast.  This
doesn't affect the speed of effects.

Graphically:
pulse   \         PLAY NOTE
         the time between pulses can be changed (primary tempo)
pulse   /         DO EFFECTS  \
                               \
pulse             DO EFFECTS    \ The number of pulses between
                                / notes can be changed (4 in this example).
pulse             DO EFFECTS   /  This is the secondary tempo.
                              /
pulse             PLAY NOTE

MED V3.2 player commands/effects:

This  section  gives  information  about  commands/effects.  They are events
which affect the playing and they are handled by the MED player routine.

         C - 2  1 2 3 4
                  | \ |
     command number  \|
                      data byte

You insert the commands usually by hand (turn editing on, move cursor on the
command  numbers and type the numbers).  It may be a bit easier if you turn
off automatic-advance with Ctrl-A.

Here are the descriptions of each of the currently recognized commands:

Command 0:  ARPEGGIO       MIDI: controller value 

This command changes the pitch of the note quickly (6 times during 1 note).
It can be used to create "chords" or special effects. If you've listened
to music made with the C-64, you MUST have heard arpeggios. The pitch is
changed between 3 different pitches during one note:
         the 1st pitch is the pitch of the original note
         the 2nd pitch is the pitch of the original note + the 1st number
                of databyte halfsteps up
         the 3rd pitch is the pitch of the original note + the 2nd number
                of databyte halfsteps up

Note: 3rd pitch | 2nd pitch | 1st pitch | 3rd pitch | 2nd pitch | 1st pitch
      changed 6 times during note

It may be a bit difficult to understand, so here's an example:
You want to make an arpeggio which sounds like C-major chord.

The lowest pitch is C (C-2 in this example).
The second is E-2 (4 halfsteps higher than C-2).
The third is G-2 (7 halfsteps higher than C-2).

4 halfsteps from C-2 -+ 7 halfsteps from C-2
                      |/
That produces:  C-2 1047
                --- 0047
                --- 0047 and so on...

Data byte for a minor chord would be 37.

The arpeggios sound better with some instruments than others.

MIDI: See command 5 for a description.

Command 1:  SLIDE UP       MIDI: pitchbender up

This command slides up the pitch of the current track.

With Amiga samples:
         Decreases the period of the note the amount of databyte on each
         timing pulse. Sounds rather technical ??  Yes. The instructions for
         previous (before 2.10) versions of MED contained detailed
         instructions for making good-sounding slides with this command.
         Because this version now contains the easy automatic slide making
         (Amiga-T), I felt that these instructions are not necessary any more.
         If you use this function for special effects (not real slides) then
         you can experiment with the values for the databyte.
         Example:
                A-1 1000
                --- 0000
                --- 010F <- slide up a bit

With MIDI:
         This commands works very differently with MIDI. It actually
         "turns" the pitchbender 8 * databyte steps up on each timing pulse.
         Because the actual range of the pitchbender may be different with
         different MIDI-devices, you must find the right value by
         experimenting. There's also one thing you should know: when a new
         note is played, the pitchbender isn't reset automatically. To
         reset the pitchbender, you use this command with databyte zero.
         Example:
                G-2 L1FF <-turn it up very quick
                --- 0000
                --- 0100 <- then reset the pitchbender


Command 2:  SLIDE DOWN     MIDI: pitchbender down

It's just like command 1 except it slides
down.



Command 3:  PORTAMENTO     MIDI: set pitchbender

This is another slide command (on some old MED versions (2.00) this
was a vibrato command, see command 5 now). It can be used to
make perfect slides more easily. First an example:

         C-2 5000 <- played note C
         --- 0000
         E-2 5305 <- this note is not played!! Instead, slide target is set
         --- 0300    to G-2 and slide speed is 5
         --- 0300 <- when speed is zero, use the previous speed
         --- 0306 <- the speed can be changed, of course

This example would slide from C-2 to E-2, but the slide stops EXACTLY
when E-2 is reached. The remaining 3's have no effect. This command
is easier to handle with automatic slide making (see Edit/S1 above).

MIDI: By using this command, you can set the pitchbender to an absolute
value, instead of sliding as commands 1 and 2 do. The data byte is the
pitchbender value, expressed as a signed hexadecimal digit (a nightmare
to non-programmers!).
        00 = center position
        80 (-7F) = smallest value
        7F = largest value

Example:
        C-2 3000
        --- 037F <- pitchbender to max. value
        --- 0300 <- reset

Command 4:  VIBRATO        MIDI: modulation wheel 

The first number of the data byte is vibrato speed, the second is
vibrato depth.  If the numbers are zeros, the previous speed and depth
is used.

Example: F-215000
         --- 0000
         --- 0433 <- slow, not much depth
         --- 0437 <- more depth
         --- 043F <- full depth
         --- 0482 <- fast, not very deep

MIDI: This command affects the modulation wheel of the current channel.
      The data byte can be 00 - 7F. 00 = no modulation, 7F = maximum.
      Values 80 - FF are reserved for future expansion (and won't work).


Command 5:  OLD VIBRATO    MIDI: controller number

This is the old vibrato command (previously it was 3). The command 3 is
automatically converted to 5 when loading old MED songs. The pitch of
the note is changed between two values, databyte is the depth.

Example: A#1 J502
         --- 0507 increasing depth
         --- 0517 v
         --- 0527
         --- 0537

MIDI: Command 5 in conjunction with command 0 allows you to change any
controller of MIDI (command $Bx cc vv, where cc = controller number,
vv = value).

First you set the number of controller you want to change with command
5. Then you can select the value with command 0. Subsequent uses of
command 0 will affect the controller previously set with command 5.
Each channel has its own controller number. If the controller value is
$00, you can't use '00', because the command '000' means 'do nothing'.
Instead, you type '80'. Acceptable controller numbers and values are
$00 - $7F.

For example: (assuming instrument 3 is set to MIDI channel 1)
        C-2 3000
        --- 0507 <- controller $07, volume, according to MIDI standard
        D-2 307F <- set max. volume ($7F), command $B0 $07 $7F is sent
        --- 0000
        F-3 3001 <- small volume ($01)
        --- 055C <- select controller $5C (tremolo depth)
        G-4 3080 <- set to 0 (note: $80 = $00)

Command 8:  SET HOLD/DECAY MIDI: set hold only 

This command must be located on the same line with a note. The command
assigns the hold and decay values for the note (see above for description
about hold/decay).

                hold value
decay----------+|
               ||
Example: C-3 3824
         -|- 3000
         -|- 3000
         --- 0000

Command 9:  SEC. TEMPO     MIDI: no action 

This command sets the secondary tempo (the number of timing pulses/note).
The argument must be 01 - 20.

Example: --- 0903 <= double tempo
         --- 0000


Command A:  VOLUME SLIDE   MIDI: polyph aftertouch

This is the same as command D (for Noisetracker/Protracker compatibility).
However, please use D instead of this.

MIDI: Command A changes the polyphonic aftertouch of the most recent note.
The value should be $00 - $7F.
Example:
        C-3 4000
        --- 0A30 <- aftertouch $30
        --- 0000
        --- 0A00 <- aftertouch $00


Command B:  POSITION JUMP  MIDI: position jump

This command lets you make songs that have a beginning which is played
only once and then some part which is looped forever.  Position jump
causes the jump to play sequence number pointed by the data byte. If the
data byte is 0, then the playseq jumps to the first entry.

Example:	--- 0B02 <- start playing from play sequence number 3


Command C:  SET VOLUME     MIDI: set volume

You can override the default volume of the instrument with this command.
Example:
         A-3 4C20 <- played with volume 20

There are 65 volume levels (0 - 64), 0 = no sound, 64 = maximum. The
data byte of command C can be 00 - 64 or 00 - 40 (decimal or hex).
Non-programmers will probably want to use the decimal numbers. See
(Play/[Dec/Hex]). If you want the playroutine to have maximum performance,
then use hex values.

It's also possible to change the volume of already played note.  Note
that it doesn't work with MIDI-instruments.

Example:
         A-3 4000
         --- 0000
         --- 0C10 <- volume to 10

It's possible to change the default volume of an instrument (MED V2 and
later). The value must be between 80 and C0 (always hex!). Value $80 = volume
0, and $C0 = 64. Note: This can cause trouble in multi-modules, because the
set of instruments (and their default volumes) are common.  I recommend that
you change the default volume only on non-multi-modules.

Command D:  VOLUME SLIDE   MIDI: channel pressure 

You can increase/decrease volume smoothly with this command.  The data
byte is divided in two parts:

         C-3 3D01
               ||
               |+- Amount of decresdendo
               +-- Amount of crescendo

If crescendo is zero, then the decrescendo is performed. Otherwise only
crescendo is performed.

Example:
         C-2 3C40
         --- 0D01 <- a bit more quiet
         --- 0D01 <- even more
         --- 0D20 <- and crescendo back to original

One unit in these commands means six actual volume units, so this example
would look like this, when using the C-command (except that it doesn't
sound so smooth):
         C-2 3C40 (volumes are decimal in this example)
         --- 0C34 <- -6
         --- 0C28 <- -6
         --- 0C40 <- +12

MIDI: This command sends a channel pressure (channel aftertouch) message
using the channel in which the most recent note was sent. The databyte
should be $00 - $7F.
         D#5 J000
         --- 0D40 <- channel aftertouch $40
         --- 0D00 <- to $00

Command E:  SYNTH/JMP      MIDI: pan control

When used with synth/hybrid instruments, this command triggers a jump
in the waveform command sequence. The databyte is the jump destination
(line number).

Example: C-4 4000 <- this should be synth/hybrid instrument
         --- 0000
         --- 0E05 <- cause a jump to line # 5

With MIDI-instruments, this command controls the stereo location of the
sound. The data byte can be 00 - 7F.

        left           mid            right
         |              |               |
        00             3F               7F

If you've used MED V2.00/V2.01 or NoiseTracker/SoundTracker, you may remember
that this command controls the low-pass filter. I think that it was
unnecessary to spend the command E only for controlling only a single
switch. See command F.

Command F:  TEMPO/MISC.    MIDI: tempo/misc.

Command F has many different actions depending on the data byte.

If the data byte is zero (00), this command causes the immediate jumping
to the next block on the playing sequence (or to the beginning of this
block if you're only playing the block). This function is better to
implement by making the block shorter (takes less memory).

Example:
         C-2 4F00 <- this is the last note of this block

When the data byte if 01 - F0, the command changes the tempo. This is the
primary tempo (length of the pause between timing pulses).

If the new tempo is 01 - 0A, it is compatible with Trackers, but now you
should use the command 9 instead of this command, as it's directly
Tracker-compatible (set the primary tempo to 33).

Example:
         E-3 6FF0 <- highest tempo
         --- 0000
         --- 0F0B <- slowest

Data bytes FF1 - FFF are reserved for special actions, some of them
are currently used:

FF1 causes the same note played actually twice. This way it's possible
to create fast rhythms.

         C-3 2FF1 is same as C-3 2000
                             C-3 2000 with double tempo

FF2 plays the note only once, but it is not started immediately:

         C-3 2FF2 is same as --- 0000
                             C-3 2000 with double tempo

FF3 works like FF1 except the note is played three times (very fast).

FF8 turns off the low-pass filter (power-LED will dim).

FF9 turns the low-pass filter on (bright LED).

FFA sends MIDI "hold pedal on"-command (works only with MIDI-instruments).

FFB sends MIDI "hold pedal off"-command (works only with MIDI-instruments).

FFD works only with Amiga-samples. It causes the pitch of the channel to
    be set to the pitch of the new note, but the new note is not replayed.

         C-1 2000 <- play note
         --- 0000
         C-2 2FFD <- don't replay the note, just set the pitch to C-2

FFE stops playing immediately. If you want to make a song which plays only
    once, put this command to the end of the song. This command can be
    easily entered: Click "Stop playing" while holding the Shift-key.

FFF Stops the note on the current track. Works with both Amiga- and MIDI-
    instruments. Nearly identical to "C00" on Amiga-samples, but because
    "C00" doesn't work with MIDI, I made this command.

Tempo (playing speed)

To understand this completely, you need to know some technical aspects.  MED
uses the CIAB timers for timing.  They give " timing pulses " that trigger the
MED's  player interrupt.  On each timing pulse effects are handled (e.g.
commands  1,2,3,4,5,D, hold/decay, synthsounds).   But, the new note is usually
 not played on each pulse.  The time between timing pulses can be changed
(primary  tempo).   The new note is usually played on every 6th pulse. But
this can be changed also (secondary tempo).   For example, if new note was
played on every 3rd pulse, the playing speed would be twice as fast.  This
doesn't affect the speed of effects.

Graphically:
pulse   \         PLAY NOTE
         the time between pulses can be changed (primary tempo)
pulse   /         DO EFFECTS  \
                               \
pulse             DO EFFECTS    \ The number of pulses between
                                / notes can be changed (4 in this example).
pulse             DO EFFECTS   /  This is the secondary tempo.
                              /
pulse             PLAY NOTE

MED V3.2 player commands/effects:

This  section  gives  information  about  commands/effects.  They are events
which affect the playing and they are handled by the MED player routine.

         C - 2  1 2 3 4
                  | \ |
     command number  \|
                      data byte

You insert the commands usually by hand (turn editing on, move cursor on the
command  numbers and type the numbers).  It may be a bit easier if you turn
off automatic-advance with Ctrl-A.

Here are the descriptions of each of the currently recognized commands:

Command 0:  ARPEGGIO       MIDI: controller value 

This command changes the pitch of the note quickly (6 times during 1 note).
It can be used to create "chords" or special effects. If you've listened
to music made with the C-64, you MUST have heard arpeggios. The pitch is
changed between 3 different pitches during one note:
         the 1st pitch is the pitch of the original note
         the 2nd pitch is the pitch of the original note + the 1st number
                of databyte halfsteps up
         the 3rd pitch is the pitch of the original note + the 2nd number
                of databyte halfsteps up

Note: 3rd pitch | 2nd pitch | 1st pitch | 3rd pitch | 2nd pitch | 1st pitch
      changed 6 times during note

It may be a bit difficult to understand, so here's an example:
You want to make an arpeggio which sounds like C-major chord.

The lowest pitch is C (C-2 in this example).
The second is E-2 (4 halfsteps higher than C-2).
The third is G-2 (7 halfsteps higher than C-2).

4 halfsteps from C-2 -+ 7 halfsteps from C-2
                      |/
That produces:  C-2 1047
                --- 0047
                --- 0047 and so on...

Data byte for a minor chord would be 37.

The arpeggios sound better with some instruments than others.

MIDI: See command 5 for a description.

Command 1:  SLIDE UP       MIDI: pitchbender up

This command slides up the pitch of the current track.

With Amiga samples:
         Decreases the period of the note the amount of databyte on each
         timing pulse. Sounds rather technical ??  Yes. The instructions for
         previous (before 2.10) versions of MED contained detailed
         instructions for making good-sounding slides with this command.
         Because this version now contains the easy automatic slide making
         (Amiga-T), I felt that these instructions are not necessary any more.
         If you use this function for special effects (not real slides) then
         you can experiment with the values for the databyte.
         Example:
                A-1 1000
                --- 0000
                --- 010F <- slide up a bit

With MIDI:
         This commands works very differently with MIDI. It actually
         "turns" the pitchbender 8 * databyte steps up on each timing pulse.
         Because the actual range of the pitchbender may be different with
         different MIDI-devices, you must find the right value by
         experimenting. There's also one thing you should know: when a new
         note is played, the pitchbender isn't reset automatically. To
         reset the pitchbender, you use this command with databyte zero.
         Example:
                G-2 L1FF <-turn it up very quick
                --- 0000
                --- 0100 <- then reset the pitchbender


Command 2:  SLIDE DOWN     MIDI: pitchbender down

It's just like command 1 except it slides
down.



Command 3:  PORTAMENTO     MIDI: set pitchbender

This is another slide command (on some old MED versions (2.00) this
was a vibrato command, see command 5 now). It can be used to
make perfect slides more easily. First an example:

         C-2 5000 <- played note C
         --- 0000
         E-2 5305 <- this note is not played!! Instead, slide target is set
         --- 0300    to G-2 and slide speed is 5
         --- 0300 <- when speed is zero, use the previous speed
         --- 0306 <- the speed can be changed, of course

This example would slide from C-2 to E-2, but the slide stops EXACTLY
when E-2 is reached. The remaining 3's have no effect. This command
is easier to handle with automatic slide making (see Edit/S1 above).

MIDI: By using this command, you can set the pitchbender to an absolute
value, instead of sliding as commands 1 and 2 do. The data byte is the
pitchbender value, expressed as a signed hexadecimal digit (a nightmare
to non-programmers!).
        00 = center position
        80 (-7F) = smallest value
        7F = largest value

Example:
        C-2 3000
        --- 037F <- pitchbender to max. value
        --- 0300 <- reset

Command 4:  VIBRATO        MIDI: modulation wheel 

The first number of the data byte is vibrato speed, the second is
vibrato depth.  If the numbers are zeros, the previous speed and depth
is used.

Example: F-215000
         --- 0000
         --- 0433 <- slow, not much depth
         --- 0437 <- more depth
         --- 043F <- full depth
         --- 0482 <- fast, not very deep

MIDI: This command affects the modulation wheel of the current channel.
      The data byte can be 00 - 7F. 00 = no modulation, 7F = maximum.
      Values 80 - FF are reserved for future expansion (and won't work).


Command 5:  OLD VIBRATO    MIDI: controller number

This is the old vibrato command (previously it was 3). The command 3 is
automatically converted to 5 when loading old MED songs. The pitch of
the note is changed between two values, databyte is the depth.

Example: A#1 J502
         --- 0507 increasing depth
         --- 0517 v
         --- 0527
         --- 0537

MIDI: Command 5 in conjunction with command 0 allows you to change any
controller of MIDI (command $Bx cc vv, where cc = controller number,
vv = value).

First you set the number of controller you want to change with command
5. Then you can select the value with command 0. Subsequent uses of
command 0 will affect the controller previously set with command 5.
Each channel has its own controller number. If the controller value is
$00, you can't use '00', because the command '000' means 'do nothing'.
Instead, you type '80'. Acceptable controller numbers and values are
$00 - $7F.

For example: (assuming instrument 3 is set to MIDI channel 1)
        C-2 3000
        --- 0507 <- controller $07, volume, according to MIDI standard
        D-2 307F <- set max. volume ($7F), command $B0 $07 $7F is sent
        --- 0000
        F-3 3001 <- small volume ($01)
        --- 055C <- select controller $5C (tremolo depth)
        G-4 3080 <- set to 0 (note: $80 = $00)

Command 8:  SET HOLD/DECAY MIDI: set hold only 

This command must be located on the same line with a note. The command
assigns the hold and decay values for the note (see above for description
about hold/decay).

                hold value
decay----------+|
               ||
Example: C-3 3824
         -|- 3000
         -|- 3000
         --- 0000

Command 9:  SEC. TEMPO     MIDI: no action 

This command sets the secondary tempo (the number of timing pulses/note).
The argument must be 01 - 20.

Example: --- 0903 <= double tempo
         --- 0000


Command A:  VOLUME SLIDE   MIDI: polyph aftertouch

This is the same as command D (for Noisetracker/Protracker compatibility).
However, please use D instead of this.

MIDI: Command A changes the polyphonic aftertouch of the most recent note.
The value should be $00 - $7F.
Example:
        C-3 4000
        --- 0A30 <- aftertouch $30
        --- 0000
        --- 0A00 <- aftertouch $00


Command B:  POSITION JUMP  MIDI: position jump

This command lets you make songs that have a beginning which is played
only once and then some part which is looped forever.  Position jump
causes the jump to play sequence number pointed by the data byte. If the
data byte is 0, then the playseq jumps to the first entry.

Example:	--- 0B02 <- start playing from play sequence number 3


Command C:  SET VOLUME     MIDI: set volume

You can override the default volume of the instrument with this command.
Example:
         A-3 4C20 <- played with volume 20

There are 65 volume levels (0 - 64), 0 = no sound, 64 = maximum. The
data byte of command C can be 00 - 64 or 00 - 40 (decimal or hex).
Non-programmers will probably want to use the decimal numbers. See
(Play/[Dec/Hex]). If you want the playroutine to have maximum performance,
then use hex values.

It's also possible to change the volume of already played note.  Note
that it doesn't work with MIDI-instruments.

Example:
         A-3 4000
         --- 0000
         --- 0C10 <- volume to 10

It's possible to change the default volume of an instrument (MED V2 and
later). The value must be between 80 and C0 (always hex!). Value $80 = volume
0, and $C0 = 64. Note: This can cause trouble in multi-modules, because the
set of instruments (and their default volumes) are common.  I recommend that
you change the default volume only on non-multi-modules.

Command D:  VOLUME SLIDE   MIDI: channel pressure 

You can increase/decrease volume smoothly with this command.  The data
byte is divided in two parts:

         C-3 3D01
               ||
               |+- Amount of decresdendo
               +-- Amount of crescendo

If crescendo is zero, then the decrescendo is performed. Otherwise only
crescendo is performed.

Example:
         C-2 3C40
         --- 0D01 <- a bit more quiet
         --- 0D01 <- even more
         --- 0D20 <- and crescendo back to original

One unit in these commands means six actual volume units, so this example
would look like this, when using the C-command (except that it doesn't
sound so smooth):
         C-2 3C40 (volumes are decimal in this example)
         --- 0C34 <- -6
         --- 0C28 <- -6
         --- 0C40 <- +12

MIDI: This command sends a channel pressure (channel aftertouch) message
using the channel in which the most recent note was sent. The databyte
should be $00 - $7F.
         D#5 J000
         --- 0D40 <- channel aftertouch $40
         --- 0D00 <- to $00

Command E:  SYNTH/JMP      MIDI: pan control

When used with synth/hybrid instruments, this command triggers a jump
in the waveform command sequence. The databyte is the jump destination
(line number).

Example: C-4 4000 <- this should be synth/hybrid instrument
         --- 0000
         --- 0E05 <- cause a jump to line # 5

With MIDI-instruments, this command controls the stereo location of the
sound. The data byte can be 00 - 7F.

        left           mid            right
         |              |               |
        00             3F               7F

If you've used MED V2.00/V2.01 or NoiseTracker/SoundTracker, you may remember
that this command controls the low-pass filter. I think that it was
unnecessary to spend the command E only for controlling only a single
switch. See command F.

Command F:  TEMPO/MISC.    MIDI: tempo/misc.

Command F has many different actions depending on the data byte.

If the data byte is zero (00), this command causes the immediate jumping
to the next block on the playing sequence (or to the beginning of this
block if you're only playing the block). This function is better to
implement by making the block shorter (takes less memory).

Example:
         C-2 4F00 <- this is the last note of this block

When the data byte if 01 - F0, the command changes the tempo. This is the
primary tempo (length of the pause between timing pulses).

If the new tempo is 01 - 0A, it is compatible with Trackers, but now you
should use the command 9 instead of this command, as it's directly
Tracker-compatible (set the primary tempo to 33).

Example:
         E-3 6FF0 <- highest tempo
         --- 0000
         --- 0F0B <- slowest

Data bytes FF1 - FFF are reserved for special actions, some of them
are currently used:

FF1 causes the same note played actually twice. This way it's possible
to create fast rhythms.

         C-3 2FF1 is same as C-3 2000
                             C-3 2000 with double tempo

FF2 plays the note only once, but it is not started immediately:

         C-3 2FF2 is same as --- 0000
                             C-3 2000 with double tempo

FF3 works like FF1 except the note is played three times (very fast).

FF8 turns off the low-pass filter (power-LED will dim).

FF9 turns the low-pass filter on (bright LED).

FFA sends MIDI "hold pedal on"-command (works only with MIDI-instruments).

FFB sends MIDI "hold pedal off"-command (works only with MIDI-instruments).

FFD works only with Amiga-samples. It causes the pitch of the channel to
    be set to the pitch of the new note, but the new note is not replayed.

         C-1 2000 <- play note
         --- 0000
         C-2 2FFD <- don't replay the note, just set the pitch to C-2

FFE stops playing immediately. If you want to make a song which plays only
    once, put this command to the end of the song. This command can be
    easily entered: Click "Stop playing" while holding the Shift-key.

FFF Stops the note on the current track. Works with both Amiga- and MIDI-
    instruments. Nearly identical to "C00" on Amiga-samples, but because
    "C00" doesn't work with MIDI, I made this command.



                EFFECT COMMANDS
                ---------------

 Effect commands on Protracker should
 be compatible with all other trackers.

 0 - None/Arpeggio      8 - * NOT USED *
 1 - Portamento Up      9 - SampleOffset
 2 - Portamento Down    A - VolumeSlide
 3 - TonePortamento     B - PositionJump
 4 - Vibrato                   C - Set Volume
 5 - ToneP + VolSlide   D - PatternBreak
 6 - Vibra + VolSlide    E - Misc. Cmds
 7 - Tremolo                   F - Set Speed

                E - COMMANDS
                ------------

 The E command has been altered to contain more commands than one.

 E0- Filter On/Off           E8- * NOT USED *
 E1- Fineslide Up            E9- Retrig Note
 E2- Fineslide Down        EA- FineVol Up
 E3- Glissando Control  EB- FineVol Down
 E4- Vibrato Control      EC- NoteCut
 E5- Set Finetune            ED- NoteDelay
 E6- Patternloop             EE- PatternDelay
 E7- Tremolo Control      EF- Invert Loop



 Cmd 0. Arpeggio [Range:$0-$F/$0-$F]
 -----------------------------------
 Usage: $0 + 1st halfnote add
           + 2nd halfnote add

 Arpeggio is used to simulate chords. This is done by rapidly changing the
 pitch between 3(or 2) different notes. It sounds very noisy and grainy on
 most samples, but ok on monotone ones.

 Example: C-300047  C-major chord: (C+E+G  or C+4+7 halfnotes)

          C-300037  C-minor chord: (C+D#+G or C+3+7 halfnotes)



 Cmd 1. Portamento up [Speed:$00-$FF]
 ------------------------------------
 Usage: $1 + portamento speed

 Portamento up will simply slide the sample pitch up. You can NOT slide
 higher than B-3! (Period 113)

 Example: C-300103  1 is the command, 3 is the portamentospeed.

 NOTE: The portamento will be called as many times as the speed of the song.
 This means that you'll sometimes have trouble sliding accurately. If you
 change the speed without changing the sliderates, it will sound bad...



 Cmd 2. Portamento down [Speed:$00-FF]
 -------------------------------------
 Usage: $2 + portamento speed

 Just like command 1, except that this one slides the pitch down instead.
 (Adds to the period).

 You can NOT slide lower than C-1! (Period 856)

 Example: C-300203  2 is the command, 3 is the portamentospeed.



 Cmd 3. Tone-portamento [Speed:$00-$FF]
 --------------------------------------
 Usage: Dest-note + $3 + slidespeed

 This command will automatically slide from the old note to the new.
 You don't have to worry about which direction to slide, you need only set
 the slide speed. To keep on sliding, just select the command $3 + 00.

 Example: A-200000  First play a note.
                 C-300305  C-3 is the note to slide to, 3 the command,
                    and 5 the speed.



 Cmd 4. Vibrato [Rate:$0-$F,Dpth:$0-$F]
 --------------------------------------
 Usage: $4 + vibratorate + vibratodepth

 Example: C-300481  4 is the command, 8 is the speed of the vibrato,
                    and 1 is the depth of the vibrato.

 To keep on vibrating, just select the command $4 + 00. To change the
 vibrato, you can alter the rate, depth or both. Use command E4- to
 change the vibrato-waveform.



 Cmd 5. ToneP + Volsl [Spd:$0-$F/$0-$F]
 --------------------------------------
 Usage: $5 + upspeed + downspeed

This command will continue the current tone portamento and slide the
volume at the same time. Compatible with Noisetracker 2.0.

 Example: C-300503  3 is the speed to turn the volume down.

                 C-300540  4 is the speed to slide it up.



 Cmd 6. Vibra + Volsl [Spd:$0-$F/$0-$F]
 --------------------------------------
 Usage: $6 + upspeed + downspeed

 This command will continue the current vibrato and slide the volume at the
 same time. Compatible with Noisetracker 2.0.

 Example: C-300605  5 is the speed to turn the volume down.

                 C-300640  4 is the speed to slide it up.



 Cmd 7. Tremolo [Rate:$0-$F,Dpth:$0-$F]
 --------------------------------------
 Usage: $7 + tremolorate + tremolodepth

 Tremolo vibrates the volume.

 Example: C-300794  7 is the command, 9 is the speed of the tremolo,
                    and 4 is the depth of the tremolo.

 To keep on tremoling, just select the command $7 + 00. To change the
 tremolo, you can alter the rate, depth or both. Use command E7- to
 change the tremolo-waveform.



 Cmd 9. Set SampleOffset [Offs:$00-$FF]
 --------------------------------------
 Usage: $9 + Sampleoffset

 This command will play from a chosen position in the sample, and not from
 the beginning. The two numbers equal the two first numbers in the length
 of the sample. Handy for speech samples.

 Example: C-300923  Play sample from offset $2300.



 Cmd A. Volumeslide [Speed:$0-$F/$0-$F]
 --------------------------------------
 Usage: $A + upspeed + downspeed

 Example: C-300A05  5 is the speed to turn the volume down.

                 C-300A40  4 is the speed to slide it up.

 NOTE: The slide will be called as many times as the speed of the song.
 The slower the song, the more the volume will be changed on each note.



 Cmd B. Position-jump [Pos:$00-$7F]
 ----------------------------------
 Usage: $B + position to continue at

 Example: C-300B01  B is the command, 1 is the position to
                    restart the song at.

 This command will also perform a pattern-break (see 2 pages below).

 You can use this command instead of restart as on Noisetracker, but you
 must enter the position in hex!



 Cmd C. Set volume [Volume:$00-$40]
 ----------------------------------
 Usage: $C + new volume

 Well, this old familiar command will set the current volume to your own
 selected. The highest volume is $40. All volumes are represented in hex.
 (Programmers do it in hex, you know!)

 Example: C-300C10  C is the command, 10 is the volume (16 decimal).



 Cmd D. Pattern-break [Pattern-pos:00-63, decimal]
 -------------------------------------------------
 Usage: $D + pattern-position

 This command just jumps to the next song-position, and continues play
 from the patternposition you specify.

 Example: C-300D00  Jump to the next song-position and continue play
                    from patternposition 00.
           Or: C-300D32  Jump to the next song-position and continue play
                    from patternposition 32 instead.



 Cmd E0. Set filter [Range:$0-$1]
 --------------------------------
 Usage: $E0 + filter-status

 This command jerks around with the sound-filter on some A500 + A2000.
 All other Amiga-users should keep out of playing around with it.

 Example: C-300E01  disconnects filter (turns power LED off)

                 C-300E00  connects filter (turns power LED on)



 Cmd E1. Fineslide up [Range:$0-$F]
 ----------------------------------
 Usage: $E1 + value

 This command works just like the normal portamento up, except that
 it only slides up once. It does not continue sliding during the length
 of the note.

 Example: C-300E11  Slide up 1 at the beginning of the note.

 (Great for creating chorus effects)



 Cmd E2. Fineslide down [Range:$0-$F]
 ------------------------------------
 Usage: $E2 + value

 This command works just like the normal portamento down, except that
 it only slides down once. It does not continue sliding during the length
 of the note.

 Example: C-300E26  Slide up 6 at the beginning of the note.



 Cmd E3. Glissando Ctrl [Range:$0-$1]
 ------------------------------------
 Usage: $E3 + Glissando-Status

Glissando must be used with the tone-portamento command. When glissando
is activated, tone portamento will slide a half note at a time, instead
of a straight slide.

 Example: C-300E31  Turn Glissando on.

                 C-300E30  Turn Glissando off.



 Cmd E4. Set vibrato waveform [Range:$0-$3]
 ------------------------------------------
 Usage: $E4 + vibrato-waveform

 Example: C-300E40  Set sine(default)
                 E44  Don't retrig WF
                 C-300E41  Set Ramp Down
                 E45  Don't retrig WF
                 C-300E42  Set Squarewave
                 E46  Don't retrig WF
                 C-300E43  Set Random
                 E47  Don't retrig WF



 Cmd E5. Set finetune [Range:$0-$F]
 ----------------------------------
 Usage: $E5 + finetune-value

 Example: C-300E51  Set finetune to 1.

 Use these tables to figure out the finetune-value.

 Finetune: +7 +6 +5 +4 +3 +2 +1  0
      Value:  7  6  5  4  3  2  1  0

 Finetune: -1 -2 -3 -4 -5 -6 -7 -8
      Value:  F  E  D  C  B  A  9  8



 Cmd E6. PatternLoop [Loops:$0-$F]
 ----------------------------------
 Usage: $E6 + number of loops

 This command will loop a part of a pattern.

 Example: C-300E60  Set loopstart.

                 C-300E63  Jump to loop 3 times before playing on.



 Cmd E7. Set tremolo waveform [Range:$0-$3]
 ------------------------------------------
 Usage: $E7 + tremolo-waveform

 Example: C-300E70  Set sine (default)
                 E74  Don't retrig WF
                 C-300E71  Set Ramp Down
                 E75  Don't retrig WF
                 C-300E72  Set Squarewave
                 E76  Don't retrig WF
                 C-300E73  Set Random
                 E77  Don't retrig WF



 Cmd E9. Retrig note [Value:$0-$F]
 -------------------------------
 Usage: $E9 + Tick to Retrig note at.

 This command will retrig the same note before playing the next. Where to
 retrig depends on the speed of the song. If you retrig with 1 in speed 6
 that note will be trigged 6 times in one note slot. Retrig on hi-hats!

 Example: C-300F06  Set speed to 6.
                 C-300E93  Retrig at tick 3 out of 6.



 Cmd EA. FineVolsl up [Range:$0-$F]
 ----------------------------------
 Usage: $EA + value

 This command works just like the normal volumeslide up, except that
 it only slides up once. It does not continue sliding during the length
 of the note.

 Example: C-300EA3  Slide volume up 1 at the beginning of the note.



 Cmd EB. FineVolsl down [Range:$0-$F]
 ------------------------------------
 Usage: $EB + value

 This command works just like the normal volumeslide down, except that
 it only slides down once. It does not continue sliding during the length
 of the note.

 Example: C-300EB6  Slide volume down 6 at the beginning of the note.



 Cmd EC. Cut note [Value:$0-$F]
 ------------------------------
 Usage: $EC + Tick to cut note at.

 This command will cut the note at the selected tick, creating
 extremely short notes.

 Example: C-300F06  Set speed to 6.
                 C-300EC3  Cut at tick 3 out of 6.

 Note that the note is not really cut, the volume is just turned down.



 Cmd ED. NoteDelay [Value:$0-$F]
 -------------------------------
 Usage: $ED + ticks to delay note.

 This command will delay the note to the selected tick.

 Example: C-300F06  Set speed to 6.
                 C-300ED3  Play note at tick 3 out of 6.

 If you use ED0, the note will be delayed a little anyway.
 You can play the same note on two channels, delay one, and get a
 nice flanging effect.



 Cmd EE. PatternDelay [Notes:$0-$F]
 ----------------------------------
 Usage: $EE + notes to delay pattern.

 This command will delay the pattern the selected numbers of notes.

 Example: C-300EE8  Delay pattern 8 notes before playing on.

 All other effects are still active when the pattern is being delayed.



 Cmd EF. Invert Loop [Speed:$0-$F]
 ---------------------------------
 Usage: $EF + Invertspeed

 This command will need a short loop ($10,20,40,80 etc. bytes) to work.
 It will invert the loop byte by byte. Sounds better than funkrepeat...

 Example: C-300EF8 Set invspeed to 8.

 To turn off the inverting, set invspeed to 0, or press ctrl + Z.

 This effect will trash the sample, and will probably be removed in
 the next version.



 Cmd F. Set speed [Speed:$00-$FF]
 --------------------------------
 Usage: $F + speed

 This command will set the speed of the song.

Vblank: Range 01-FF - Normal timing

      CIA: Range 01-1F - Set vblank speeds
                      with CIA timing.
      CIA: Range 20-FF - Set BPM speeds,
                      range 32-255.
    Both: Range 00    - STOP song.

ABOUT: THE SYNTHETIC SOUND EDITOR (USED WITH THE AMIGA MODULES)
		
This is the editor, which is used to design simple pieces of waveforms and
to " program " the volume and pitch altering sequences.  Synthetic sounds
don't take much memory (that's the main advantage of them).  They can use
the whole 5-octave range.  Although they are quite simple, they usually
sound quite "cool" (and remind me of the good old C-64).

Getting started:

First load MED, select the Instr-panel, click the Synth-gadget to
initialize a  new synthsound.  Then click the Synth-display selection
gadget to display the synthsound  editor.  Please turn editing off. 
You can play the current sound with keyboard, like ordinary samples.

Waveform editing:

There are two waveform displays, the left one is the "master waveform
display" and the right one is for intermediate editing (it also serves as a
copy  buffer).   Between the waveform displays are some gadgets, that are
used for transferring waveforms between displays.

First, there are two copy gadgets.  If you press the left copy gadget, the
right waveform will be copied to the left one (and vice versa).  Gadget "<-
EXCHANGE ->" exchanges the waveforms on the left and right.  "<- MIX" mixes
the left waveform to the right waveform.  

It is a powerful tool that can be needed quite often.  "<-ADD" is
similar to the mix, but it doesn't produce any average between the
waveforms (= waveforms, from now on).  The waveforms are simply added
together.  It's possible, that the waveforms exceed the upper and lower
limits (in that case, they are truncated).

Two "<- EDIT" "EDIT->"  gadgets allow you to select either of the
displayed waveforms as a current waveform, which is then used in some
editing functions.  Sometimes they're automatically set (when you draw
the waveform with mouse, for example).   "UNDO" undoes your last
editing operation.  It can be quite useful.

"RANGE  ALL"  selects the current  waveform, so that any editing
operations affect the whole waveform.

Freehand drawing:

A very simple way to create waveforms is to draw them from scratch.  This is
easily done.   Just press the left mouse button and draw.  There are two
drawing modes.  The default is "pixel".  The other is "line".  This can be
used for drawing straight lines.  There's also a mix-mode, that works in
both  "line"  and  "pixel" -mode.  It mixes the drawed pixels or lines with
the already existing data.  Mode-selection gadgets are located below "RANGE ALL".

Waveform length:

Each waveform in synthsound can be 2 - 128 bytes long (it must be even,
though).  The shorter the waveform, the higher the pitch (it also depends
on the waveform itself).  Usually, to make the pitches compatible with other
instruments, you should use length 2, 4, 8, 16, 32, 64 or 128.  The length
can be changed with "LEN:" gadgets below the left waveform, by typing in
a new value or by clicking the single-step gadgets.

Multiple waveforms:

Each synthsound can consist of more than one waveform (the maximum is actually
64). On the left, below the left waveform, there's a set of gadgets:

curr. waveform #
   |
   0  < > / 00
      |/    \|
next/prev    number of the last waveform

The arrow gadgets select the next/previous waveform.  As this is an
operation that is needed often, there are keyboard shortcuts:
	Alt-cursor left  = previous
	Alt-cursor right = next

There are two Add gadgets that allow you to increase the number of
waveforms.
"Last" adds a new waveform after the last waveform.
"Here" inserts a new waveform here, and shifts the others.

Del gadgets:
"Last" deletes the last waveform.
"Here" deletes the current waveform.

Preset waveforms:

There are some simple, often needed preset waveforms available at a
single click.   First, make sure, that the destination waveform is the
current waveform (selected with the EDIT  <-/->  gadgets).   Then, just
click the preset waveform icon.  The icons are located at the bottom of
the editor.

The available waveforms are: sine, saw up/down, pulse, random and triangle.
The CLR-gadget clears the current waveform.
The ALL-gadget clears the whole synthsound (so be careful..)

Range operations:

These are some basic operations, that are applied to the selected range
(highlighted  white).  You can select the range by dragging the mouse over
the waveform with the right mouse button down.  You can select the whole
waveform by clicking  "RANGE  ALL".  The Range start/Range end gadgets
at the lower right corner of the synthsound editor can be used to make
small corrections to the area.

When there's no range selected, there's a single horizontal white line.
This is the cursor.  Some editing operations need it.  The cursor
position can be set by clicking the right mouse button on the waveform
area.  There are also three narrow gadgets (on the left of the preset
waveform gadgets) for positioning the cursor:

cursor to     cursor to end
start   |     |
	<  +  >
           |
      cursor to the middle (of the waveform)

On the middle of the screen, there's a word "RNG", followed by a strip of
gadgets:
	RNG  Cut  Copy  Paste  Clr  Dbl  Rev  <  >

Cut- (works only on left waveform). It "cuts" the selected area, which
is then moved to the right waveform display.

Copy- copies the selected range to the right waveform, but doesn't cut it away.

Paste- copies the contents of the right waveform to the position pointed
by the cursor.

Clr-  clears the range.
Dbl-  "doubles" the range, making it play one octave higher.
Rev-  reverses the range.
< or >	shift the ranged data to left or right.

There are two other editing operations: stretch and volume change.

Stretch allows you to stretch a point of the waveform towards some other point
(understand?? no?? then try this:)
For example, select a sine wave.  Then position the cursor on the middle of
the waveform (there's a gadget for this purpose, see above).  Now activate
the  "STRETCH:"-gadget (on the left lower corner of the synthsound ed).
Type in the amount of moving, e.g.  32.  This should demonstrate it...  If
the number you type in is negative, the point is stretched to left.

Volume change allows you to increase/decrease the volume of selected range:
First, select a range.  Then activate the "VOL.CHG:"-gadget.  Now you must
enter the amount of volume change (in %'s).  For example, to halve the
volume,  you should  type 50.  If you want to double the volume, type 200.
The volume will be changed when you press Return.

Transformation:

This is quite a powerful feature.  It allows you to change a waveform to
another smoothly (by creating the waveforms between them). 

Demonstration: Allocate 9 new waveforms (click Add/Last 9 times).  Now
you have 10 waveforms. Move  to  waveform  00, and select a pulse
waveform, for example.  Then click Transform: Start to mark the
beginning of transformation range.  Move to waveform 09 (the last one).
 Put here a sine waveform.  Click Transform:  Do, and the magic is
done.  If you view the waveforms 01 - 08, you'll notice that there's 
now a smooth transition from the pulse wave to the sine wave.

PLEASE NOTE: AGAIN ALL OF THIS DATA AND INFORMATION (WHICH FOLLOWS)
CONCERNING 'THE PROGRAMMING LANGUAGE' DEALS WITH THE AMIGA AND NOT WITH
THE IIGS SPECIFICALLY.
---------------------------------------------------------------------------

THE PROGRAMMING LANGUAGE
========================

Note: please read this section carefully before experimenting, because
you can lock up your machine with the synthsound programming language
(as with any other language)

The  programming language is used for controlling the
volume/pitch/vibrato/ waveforms/arpeggio/etc...    of  the  synthsound.
  It  consist  of  simple keywords, of which some have an argument.

The programming is done using two lists of commands/numbers.  These lists
are displayed through a small window below the right waveform display.

First there are line numbers in decimal and hex (two leftmost columns).
The  middle column contains the volume sequence, while the rightmost is the
waveform/pitch sequence.

       volume ctrl seq
          |
line      |    waveform ctrl seq
  |       |    |
  00 00   40   00
  01 01  END  END

These lists are both  max.  127 ($7F) entries long.  The list is always
terminated  with  "END"  instruction (it's automatically there so you don't
have  to do that).  You can scroll the list with cursor up/down -keys.  The
cursor  can be moved horizontally using the cursor left/right -keys.  There
are  six  possible cursor locations  (3  for  both lists).  When entering
commands, the cursor should  be on the leftmost position of that list.
Values are entered by pointing the cursor over the value to be changed and
entering a new value.  Commands and numbers are entered with keyboard.  You
can   insert  entries  to  the  list  with  the  Return-key  (or clicking
Ins-gadget),  and delete using Del (or clicking Del-gadget).  JMP commands
are renumbered when entries are inserted or deleted.

ALL NUMBERS IN THE SEQUENCE LISTS ARE HEXADECIMAL.
Just remember this, and you have no problems (fingers crossed :^)
Also, the editing (Esc) must be on before the lists can be changed.

First, let's examine some example sequences:

This is a volume sequence:
	
	00  40 <= set initial volume to 64 (hex $40, did you already forget?)
	01 CHD <= command, that means "Set volume change down speed"
	02  03 <= argument (speed = 3)
	03 END

Here's another:

	00  00 <= initial volume = 0
	01 CHU <= Command: Set volume change up
	02  07 <= speed = 7
	03 WAI <= Command: Wait
	04  10 <= wait 10 pulses
	05 CHU <= Set volume change up
	06  00 <= speed = 0 -> stop changing volume
	07 WAI <= Wait
	08  70 <= 70 pulses
	09 CHD <= Cmd: Set volume change down
	0A  01 <= speed = 1 (slow)
	0B END

Third:

	00  40 <= vol = $40
        01  30 <= vol = $30 (without command, the values are volume changes)
	02  20 <= vol = $20
	03 END

And fourth, finally:

	00  40    <= vol = $40
	01 CHD <+ <= change down speed..
	02  01  | <= ..= 1
	03 WAI  | <= Wait..
	04  20  | <= ..20
	05 CHU  | <= change up
	06  01  | <= ..1
	07 WAI  | <= Wait..
	08  20  | <= ..20 again
	09 JMP  | <= Jump (= goto)
	0A  01 -+ <= to line number 01
	0B END

Now some waveform/pitch sequences. waveform/pitch sequence is the "mastersequence"
while the volume sequence is a kind of "slave sequence".

First: (the simplest case)
	00  00 <= set waveform #00
	01 END

A bit more complex:
	00 VBS <= set vibrato speed
	01  40 <= speed = $40
	02 VBD <= set vibrato depth
	03  02 <= depth = 2
	04  00 <= waveform #00
	05 END

And very complex:
	00 ARP <= start arpeggio sequence
	01  00 \
	02  03  arpeggio values 0, 3, 7 (minor chord)
	03  07 /
	04 ARE <= end arpeggio sequence
	05 VBD <= vibrato depth
	06  06 <= 6
	07 VBS <= vibrato speed
	08  40 <= $40
	09  00 <= set waveform #0
	0A  01 <= set waveforms 01 - 0A (one timing pulse/waveform)
	0B  02    | |
	0C  03   \   /
	0D  04    \_/
	0E  05
	0F  06
	10  07
	11  08
	12  09
	13  0A and back to #01...
	14  08
	15  07
	16  06
	17  05
	18  04
	19  03
	1A  02
	1B  01
	1C JMP <= jump
	1D  09 <= to position 09 (restart waveform changing)
	1E END

---------------------------------------------------------------------------
You can learn a lot by examining the example synthsounds and by
experimenting.

Now, some reference...

About timing:

For  both  sequence  lists, most of the commands are fetched, executed, and
the next command is immediately fetched.  There are also some commands that
wait  for  the  next  timing  pulse, this is important because the computer
would  otherwise  send all its time executing the sequence lists (and would
hang  up).   You  should  take  care that all loops contain a command, that
waits  for  the  next timing pulse.  These commands are WAI (Wait), vol chg
(plain  number  in  the  volume  list)  and  set  waveform (plain number in
pitch/waveform list).

For example, the following loops will hang up your computer:

	00 JMP		00  CHU <-+ command CHU doesn't wait
	01  00		01   02   |
	02  JMP   |               03   00 --+
			

While the following would not:

	00  20		00  WAI
	01 JMP		01   02
	02  00		02  JMP
			03   00

Execution speed:

The synthsound handling routine is called once every interrupt.  This means
that  the  handling  is  usually  done  6  times/note  (can be changed with
secondary  tempo, see main docs).  Both lists have an execution speed, that
is  the  speed  of the operation.  When the speed is 1, the next command is
fetched/pitch  changed  etc.   on  every interrupt.  If the speed was 2, it
would  happen  every second interrupt (runs two times slower).  The initial
execution  speed  can be set with the two speed gadgets.  During executing,
the speed can be changed with command SPD.


VOLUME SEQUENCE LIST COMMANDS
=============================

1.	Set volume
	Command: ---
	Keyboard: --- (key needed to enter the command)

	This is the default command (no command identifier). It sets the
	absolute volume of the synthsound. It should be 00 - 40. Note that
	the relative track volumes are not used in synthsounds (mostly
	because of performance reasons).

	Example:
	00  30 ;volume = $30
	01  10 ;volume = $10
	...

2.	End sequence
	Command: END
	Keyboard: ---

	This command terminates the volume sequence list. It's always there
	and automatically inserted. You can't insert commands past this one.

3.	Set volume change down speed
	Command: CHD
	Keyboard: D

	This command sets the speed, in which volume is decreased each timing
	pulse. The volume starts changing automatically after this command.
	To stop automatic volume sliding, issue this command with speed 00.

	Example:
	00  CHD
	01   05 ;speed = 5
	...
	10  CHD
	11   00 ;speed = 0 -> stop sliding

4.	Set volume change up speed
	Command: CHU
	Keyboard: U

	This command is like CHD, except it sets the volume change up.

5.	Wait
	Command: WAI
	Keyboard: W

	This command waits for specified amount of timing pulses (pause).

	Example:
	03  WAI
	04   10 ;wait for 16 ($10) pulses to occur

6.	Jump
	Command: JMP
	Keyboard: J

	Causes an immediate jump to another position of the volume list.

	Example:
	05  JMP
	06   0A ;jump forward to line 0A

7.	Jump waveform sequence
	Command: JWS
	Keyboard: Shift-J

	This command causes a jump in the waveform sequence. This can be used
	for example, to trigger a pitch change at the end of the vol seq
	list. Note that this DOESN'T cause a jump TO waveform sequence.

	Example:
	04  JWS
	05   0F	;Cause jump in waveform sequence list


8.	Halt
	Command: HLT
	Keyboard: H

	This has the same effect with command END (halt execution), but it
	can be inserted in the middle of the sequence list.

	Example:
	03  HLT
	04   04 ;some other code (can be accessed with JMP instruction, for
	...	 example)

9.	Set speed
	Command: SPD
	Keyboard: S

	Sets the execution speed.

	Example:
	0A  SPD
	0B   01 ;speed = 1 (fastest)
	...

(The following commands require OctaMED V2.00 / MED V3.20 or later.)

10.	One-shot envelope
	Command: EN1
	Keyboard: E

	This command allows you to draw the shape of the envelope with the
	mouse. When the end of the envelope is reached, nothing occurs.
	02   40
	03  EN1
	04   05
	Waveform 05 is used as an envelope. Note that the envelope execution
	starts on next interrupt, so the volume is initialized to $40.
	The envelope waveform must always be 128 bytes long!!

11.	Looping envelope
	Command: EN2
	Keyboard: Shift-E

	This works like command EN1, except that when the end is reached,
	execution will start again from the beginning.


WAVEFORM/PITCH SEQUENCE LIST COMMANDS
=====================================

1.	Set waveform
	Command: ---
	Keyboard: ---

	This command is used to indicate the waveform number (starting from
	00). After this instruction, the execution stops until next timing
	pulse occurs. Don't use waveform numbers that are higher than the
	actual number of the last waveform.

	Example:
	00  00 ;waveform 00
	01  01 ;waveform 01
	...

2.	End sequence
	Command: END
	Keyboard: ---

	This command terminates the waveform/pitch sequence list. It's always
	there and automatically inserted. You can't insert commands past this
	one.

3.	Set pitch change down speed
	Command: CHD
	Keyboard: D

	This command sets the sliding speed for sliding pitch down. The
	sliding automatically starts after this command and stops, when
	speed is set to zero.

	Example:
	00 CHD
	01  03 ;set speed to 3
	...

4.	Set pitch change up speed
	Command: CHU
	Keyboard: U

	Just like previous, but slides pitch up.

5.	Wait
	Command: WAI
	Keyboard: W

	This command waits for specified amount of timing pulses (pause).

	Example:
	03  WAI
	04   02 ;wait for 2 pulses to occur

6.	Jump
	Command: JMP
	Keyboard: J

	Causes an immediate jump to another position of the waveform/pitch list.

	Example:
	05  JMP
	06   0A ;jump forward to line 0A

7.	Jump volume sequence
	Command: JVS
	Keyboard: Shift-J

	This command causes a jump to happen in the volume sequence. Can be
	used e.g. for triggering volume changes after some waveform event.

	Example:
	09  JVS
	0A   00 ;start volume sequence from the beginning

8.	Halt
	Command: HLT
	Keyboard: H

	This has the same effect with command END (halt execution), but it
	can be inserted in the middle of the sequence list.

	Example:
	03  HLT
	04   04 ;some other code (can be accessed with JMP instruction, for
	...	 example)

9.	Set speed
	Command: SPD
	Keyboard: S

	Sets the execution speed.

	Example:
	0A  SPD
	0B   01 ;speed = 1 (fastest)
	...

10.	Begin arpeggio definition
	Command: ARP
	Keyboard: A

	This command starts the arpeggio sequence. The following values are
	the arpeggio offsets from the base note. The arpeggio sequence
	is terminated with ARE-command. The arpeggio starts automatically
	after the sequence is defined.

	Example:
	03  ARP ;start arpeggio
	04   00 ;offset values
	05   04
	06   07
	07   0A
	08  ARE ;end arpeggio definition

11.	End arpeggio definition
	Command: ARE
	Keyboard: E

	Ends an arpeggio definition. See above.

12.	Set vibrato depth
	Command: VBD
	Keyboard: V

	This command is used to set the vibrato depth (00 - 7F).

	Example:
	02  VBD
	03   04 ;set depth to 4

13.	Set vibrato speed
	Command: VBS
	Keyboard: Shift-V

	This command sets the vibrato speed (00 - 7F). Both speed and depth
	must be nonzero for vibrato to occur.

	Example:
	02  VBD
	03   04 ;depth = 4
	04  VBS
	05   30 ;speed = 30

14.	Reset pitch
	Command: RES
	Keyboard: R

	This command resets the pitch of the note to its initial pitch.

(The following command requires OctaMED V2.00 / MED V3.20 or later.)

15.	Set vibrato waveform
	Command: VWF
	Keyboard: Shift-W

	Sets the vibrato waveform. The argument is the number of waveform.
	The waveform should always be 32 bytes long!! Note that it's
	actually played reversed (use the Rev gadget to reverse it).
	By default, sine wave is used.

	Example:
	00  VBD
	01   06
	02  VBS
	03   40
	04  VWF
	05   04 ;use waveform number 04 as vibrato waveform

===========================================================================

Synthsound handling commands in the songs:

Command  E  in the songs controls the MIDI pan, if used with MIDI, but with
synthsounds, it is used to trigger a jump in the waveform/pitch sequence list.

For  example,  if  you  wanted  to  decrease the pitch of the sound after a
certain point, your waveform/pitch sequence could look like this:

	00  VBS
	01   40
	02  VBD
	03   06
	04   00	;play waveform 00
	05  HLT
	06  CHD	;pitch changing entry point
	07   02
	08  END

Now you could compose a track like this:

	C-2 3000  ;this is the previous synthsound
	--- 0000
	--- 0000
	--- 0E06  ;cause a jump to position 06 (pitch starts to slide down)
	--- 0000

With command JVS, you could make the command affect volume sequence too.

Hold/Decay:
===========
Hold/Decay  work well with synthsounds too.  The decay value in
synthsounds is, however, a jump address in the volume sequence list. 
When the decay should start, the execution will jump to this entry in
the vol seq list. This means that you can handle the decay on any way
you want.  You can also make it affect the pitch/waveforms using the
command JWS.

Example volume sequence list:

	00  40   ;volume
	01 HLT  ;end
	02 CHD  ;decay handling (entry point) -> cause decay
	03  03
	04 END

The decay value for this synthsound should be 2.  When you save/load
synthsounds, the decay values are saved/loaded with the instrument.

Saving/loading synthsounds:

Synthsounds are saved using the file requester panel, "save instr".  They
usually take very little disk space.  Synthsounds can be loaded just like
normal samples (file requester, sample list, typing sample name).

HYBRID SOUNDS:

Hybrid sounds are much like synthsounds, except that there are no waveform
pieces.  Instead, there's a normal sample.  All commands of the synthsound
handling programming language can be used with hybrid sounds.  There's only
one thing you should know:  Don't use "Set waveform".  Because there's only
a single waveform, there's no need for that (and it wouldn't work anyway).

Final note - CODA !

Don't be afraid if you didn't understand everything described in this file
(I  hardly  understand  it myself ;-) All this information is not necessary
for using the synthsounds (only for designing them).


---------------------------------------------------------------------------

This is a last minute addition, that may well have a lot of redundant
information and tech. data.  But, it also has some additional technical
data, undates and inclusions that could be useful for reference, to the
readers of this collective report, review and article.

Therefore, I've decided to include it in its entire informational and
text chat  content, for your review.  I had no time to correct the
offset text, remove the useless on-line chat comments, or do any
sentence, paragraph or other alignments and editing.

I hope it will be useful and not to confusing.  Again, I have to point
it out and please keep in mind that this all deals with the Amiga and
MODfiles from them.  It's content, computer language reference and the
like, should not be confused with that for the IIgs.

It was written for technical support and applications with the Amiga
computer and their native MODfiles.  So, please keep this formost in
mind, when you read, reference and review it.  - Dr. Tom

---------------------------------------------------------------------------

From: Lars Hamre 
There are _NO_ standard sample rate for the samples used in modules.
But most often the samples are done on the rate called C-3 (which is
about 16574 Hz if you have a PAL machine). Sometimes drums are sampled
at A-3 (around 28 kHz), and some sounds are at ~8 kHz or anything else
to save space.

The sample rate on each of the channels can be selected by a period value,
which tells the hardware how many ~3.5 MHz clocks to count down before
playing the next sample. If you have a 16 kHz sample you simply play
it at a note that gives you 16 kHz sample rate. If you play it one octave
lower, you get a 8 kHz sample rate (and a double period value).

Here are the magic formulas:

                7093789.2
SampleRate = --------------    (For a PAL machine)
               Period * 2

                7159090.5
SampleRate = --------------    (For a NTSC machine)
               Period * 2


So, the most normal rate is (C-3, period 214):

  7093789.2
 ----------- = 16574.27 Hz
   214 * 2

(16726.8 Hz if you use the NTSC formula, but i have a PAL machine)

The Amiga has four channels with independent sample rates, so there are
no such thing as a common rate for all channels, and there are no mixing
going on.

For a list of period values and what notes they are supposed to correspond
to, see the list of period values in the MOD format below.

Also note that finetuning are actually done by switching between 16 different
period tables (not included here, but get the Amiga Protracker Playroutine).

Lars Hamre
larsha@lise.unit.no


[ A description of the mod format follows:  -Lars]


Newsgroups: comp.sys.amiga.audio
From: steinarm@ifi.uio.no (Steinar Midtskogen)
Subject: Old MOD. format + PowerPacking
Summary: Description of the MOD format and powerpacking
Keywords: MOD, Powerpacker
Organization: University of Oslo, Norway
Date: Sun, 14 Mar 1993 23:49:00 GMT

 Since everybody seem to ask about the module format, here it comes.  I
will post this information every forthnight, at least for a period (pun
intended).

I have put together most of the documentation about the module format
from PT2.3, edited it heavily (all credit to the original authors, but I
take responsibility for all errors) and added information about
powerpacking and how the Amiga volume work.

The reason for not using documentation following PT3.0, which is written
by my group, is that there is no docmentation on the MOD format following
that.  Our reason for not distributing the documentation of the MOD.
format with the tracker is that we try to discourage the usage of the MOD.
format; a new format is coming up soon.  So don't write a revolutionary
piece of code based on the information presented herein; it will hopefully
be outdated in only another month.

[ Outdated? I don't think so... -Lars]

  (The "I" in this file refer to Vishnu of Cryptoburners, the "we" refer to
respectively Amiga Freelancers and Cryptoburners; it should be obvious from
the context which of them)

Credits for original doc files:

Lars "ZAP" Hamre /Amiga Freelancers
  The documentation to the song/module format.
  The information about how to calculate BMPs from the Amiga CIA timings.

Peter "CRAYON" Hanning /Mushroom Studios/Noxious
  Updates to the song/module format information. (I thought that it looked
   pretty similar to the one from PT1.3, but he had put his name under,
   so...)
  The table of effect commands.

[ Hrm. Both files are mine. I can see no big changes. -Lars]


I have updated the information in the song/module format text, and added
information on how the finetuning work.



Protracker 2.3A Song/Module Format:
-----------------------------------

Offset  Bytes  Description
------  -----  -----------
   0     20    Songname. Remember to put trailing null bytes at the end...
               When written by ProTracker this will be only uppercase;
               there are only historical reasons for this. (And the
               historical reason is that Karsten Obarski, who made the
               first SoundTracker, was stupid.)

Information for sample 1-31:

Offset  Bytes  Description
------  -----  -----------
  20     22    Samplename for sample 1. Pad with null bytes. Will only be
               uppercase.  The samplenames are often used for storing
               messages from the author; in particular, samplenames
               starting with a '#' sign will generally be a message.  This
               convention is a result of a player called IntuiTracker
               displaying all samples starting with # as a message to the
               person playing the module.
  42      2    A WORD with samplelength for sample 1.  Stored as number of
               words.  Multiply by two to get real sample length in bytes.
               This is a big-endian number; for all PC programmers out
               there, this means that to get your 8-bit-orginated format,
               you have to swap the two bytes.
  44      1    Lower four bits are the finetune value, stored as a signed
               four bit number. The upper four bits are not used, and
               should be set to zero.
	       They should also be masked out reading; you can never be
	       sure what some stupid program could have stored here...
  45      1    Volume for sample 1. Range is $00-$40, or 0-64 decimal.
  46      2    Repeat point for sample 1. Stored as number of words offset
               from start of sample. Multiply by two to get offset in bytes.
  48      2    Repeat Length for sample 1. Stored as number of words in
               loop. Multiply by two to get replen in bytes.

Information for the next 30 samples starts here. It's just like the info for
sample 1.

Offset  Bytes  Description
------  -----  -----------
  50     30    Sample 2...
  80     30    Sample 3...
   .
   .
   .
 890     30    Sample 30...
 920     30    Sample 31...

Offset  Bytes  Description
------  -----  -----------
 950      1    Songlength. Range is 1-128.
 951      1    This byte is set to 127, so that old trackers will search
               through all patterns when loading.
               Noisetracker uses this byte for restart, ProTracker doesn't.
 952    128    Song positions 0-127.  Each hold a number from 0-63 (or
               0-127) that tells the tracker what pattern to play at that
               position.
1080      4    The four letters "M.K." - This is something Mahoney & Kaktus
               inserted when they increased the number of samples from
               15 to 31. If it's not there, the module/song uses 15 samples
               or the text has been removed to make the module harder to
               rip. Startrekker puts "FLT4" or "FLT8" there instead.
               If there are more than 64 patterns, PT2.3 will insert M!K!
               here. (Hey - Noxious - why didn't you document the part here
               relating to YOUR OWN PROGRAM? -Vishnu)

Offset  Bytes  Description
------  -----  -----------
1084    1024   Data for pattern 00.
   .
   .
   .
xxxx  Number of patterns stored is equal to the highest patternnumber
      in the song position table (at offset 952-1079).

  Each note is stored as 4 bytes, and all four notes at each position in
the pattern are stored after each other.

00 -  chan1  chan2  chan3  chan4
01 -  chan1  chan2  chan3  chan4
02 -  chan1  chan2  chan3  chan4
etc.

Info for each note:

 _____byte 1_____   byte2_    _____byte 3_____   byte4_
/                \ /      \  /                \ /      \
0000          0000-00000000  0000          0000-00000000

Upper four    12 bits for    Lower four    Effect command.
bits of sam-  note period.   bits of sam-
ple number.                  ple number.

  To separate out the different parts of the note, something like this
would be used (C to have it a bit portable; I like assembler and Pascal
better myself):

int samplenum,effectcommand,effectdata,extendedcommand;
char notename[];
...

void ProcessNote(byte notedata[]) {
  extendedcommand=-1;
  samplenum=(*notedata&0xF0)|(*(notedata+2)>>4);
  switch(((*notedata<<8)|(*notedata))&0xfff) {
    case 856: notename="C-1"; break;
    case 808: notename="C#1"; break;
    case 762: notename="D-1"; break;
    case 856: notename="D#1"; break;
   /* etc */
    default: notename="???"; /* This should NOT occur; if it do, it is */
                             /* not a ProTracker module! */
   }
   effectcommand=*(notedata+2)&0xF;
   effectdata=*(notedata+3);
   if effectcommand==0xE then /* Extended command */ {
      extendedcommand=effectdata>>4;
      effectdata&=0xf; /* Only one nibble data for extended command */
   }
}

Probably this isn't 100% valid C code, but I think you catch my drift...



Periodtable for Tuning 0, Normal
  C-1 to B-1 : 856,808,762,720,678,640,604,570,538,508,480,453
  C-2 to B-2 : 428,404,381,360,339,320,302,285,269,254,240,226
  C-3 to B-3 : 214,202,190,180,170,160,151,143,135,127,120,113

  To determine what note to show, scan through the table until you find the
same period as the one stored in byte 1-2.  Use the index to look up in a
notenames table.

  If you have a bit of memory, it is probably smarter to use an 744 byte
block to store the indexes relating to the different periods (ie:  at
position 808 in the block you store 1, as 1 is the index of period 808.
Then you use the block as a look up table)

  This is the data stored in a normal song.  A packed song starts with the
four letters "PACK", and then comes the packed data.

  It is somewhat unclear to me what kind of packing that is referred to
here.  One thing is clear though - it is NOT powerpacked or LHAed modules!
I belive somebody (Probably Amiga Freelancers) was planning to install some
form of direct packing into ProTracker, reserved this ID, and then it never
came...  -Vishnu

[No. We never intended to install any packing here. This is an older
 invention :)  Songs (modules WITHOUT the samples) can be packed by this
 method, and it will put the "PACK" tag at the beginning of the file.
 But since everyone saves modules with samples instead of songs, I wouldn't
 care about it. The packer/depacker for PACK'ed files are in the PT source
 code, available on aminet sites.  -Lars Hamre]

  In a module, all the samples are stored right after the patterndata.  To
determine where a sample starts and stops, you use the sampleinfo
structures in the beginning of the file (from offset 20).  Take a look at
the mt_init routine in the playroutine, and you'll see just how it is done.
  The data for a sample must _ALWAYS_ start with two zeros, as it is used for
repeating is the sample is to be terminated.

[ Well, the playroutine will clear these two bytes anyway...  -Lars]


                                Finetuning

Value:    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
Finetune: 0  +1  +2  +3  +4  +5  +6  +7  -8  -7  -6  -5  -4  -3  -2  -1


  Finetuning are done by multiplying the frequency of the playback by
X^(finetune), where X ~= 1.0072382087
  This means that Amiga PERIODS, which represent delay times before
fetching the next sample, should be multiplied by X^(-finetune)

Vishnu of Cryptoburners

[ This should be 2^(finetune/12/8). And 2^(1/12/8) is 1.007246412 on
  my calculator...  (12 notes per octave and 1/8 of this)  -Lars Hamre ]



          Decibel Values and Volume Ranges

   Volume  Decibel Value     Volume  Decibel Value

     64         0.0            32        -6.0
     63        -0.1            31        -6.3
     62        -0.3            30        -6.6
     61        -0.4            29        -6.9
     60        -0.6            28        -7.2
     59        -0.7            27        -7.5
     58        -0.9            26        -7.8
     57        -1.0            25        -8.2
     56        -1.2            24        -8.5
     55        -1.3            23        -8.9
     54        -1.5            22        -9.3
     53        -1.6            21        -9.7
     52        -1.8            20       -10.1
     51        -2.0            19       -10.5
     50        -2.1            18       -11.0
     49        -2.3            17       -11.5
     48        -2.5            16       -12.0
     47        -2.7            15       -12.6
     46        -2.9            14       -13.2
     45        -3.1            13       -13.8
     44        -3.3            12       -14.5
     43        -3.5            11       -15.3
     42        -3.7            10       -16.1
     41        -3.9             9       -17.0
     40        -4.1             8       -18.1
     39        -4.3             7       -19.2
     38        -4.5             6       -20.6
     37        -4.8             5       -22.1
     36        -5.0             4       -24.1
     35        -5.2             3       -26.6
     34        -5.5             2       -30.1
     33        -5.8             1       -36.1
                                0    Minus infinity

  The reason for the table starting at 0 dB as the convention from
taperecorders of having 0 dB as the optimal recording condition, and
displaying anything worse as a negative number.

  Decibel is a logrithmical unit, just like we feel sound intensity.  It
represent the ratio between two intensities.

  On the other hand, the Amiga volumes represent the linear difference
between sound intensities; this mean that you have less accuracy between
the low volumes than between the high ones.  If you need to, you can safely
remove volume 64 and replace it with volume 63; but you can NOT remove
volume 0 and replace it with volume 1.

  If you are implementing a MOD player for another sound-device, then
remember to check whether it has linear or logarithmic volume control.

  The above table can be calculated from the formula dB=20*log10(Volume/64)
To go the other way, from dB to Amiga volumes, do
Volume=64*10^(dB/20)

  The dB here have to do with ratios of sound, not absolute sound power.
This is the way it is used in recording equipment etc, and not the for
measuring absolute ear-destroying capability.

  If you need to implement volume artificially, just multiply by the volume
and shift right 6 times.
  If you need to mix samples on-the-fly to lower the amount of voices used,
your best bet is probably doing a DCT (Convert the samples to sums of
cosines) on small blocks of the sample (64 bytes?) before playing, and
mixing with the exact position in which you generate a sample.  This is the
only way I can think of to give adequate quality, at least.

-Vishnu of Cryptoburners


Protracker V2.3A/3.01 Effect Commands
----------------------------------------------------------------------------
0 - Normal play or Arpeggio             0xy : x-first halfnote add, y-second
1 - Slide Up                            1xx : upspeed
2 - Slide Down                          2xx : downspeed
3 - Tone Portamento                     3xx : up/down speed
4 - Vibrato                             4xy : x-speed,   y-depth
5 - Tone Portamento + Volume Slide      5xy : x-upspeed, y-downspeed
6 - Vibrato + Volume Slide              6xy : x-upspeed, y-downspeed
7 - Tremolo                             7xy : x-speed,   y-depth
8 - NOT USED
9 - Set SampleOffset                    9xx : offset (23 -> 2300)
A - VolumeSlide                         Axy : x-upspeed, y-downspeed
B - Position Jump                       Bxx : songposition
C - Set Volume                          Cxx : volume, 00-40
D - Pattern Break                       Dxx : break position in next patt
E - E-Commands                          Exy : see below...
F - Set Speed                           Fxx : speed (00-1F) / tempo (20-FF)
----------------------------------------------------------------------------
E0- Set Filter                          E0x : 0-filter on, 1-filter off
E1- FineSlide Up                        E1x : value
E2- FineSlide Down                      E2x : value
E3- Glissando Control                   E3x : 0-off, 1-on (use with tonep.)
E4- Set Vibrato Waveform                E4x : 0-sine, 1-ramp down, 2-square
E5- Set Loop                            E5x : set loop point
E6- Jump to Loop                        E6x : jump to loop, play x times
E7- Set Tremolo Waveform                E7x : 0-sine, 1-ramp down. 2-square
E8- NOT USED
E9- Retrig Note                         E9x : retrig from note + x vblanks
EA- Fine VolumeSlide Up                 EAx : add x to volume
EB- Fine VolumeSlide Down               EBx : subtract x from volume
EC- NoteCut                             ECx : cut from note + x vblanks
ED- NoteDelay                           EDx : delay note x vblanks
EE- PatternDelay                        EEx : delay pattern x notes
EF- Invert Loop                         EFx : speed
---------------------------------------------------------------------------
Peter "CRAYON" Hanning /Mushroom Studios/Noxious

For a more complete description see my previous post about the new format.
This format also allow you to have more effects, and several effects on the
same note.  Hopefully, it will soon replace the module format.
 - Vishnu



Protracker CIA (Complex Interface Adapter) Timer Tempo Calculations:
--------------------------------------------------------------------
Fcolor                        = 4.43361825 MHz (PAL color carrier frequency)
CPU Clock   = Fcolor * 1.6    = 7.0937892  MHz
CIA Clock   = Cpu Clock / 10  = 709.37892  kHz
50 Hz Timer = CIA Clock / 50  = 14187.5784
Tempo num.  = 50 Hz Timer*125 = 1773447

For NTSC: CPU Clock = 7.1590905 MHz --> Tempo num. = 1789773

 To calculate tempo we use the formula: TimerValue = 1773447 / Tempo
 The timer is only a word, so the available tempo range is 28-255 (++).
 Tempo 125 will give a normal 50 Hz timer (VBlank).

 A normal Protracker VBlank song tempo can be calculated as follows:
 We want to know the tempo in BPM (Beats Per Minute), or rather quarter-
 notes per minute. Four notes makes up a quarternote.
 First find interrupts per minute: 60 seconds * 50 per second = 3000
 Divide by interrupts per quarter note = 4 notes * speed
 This gives: Tempo = 3000/(4*speed)
 simplified: Tempo = 750/speed
 For a normal song in speed 6 this formula gives: 750/6 = 125 BPM

 Lars "ZAP" Hamre/Amiga Freelancers 1990



The "PowerPacker" crunching algorithm:

Powerpacker use a variant of Lemel-Ziv compression.  This mean that it in
some cases store strings of bytes as only an offset from the current
position and a counter.  (How LZ could get a patent on this is beyond me!)

A PowerPacked file has the following format:
	dc.b	'PP20'			; Identifier
	dc.l	Efficiency
	... crunched data ...
	dc.l	(Length*256)+NumOfBitsToDiscard

The Efficiency is 4 bytes representing the length of offset from the
current position for different runs of equal bytes.  The first three are
used for runs of from 2 to 4 bytes; the last is used for all runs of 5
bytes and over.
The length is the length of the original, UNcrunched file.
The bits to be discarded are discarded off the END of the crunched data.
 
All bits in the crunched data are stored in reverse order, to permit
decrunching in a buffer where the crunched data are loaded at the start (An
8 byte margin between the start of the file and the decrunching position is
needed, though).  This mean you have to get bits in the reverse order when
decrunching, and when I refer to "Get A Bit" or Get Eight Bits" or
something, that is the LAST bit or bits from the source.  Kinda obvious
isn't it? ;-)

This means that also when a full set of 8 bits are read from the file,
their bit order are reversed.

The varying efficiencies used by PowerPacker are as follows:
Fast:      9, 9, 9, 9
Medicore:  9,10,10,10
Good:      9,10,11,11
Very Good: 9,10,12,12
Best:      9,10,12,13


                         The Decrunching Algorithm

WritePointer is a pointer to the position in memory where decrunched bytes
 are currently written.

Decrunch:
REPEAT
  Get A Bit (X);
  IF X=0 THEN Copy bytes from source;
  Copy string from already decrunched part of file;
    (* Done no matter what the state of X *)
UNTIL WritePointer<=Start Of Decrunchbuffer;
END.


Copy bytes from source:
BEGIN
  n:=0;
  REPEAT
    Get Two Bits (X);
    n:=n+X;
  UNTIL X<>3;
  Copy n+1 bytes as bits from Crunched Data to WritePointer;
  (* At this stage, the bytes get their order of bits reversed; and
     WritePointer DECREASES *)
END;

Copy string from already decrunched part of file:
BEGIN
  Get Two Bits(n);
  OffsetLen:=Efficiency[n];
  IF n<>3 THEN Get OffsetLen Bits (X)
  ELSE
  BEGIN
    Get One Bit (X);
    IF X=0 THEN Get Seven Bits (X) ELSE Get OffsetLen Bits (X);
    REPEAT
      Get Three Bits (Y);
      n:=n+Y;
    UNTIL Y<>7;
  END;
  Copy n+2 bytes from WritePointer+X;
   (* Here it is copied reversely through memory; X is constant, while
      WritePointer decreases. *)
END;

If you can't read this, the original decrunchroutine follows here, in 68000
assembler.  It was NOT commented before I cleared it up with macros...
So complaints about the comments must go to me, too!

Registers used are (in the main decrunch routine):
d0 - Counter for number of bits to fetch with the READD1 macro.
d1 - Return register for the READBIT macros.
d2 - Used as counter register for the copy routines.
d3 - Used as offset for the oldstring copy routine.
d5 - Used to store the longword currently read bits from.
d7 - Used for storing the number of bits left in d5.
     0 means one bit left, read new longword to d5 when d7 wraps to
     negative.
a0 - Pointer to current longword of source (the one in d5).
a1 - Current position in the buffer to decrunch to.
a2 - Start of buffer to decrunch to.  Used only for checking whether the
     decrunching is through.
a5 - Pointer to efficiency array.

Things to consider:
Bits are shifted from d5 to d1 with code like this
	lsr.l	#1,d5
	addx.l	d1,d1
shifting bits from the BOTTOM of d5 into the BOTTOM of d1, reversing the
order of the bits as they go from d5 to d1.
The predecrement mode, as in
	move.b	d1,-(a1)
decrement a1 BEFORE writing d1.


;
; PowerPacker Decrunch assembler subroutine V1.1
;
; call as:
;    DecrunchBuffer (endcrun, buffer, efficiency);
;                      a0       a1        d0
; with:
;    endcrun   : UBYTE * just after last byte of crunched file
;    buffer    : UBYTE * to memory block to decrunch in
;    efficiency: Longword defining efficiency with wich file was crunched
;
; NOTE:
;    Decrunch a few bytes higher (safety margin) than the crunched file
;    to decrunch in the same memory space. (64 bytes suffice)
;

Decrunch:
	lea	myBitsTable(pc),a5	; Efficiency array
	move.l	d0,(a5)			; Store efficiency for this file.
	move.l	a1,a2			; Store start of decrunch memory.
	move.l	-(a0),d5		; Get length & number of bits to 
	moveq	#0,d1			;  trash...
	move.b	d5,d1			; Copy number of bits to trash...
	lsr.l	#8,d5			; Find length of decrunched file...
	add.l	d5,a1			; And end of decrunch buffer.
	move.l	-(a0),d5		; First longword of crunched data.
	lsr.l	d1,d5			; Skip unused bits...
	moveq	#32-1,d7		; Number of bits in longword...
	sub.b	d1,d7			; And be sure to read another when 
					;  d5 is spent!

LoopCheckCrunch:			; The decrunch loop.
	READBIT				; State of bit is returned in d1
	bne.s	CrunchedBytes		; and Z flag
NormalBytes:
	moveq	#0,d2
Read2BitsRow:
	READBITS #2,d1			; Get length of run-1
	add.w	d1,d2			; Loop until not %11, increasing
	cmp.w	#3,d1			; all the time... (Sort of Huffman
	beq.s	Read2BitsRow		; on the run lengths...)
.ReadNormalByte:			; REPEAT
	READBITS #8,d1			; Get from crunched data...
	move.b	d1,-(a1)		; Store...
	dbf	d2,.ReadNormalByte	; UNTIL d2<0
	cmp.l	a1,a2			; End of crunch?
	bcs.s	CrunchedBytes		; Nope, now do crunched bytes...
	rts				; Chicken out - FINITO!

CrunchedBytes:
	READBITS #2,d1			; Get 2 bits of runlength-2
	moveq	#0,d0
	move.b	(a5,d1.w),d0		; Get number of bits offset for
	move.w	d1,d2			; this runlength
	addq.w	#1,d2			; Runlength always 2+
	cmp.w	#3+1,d2			; Did data indicate longer run?
	bne.s	ReadOffset		; Nope....
	READBIT				; Is the longer run with offsetlen
	bne.s	.LongBlockOffset	; from Efficiency?
	moveq	#7,d0			; Nope, hard code length 7
.LongBlockOffset:
	READD1				; Get offset...
	move.w	d1,d3
Read3BitsRow:
	READBITS #3,d1			; Get more string length...
	add.w	d1,d2			; Increase until stop indicated...
	cmp.w	#7,d1			; By not having the max value.
	beq.s	Read3BitsRow
	bra.s	DecrunchBlock		; And start the copying.
ReadOffset:
	READD1				; Get offset for short run...
	move.w	d1,d3			; and use it!
DecrunchBlock:
	move.b	(a1,d3.w),-(a1)		; Loop the copy...
	dbf	d2,DecrunchBlock	; One time more than the initial d2
EndOfLoop:
_pp_DecrunchColor:
	move.w	a1,$dff1a2		; Set colour
	cmp.l	a1,a2			; Check if we have reached/passed 
	bcs	LoopCheckCrunch		;  lower limit...
	rts				; Yeah - chicken out!

myBitsTable:
	dc.b	$09,$0a,$0b,$0b		; Efficiency table


That's all for now - hope you don't mind...
If you want to use the PowerPacker decrunching routine, I suggest instead
using powerpacker.library if you are on the Amiga; if it is for a demo, I
suggest using another cruncher, for instance CrunchMaster.  It has better
compression ratios than PowerPacker.

Vishnu CRB           Feel free to e-mail me.
steinarm@ifi.uio.no  "...all the modern inconveniences..." (Mark Twain)

---------------------------------------------------------------------------
That concludes my compiled collection of technical information dealing
with Imported Module files from the Amiga.

Write Away!, ShadowWrite, PATCH, TRACTOR are available from me, (IF YOU
CAN'T LOCATE THEM, to give you a customized (experimental) kit to use
for the above mentioned efforts.  These word processors are the only
ones I've found,  that will allow Imported MOD text files to retain
their proper characters, text coding and file structure in the original
form, when editing them and saving them again as text files.

Important Notes to remember:

Never use FIX YUCKY TEXT option, with Write Away! and never use any
modify options with the NDA, ShadowWrite).  If you do, you will screw
up the proper text original characters and most like, the MODfile will
not even load or play, when you save it.

Always be sure to retain the original Imported Module file as a text
file, for use again, if you should mess up with your first and/or
subsequent attempts.  The worst that can happen is that the Imported
Module you load and edit, alter, modify, enhance or attempt to
reconstruct won't load or play properly.  You never know what strange
and disastrous or amazing and enlightening effects might result from
such efforts.

I've done it myself with some astounding results on many Imported
Module text files.  I've also messed a lot of them up real good !  Even
with lots of practice, the placement, deletion or any combination of
cut & paste can have unpredictable results.

The standard trial and error techniques can achieve some very
interesting results. Give it a try.  What have you got to loose,
besides a little of your time !

If any of you do obtain some degree of success with your efforts, using
this  ' IIGS IMPORTED MODULE (Experimental) 'MODIFIER INSTRUCTION KIT',
I'd love to review your final work.  Send me a copy of your best
results and I'll pass them on to as many IIgs music users that have an
interest in them, as I possibly can !

Please note:  If you can't locate or obtain any of the IIgs programs
mentioned in this article, simply send me a few disks with your name,
address and a stamped return mailer, with a list of the ones you want. 
I'll be glad to furnish you with any of them.

For the finale, I present my reviews, updated personal comments and
updated compare chart of support/effects, etc. for the three IIgs
Imported Module Players; ShellPlay, SoniqTracker and ModZAP.

About ShellPlay 
STATUS: (Freeware)

ShellPlay  v0.71  is Copyright (c) 1993 by Brian C Bening 
Released - (June 1993)
 
(REPORTED TO HAVE BEEN PLACED IN PUBLIC DOMAIN - FOR UPDATES)

ShellPlay is an (EXE) shell program, which can be executed via any shell
command (launch-option) program, such as Command COM, etc.  It can be
activated via Merlin 16+, by placing it in the Shell applications
folder, with Merlin.

ShellPlay can also be activated and used directly, to play Imported
Modules from Instant Access v2.30, by double clicking on the MOD.xxx
file.  This method makes it very easy to play MODfiles with, if you
can't figure out how to use a shell program. (SHELLPLAY MUST BE IN THE
SAME FOLDER WITH INSTANT ACCESS)

ORCA, GNO, and ECP-16, also support ShellPlay (SP).  Once launched, SP
will install itself in the background and return control to the shell; 
thereafter, any program that does not use the Ensoniq or the Sound
Toolset can be used in the foreground.

ShellPlay is the best 'Imported Music Module Player' currently
available for the IIgs.  It has superior effects support, a wide range
of MOD format support. I've never encountered any (4 track) type of
MODfile format, that it couldn't play properly.

ShellPlay has never crashed on me and its ease of use and access from
Instant Access,  makes it the most proficient, user friendly and memory
economical of all IIgs MODfile Players. It's timing and sync. for
playing any MODfile is nearly always flawless for audio sound scape
rendering and great sound quality, with its very fast RAM to Ensoniq
16k sample swap abilities.

It gives an accurate rendering of play, audio MODfile special effects,
a wide range of (easy-to-use) commands/options, with; full stereo
precent options, full tempo support, full volume percent support, PAL
50Hz or NTSC 60Hz tempo set, follow position jumps, modem/hardware
support, full support options for MODfile song play; random, goto and
change.

ShellPlay also has the options for; kill and remove ShellPlay and print
playlist/print current MODfile.

All commands/options are active and available via keyboard input, at
any point during the program or play functions.

The documentation for ShellPlay is very professional, through and easy
to understand.

I give ShellPlay the top rating of: 10

ShellPlay Command/options and Examples, excerpted from the ShellPlay
documentation and edited by me, are included below for your use.

COMMANDS LISTING:

usage: sp [option(s)] [MODfile(s)] [ [option(s)] [MODfile(s)] [...] ]
options:
   -ts smart PT/constant tempo                  + -s  change current song
   -tp force protracker tempo                     -r  don't use random play
   -tc force constant tempo                        +r  random play / re-randomize
   -t5 constant tempo is PAL 50Hz              -C  clear playlist
   -t6 constant tempo is NTSC 60Hz            -K  kill and remove shellplay
   -VX set volume percent (0..100)             -gX goto song X
   -SX set percent stereo (-200..200)        -l  print playlist
 +|-b  follow position jumps                      -c  print current MODfile
 +|-H  modem port hardware handshaking

default options: sp -H -r -b -ts -t5 -S70 -V60


Usage Examples:
o  multiple MODfiles can be specified on the commandline.
  ex:	sp after.the.rain bass.o.drums mod.hiv
o  ORCA wildcards can be used if shellplay was launched from ORCA.
  ex:	sp mod.=
o  Filenames containing spaces must be enclosed in quotes.
  ex:	sp "mod.Bass O Matic"
o  Single quotes will force SP not to use ORCA wildcard parsing.
  This will load one MOD:  sp 'mod.===Blue==='
o  If only one song is loaded, it will continuously repeat.
o  The options passed to Shellplay are case sensitive.
  This will clear the playlist:	sp -C
  This will print the current song:	sp -c
o  Options can be separated or grouped together.
  These are equivalent:
	sp -C -S100 -V50
	sp -CS100V50


Option List Examples:
-?:	print a brief option summary.
-K:	stop shellplay and remove it from memory.
-ts:	guess the tempo method (Protracker or constant) to use by examining each song 
        before playing it.
-tp:	force SP to use Protracker tempo.
-tc:	force SP to use constant speed tempo (otherwise known as VBL timing).
-t5:	use 50hz timing for constant speed tempo
-t6:	use 60hz timing for constant speed tempo
-b:	don't follow position jumps.
Position jumps are commands used within MODs to create infinite loops or to hide songs.
+b:	follow position jumps.
-VX:	set the volume to X% of the maximum.  Where X is between 0 and 100.
-SX:	use X% stereo.  X can be any value between -200 and 200.
-S100 uses no channel mixing.  This is how MODs are played on the Amiga.
-S0 is Monophonic.
-S200 uses channel doubling.  Sounds similar to -S100;  but, it has slightly better quality.
+s:	skip to the next song.
-s:	skip to the previous song.
-gX:	goto to song number X.
+r:	play MODs in random order.
The playlist will be randomized each time +r is encountered and when
songs are added to the playlist.
-r:	play MODS in the order they were added to the playlist.
-C:	clear all songs from the playlist.
-l:	print out the playlist.
-c:	print the name of the MOD currently being played.
+H:	use hardware handshaking on the modem port.  This will confuse your terminal program 
unless it is set to 8N1.  Also, your terminal program will not be able to control hardware
handshaking while this option is enabled.
-H:	do not use hardware handshaking on the modem port.


Bugs:
o  Random crashes... Blah.  Editors notes: (I'VE NEVER HAVE FOUND ANY
INSTANCE WHERE RANDOM CRASHES OCCURRED)

o  While SP is running, Apple DMA SCSI cards may choke when transfering
data from disk.  This can be worked around by turning off DMA on your
SCSI card.

o  When running on extremely fast accelerator cards, the sound may be grainy.

Other stuff that may appear in the future:
o  a desktop version of Shellplay, for those people that do not have or want shells.
o  the Xplayer (tm) toolset, featuring all of the great features of Shellplay.
o  Xplayer.  A sixteen channel MOD editor (and player).

I've been advised that ShellPlay future upgrades have been abondoned by
the programs author.  It's rumored to have been placed in the public
domain.  I've been furnished with the SRC. CODES and I'm hoping to find
the time to assist others with updates as FREEWARE, to a GS/OS desktop
application program, as a player/editor, NDA or CDA, etc.

Authors (last known) Internet E-MAIL address was:  vacc0001@student.tc.umn.edu
(Does not reply)

A final note to the programs author Brian:  Thank you very much for
making such a great MODfile player for this computer.  Your efforts
will be continued.  You can count on that !


About soniqTracker
STATUS: (Freeware)

soniqTracker v0.63
Written by Tim Meekins
Released at: AppleExpo West - 4/93
Copyright (c) 1992,1993 by Tim Meekins - All Rights Reserved.

I give soniqTracker the top rating of: 9

SoniqTracker is a GS/OS application program, with a very user friendly,
tasteful, artistically designed program structure.  The documentation
furnished with the program is through, very  professional in content
and easy to understand.

SoniqTracker, is the second best MODfile Player for the IIgs and the
best, with respect to GS/OS application programs.

When and if finished, soniqTracker will be a complete music and
instrument editing system using custom music formats. The music editor
is reportedly under construction and is not included with this version.

This version of soniqTracker will import Amiga-style MODfile songs into
soniqTracker's internal format.  Also included is a jukebox player and
an alarm clock.  Future versions, (if and when released - pending the
authors time to do any updates) will include a music and instrument
editor with the ability to import numerous other music formats. The
soniqTracker sequencing engine may also become available for use in
other programs.

In a recent conversation with Tim, (7/9/94) he told me he was unable to
do anything with update and release efforts, due to a lack of time.  He
has been gracious enough to agree to furnish the src.codes to the
sequencing engine and hopefully, it can be implemented into FUTURE
UPGRADES of the Noise Tracker GS v2.00 GS/OS application program,
currently under development from 1WSW and OSRL.

A splash screen with the soniqTracker logo appears, after it starts.
Press any key or click the mouse button to continue.

If you have a weak audio card or a SonicBlaster that can't handle the
Ensoniq 5503 being pushed to its limits, then lower the volume setting
in the Preferences menu.

SoniqTracker supports all know IIgs stereo cards.  None of them need
any adjustments settings with the exception of the SonicBlaster card.
There's a potentiometer on the SonicBlaster.  When turned to a low
setting, it will remove distortion.

For the ultimate in stereo output, get the SoundMeister card, which can
certainly handle the Ensoniq 5503 being pushed to its limits.
SoniqTracker will definitely support this hardware.

The author: Tim Meekins, a past team member of 1WSW, related in his
documentation for soniqTracker:  Very rarely, soniqTracker will come
across a MODfile it can't load and it may get confused. In fact, if you
do encounter such a file, please let me know!   I've played 100's of
MODfiles with soniqTracker and found only one, that presented any
unknown effects when played or load ($BADD) problems.

Songs that are not music modules are also hard to recognize, since the
basic NoiseTracker-style module contains no special identification
bytes in the file. soniqTracker will do bounds checking and will abort
if the file does not appear to be a music module. If you get error
$BADD when loading a MODfile, it isn't MODfile of the types supported
by soniqTracker, or, it isn't even a MODfile.

Keep in mind, you can (CURRENTLY) only load and play 4 track MODfiles
with the IIgs and its MODfile players, due to the IIgs' Ensoniq DOC 32
osc. limit, which prohibits it from accepting or playing any MODfile
with more than 4 tracks.

For your use and referrals, the soniqTracker commands follow:

When a song is being played, the following key commands are available:

	option, escape, q    stop the song and quit the player
	1-4			         toggle tracks 1 through 4 on or off
	space			     pause the song, press any key to resume. 
                         But, it will be interpreted.  So, 
                         pressing q will stop.
                         (I recommend pressing return).
	<,>			         decrease or increase the volume
	s			         tab through each of the stereo modes 
                         (see preferences section)
	h			         toggle between 50Hz and 60Hz
	n			         skip to next song (see Jukebox Player below)
	

(CAP LOCK/SHIFT: or any option/command will work in upper or lower case)

With some of the music, a grain/static effect might be observed.  In
general, soniqTracker gives an excellent rendering of; stereo, sound
scape, audio spacial dimensionality and clarity.  It supports most all
of the special play effects with near perfection.

The animation and graphic screen during play is very ethereal,
graphically pleasing and of a professional and friendly nature, as
arethe About graphics and its display.  The program is very user
friendly and easy for even a first-time user.

The music module format originated on the Amiga in the program
SoundTracker. Additional music players followed such as NoiseTracker,
ProTracker, StarTrekker, and numerous others.

Along with these additional players came differences in the file
format, yet despite the differences, they use identical signature bytes
(except StarTrekker) and provide no method for differentiating between
them.

Luckily, the ProTracker format has gained momentum and the number of
modules using features of other players is diminishing. soniqTracker
primarily supports ProTracker modules, but does have advanced code for
recognizing other formats.

Special Notes, Tips and Tricks, concerning the use of soniqTracker
follow:

For some astounding special effects with stereo/audio dimensional,
spacial phase sound shifting and audio doopler illusions, try holding
down the S key during MODfile play mode.

For even more astounding tempo phase shift effects and timing
illusions, try holding down the H key during MODfile play mode, with
the S key being held down also.

Tim Meekins can be contacted via:

internet: meekins@cis.ohio-state.edu
America Online: GNO Tim2              (gnotim2@aol.com)

About MODZap

MODZap v00.90b3
By Ian Schmidt - Copyright (c) 1992-93 Two Meg Software - All Rights Reserved.
STATUS: FREEWARE

I give MODZap an overall rating of 6.9.  I'm sure Ian would be pleased,
with the numbers of my overall rating !

Ian Schmidt is to be commended for his continued support and upgrade
efforts of this program.  His efforts and contributions to the IIgs
user, show promise and his commitment to their needs with sound and
music.

Review of the final MODfile Player, with select edited excerpts from
the MODZap documentation/manual file, pertinent to understanding the
operations and use of the program with my personal notes and comments
included, used with Ian's premission follow:

MODZap is an Amiga music module player for the IIgs personal computer. 
It combines high playback quality with speed and a range of features to
insure that MODs sound good.  MODZap's primary mission is to reproduce
modules conforming to the standard set by the ProTracker program on the
Amiga.  Support is also provided in a lesser form for StarTrekker and
NoiseTracker modules.

Review Notes: This MODfile Player is my least favored, mainly because
of the unprofessional and immature nature of the documentation/manual
file, with its crude language and rude, needless content.  The
documentation is scattered with hyper-critical and totally unrelated
program content.

The program is not very 'AUTO' user friendly, comparing it to
soniqTracker.  The complex nature of its alternate modes, players and
such, leave the novice user of a IIgs confused and unable to cope with
the random system crashes that they are presented with in certain
players; QuadraScope mode, etc.

This release of MODZap is designed and oriented towards the seasoned
power user, skilled with multiple-tasking needs and using other
advanced operating extension programs such as GNO, etc.  I don't
recommend it for the novice IIgs user.

It is however a very good program, for those that want to view a
MODfile in action, as it plays, to see all of its effects visually and
gain an understanding of what it's all about.

MODZap documentation pertinent program and user explanation excerpts
continued:

Important note: NoiseTracker in this document usually refers to the
Amiga versions of the program.  NoiseTracker IIgs modules are not
Amiga-compatible and you should not attempt to load or play them with
MODZap.

Special Notice and update notes for future user applications:

Please Note: The (soon-to-be-released) Noise Tracker GS v2.00 GS/OS
application program, currently under development and beta testing, will
be able to convert edit, modify, enhance and save its own music
formats, SoundSmith and original imported MODfiles, to -> IMPORTED
MODFILES (Protracker file format), that can be loaded and played by all
of the IIgs' Imported MOD players, including MODZap.  They can also be
'EXPORTED' to other computers for their users to listen to and enjoy.


System Requirements

An Apple IIgs personal computer with at least 1.125 megs of memory. 
GS/OS System Software version 6.0 or later is required.  MODZap
automatically supports all stereo cards and ROM revisions.

This version of MODZap has several known bugs, and tends to crash in
QuadraScope mode.  Use another play mode until things are solidified.

Review Notes: I wonder why the QuadraScope mode was even included,
other than as a dazzle additive, if it had so many bugs and tends to
crash so much, as above noted.

The nature and vocal message content of the intro music clip, the intro
artwork and some of the program animation (in my opinion), are rather
depressing, having a negative and dark nature to them. (Intro Art by
WARLOCK)

The intro music clip can be bypassed and thanks for adding that option
as it becomes rather agrivating, with each repeated use of the program.

MODZap documentation pertinent program and user explanation excerpts continued:

New stuff since v00.81a
(MODs which certain things fix are in brackets, with the actual titles
in parens since people translate Amiga* filenames differently)

% MODZap now supports a full 5 octave range, which is important when playing
MODs composed on IBM PCs and Atari STs.

% Unlike that other player, you can now access your Classic Desk
Accessories from inside MODZap.

% Finally wrote a custom list drawProc so now the instrument list is more 
informative.  The instrument number as seen in the scrolly player, the 
instrument type (looping, cached looping, or one-shot), and its residency
(a ram card for swapped, a chip for cached, and a blue X for non-existant insts).

% Wrote and tested brand-new swapper using loop-mode operation just like
the popular ShellPlay.  As a result, stereo mixing now works great. 
Also, the phasing effect heard in soniqTracker and NTGS where the same
sample played twice in a row sounds slightly different is not in
evidence here.

% Notice: MODZap's prefs file is supposed to be sparse, so launching MZ from
a non-ProDOS disk will cause about 4k of disk space to be wasted.  There are
no other problems associated with this (everything will work normally).

% There are tons of new Options, including a 'startup path' so you can
select a path for MODZap to automagically go to on startup (much like
 Kangaroo* or SuperDataPath, only free =)

% A fun memory-trashing bug which has been around a while got squished; this
means the end of random wackiness/hangs/crashes.

% There are lotsa new player modes: Oscilloscope, a 160x128 scope
display of MZ's current output, Oscilloscope (ZipGS) which is a 320x128
scope display for people with ZipGS accelerators (in beta testing, TWGS
machines fared no better than unaccelerated ones), and QuadraScope*,
which individually shows the output of each track like ProTracker* on
the Amiga*.

% Instruments may now be cached in DOCRAM for faster performance and
cleaner sound.  Since the cache manager is new, there is an option to
disable it in preferences.  There also is a new cache indicater light
in the Pumpy Player which glows brighter the more tracks are playing
from cache.  This is actually the opposite behavior from the cache LED
on the ZipGS accelerator card.

% The FXLasers have been rescaled so they come up to full brightness
quickly and fade away more slowly.  This allows you to better see
what's going on; formerly the lasers would take so long to trip that if
there was a fast series of effects, you'd just barely see the laser
start to appear before it was reset by the next effect.  Additionally,
there is a new Aqua laser for the position jump F/X.

% There are several new key-equivalents: OA-J for Jukebox, OA-I to save
an instrument, and OA-S for the new Save Module item.

Review Notes: Concerning the OA-S for the new Save Module item, I had no
success when I tried to save a Module item. This is rather vague and
unclear regarding just what Module item it is supposed to save.

The function of OA-I is a needed and very useful inclusion, that I wish
to commend Ian for including with this updated release of MODZap.

MODZap documentation pertinent program and user explanation excerpts
continued:
  
% When saving instruments, the instrument's name as shown in the list is
now the default filename, instead of the MOD's filename.

% Fixed looping so it doesn't loop 65535 times (MOD.TechMaru [TechMaru])

% Fixed tone portamentos so they stop correctly at the target.
(MOD.Nebulos [Nebulos])

% Fixed arpeggios so they work without an accompanying note (MOD.Taking
[taking on the world])

% Added Ultra-Turbo mode for GNO users.  This mode runs with no
animations at all, which dramatically increases avalible processor
time.
 
% Prefs can now be saved...once you set things up how you like, click
the Save Prefs button in the Options dialog and they'll be saved to
disk, in your user folder for AppleShare users.

% You now may optionally turn off the safety net of filename
prefix/suffix checking and select filenames yourself.

Using MODZap

When you run the program, the splash screen will appear and a short
digitized sound clip will play.  Click the mouse button to continue the
program.  To skip this intro, simply hold down the Open Apple key once
the program begins running.

There are lots of ways to open modules with MODZap*....

1) Use Open MODule... and select one.
2) Use Force 31 Instrument or Force 15 Instrument if you have one that the 
     auto type checker botches for some reason.
3) Use Jukebox... to grab a whole bunch to hear in a row.
4) Install the MODZap.Icons file and double click a module from the Finder*.

Once you have one open by whatever means, the Module Control Panel will appear.  It will show you the title, type, and creator program (if possible...only StarTrekker has a distinctive signature of all the popular Amiga Trackers).
The control panel includes a list of instruments containing information as follows:

Instrument number
|
|    Instrument residency: a ramcard for swapped, a chip for cached, and an X for N/A.
|    |
3 > O  BigTubeGuitar  
   |
Instrument type: an arrow for one-shot, a loop for looping, and a loop
with a ramcard for cached looping.

Additionally there is a keyboard you can click on to play whatever
instruments name is highlighted in the list.

Playing the module once it is loaded is very simple.  Just select Play
MOD from the Sound menu.  The Graphic Player will pop up and the module
will begin.  (this happens automatically in Jukebox mode).

To stop playback for any reason, press the Option key on your keyboard
or click the mouse button. Otherwise playback will end when the module
is done.  Note that some modules have a Position Jump command so that
they loop forever; this is especially true of modules from games or
demos.

If that is the case the module will loop forever and the only way to
stop it is using the Option key or mouse button.  There is a scrolly
subdisplay at the bottom of the screen arranged as follows:

The left most column of the display shows 4 information items relating
to the current song.  The top most one is the number of positions in
the song, the next one down is the current position number, the third
one is the current block number, and the bottom most one is the number
of the bottom most position in the block shown on the scrolling part of
the subdisplay.

Several keys can be used while a module is playing.  1-4 toggle the
disable/enabled status of tracks 1-4.  The spacebar pauses and unpauses
playback.  The Esc key exits the player if you are in single mode, and
aborts the jukebox if you are in jukebox mode.

More About the Jukebox:

There are some standard behaviors supported by the Jukebox; here goes.
Open Apple-clicking adds files to a selection.  Shift-clicking selects
everything between the current selection and the nearest other
selection.

Open Apple-clicking an already selected file deselects that file. 
MODZap imposes no limit on the number of MODs selectable in Jukebox
mode other than that the filenames must all fit in avalible free memory
(this is very hard to do even with the largest MOD collections!).

Menu Options

There are several options avalible in the Options item of the Options
menu.  They are as follows:

% PAL/NTSC (soniqTRACKER calls these 50 and 60 Hz respectively).  99% of
MODules are PAL (50 Hz) but due to the way early Amiga trackers worked
some older modules created on United States Amigas may be NTSC.  If a
song sounds too slow, try NTSC.  There is no other way to distinguish,
although some modules may come with documentation which tells you what
setting to use (eg MOD.Sandman.PAL or MOD.Everybody.NTSC).

%Ignore Tuning allows you to ignore the fine-tune bytes in MODules in case
a module sounds weird with them.

% Ignore Arpeggios allows you to ignore arpeggios in case you get a MODule
which sounds weird with them.  v00.75 added range checking so that some 
modules which formerly needed this option shouldn't now.

There are key equivalents for some of the items in the dialog box: A
toggles the Ignore Arpeggios check box, T toggles the Ignore Tuning
check box, Return is the same as the Okay button, and Open Apple-period
(.) is the same as the Cancel button.

Additionally, one item is in the Options menu so that you may conviently
access it without disk swapping:

%Loop Music allows you to determine if MODules play once or repeat until
you press the Option key or click.  Note that this has effect in
Jukebox mode also so you must press Option or click to allow the
Jukebox to switch to the next one in the series.

Selectable MODs

MODs must meet certain criteria to appear in the Open and Jukebox dialogs.

o Their type must be TXT or BIN, or $F4 with an aux $6900.
o Their name must start with MOD. or end with .MOD (case is now
insensitive) unless Ignore MOD./.MOD is checked in the Options dialog.

Effect Commands Supported and their Laser colors


still show up on the lasers for StarTrekker modules, but will have no
effect on playback*



0 - Arpeggio if nonzero effect data, no effect otherwise (Purple if Arp.)
1 - Pitchslide up  (Red)
2 - Pitchslide down (Blue)
3 - Tone Portamento (Green)
4 - Vibrato (Purple)
5 - Tone Portamento with Volume Slide (Yellow)
6 - Vibrato with Volume Slide (Yellow)
9 - Sample position jump (Green)
A - Volume slide (Red)
B - Song position jump (Aqua)
C - Set volume (Blue)
D - Break to next position (Aqua)
E - Multiple effects (all of these are White)
E1 - Fine pitchslide up
E2 - Fine pitchslide down
E6 - Set Loop/Jump to Loop (includes undocumented mode used by MOD.BassBins)
E9 - Retrigger note
EA - Fine Volume Slide Up
EB - Fine Volume Slide Down
EC - Note Cut    
F   - Set tempo (Red)

Note that some effects are ignored deliberately; this includes the following:

8 and E8 are not defined on any Amiga* tracker.
E0 controls the Amiga hardware filter; the IIgs has no such beast.
EF is a 'useless' effect which was removed as of ProTracker* 1.3 on the
Amiga; Lars Hamre told me that since its not supported on the Amiga any
more I shouldn't support it on the IIgs.

Comparison Chart - Updated with notes and revised 7/18/94, to
accommodate the new compatibility features for the GS/OS application
program: Noise Tracker GS v2.00.

Feature                   MODZap      Noise Tracker GS    soniqTRACKER         ShellPlay 
--------------------------------------------------------------------
Compatibility:
NoiseTracker*       Yes              Yes                           Yes                          Yes
ProTracker*           Yes              Yes                           Yes                          Yes
StarTrekker*         Yes              Yes                           Yes                          Yes
Others                     No               SoundSmith*            No                            No
Sonic Blaster*      Yes              Yes                           Yes***                     Yes***

# of Effects:           21                22 (More pending) 19                            29

Other:
Swap method:        Loop-mode  Both                      Swap-mode              Loop-mode
Filtering:             N/A              Yes                         Yes                          N/A
Sound quality:     Fair             Very Good              Very Good               Excellent
DOCRAM Caching    Yes              Yes                         Yes                          No
Smart volume        Yes             Yes                          No                           Yes
Smart looping       Yes             Yes                         Yes                          Yes
Editor                     No               Yes                         No                            No
OS                     GS/OS 6.0          P8 & GS/OS             GS/OS 5.0.2 & up    GS/OS 6.0
Keyboard                Yes             Yes                         No                            No
Multi-Players      Yes              Yes                         No                            Yes
Jukebox                  Yes              Yes~                      Yes                          Yes (Random-play)
Tuning                     Yes              Yes                        Yes                          Yes
Scrolly Player      Yes              Yes                        Yes (Goofy)            No
Bouncing Notes      No                Yes                        No                            No
Freq. meters           Yes              No                          Yes                          No
Lasers                     Yes              No                          No                            No
Loading speed         Fast           Fast                       Medium                   Medium
Rating                      6.9              N/A                         9                             10

~ Noise Tracker GS has two Jukebox related programs (so to speak); NT
MOD Player, a GS/OS application program to play its music module files
individually and VAMPS/NTV Jukebox, a basic program, that AUTO-loads
and plays in sequence all data specified music modules, within the
basic programs data statement line.

These Jukebox programs are for the P8 versions of Noise Tracker GS. 
They currently do not support the complexity of the GS/OS Noise Tracker
GS, (under development).

They will have to be updated to handle the new special effects
presented with the NT MODULE format, with the release of Noise Tracker
GS v2.00.

^ Noise Tracker GS (P8 v1.40), attempts to preform Smart looping with
proper per-set PARM.   Noise Tracker GS v2.00 GS/OS application program
preforms Smart looping.


Amiga MODules.

Noise Tracker GS v2.00 GS/OS application program has 3 save formats;
both of the original NTGS file formats (Modules and Music
score/wavebank file set) and Amiga MODules (MODfiles - Protracker file
format).


one documented case of Noise Tracker GS (P8 version) destroying a hard
disk partition.  Noise Tracker GS (P8 version) also crashes frequently
during song entry and editing.

Review Notes: I've never been given any documentation or proof to show
that Noise Tracker GS destroyed a hard disk partition.  I'd love to see
such documentation, if it does exist !

I don't agree that Noise Tracker GS (P8 v1.40) also crashes frequently
during song entry and editing.  It does occur on occasions, when
improper (per-set- PARM) isn't exercised.

Additionally, with extensive beta testing I've had no instance of any
crashes with the GS/OS application program: Noise Tracker GS v2.00.


levels.  MODZap*, SoundSmith*, Noise Tracker GS*, and many others lower
the levels slightly to compensate; soniqTRACKER and ShellPlay allow you
to manually compensate for this.

A final update note of interest:

I've been doing a lot of modification and enhancement with editing
'Imported MODfile' via the most current b8 of NTGS v2.00, adding as
many MODfile special effects, as possible, then saving them all to
compare their compatibility with play, for accuracy with the added
special effects, audio rendering, etc., via all three of the IIgs
MODfile player programs.

The only one of the three IIgs MODfile players, that can deal with
these MODfiles complex of special effects enhancements, that I've added
to them with the NTGS v2.00b8 program, without locking up or crashing
is, MODZap.

This was done to test out just how many MODfile special effects could
be added to them and the fact that the other MODfile players would
crash or lockup, had nothing to do with the way the MODfile was
designed, enhanced and saved with NTGS v2.00b8. The complexity of the
enhanced effects were designed to test out how much the IIgs MODfile
players could handle, without failure.

In all honesty, I'd have to conclude that the NEW Noise Tracker GS
v2.00, can create, design and/or enhance MODfile special effects, to
such a complex degree, that they just might have to update the MODfile
players to accomidate such efforts.

Congradulations go to Ian.  Your MODZap program withstood all of my
beta enhancement efforts and played all of the NTGS v2.00b8 MODfiles
very well, presenting all of the special effect enhancements with
accurate audio and video rendering, in the normal (Classic) player mode
!

Known Imported module with problems:

(Example MOD: Number1,(an Amiga Noisetracker MODfile) can and often does
crash MODZap. Using all modes, settings options and players with MODZap
gave very poor audio rendering of this Imported Module file.  It plays
perfectly with every special effect presented to perfection with
ShellPlay.  SoniqTracker  plays it very well, with near perfection for
its special effects.  Noise Tracker GS, (P8 and GS/OS) loads it
perfectly and give a very good audio rendering interpretation when
playing it.

When I loaded this 'Number1' Amiga Noisetracker Imported MODfile, via
the NEW NTGS v2.00b8 and saved it back, as a Protracker MODfile, then
loaded it into MODZap, it played perfectly, with all of its special
effects, presented with crystal clarity.

If you wish to contact Ian, you might be able reach him by voice phone
at: (515) -296-8812.  (I've tried to contact him dozens of times in the
past month, by phone with no answer)

I've test loaded and played dozens of Imported Module files of every
kind, with all three of these MODfile Players, using all of their
modes, players and options, from GS/OS v6.0.1, both with and with out
INIT/DA's, using standard/stock and accelerated IIgs'; ROM 01 and ROM
03, with 4Megs of RAM, from both; 3.5 disks, internal IDE hard drives,
floptical drives RAMFAST cards, TransWarp and Zipcards.

I used the following audio equipment; SoundMeister stereo card, KOSS
electrostatic Model ESP-950 headphones, including an E/90 energizer
amp., to audit and obtain an accurate audio rendering and for diligent,
comparative review of their overall ease of operability, audio play
quality, special effects support and performance abilities, with my
overall rating for each.

Please keep in mind, that I've compiled this collective review, article
and report from many imported word processor files of various
types/origins and also from  several program documentation files.

I've reviewed and edited the content, attempted to do a visual and
automatic check for spelling errors.  I'm sure that some spelling
errors, grammar errors, punctuation and spacing problems, original
character translation errors are present.  I hope you will be
understanding and forgive me for any oversights or errors present. 
But, nothing is perfect.  I've done the best I could, with the limited
time I had available to work with and present all of this, within one
standard text file.

I want to express my sincere gratitude to all of those, who gave me
permission to include extracts and edited excerpts from their
documentation and to all of people who contributed the original
materials used in this file.

Your contributions, information and assistance have been a valued
effort, that I'm sure all readers of this file will appreciate and
should certainly find useful, as a collective of information, now
available from one file for their review needs.

You may use all or any portion of this article for any publication or
transmission you wish.

Charles T. Turley, Ph.D.
115 Santa Clara St.
Brisbane, CA. 94005
USA
Tel. (415) 468-1609

Parting final comments follow;

Always keep in mind, that MUSIC is the only real universal language.

Everything must at some point, reach back upon itself, as with a full
circle.  What goes around, comes around.

We are all the same person, trying to shake hands with ourself.  Even
with all of the diversity, isolation, unique cultures and life styles,
it's still one world.

'Unus Mundus Mollismerx Magus'

Apple IIgs FOREVER !


-END OF FILE-