____ ___________________\ |____ _____________________________________________ _\__ ________ | | /___\ ____ ___\___/ ___/____ / / | | | | |_ / _| | | \ / | |____ | / | | | |: | | |: | |: \ |: | |: | | |: |: / |: /____|: |___\ /___|___|___/_______/___| |____ |___|___|___/___/_______\_______/___|gwEm ========================|___\ltk/___|======================================== maxYMiser FM v1.61 (c) Gareth Morris 2021 User Manual maxYMiser works on any Atari 16/32 platform or competent emulation STe, Mega STe, TT or Falcon required for STe DMA sound features Monochrome screens NOW supported ________________________________________________________________________________ (0) Contents ============ 0.......Contents 1.......E-Mail 2.......Credits 3.......Licence 4.......Introduction 4.1 520, 1MB, and 2MB versions 5.......Basic Principals 5.1 Patterns and songs 5.2 Sequences and instruments 5.3 Ways to make sound 5.4 The 'N' key 5.5 Operation without screen 6.......Tracker Display 6.1 Note 6.2 Instrument 6.3 Volume 6.4 Effects 1 & 2 6.5 Sample number 7.......Instrument Editor 7.1 Instrument Selector 7.2 Instrument Parameters 7.3 Sequence Editor 7.4 DigiDrums 8.......Sub-Menus 8.1 Escape 8.2 About 8.3 Help 8.4 Normal 8.5 Configuration 8.6 Zap/Pack 8.7 Transpose 8.8 Advanced edit 8.9 Play song 8.10 Play pattern 8.11 Stop 8.12 Record song 8.13 Record pattern 8.14 Disk operations 8.15 Sequence and sample editor extension 9.......Tracker Effects 10......MIDI Controllers 10.1 Tracker controllers 10.2 Instrument controllers 11......Jam Mode 11.1 Looping pattern 12......MIDI Clock / Sync24 Output 13......MIDI Note Output 14......MMC 15......Replaying maxYMiser Music 15.1 Technical 15.2 Tips for low CPU consumption 16......Emulators 17......Finally ________________________________________________________________________________ (1) E-Mail ========== For all information, help, or questions: gwem@preromanbritain.com To register your interest in maxYMiser please joint the mailing list, details at: http://www.preromanbritain.com/maxymiser ________________________________________________________________________________ (2) Credits =========== Code, design and manual.......................................Gareth Morris:gwEm Design........................................Mathieu Stempell:Dma-Sc/Sector One Graphics.............................................Sebastien Larnac:STSurvivor Falcon DSP clock detection.......................Denis Huget:ST Ghost/Sector One ICE pack algorithm.....ripped by Phil Graham:Grazey/PHF, original by Axe/Delight ASCII logo...........................................Stefan Benz:Lotekstyle/tSCc Its true that most of the grind work on maxYMiser was done by me (Gareth Morris) but we should not forget the work of these other guys who all made maxYMiser what it is today, so thanks again this crew. ________________________________________________________________________________ (3) Licence =========== I'm bored of releasing freeware software that gets a huge number of downloads but receives little or no feedback, except from people who I usually know personally. So: maxYMiser is FREE, but if you make music or sounds with this software which are released either in any kind of commercial or non-commercial way, you should mention somehow that you used maxYMiser in its production. In case you wonder - this is serious. I think its a small price for quality free software. maxYMiser maybe distributed freely, but only with this text document and other associated files. None of the files may be modified in any way. maxYMiser comes with no warranty of any kind: It may very well trash your machine/files/music etc etc ________________________________________________________________________________ (4) Introduction ================ The Atari ST has many good music editors for the built-in YM2149 sound chip. The problem is though that, in someway, every one of them sucks. When I first discussed the project with Dma-Sc, he said I should make 'the music editor of our dreams'. Later I decided to change this goal and just tried to make the best sound chip editor on any platform. With such high aims this was a long project, however I am happy with the end result - even if in many ways I regret starting it. You'll notice the interface and keyboard layout borrows (steals ;) ) much from the PC sample tracker 'FastTracker 2'.... of course, because this is my absolute favourite tracker. I made changes to the things I disliked about this editor, and also made changes to make the interface fit to YM2149 sound chip editing. The many fans of FastTracker 2 should have no problems to adapt to maxYMiser though I think. maxYMiser is not a program for a beginner - it needs a decent knowledge of the YM2149 sound chip. You can read the YM2149 datasheet to give yourself a crash course, or use a different editor. I heartily recommend MusicMon2.5, which is easy to learn and has an advanced sound system. Recently Dma-Sc and 505 have produced a newbie guide, and some free instruments, to stay up to date with cool developments like this, visit the maxYMiser webpage often :) maxYMiser has minimal guards over CPU utilisation, with certain combinations of effect you can easily use more than 100% CPU, which has easy to imagine results. The composer has no restriction over combinations of effect types and channels and there are also no lame 'are you sure about this' type screens - so watch out. If you need some guidance about what effects use how much CPU, look in Section 10.2 (4.1) 520, 1MB, and 2MB versions -------------------------------- There are three versions of maxYMiser included: For machines with only half a megabyte of RAM - 520ST, 520STF, 520STFM, 520STe etc use MYM_520.PRG. A few features had to be removed for this version. These features are the STSurvior intro screen and logo, all features relating to digi and sample playback, MIDI, STe microwire and ICE pack/depack. The powerful maxYMiser YM engine is mostly intact, with a reduced number of steps in the timer sequences, no squarewave FM and no sync square effect. For machines with more memory - MYM_1MB.PRG is guaranteed to work correctly on machines with 1MB of RAM. MYM_2MB.PRB might also work in most cases, but no promises. In the version for 1MB machines, sample memory has been limited to 8KB per sample, in the 2MB version you get the full 32KB. The rest of the manual related to the 2MB version, so please be aware of these differences if using a different version. ________________________________________________________________________________ (5) Basic Principals ==================== Here I discuss some of the basic ideas, terms and concepts used in maxYMiser. Some basic tracker knowledge could help here - I suggest newbies consult the famous 'Trackers Handbook'. (5.1) Patterns and songs ------------------------ On first appearances maxYMiser looks like it takes the song and pattern structure from FastTracker 2 or ProTracker. This was my intention, but actually its not the case. In FastTracker, 2 dimensional patterns are linked together into a one dimensional song list. In maxYMiser songs are 2 dimensional and the patterns are 1 dimensional. This makes for a saving in file size, and offers some ease of use to the composer. Some preset patterns exist for ease of use, eg 'empty pattern' and 'note off'. (5.2) Sequences and instruments ------------------------------- When I was designing maxYMiser I wanted to give the composer the maximum possibilities of the YM sound chip. This meant a low-level instrument editor, and so I devised sequences. A sequence is a list of binary words that you can use to vary some parameter of the sound over time. To give, for instance, a classic arpeggiated chord, or a wobbly vibrato effect. A sequence is also used to produce a volume envelope, or to define a SID waveform. For more details, read the instrument editor part of this manual. (5.3) Ways to make sound ------------------------ I already suggested to read the YM2149 data sheet, so please do. Anyhow, the YM2149 can produce sounds formed from combining square wave, buzzer and noise. On Atari ST we have a fourth possibility - the MFP or timer. Timers can interrupt the CPU at regular intervals for manipulating the YM into producing various effects. This distributed version of maxYMiser has 8 specific types of timer effects. Each channel uses its own separate timer, if its enabled that is. The effects include: * 'DigiDrums' which plays a 4bit sample, typically a drum sound or special effect. Mad Max/TEX, was the first musician to use the effect on ST in the Arkanoid Cracktro by TEX released 1987. * 'SID' produces a software generated waveform. In the past this has always been a fixed waveform (usually square), maxYMiser allows you the possibility to program this yourself, eg for sine or fake-buzzer waveforms. The first use of a timer generated waveform, modulated with the internal YM square wave was in the Disk Busters Association issue 6 intro from Synergy released September 1992, music from the musician Scavenger. The musician Tao/Cream was the first to experiment with non square waveforms generated by the timer, for example sine waves. * 'SyncBuzzer' retriggers the buzzer waveform at audio frequency intervals to create synchronisation effects in the same way as the 'sync' function works on an analogue synthesiser. The effect was originally discovered by the musician Tao/Cream and was first heard in his song "Birth" used in the TSCC Modcomp 14 introduction release Jan 1998, at the very end of the tune. * 'SyncSquare' was exclusive to the Outline 2005 special edition of maxYMiser and after 16 years has made it to the main release! The effect triggers synchronisation on the square wave at audio frequency intervals, in a similar way to a sync buzzer. Due to hardware limitations this effect can be somewhat unstable, however ideas from Ben/Overlanders and Tat/Avena have improved stability since the 2005 version. To keep the 'easter egg' theme of this effect, there is a bonus syncsquare feature in the sound engine - but can you find it?! * 'Square FM' changes the frequency of the square wave at audio frequency intervals - doing this creates a "hollow" or "clanging" FM effect. Due to hardware limitations, the square wave FM effect is glitchy. The FM effect is good for bass or harsh noise. Squarewave FM was first heard in Checkpoint's Morphonic Lab XI demo (released 2012) and was also included in TTrak, the tracker from Damo/Reservoir Gods and Tat/Avena. * 'Buzzer FM' changes the frequency of the buzzer wave at audio frequency intervals - doing this creates a "hollow" or "clanging" FM effect. The buzzer FM effect is not glitchy, but it has a limited range where tuning is accurate. The effect is good for bass or harsh noise. maxYMiser is the first tracker to include buzzer FM in 2021, and I'm happy to say the idea came from myself :-D * 'SyncBuzzer FM' was an effect proposed by Damo/Reservoir Gods. The idea is to combine SyncBuzzer with Buzzer FM. The effect works well, and is a great extension to the classic syncbuzzer effect. * 'Pulse width' is an old effect from Ziggy Stardust of the French demo crew Overlanders. He and Doclands were the only musicians to create music with the effect until it was included in maxYMiser by popular demand. The Transbeauce Demo 2 "Hidden Part 1" (May 1991) includes the effect which sounds very similar to the original Synergy SID effect. By changing the frequency of the timers it is possible to create a fine grain control over a PWM waveform, without the YM squarewave and just one timer per channel. On STe machines and higher we have even a further possibility to make sound - a simple DMA sound chip. maxYMiser offers quite optimised mixing and resampling routines and a simple interface to allow this DMA chip to be used together with our old friend the YM for hybrid composing. (5.4) The 'N' key ----------------- In many of the editors and screens pressing 'N', 'shift+N' or 'control+N' will select the next unused pattern or sequence. Remembering this will save you time and effort - thanks 505 ;) (5.5) Operation without screen ------------------------------ maxYMiser includes some file auto-loading functions to allow the use of the program without needing a big and heavy screen - for example as a part of a live performance, or when using maxYMiser as a MIDI sound module. To do this, you might setup a floppy disk as follows: A:\AUTO - here put your maxYMiser program file A:\ - here include your default voice sets and configurations: \MYM.CNF - first the usual maxYMiser configuration file is loaded \DEFAULT.SND - a default SNDH file is attempted next, if not... \DEFAULT.MYS - then tries to load a default song... \DEFAULT.MYV - and voice set \DEFAULT.MYI - if this also fails, tries to load a default instrument otherwise, no default files are loaded So by including maxYMiser in an auto folder, and a default file in the root directory is possible to boot from a floppy and have some pre-made voices or a tune loaded automatically when you power on the machine. ________________________________________________________________________________ (6) Tracker Display =================== As you can see the tracker display consists of three large vertical columns of codes. Each vertical column corresponds to one of the three YM2149 sound channels. The number at the top of each channel shows the current pattern being displayed there. Pressing 'Play Pattern' plays the current patterns without reloading the current patterns from the song list. This allows you to demo combinations of patterns without changes to the song. These patterns can be changed with keyboard shortcuts, or by modifying these fields with a new pattern number or preset. Like many trackers the patterns are 64 steps long, which nicely corresponds to 4 musical bars, with each step equal to one 1/16th note. Pattern break tracker commands allow you to shorten this length. For each step in each column of YM tracker data there are seven pieces of info. Lets illustrate them below: | | | | . | . | | Note-Octave | Instrument | Volume | FX 1 : Type . Value | FX 2: Type . Value | | | | | . | . | The same patterns are also used for the STe DMA track. Here the meaning of the data is a bit different: | . . | . . | | Note-Octave 1 . Sample 1 . Volume 1 | Note-Octave 2 . Sample 2 . Volume 2 | | . . | . . | There are no effects (except volume) on the STe DMA track - but you do get two independent channels for sample playback! (6.1) Note ---------- This column holds the note data for that step. If this is blank the currently playing note is unaffected. CapsLock can be used to enter a universal note off here. Notes can be entered either in real or step time, and using an external MIDI keyboard, or the Atari keyboard (here we show mapping on a UK system): (Upper octave) 2 3 5 6 7 9 0 = => C# D# F# G# A# C# D# F# Q W E R T Y U I O P [ ] => C D E F G A B C D E F G (Lower octave) S D G H J L : => C# D# F# G# A# C# D# Z X C V B N M , . / => C D E F G A B C D E Octaves can be changed with the function keys. maxYMiser supports all notes in the YM frequency range, even if the very high notes are not useful musically. The octave reached by press 'F9' maps each key to middle C on a different instrument, useful for entering rhythms. (6.2) Instrument ---------------- If an instrument number is present here then the sound is triggered from the start so, to avoid retriggering, simply omit this column. The instrument number to be entered in this column can be selected with the numeric keypad, the instrument editor, or via a 'MIDI patch change'. (6.3) Volume ------------ The volume number in this column is an attenuation level. A dash means no change to the current attenuation level. A $0 gives the loudest volume, and $F the quietest. Usually a dash is entered in this column, but you can change this with the 'vol' field in the 'normal' menu. (6.4) Effects 1 & 2 ------------------- Effects type is an alphanumeric value, in other words 0-9 and A-Z. The full details of these effects are provided later on in this manual, and are summarised in the online help system. The effects value which corresponds to this type is shown by the adjoining two nibbles, which form a hexadecimal value in the range $00-$FF. The meaning of this value depends on the effects type. The single effect columns previously available on existing YM trackers were thought not to be sufficient for the complex compositions with adjustment in instrument parameters that maxYMiser was designed for. Therefore two effect columns are provided, which offer exactly the same features. (6.5) Sample number ------------------- On the STe DMA track we have sample number instead of instrument number. The tracker plays back samples loaded into the digidrum banks, and the sample number here corresponds to the digidrum sample number. Samples are played back with middle C corresponding to 8287Hz. ________________________________________________________________________________ (7) Instrument Editor ===================== The right half of the screen allows selection and editing of the instruments used in your composition. Almost every instrument parameter can be adjusted with tracker commands. For an in-depth tutorial of the maxYMiser instrument editor by Dma-Sc check the maxYMiser website. (7.1) Instrument Selector ------------------------- maxYMiser has four banks of eight instruments, giving 32 instruments in total. Instrument banks maybe selected with the buttons to the top right of the screen, or with keyboard shortcuts on the numeric keypad. Within each bank you can select instruments with a left mouse click. Highlights appear over the instrument name and the instrument number. These can be selected independently for copy and remapping operations. Right clicking on an instrument name allows editing. (7.2) Instrument Parameters --------------------------- From the top down: The 'de-tune matrix' allows you to enable different instrument effects (portamento, vibrato etc) on different parts of your sound (the square wave, buzzer or timer generated effect). Fixing the frequency of the sound using a fixed frequency sequence (fix freq) disallows all other effects except for vibrato, it is also no longer possible to play notes with this part of the sound. Selecting 'fixed frequency' and 'fixed de-tune' bypasses the need for specifying fixed frequencies with a sequence, instead the fine and coarse instrument parameters allow you to fix the frequency, this allows the fixed frequency to be adjust via tracker commands if required. The transpose effect is controlled by the transpose tracker command. As you can recognise, the 'de-tune matrix' gives many possibilities for de-tuning sounds, for ravey stabs, fake resonant effects etc. Below the matrix you can select sequences to change the sound over time. Sequences can be shared between sounds. 'Vol' sequence changes the note volume over time $F=maximum level $0=minimum. Volume sequences do not affect buzzer sounds for technical reasons. On digi sounds only the first step is considered. 'Arp' sequence allows complex arpeggios to be performed. The sequence provides the number of semi-tones the note is to be adjusted by over time. The number is interpreted as signed 2's compliment, so $FFFF is a -1 semitone adjustment for example. 'Vib', or vibrato, works similarly to the arpeggio except the adjustment is not tuned by semitones, rather YM frequency register value. This allows fine adjustments - however they are not in tune over a wide frequency range. 'Mix' allows for changing the state of the YM mixer over time. The details of the YM mixer appear in the online help. The first nibble enables and disables the noise generator, the second nibble enables and disables the square wave generator. The third nibble enables the buzzer, and chooses the waveform if not 1. The final nibble allows you to select which timer-based effect (for example SID or digidrums) will be used. 'Noi', short for noise, allows you to adjust the frequency of the YM noise generator over time. As the YM sound chip just has one noise generator, higher number YM channels have the priority over setting this frequency. Adjust between $00 to $1F. 'Fix', for fixed frequency, is a rarely used but powerful sequence. You can specify actual YM frequency register values changing over time. The online help provides all the formulae you need to calculate these values. If a particular frequency step is set to $FFFF then fixed frequency is ignored and the normal note is played - useful for combining instruments. 'Tim' provides never before seen possibilities in a YM tracker, and is arguably the most powerful feature of maxYMiser. In short it allows you fine control over the timer effects. In the case of SID, this sequence configures the software waveform that is generated by the SID timer interrupt. For example a sequence $F,$0 gives a square wave. $F,$F,$F,$0 gives a pulse waveform. $F,$A,$5,$0 a rough saw waveform and so on (sine wave is also possible for example). Up to 16 steps maybe used in a SID waveform, and fewer steps mean less CPU utilisation. For syncbuzzer each step in the 'Tim' sequence represents a buzzer waveform, allowing you to form complex alternating waveform syncbuzzer effects. Up to 8 steps maybe used in a syncbuzzer effect, and number of steps does not affect CPU utilisation. In Square FM and Buzzer FM sounds, the timer sequence represents the number of semitones the square wave or buzzer wave is transposed by each time the timer occurs. Octaves or 5ths are good intervals to experiment with on the FM effect. The number of steps in the sequence does not affect CPU usage. Syncbuzzer FM combines the sequence approach of FM and of buzzer. The first byte in each word is the number of semitones that this step is transposed. The second byte holds the waveform for that step. So $0C08 will be a saw wave transposed up by an octave. Number of steps in the sequence does not affect CPU usage. 'PWM' is used together with the pulse width timer effect only. It allows the musician to change the pulse width of the effect over time. The value is added to the fixed pulse width number in the section below. $00 gives a 50% duty cycle square wave, and $FF gives the thinnest pulse width possible depending on the note. Below the sequence selection fields are instrument parameters that do not change over time: 'Instrument volume' specifies the amount of attenuation applied to this instrument. This means a value of zero gives the loudest sound, and a value of $F, the smallest. Make sure you have a defined volume sequence or a buzzer based sound.... otherwise you hear nothing ;) 'Seq Speed' allows the user to set the speed with which all the sequences are processed. A higher number means slower sequence effects. 'Buzz Wave' sets the buzzer waveform associated with this sound. The online help section has a list of the different possibilities. As with the noise generator YM2149 just has one buzzer to share with all voices. Higher number YM channels take priority over the buzzer effect. This field is only used if the mixer sequence nibble for the buzzer is 1. Otherwise the buzzer mixer sequence nibble is used for the waveform directly. 'Start Syn' allows effects only previously possible with the MusicMon2 editor. Other YM editors passed this little gem by, but here again it appears. Enabling this field forces the instrument to synchronise all its tuned components (square wave, buzzer and timer) when the note is triggered, for repeatable phasing. It is not possible to guarantee synchronisation of the YM2149 square wave with precision of greater than 180degrees - this leads to 2 possible phasing effects in this case. 'Fix Det'. If fixed de-tune is enabled by the de-tune matrix then these two fields affect the sound. The coarse de-tune allows de-tuning in semitone intervals. The fine de-tune allows de-tuning in YM frequency register intervals. 'Pulse Width' works in combination with the pulse width timer effect only. It allows the musician to set the pulse width of the effect. The value $00 gives a 50% duty cycle, and $FF gives the thinnest pulse width possible for that note. 'Digi Sample' allows you to pick a digidrum sample from the 8 that maxYMiser supports. For more information see the DigiDrum section. A value of zero in this field means no digidrum sample is selected. 'Rate' allows you to set the replay frequency of the digi sample. You are altering timer register values, however these are also converted to Hz to make things easier. So called 'tempered' digi sounds are not easily possible (so it is not convenient to play tuned notes with them). However this is not the purpose of digidrums (a hint there in the name ;) ) - and in the case of percussive samples I believe that fine control over replay frequency is better. maxYMiser gives you the finest control possible with the hardware. (7.3) Sequence Editor --------------------- This word editor allows you to define the sequences used by the instruments. I believe usage of this editor to be self-explaining, however: 'Cpy' copies the current sequence to the 'Dest' sequence. 'Clr' clears the current sequence. 'Length' holds the length of the current sequence, and 'Repeat' holds its repeat point (if appropriate). Keyboard shortcuts: F3: cut F4: copy F5: paste Help: return to start ClrHome: return to start Undo: skip to end Enter: quit sequence editor (7.4) DigiDrums --------------- This small menu allows you to load new digi samples into your music for digidrums or STe DMA. 8 samples are allowed, each of which can be applied to many YM instruments, or played back through the DMA sound chip. Select the sample number you want to load into and then choose the 'Lod' button. Select an 8bit signed headerless sample (eg RAW PCM type formats). If loading is successful the sample length will be displayed. When playing back as a digidrum each sample is automatically converted for 4bit YM sample resolution using a highly accurate lookup table. Each digidrum can be up to 32kb in length. If you want to load a new sample simply pick the 'Lod' button. To save your sample, along with any editing use 'Sav'. Finally, to clear an unused sample simply pick the 'Clr' button. Its also possible to change the length of your sample by clicking on the 'Len' field. ________________________________________________________________________________ (8) Sub-Menus ============= Here I describe the individual functions of each program sub-menu: (8.1) Escape ------------ You reach this menu by clicking on the top left corner of the screen, or pressing the escape key. 'Quit' exits the program back to the GEM desktop. 'Background' partially restores your Atari to enable it to run desk accessories (eg calculators, sound setup accessories etc) or, in a multi-tasking OS such as Mint, other programs. Select 'Foreground' to return to maxYMiser. (8.2) About ----------- Displays the main program credits. Right clicking on the 'Title' and 'Artist' fields allows the composer to edit the data for these SNDH format tags. (8.3) Help ---------- This help section provides the user with a quick reference to all tracker effect commands, keyboard shortcuts, some YM2149 and DMA low level details, and information about maxYMiser's MIDI implementation. Clicking the buttons on the left selects which help you want to view. Then click on the help pane, and use the mouse to navigate through each screen. (8.4) Normal ------------ The mini-tracker display to the top right is the song editor. Here you can set how your patterns will be sequenced to form a finished song. This mini-editor supports many cut and paste features of the main editor, so experiment. Preset patterns can be accessed as follows: Empty pattern : Backspace Note off pattern : Caps Lock Looping pattern : Spacebar For more details of the Looping pattern see the Jam mode description, in normal playback, looping patterns are simply skipped over. The arrows allow you to move up and down the song editor - right clicking moves to the song start and end. 'Len' holds the length of the song, and 'Rep' the repeat point for the song. 'Speed' holds the song speed in number of replay routine calls per 1/16th note. 'BPM' cannot be edited and is a rough calculation based on the replay speed and interrupt frequency. 'TC' allows you to set the frequency that the maxYMiser replay routine is called by. This frequency is synthesised from the 200Hz system tick. In this way you can select tempos with fine resolution. Beside the 'TC' setting you have the possibility to toggle between using the Atari internal system clock, 'MIDI' clock input including Song Position Pointer, and 'SY24' Sync24 input using a special joystick port interface (see the maxYMiser webpage for details of how to make that. Sync24 input works better with faster Ataris. In MIDI and Sync24 modes the song speed may not be adjusted. The box below the interrupt setting gives the current playback mode, which makes it easier to use the 'jam' features included for realtime resequencing of your music. For more about jam mode, please read that section. Clicking on this box allows toggling between normal playback and jam mode, as well and song and pattern play. Using this box to change the playback mode does not interrupt the playback of your music. You can use F10 / Shift+F10 to toggle this setting also. 'Time' is self explaining ;) 'Zync' shows the current demo zynchronisation code for easy editing. 'Vol' holds the current note volume put in to the editor. 'Add' holds the number of 1/16 steps skipped each time you enter a new note. Left clicking on the 'Chan' buttons mutes and unmutes that YM channel. A right click solos and unsolos that channel. (8.5) Configuration ------------------- Here you select different options for the appearance and operation of maxYMiser. 'Scroll' activates and deactivates pattern scrolling - useful for realtime editing! The controls just below 'scroll' allow you to setup different colour schemes for the editor. 'Mouse' selects between 8 classic mouse pointer shapes ;) The 'Timers' check boxes activate and deactivate MFP timer based effects on each YM channel. This can also be changed dynamically whilst the song is playing with tracker commands. This allows easy swapping of timer utilisation between the YM chip music and any other demo effect you might be running. The timer activation and deactivation is system friendly and fully restores the original settings. A bright block indicates when a timer is used. The status of the STe DMA sound chip functions can be set. Either all STe DMA features can be deactivated, enabled on standard resampling mode for 1 or 2 channels, or enabled for a single STe native frequency channel only. Single channel STe DMA modes boost the volume of the DMA sounds, and the native STe frequency mode has no CPU overhead for resampling. Finally the STe channels can set to output MIDI note data. STe hardware is not required for this setting. The DMA volume control allows the user to set the minimum volume level the STe channel will respond to. If you choose to allow less volume levels the memory is saved in STe native mode. On the single channel DMA mode then both CPU and RAM are saved by setting this control to zero. 'Speaker' enables and disables TT/Falcon030 internal speaker (assuming you didn't rip it out already ;) ) 'VB Freq' - you can set this to high or low screen refresh setting on ST(e) and Falcon platforms. This may improve your display quality and is totally independent of the sound replay frequency. 'Show CPU' enables display of the amount of CPU used by the maxYMiser replay routine. Interpret this with caution and knowledge! Timer effects will slow down the CPU at all times, not just when the replay routine is active. Better use a different system for more accurate CPU usage monitoring, for example SNDH_CPU. On Falcon 030, maxYMiser supports external DSP clocks, and extra outputs. If your sound system is not locked when maxYMiser is run, then external DSP clocks will be detected. You can see the frequency of this clock here. If you have dual DSP clocks (represented by an asterisk) then you can toggle which one is used. If you have an external DSP clock then an external output, such a SP-DIF, Analog-8 etc is automatically enabled. 44.1kHz is by default chosen if this is available. Next to this field you can select what sound is put out over the external output. You can choose either YM or STe DMA sounds to be transmitted. The 'Year' field allows you to enter the year of composition for your music. This information is used in work saved as an SNDH file. 'Save CNF' writes a file 'MYM.CNF' to the maxYMiser directory. This stores your configuration settings and will be reloaded each time maxYMiser is run. If 'Re-load' is enabled then your configuration will be reloaded after loading a SNDH or song file. In this way settings stored in these files can be ignored if you wish. The MIDI settings on the screen allow access to maxYMiser's MIDI functions. YM tracks 1,2 and 3, and the 2 STe DMA channels can be assigned to a specific MIDI channel ($0-$F corresponding to channels 1-16), each with a different instrument or sample number. This instrument can also be changed with a 'MIDI patch change' separate of this sub-menu. If YM and DMA tracks are set to the same MIDI channel then MIDI note input on this channel will be multi-plexed in a semi-intelligent way to give polyphonic abilities :) There are also two special MIDI instrument numbers. When '--' is shown this track is totally disabled. The 'DD' instrument allows support of MIDI drum kits to play maxYMiser sounds. The 'DD' is a tribute to the Yamaha DD series of electronic drum sets - yo! In this mode each key plays middle C on a different sound. You can enable this mode for the editor by pressing 'F9'. You can enable maxYMiser's ability to respond to MIDI controllers here too by toggling the 'cntrllers' setting. The 'Latency' setting allows you to compensate for the comparatively slow start time of maxYMiser when using an exteral MIDI or Sync24 clock. By increasing the value from zero, maxYMiser starts slightly further into the song. This way you can tune maxYMiser to be in sync with your external MIDI gear. The setting is dependant on your Atari, the tempo of the song, and the DMA samples used. You can use a value of around 5 for a simple 200bpm song on a normal ST or STe for example. (8.6) Zap/Pack -------------- The 'devastate' options allow you to trash your song, instruments, or both ;) The 'squish' options give you some memory management functions. Duplicated patterns and sequences are removed and the remainder are stored in a way so as to reduce file size. Preset pattern are subsituted where applicable. You can also get some statistics about the last used sequence and pattern, which indicates how much memory is used for storing these things. Press 'update' to update this display. (8.7) Transpose --------------- Here you get an enhanced version of FastTracker2's menu. In addition to the usual 32 transposition possibilities you can perform 16 different volume adjustments with this menu. (8.8) Advanced edit ------------------- This menu gives powerful editing possibilities. 'Copy' copies an instrument between positions in the instrument editor. The small 'instrument number' highlight specifies the destination, and the larger 'instrument name' highlight gives the source. 'Track', 'Pattern', 'Song' and 'Block' allows you to re-map instruments within your song. 'Xpand' and 'Shrnk' allows to double and half speed the current track. Any part of the pattern 'cut off' by the expand operation is stored in the track edit buffer. You can select 'Overwrite', 'Overlay' and 'Underlay' paste modes. The seven button toggle below the paste mode selection allow masking of each column of tracker data for the cut and paste operations. Clicking on the 'all' text toggles all of the column masks on and off. (8.9) Play song --------------- Selecting with the left mouse button plays the song from the start of the current pattern onwards. A right click plays the song all the way through from the top. (8.10) Play pattern ------------------- Left clicking plays the current pattern from the start without re-initialising them from the song list. This allows you to try out patterns together without changing the song. Right clicking has the same effect, but starts from the current cursor position. (8.11) Stop ----------- Stops play and record modes. (8.12) Record song ------------------ Only left click has an effect. Operates the same as play song, but enables record mode. (8.13) Record pattern --------------------- Only left click has an effect. Operates the same as play pattern, but enables record mode. (8.14) Disk operations ---------------------- maxYMiser gives you an array of loading and saving possibilities. You can work with files in the popular Atari ST music format 'SNDH' (of course only SNDH files created with maxYMiser can be loaded into the editor). You can also save and load voice sets and song data separately for use with maxYMiser's binary replay routine. In addition you can save your favourite instruments and trade with your friends ;) The software saves and loads files packed with the famous ICE algorithm. To enable saving with this packer, select the check box. The next file to be saved will then be ice packed for a significant file size reduction, however the packing operation can take some time, especially on a standard ST... Therefore I recommend ICE packing only for distributing your finished music. All fully SNDH standard compliant players support playback of ICE packed files. Another option for distributing your finished music is the 'time' check box. Normally saved files loop continuously at the repeat point. However, by checking this box the next saved SNDH file will have its track duration set by the current track timer. Just play your track to its end point, and press stop to set the timer appropriately. Now in supporting players your music will end correctly. The bottom field on this panel gives the result of the last disk operation, so it is also displayed after loading digi samples. (8.15) Sequence and sample editor extension ------------------------------------------- The first half of this menu allows fast generation of sequence data. Sweeps and oscillations can be easily programmed here. 'Minimum', 'Maximum' and 'Oscillations' are self explaining. You can 'Gen'erate a new sequence or 'Mod'ify an existing one. The 'Morph' button generates sequences that fit in between the current and destination sequences. For this to work these sequences should have the same length. Combining this feature with tracker commands allows versatile morphing of sounds, eg SID-morph. The second half of the menu expands the abilities of the little digidrum panel into a minimalist sample editor. You can amplify or attenuate your sample in units of 1.5db. There are fine tuning functions which allow you to pitch up or down your sample in units of an octave, a semi tone, and 1/8 of a semi tone fine tuning. Tuning down an octave includes interpolation for improved quality. The YMise function is not to be found on any other sample editor. Converts the sample to sound like a YM digidrum - even on the STe DMA channel. This is for true digidrum freakz. Incase you loaded by mistake a sample in a really old fashioned unsigned format, have no stress and click the 'Sign/Unsign' button :) The sample start point can be manually trimmed with the 'Start' field. This allows for really old skool style sample editing found on classic samplers like Akai S950. To set this point really finely you could playback your sample at a very low pitch. Hint: you can also load microsoft .WAV files saved in PCM 8bit format into maxYMiser without too much effort. Firstly use 'sign/unsign' and then trim the first 44 bytes from the start of the sample. ________________________________________________________________________________ (9) Tracker Effects =================== I did not follow the scheme of any previous tracker for this, rather my own idea of what's logical. You can look these up with the on-line help system. 0 1 set portamento enable flag mask 2 set arpeggio enable flag mask 3 set vibrato enable flag mask 4 set transpose enable flag mask 5 set fixed frequency enable flag mask 6 set fixed de-tune enable flag mask 7 pwm s7ide + value (the PWM slide free runs, use value $80 to reset it) 8 8wm sequence + number 9 9ulse width + value A Arpeggio sequence + number B pattern Break C start synChronisation + value (on/off) D Detune coarse + value E dEtune fine + value F Fixed frequency sequence + number G diGi sample + number H pitcH slide + rate I tImer sequence + number J K L voLume sequence + number M Mixer sequence + number N Noise sequence + number O nOise transpose + amount P Portamento + rate Q seQuence speed + value R digi Rate + value S song Speed + value T Transpose + number of semitones U Uwire + value (this sets the LMC1992 sound adjustment circuit on STe and TT) (only operates when DMA sound is activated) U00->0C set the bass boost/cut - U06 is the default (not on F030) U10->1C set the treble boost/cut - U16 is the default (not on F030) U80->A0 set the master volume level (emulated on F030) UC0->D0->E0 set the panning position (emulated on F030) V Vibrato sequence + number W buzzer Waveform value X eXtra 2/3 step arpeggio (High and low nibbles give the number of semitone variations - eg X47 gives major arpeggiated chord. If the second step is set to $F then a 2 step arpeggio is produced eg XFC gives a 2 step octave arpeggio) Y dYnamic timer allocation mask eg 7=all timers, 2=timer B only etc Z set demo Zynchronisation code ________________________________________________________________________________ (10) MIDI Controllers ===================== For maxYMiser to respond to MIDI controllers, they first need to be enabled in the 'config' menu. MIDI controllers supported by maxYMiser are split in to three types - Tracker controllers and Instrument controllers. Instrument controllers are sensitive to MIDI channel, and operate only on the instrument editor of a specific sound. Tracker controllers operate globally on maxYMiser itself, or a YM/DMA channel, they respond on all MIDI channels. (10.1) Tracker controllers -------------------------- 16,17,18,19,20 channel mutes 21 song speed 22 song position 23 jam mode 24 pattern/song play 25 pattern position 26 instrument select (disabled) 27 mouse pointer type 28 global noise transpose 29,30,31 YM channel noise transpose 32 global transpose 33,34,35,36,37 track transpose 38 global volume 39,40,41,42,43 track volume 44,45,46,47 next patterns (Jam mode) (final controls set the LMC1992 sound adjustment circuit on STe and TT) (only operates when DMA sound is activated) 48 Uwire volume (emulated on F030) 49 Uwire pan (emulated on F030) 50 Uwire bass (not on F030) 51 Uwire treble (not on F030) (10.2) Instrument controllers ----------------------------- 60 volume sequence 61 arpeggio sequence 62 vibrato sequence 63 mixer sequence 64 noise sequence 65 fixed freq sequence 66 timer sequence 67 pwm sequence 109 instrument volume 110 sequence speed 111 digi sample 112 digi rate 113 buzzer waveform 114 start sync 115 coarse tune 116 fine tune 117 pulse width ________________________________________________________________________________ (11) Jam Mode ============= maxYMiser also includes some features to allow rearrangement and sequencing for your songs in real-time. You can use these for live performance, and also to try out sequencing ideas before permanently tracking them. To enable jam mode press 'F10' or click in the right place in the 'Normal' menu. Press 'shift+F10' to disable the mode. Once jam mode is activated song and pattern play modes function slightly differently. When jam mode is activated during song playback the key combinations: Control + cursor left / Control + cursor right can be used to navigate the song. Normally changes to the current song position using this combination occur immediately, but in jam mode the new position selected will be jumped to after the current pattern finishes. This allows for smooth rerrangement of your music. For safety reasons pattern selection is disabled when in jam song mode. When jam mode is activated in pattern playback the key combinations: Shift + cursor left / Shift + cursor right can be used to select the next pattern that will be played in the current track. Again, the new patterns selected are jumped to after the current pattern is finished. This allows the user a finer level of control for reworking their music. The patterns selectors above each column can be used as normal, including selection of preset patterns which is especially useful in jam mode. There are also some jamming aids which are activated constantly, irrespective of the status of jam mode. The mute mode functions differently from other trackers. Now the track mutes just disable the sequencing for that track. Notes can still be played via the keyboard or over MIDI, allowing you to try out new solos, or to perform them for real in a live situation. Using the keyboard shortcuts allows the composer to select between record on/off and pattern/song play during playback, without retriggering the playback. This means that you can switch between all these modes smoothly with no interruption in audio: Key Playback stopped Playback running ----------------------------------------------------------- Return Start song play Switch to song mode #~ Start pattern play Switch to pattern mode Right shift Start pattern record Toggle record on/off (11.1) Looping pattern ---------------------- In the song editor the spacebar can be used to add longer automatic loops to your track. When jam mode is inactive, a song step containing a looping pattern is jumped over. In jam mode however when the song reaches a looping pattern playback continues immediately after the previous looping pattern. If there is no previous looping pattern, than playback resumes from the beginning of the song. Combining these new looping patterns with the jam mode behaviour described so far gives live rearrangement facilities similar to the famous Alesis MMT8 hardware sequencer. ________________________________________________________________________________ (12) MIDI Clock / Sync24 Output =============================== maxYMiser constantly outputs MIDI clock pulses, and Sync24 clock pulses during playback. In order to use the Sync24 clock output its necessary to build a special interface, details of which are available on the the maxYMiser webpage. Due to the limitations of the Atari (in other words - fixed system clock of 200Hz) and certain Sync24 enabled equipment with slow CPUs (for example TB-303 and TR-606), there is a maximum tempo of just below 250bpm which can be reliably transmitted. Above this speed, Sync24 equipment will start to drift out of sync. However, if the song speed drops below this rate Sync24 will try to 'catch-up'. MIDI and Sync24 output also works with MIDI or Sync24 input. ________________________________________________________________________________ (13) MIDI Note Output ===================== With the STe DMA mode set to 'mid', both the STe channels output MIDI note data with channels set according to the MIDI configuration in section 8.5 The channels are setup to trigger note on and note off messages depending on note off commands in the tracks themselves, in order to be compatible with legato mode on many monophonic synthesisers. ________________________________________________________________________________ (14) MMC ======== Mega-type STs have a detachable keyboard. So that maxYMiser can be used without this keyboard I decided to support MMC messages for start and stop. These can be transmitted over MIDI by several external control surfaces. ________________________________________________________________________________ (15) Replaying maxYMiser Music ============================== Files saved in the SNDH format can be played with any SNDH replayer. There are a number of these for a variety of platforms. SNDH is a standard format for Atari ST chip music, rather like the famous SID format on C64. For more information visit http://sndplayer.atari.org/ Apart from the SNDH format maxYMiser voice and song files can be combined together in various ways and replayed in your productions by using the supplied binary replayer. For guidance on how do this please look at the example source code, which is for a multi sub-tune SNDH file. This example covers most possible replay situations, and even novice level assembly programmers will be able to make use of maxYMiser music. (15.1) Technical ---------------- Here are details for the header offsets of the maxYMiser replayer, run each routine in supervisor mode: MUSIC +$0 = branch here for music initialise routine MUSIC +$4 = branch here for music de-initialise routine MUSIC +$8 = branch here for music interrupt routine MUSIC +$C (binary replayer) = set d0.w 0->127 and branch here to set global vol MUSIC +$10 (binary replayer) = read here for demo zynchronisation byte +$B8 (unmodified SNDH) +$?? (modified SNDH - byte is present directly after HDNS tag) The replay routine stored within the SNDH file, and the one in the binary replayer are virtually identical. There is little advantage either way performance wise. The replay routine is fully PC relative, and performs partial relocation on part of its code in the initialisation routine. You will probably notice that replaying maxYMiser music outside of the editor is a little faster than inside it, this is due to the RLE algorithm used to pack the pattern data. The replay routine automatically detects processors without cache, and then uses self-modifying code routines for performance. This includes MegaSTe - although this system has second level cache, data and instruction caches are not separated, so there are no strange effects with using these self-modifying code routines. The routine is generic, customised space-saving versions of the binary replayer can be made available depending on your specific application. Email me for details. (15.2) Tips for low CPU consumption ----------------------------------- As a composer for music on any platform you have to be aware of using CPU. On PC and Mac, for example, any VST or other synth/effect you use takes some CPU time, so you can't run too many of them. The same with Atari ST chip music, any special effects you use will use some CPU, and with an old skool 8MHz machine you can easily use it all up ;) If you're working with a coder on a demo production, they're sure to want some spare CPU time for running their effects. Depending on the coder, you might not be allowed to use too much CPU for your music. Even if you chip just for fun, you can still easily use your machine up with too much of certain effect types. As a guide, here is a list of different effect types, and some guidance about CPU usage. * YM DigiDrums. These are easily the most CPU eating effect. Best is not to use them at all. To minimise the impact, use on one channel at once only, and with the lowest possible sample rate for ok quality - maybe 6kHz. maxYMiser supports digidrums at different volume levels. If there is no volume adjustment, in other words if the digi is at maximum volume, less CPU will again be used. * SID. Software generated SID waveforms use less CPU than YM DigiDrums, but they can still eat CPU. Triple classic SID tunes from the SID Sound Designer days were notorious for eating much CPU. With the advanced SID effects maxYMiser offers, a composer can easily use more. To minimise CPU usage its recommended to use as few SID voices at once as possible. Use the minimum number of steps in your SID waveform as you can for your YM sound effect. Avoid using SID for high frequency notes. * STe DMA channels. maxYMiser uses quite optimised routines for resampled STe DMA channels. Even so each DMA channel can use around 10% CPU, roughly the same as a SID voice. Try working with a single DMA channel, with STe native sample rates only or no DMA ;) Lower frequencies do use less CPU and STe DMA uses no timers. * SyncBuzzer. In general the same applies for syncbuzzer as SID, but with some differences. SyncBuzzer doesn't eat as much CPU as SID, in fact it uses about half the amount of CPU. Also its only possible to use the buzzer on one voice at once, so you have the enforced limitation of the hardware to help too. * FM. Is a very similar routine to SyncBuzzer, however writing the YM frequency requires two register writes, so it does use a little more CPU. * SyncSquare. Is a very similar routine to SyncBuzzer, however uses 4 register writes plus two nops, so it does use more CPU than FM or SyncBuzzer. * SyncBuzzer FM. Is the same routine as Buzzer FM but with an extra register write to sync the waveform. As such it uses a little more CPU than normal syncbuzzer or Buzzer FM. * Pulse Width. Slightly more instructions used than SyncBuzzer FM. Also called twice as often, the same rate as a two step SID waveform. * Native STe DMA. The STe native frequency mode uses no CPU for resampling on STe, Mega STe and TT, and just a little overhead to parse the tracker data. The volume control is achieved by preshifting, and uses no extra CPU in this mode. Native STe rates on Falcon work for compatibility only and use the same CPU as a resampled DMA channel. * Noise, square, buzzer. Normal 'native' YM effects not using timer or other special tricks use the least CPU possible. Roughly around 5%. Start sync is not a CPU heavy effect, and nor is detuning. For the case of an ST demo, a nice compromise would be one channel with timer effects allowed, limiting yourself to maximum of 4 steps in you SID waveform. The two remaining YM channels could be used for buzzer and drums and classic squarewave effects. For an STe, where heavy blitter use might mean that no timer or interrupts can be used, then 3 channels of plain YM with a single STe DMA channel could also be a good tradeoff between CPU and interesting sound effects. ________________________________________________________________________________ (16) Emulators ============== Atari ST emulators are a good way of experimenting with maxYMiser, and even for serious composition. However, it is important to bear in mind that not all the available emulators support all the advanced effects that maxYMiser provides. This table illustrates which emulators support which effects: Steem Hatari WinJAM ------------------------------------- SID Y Y Y Digidrum Y Y Y SyncSquare partial x x SyncBuzzer Y Y Y Square FM x Y x Buzzer FM Y Y x SyncBuz FM Y Y partial Pulse width Y Y partial ------------------------------------- microwire x Y x ------------------------------------- ________________________________________________________________________________ (17) Finally ============ Have fun and stay Atari ;) Gareth Morris/gwEm July 2021