APlayer:

- Contact info
- Disclaimer
- Features
- How to use
- Module types
- Requirements
- Thanks
- Version history
 

APlayer version history:

3.0.0 released 16. November 1997 - alpha release, first version for BeOS
3.0.1 released 18. January 1998
3.0.2 released 22. February 1998
3.1.0 released 6. July 1998
3.2.0 released 17. August 1998
3.3.0 released 6. January 1999
3.3.5 released 20. March 1999
3.4.0 released 12. July 1999
3.4.2 released 10. August 1999
3.5.0 released 8. November 1999
3.5.1 released 20. December 1999
3.5.2 released 16. February 2000
3.6.0 released 26. June 2000
3.6.1 released 4. November 2000

Version 3.0.1 Released 18. January 1998

  • Fixed a lot of small and big bugs.
  • Mixer routine fixed so it works with MixTest (thanks Marco Nelissen)
  • Added module information window
  • Added new players: SoundTracker15, SoundTracker31, NoiseTracker, ProTracker, StarTrekker with AM support, FastTracker, TakeTracker and MultiTracker.
  • Now remembers the window-positions and sizes.
  • Changed the about window.

Version 3.0.2 Released 22. February 1998

  • Added the Module List Editor add-on.
  • Changed the menus a little bit and added online help.
  • Fixed a bug in the mixer routine. It didn't move the sample pointer when a sample was played with volume 0.
  • Changed the mime-type strings in the players to correct mime strings. Thanks goes to Rainer Ried for telling me.
  • Fixed Had reversed the left and right channels in the mixer (oops :)
  • Fixed a lot of small and big bugs.

Version 3.1.0 Released 6. July 1998

  • Added subsong interface.
  • Added C64 player (Based on SidPlay by Michael Schwendt).
  • Bug fixed in the ModTracker player. If loop start was different from 0, it
    says the sample is looping, even if loop length is 1 or lower.
  • If the user press in the main window listview where there isn't any items, it
    unselects the current playing item. Fixed.
  • The quit procedure rewritten a little bit. It didn't work under Release 3 of
    BeOS. Thanks to Peter Potrebic from Be for discovering the bug.
  • Didn't free the playing module when a new APML list was loaded.
  • Some ProTracker modules do some funny tricks, like playing a pattern
    backwards. This result APlayer to skip the module and go on with the next. Now
    the player checks to see if the pattern is played backwards and then it won't
    jump to the next module.
  • The config load and save functions are endianess aware, which means you can
    take a config file from PPC and use it on an INTEL machine and vice versa.
  • Changed the About window again :) This time the scroll routine is totally
    rewritten, added a nice logo and added some more information.
  • Changed the application mime string to application/x-vnd.Polycode.APlayer.
    Remember to remove the old mime string from the FileType preference program, or
    to make really sure, remove the file called:
    /boot\home/config/settings/beos_mime/application/x-vnd.APlayer.
  • The StarTrekker player doesn't require the .nt file anymore. If the module
    use AM voices and the .nt file isn't there, silence will appear to your ear :)
  • Changed the way APlayer launches the online-help. Now it asks for the default
    browser and start this instead of using NetPositive directly + it checks to see
    if the document exists before it launches it.
  • The behavour when you drag a module into the main window has changed. Now it
    frees the playing module and clears the list before it add the dropped modules.
  • When you save an APML file, the mimetype on the file will be set to
    "text/plain".
  • Now APlayer remember which windows was open with last exit and open the
    windows again when started next time.
  • Added add-on config interface.

Version 3.2.0 Released 17. August 1998

  • Improved the SoundTracker15 and SoundTracker31 test functions.
  • The loader doesn't crash anymore when you try to load a file which doesn't
    exists.
  • Converter interface added.
  • Added the MikMod player + improved and fixed some bugs in it :), eg. can it
    play the Essential.s3m module right. Can now play:

    669 - Improved a lot. It almost a new converter. The slide
    effects works now. Some small effects is not supported yet.
    Farandole - Almost totally rewritten the MikMod converter. There
    was a lot of bugs in it and added some extra effect support.
    FastTracker II
    ImpulseTracker
    ScreamTracker 2.xx
    ScreamTracker 3.xx
    UltraTracker
    - Fixed some small bugs + fixed the sample offset
    effect to handle 0x99 offsets. Only 95% supported.
  • Now players can tell APlayer how many channels the module use and how many
    to reserve. This is used in ImpulseTracker because of the New Note Action.
  • New version of the SidPlay player.
  • Changed the about window again a little bit. Now the logo is placed in the
    window to begin with and starts scrolling out.

Version 3.3.0 Released 6. January 1999

  • Changed the NotePlayer interface so it uses a class instead of a structure to tell APlayer what to play.
  • Fixed a little bug in the SID settings slider DrawText() function.
  • Changed the whole add-on interface. Rewritten from scratch. It's now more OO-like. Boy, this took a long time to do. All the players are rewritten to use the new interface.
  • Changed so all the windows are opened at the same time when starting APlayer.
  • Upgraded the ColumnListView from "Santa's gift bag" to version 2.3.
  • Added Dolby Surround support in the mixer.
  • Added the new version of the MikMod player (3.1.2). I have integrated the bug fixes and features from the new version with mine and here are the results:

    Loaders:

    669 - It now plays with the current speed.
    FAR - Improved a little bit.
    IT - Support for packed samples + optimized a little bit.
    S3M - with more than 16 channels (i.e not created with Scream Tracker) caused
    previous version to crash + it can recognice Imago Orpheus types.
    ULT - Now shows the version of the tracker used.
    XM - Modules with more than 256 samples caused systematic crashs when trying to load them.
    Added the AMF and DSM loader.

    Player:

    Imbricated loops won't block the player.
    End of song marker is now recognized in S3M and IT when it appears inside the pattern list.
    Speed and Tempo can't escape their bounds (1-32 for speed, 32-255 for tempo) now.
    Delay note effect did not work correctly in previous version.
    All divide by zero conditions are prevented.
    Fixed S3M volume slide.
    Panning overflows fixed.
    IT pitch envelope now works correctly.
    IT effect G (porta to note) misbehaviour when changing instrument on the same row, or after a note cut, fixed.
    XM effect G (set global volume) was misinterpreted, resulting in halved volumes doing playback.
    A few glitches in the pattern break and pattern jump effect have been fixed.

Version 3.3.5 Released 20. March 1999

  • Using my new PolyKit library. That means some of my classes are removed from the APlayerClasses library to the PolyKit library.
  • Bug fixed. Can now play modules directly from read-only drives again, such as CD-ROM drives.
  • Added the Future Composer 1.4 player.
  • Added the ModuleConverter agent, which is able to convert Future Composer 1.0-1.3 to Future Composer 1.4.
  • Removed memory leaks in all the players when something goes wrong while loading the module.
  • Thread safed the SetPosition() in all the players.
  • Updated the ColumnListView to version 2.6.
  • Added a new position slider in the main window.
  • Improved the mixer routine. Samples longer than 1 Mb were not played correctly. The mixer routine now uses 64 bit integers to hold some intern calculations when needed. It still uses 32 bit integers when mixing small samples.
  • Bug fixed. Samples with ping-pong loops could make APlayer to crash on some rare conditions.
  • Updated the MikMod player to 3.1.5 and that includes:

    Loaders:

    AMF modules in formats 1.0, 1.2 and 1.3 couldn't be loaded.
    S3M loader correctly identifies S3M modules created by ImpulseTracker and Imago Orpheus.
    STM loader rejected STM created by MOD2STM; the last pattern was never played; also in some STM modules the samples were not loaded correctly.
    XM modules in format 1.02 couldn't be loaded.
    Added the STX (STMIK 0.2), IMF (Imago Orpheus) and GDM (General DigiMusic) loaders.
    Added the UNI loader, for those who need to play the 'Acid Tetris' or 'Axia' songs.

    Player:

    Envelope sustain loops in XM modules were not processed correctly.
    Porta to note using the command memory used sometimes an incorrect value when playing AMF, IT, S3M and ULT modules.
    Volume slides for IT (Dxx) and XM (Axx) modules didn't continue in the background.
    Porta down effect in the volume column of IT modules was not played correctly.
    IT effect T (slide tempo) is now implemented.

Version 3.4.0 Released 12. July 1999

  • A Volume bug has been removed from the MikMod player.
  • Fixed an IT loader bug in the MikMod converter. It can now play the "Revenge of the Cats" module. Thanks to David Terrell for reporting this.
  • Cleaned up the Global data area and created the APModuleList class.
  • Now supports CL-Amp and SoundPlay playlists.
  • When you save an APML (APlayer Module List), it will set the mime-type to text/x-aplayer-list.
  • Fixed some bugs in the ModTracker player. It can now play modules which have backwards pattern correct. Thanks to Cedric Degea for reporting this bug.
  • Fixed another bug in the ModTracker player. Some Jogeir Liljedahl modules sounded terrible out-of-tune. The reason to this is that the player thought it was NoiseTracker modules and then disabled finetune. The volume-bug Cedric Degea reported to me is also fixed by this.
  • Fixed a bug in the Future Composer 1.0-1.3 converter. Some modules played out of tune.
  • If a player changes one of the values displayed in the module information window, the Module Info Agent will now check to see if the update differs from the current data, otherwise it won't update it. This will save some CPU cycles and flickering :)
  • Improved the drawing code for the columns in the Module Info agent.
  • If the Players and/or Agents directory doesn't exists, APlayer crashed when started.
  • Improved the Module List Editor startup time and reduced the amount of memory used when using the file panels. Now they won't be allocated until they are needed and freed again when the module list editor window is closed.
  • Rewritten the loader routine. It should now be more safe and shouldn't crash like the old one did in some rare cases.
  • Made some changes in the player interface. If you are programming a player, you need to change it a little bit. See the APlayer Developer Kit for more information.
  • The module information window will now show the filename if the returned module name from the player is empty or only have spaces.
  • The surround panning flag didn't work in sample players.
  • Added a new version of SidPlay so it now uses version 1.36.35.
  • Added the settings window. Phew, that was a lot of work :)
  • Optimized the module list editor listcode a lot on large lists. Now it only takes a few seconds to load a list with 1600 modules. The clear list function isn't optimized yet, because of a bug in BeOS that make APlayer crash (the MakeEmpty() on BListView doesn't work right).
  • Very long samples were truncated in the mixer.
  • Added a beta version of the OctaMed player. A big thanks to Cedric Degea for making this player.
  • Added the MPG123 player, created by Claes Löfqvist. A big thanks to him too.
  • Updated the MikMod player to 3.1.7 and that includes:

    Loaders:

    Delay note effect was incorrectly converted to pattern jump, and porta to note was incorrectly converted to tremor, for GDM modules.
    Dual effect Lxx in S3M and IT was misconverted to L00.
    XM modules in format 1.03 couldn't be loaded.

    Player:

    Invalid notes using non-existent instruments caused the current note to be retriggered instread of being ignored.
    Porta to note effects did not restart the sample envelopes.
    Note cut with non empty volume column on the same row resulted in the note cut being ignored.
    Disabling/enabling envelopes had no effect.
    Pitch envelope was not played accurately (IT)
    Set finetune effect (E5x) wasn't handled correctly for XM modules.
    Fine slides (X1x, X2x) didn't play correctly for XM modules.

Version 3.4.2 Released 10. August 1999

  • Fixed a lot of bugs in the MPEG player (previously released in 3.4.1 patch)
  • Fixed a bug in the OpenExtraFile() function. It didn't use the directory when checking for prefixes.
  • When playing a module, the music stopped when you change the position. Bug introduced in 3.4.1 and is now fixed.
  • When a genre code in a mpeg file is -1 (none), the MPEG player crashed. Fixed.
  • Added the AHX player. A big thanks to Bernhard Wodok (Bartman of Abyss) for sending us the source to his player.
  • Added the GetMixingFrequency() function in the APAddOnPlayer class.
  • Fixed a little bug in the MikMod S3M loader.

Version 3.5.0 Released 8. November 1999

  • Fixed a small bug in the AHX player. SidVibes.ahx now plays without any problems.
  • Changed the player interface a little bit. Hertz is now used instead of BPM, when a player reports the speed of a module to APlayer. With this method, the speed can be defined with a significantly better precision.
  • If you loop an MP3 file, the music chopped everytime it looped. Thanks to Arild Fischer for reporting this.
  • Added the sample info window agent. You can now see all the samples, play them on the keyboard and save your favorite sounds.
  • Added author finding system. Searches through the sample/instrument names to find an author.
  • Updated the column list view to version 2.85.
  • Rewrote the internal interface to the mixers & added support for virtual mixers in agents.
  • When playing a MP3 file with a different frequency than the mixing frequency, the file sounded choppy.
  • Changed the void* pointers to const void* pointers in the APChannel class.
  • Fixed a bug in the window position save routines. If you placed a window so it got a negative value in either x or y, the next time APlayer started, it would try to open the window using a very big value. Thanks to Cedric Degea for telling me.
  • If you paused an MP3 at position 99, APlayer took all the CPU power it could get.
  • Now APlayer only allocates the reverb buffers when needed. This means, APlayer will allocate or free the memory on the fly.
  • Upgraded the MikMod player and converter to 3.1.8.

    IT global volume slide effect was played too fast.
    IT effect S6x (pattern delay for x ticks) was misunderstood as SEx (pattern delay for x rows).
    Finetune effect was not handled correctly for some XM modules.
    AMF effect 4 and variants leaked memory.
    IT modules featuring patterns with less than 32 rows could not be loaded.
    Some samples and effects in modules converted by APlayer (.apun) were not played correctly.
    Linefeeds in the song message in IT modules weren't loaded correctly.
    IMF effect XE (ignore envelope) implemented.
    More 'slightly corrupted' XM modules can be loaded.

Version 3.5.1 Released 20. December 1999

  • If you disabled the Sample Info agent while playing a module, APlayer crashed. This is fixed now.
  • If you played a MP3 with variable bit-rate and you manually begin to play a SID, the "Init Addr" in the module info window will show the last bit-rate from the MP3. Fixed now.
  • Changed, so it's only every 10th bit-rate change that is updated in the module info window, when playing variable bit-rate MP3s. This is done to save some CPU time.
  • Changed the path requesters in the paths settings, so the start in the parent directory instead of the current.
  • Changed the "add file" path requester open button in the module list editor to "add".
  • APlayer can now load WinAmp list files + it can load all list types with no path given in the lists.
  • Updated the column list view to version 2.93 (from Santa's Gift Bag).
  • Improved the module list add functions in both the main window and the module list editor (it's twice as fast now).
  • If a player couldn't be initialized on the specific module, the module will now be removed from the list and the next module will be loaded.
  • Added the LockListWithTimeout() to the APModuleList class.
  • Added the "Remember module list when exit" option in the settings window.
  • Removed a deadlock when the user selects a module in the modulelist and keep the mouse button down. If the current playing module then ends, a deadlock occure. Thanks to Cedric Degea for reporting this.
  • Added the TFMX player.
  • Boosted the finally volume in the mixer.
  • Improved the speed when stopping and changing position in a sample player like the Mpeg player.
  • Added the Sample player + added a loader to the AudioIFF converter.

Version 3.5.2 Released 16. February 2000

  • If you opened the settings window, pressed the cancel button and then opened the SID settings window via the menu, APlayer said that the window couldn't be initialized. The reason is that the main settings window removed some backup keys from APlayers registry that shouldn't be removed. Fixed now.
  • From 3.5.1, you couldn't play the samples on the keyboard when the module was paused. Fixed now.
  • Added SoundFX 2.0 player and added the SoundFX 1.3 converter in the ModuleConverter agent.
  • If you selected one of the players or agents in the settings window with the mouse, you couldn't move the selection bar with the cursor keys. Fixed now.
  • The sample info window ignored the save format changes you made. It just saved in the same format all the time.
  • Improved the converter interface.
  • Added the RIFF-WAVE converter, so you can now save samples in .wav format + play .wav files.
  • Agents can now plug-in with priorities, by using the GetPluginPriority() function in APAddOnAgent.
  • Renamed all the AfterLoadingBeforeCheck constants and functions to just BeforeCheck, because the players load the module by themself (old change), so the AfterLoading part is misleading.
  • Fixed a deadlock that sometimes could occur when using the "Remember module list" option. APlayer deadlocked when you started it. It begins to play the module, but no windows appears.
  • APlayer will now first delete the remembered module list file when APlayer exits instead of when starting.
  • Added the Unreal converter in the Module Converter agent, so APlayer can play the modules from the PC game Unreal (umx files).
  • Fix in the MikMod player, so modules that jump back and forward all the time, don't ends the module suddenly. Hopefully this method works :) Unreal uses it alot!
  • Fixed a bug in the mixer. Now APlayer can play the "Silent Service 2" module. Thanks to Cedric Degea for sending me the module and telling about the bug.
  • Removed a memory leak in the mixer.
  • Removed the AM & FM sample type and added the Synth type instead.
  • Fixed a bug in the module list that could make APlayer crash. Thanks to Jacob Veedfald for reporting this.
  • If you added a symlink to a directory, the symlink itself was added instead of the files in it. Thanks to Cedric Degea for reporting this.
  • Improved the player descriptions.
  • Upgraded the MikMod player and converter to 3.1.9.

    Envelopes weren't loaded correctly for IMF and XM modules. In the average case, the first envelope point was correct, the remaining half points were bogus, and the other half completely random.
    Enabling the envelope (with an effect) for a sample with no associated envelope would cause a crash.
    Panning was ignored in GDM modules.
    Sample rate was incorrect for STM and STX modules.
    Arpeggio memory (for IT modules) was ignored.
    Tempo slide for IT modules was not processed correctly.

Version 3.6.0 Released 26. June 2000

  • Added the Decruncher agent, which can decrunch PowerPacker data files and XPK-SQSH files.
  • Fixed some bugs in the APChannel class + the mixer when using the second syntax of the SetLoop() function. Thanks to Cedric for pointing this out.
  • The volume slider and the main window position wasn't remembered if you didn't have a "remembered" module list file.
  • Added Amiga low-pass filter support in the player interface. At the moment, it's just possible to turn the filter on and off from a player, but the mixer doesn't use it yet.
  • Fixed a bug in the ModTracker player which occured when a module was using the EFx effect while no samples were playing.
  • Improved the test routines in the ModTracker player, so it won't recognize a UNIC Tracker module as a Pro/NoiseTracker module.
  • Reduced the volume in the mixer back to the original value, because it overpeaked some S3M modules. Too prevent sample (e.g. wave/mp3) playing from being too low the volume is now boosted a bit when they are played.
  • Added the ProWizard agent. APlayer can now play over 80 different module formats! A big thanks to Sylvain Chipaux for sending me the sources.
  • The save format in the sample info window wasn't saved. It is now!
  • Fixed some bugs in the mixer, that made some modules sound terrible.
  • A graphics bug fixed in the main window.
  • Added the module format information in the module info window.
  • Changed the appearance when the position slider in the main window is in focus.
  • Added support for Unreal Tournament. Thanks to Andrew Kimpton for some help.
  • Fixed the sound initialization so it doesn't hang when you don't have any sound card.
  • Added the Sound Output and DSP agent interface. The API is not frozen yet, which is why the documentation is still lacking.
  • Moved the GetMixingFrequency() function from the APAddOnPlayer to the APAddOn class, so it also can be called from agents.
  • If you disabled an add-on when it had a setting window open, APlayer crashed.
  • On BeOS 5, APlayer sometimes crashed when you open the about window. Thanks to all the people who has reported this.
  • Rewrote the MPG123 player in C++. Also fixed a bug when playing Layer 1 in mono. It couldn't play them because they was interpreted as stereo :(
  • The Mpeg VBR file handling is improved, so it now calculates the song length right.
  • The "Remember module list" option didn't work. Thanks to Dennis Jakobsen for reporting this.
  • If no converters are installed and you try to save a sample in the sample info window, it will now complain about it in nicer way.
  • If you dragged a module to the last place in the Module List Editor, APlayer crashed.
  • Changed the rule for the "previous module" button a little bit. If you press the button in the first 2 seconds of a module, the previous module will now be loaded. If you press the button after that, the current playing module will start over again. This method should be better on modules that jump very quickly to another position in the beginning.
  • Removed the fade settings in the settings window, because they are not used at the moment.
  • Added the Sawteeth player. A big thanks to Arvid Norberg for creating the player.  

Version 3.6.1 Released 4. November 2000

  • Added the Oktalyzer player. Boy, it took some time to get to play the modules 100% correct. I will say that this player is the only one except for the original that can play Oktalyzer modules correct! It plays the module as the editor will. (The source to the player is included in the Developer kit :)
  • Added the PlayReleasePart() function in the APChannel class (needed by the Oktalyzer player).
  • Fixed a little bug in the mpg123 player. It showed wrong information if there was some random data in the beginning of the file.
  • If you had double buffering on and ejected a module after the next module in the list were loaded, but not started, APlayer crashed.
  • APlayer can now play the Alien Breed Menu (long) correctly, without going to the next module too soon.
  • Changed the default sample info window size.
  • If you was in a directory in one of the file panels and you want to open it again and the directory didn't exists anymore (e.g. a CD), nothing happened.
  • The MikMod player does not send a message 50 times a second to tell the Module Info Window that the tempo has changed. It will only send a message when the tempo has actually changed.
  • Added the Fred player. The player can play both "Final" and "Editor" files.
  • Moved the MikMod icon from the converter to the player.
  • Improved the MPG123 player check routine. Some mp3's has a huge block of zeros. The player is now able to skip these blocks.
  • Rewrote the ringbuffer filler thread, so the rare CPU eating situations are gone. Thanks to Jaakko Leikas for reporting this.
  • If you have turned "Remember list when exit" on and the last played module doesn't exists anymore when starting, APlayer crashed. Thanks to Jaakko Leikas and Ove Peter for reporting this.
  • If you have a bunch of modules in the module list, you couldn't select some of the last ones in the main window. Thanks to Ove Peter for reporting this.
  • Removed 256 bytes memory leak when playing a MultiTracker module.
  • Removed a memory leak in the Sawteeth player.
  • The ModTracker player will now only check the first line in the first pattern played after BPM speed commands, instead of the whole patterns. This fixes a detection bug in "Game Music Creator" modules.
  • Rewrote the ProWizard agent. It's now based on the original Amiga program by Nicolas Franck. Some extra formats are still supported by merging these converter routines together with the new one. New formats that are now supported are: Channel Player v1, Channel Player v2, Channel Player v3, KRIS Tracker, NoiseTracker Pak, PhaPacker, ProMizer v1.0c, ProMizer v1.8a, ProMizer v2.0, ProMizer v4.0, Pygmy Packer, The Dark Demon, and Unic Tracker.
  • The playing module name is now shown in the main window titlebar. This can be turned on and off in the settings.
  • Removed a memory leak in the Players and Agents tab in the settings window.
  • Added a new tab, Filetypes, in the settings window.
  • Improved the Future Composer 1.3 converter a little bit.
  • Fixed a loop bug in the MikMod player.
  • Fixed a bug in the XM effect 6 (vibrato + volume slide) in both the MikMod player and XM converter.
  • Added support for WinAmp extended file lists.
  • When playing small mpegs, APlayer crashed on x86 machines.