# HG changeset patch # User darius # Date 885571505 0 # Node ID 687659b135f0a5e4767987d56626e03c6ee62b8c # Parent d4366a86185994d2c3768f5e48dc876948c6732b Initial entry of mikmod into the CVS tree. diff -r d4366a861859 -r 687659b135f0 docs/changes.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/changes.txt Fri Jan 23 16:05:05 1998 +0000 @@ -0,0 +1,361 @@ + --> MikMod Sound Libraries Version 3.0 + -> Updates and Changes Text - August 20st, 1997 + + +Updates to MikMod 3.0 Public from Beta Release 03. +================================================== + +I warn you now: There are a LOT of changes in this version. :-) + + +-/- Soundcard Drivers: + + - The Soundscape and WSS soundcard drivers were effectively disabled. + They should work now. + + - There is now a Gravis Ultrasound software mixer. To use the old + hardware-only one, register 'drv_gus2' in the place of 'drv_gus'. + The drv_gus driver now supports BOTH software and hardware mixing + at the same time! + + - Fixed some small stereo bugs in the software mixer [VIRTCH.C]. + Stereo would get skewed in rare circumstances. + + - Added Dolby Surround Sound to the software mixer. + + - Added real reverb to the software mixer. + + - Added a second software mixer [VIRTCH2.C] that is geared toward + high-quality output at the cost of speed. This mixer is by default + used by the RAW and WAV to-disk drivers. + + - Added a WAV out driver. This generates standard RIFF-WAVE format + files as the name MUSIC.WAV. + + +-/- Functions and API: + + - Big Yay! There is nicely written and formatted documentation! + Check out 'docs/mikmod.doc' for the MS Word 2.0 or 'docs/mikmod.txt' + for the std text versions of the documentation. Note that the docs + are still in the process of being written and there are most likely + a handful of inaccuracies and missing topics (to be fixed soon). + + - Big Yay! You can now change driver settings on the FLY! + + Changes to md_mixfreq, md_device, md_dmabufsize, and md_mode after + mikmod has been initialized will have no effect on replay. To have + any new settings take effect, call MikMod_Reset(), which will reset + the driver to use + the new settings. + + Also, note that the following flags of md_mode will take effect im- + midiately no matter what: + DMODE_SURROUND, DMODE_REVERSE, + and DMODE_INTERP (when it is supported :). + + - md_dmabufsize is in MILLISECONDS now (and this time it will stay :). + The new default value is 50 milliseconds, which comes out to about the + same buffer size as the old default of 8192 bytes. + + NOTE: To achieve the maximum size buffer, use a value of 4000 or more. + That will guaruntee that the largest DMA buffer is always used. + + - MD_SetNumChannels has been renamed to MikMod_SetNumVoices and has sev- + eral other changes: + + - A value of -1 for either parameter (music or sndfx) will keep the + current setting. + + - It can now be called at any time. If it is called while playback is + active, there will be a brief skip in playback and the new settings + will be active. + + - ML_RegisterLoader() and MD_RegisterDriver(), although still supported, + should be replaced with: + + MikMod_RegisterLoader(load_format); + MikMod_RegisterDriver(drv_sound); + + NOTE: The '&' (address-of) preceeding the loader/driver should not be + used with these procedures. + + - Also added the functions: + + MikMod_RegisterAllLoaders(); + MikMod_RegisterAllDrivers(); + + These are defined in MDREG.C and MLREG.C, and can only support drivers + that are distributed with MikMod or that I am aware of. If you are a + driver developer, simply register your driver by hand as you did be- + fore. + + - A new naming convention is now being used. This system should be quite + a bit more intuitive for the avaerage MikMod user. Note that for this + version, and probably the next few updates, the old API will still be + useable (#define macros in MIKMOD.H). These will be removed in the + near future, however. + + The [hopefully] complete list of function name changes are as follows: + + Old New + + MD_RegisterPlayer(x) MikMod_RegisterPlayer(x) + MD_Init MikMod_Init + MD_Exit MikMod_Exit + MD_Update MikMod_Update + ML_Free(x) MikMod_FreeSong(x) + MD_SetNumChannels(x,y) MikMod_SetNumVoices(x,y) + MD_SetNumVoices(x,y) MikMod_SetNumVoices(x,y) + MD_PlayStart MikMod_EnableOutput + MD_PlayStop MikMod_DisableOutput + + MD_VoiceSetVolume(x,y) Voice_SetVolume(x,y) + MD_VoiceSetFrequency(x,y) Voice_SetFrequency(x,y) + MD_VoiceSetPanning(x,y) Voice_SetPanning(x,y) + MD_VoicePlay(x,y,z) Voice_Play(x,y,z) + MD_VoiceStop(x) Voice_Stop(x) + MD_VoiceReleaseSustain(x) Voice_ReleaseSustain(x) + MD_VoiceStopped(x) Voice_Stopped(x) + MD_VoiceGetPosition(x) Voice_GetPosition(x) + MD_VoiceRealVolume(x) Voice_RealVolume(x) + + ML_LoadFN(x,y) MikMod_LoadSong(x,y) + ML_LoadFP(x,y) MikMod_LoadSongFP(x,y) + + MP_HandleTick Player_HandleTick + MP_PlayStart(x) Player_Start(x) + MP_PlayStop Player_Stop + + + - A new array of procedures have been added that affect the current playing + song (as opposed to the old MP_ functions, which required a UNIMOD handle). + The functions are [see the MikMod docs for descriptions]: + + void Player_Start(UNIMOD *mf); + BOOL Player_Active(void); + void Player_Stop(void); + void Player_TogglePause(void); + void Player_NextPosition(void); + void Player_PrevPosition(void); + void Player_SetPosition(UWORD pos); + void Player_Mute(SLONG arg1, ...); + void Player_UnMute(SLONG arg1, ...); + void Player_ToggleMute(SLONG arg1, ...); + BOOL Player_Muted(int chan); + void Player_HandleTick(void); + + + - Note to beta testers: The following files, if existing, should be de- + leted (they are residue from older betas): + + pt_share.c + pt_play.c + mp_chart.c + + Actually, I suggest you remove any old versions of mikmod completely + before installing this one. + + - If no soundcard is found, MikMod will automatically default to the + No-Sound driver. This fixes crashes caused when no soundcard was + present. + + +-/- Loader: + + - The 15-instrument module loader has been adapted to support Ultimate + SoundTracker modules (very old :), and general 15-instrument support + and detection has been improved as well. + + - The UniMod Module Loader (load_uni) has been reinstated. See MIKCVT.C + for the conversion program that you can use to change any supported + format into a UniMod module. + + - The MED loader has been fixed (although it is still very non-func- + tional). + + - The 669 loader has been fixed up a tiny bit. + + - A title loading command has been added, for those making module players + who want to add the song titles to directory listings: + + CHAR *MikMod_LoadSongTitle(CHAR *filename); + + Returns a malloc'ed string containing the title of the song, or NULL + if the song was not able to be opened or no title was present. + + +-/- Player: + + - ImpulseTracker sample vibrato support has been improved. Linear mode + sample vibratos are now supported perfectly, but modules in Amiga mode + will not sound exactly correct (but close). + + NOTE: This does NOT affect standard effects vibratos, which are correct + whether in Linear or Amiga (logrithmic) mode. + + - A small handful of modules with rare envelope sustain / loop setups + would confuse mikmod and end up with silent samples. + + - Note Delays were not being implimented properly. + + - a note delay would distort the sample that had been playing before it. + + - a note off or note cut triggered with a note delay too effect im- + midiately, rather than after the delay had expired. + + - A 'bug' in ImpulseTracker's Sample Offset (Oxx) has been fixed. The + IT documentation wrongly reported that offsets past the end of a sample + would not be played (they are, duh). + + - An IT Retrig (Qxx) indescrepency - Qx0 is the same as Qx1 [std Pro- + Tracker and ST3 simply ignore Qx0 commands]. Fixed. + + - Fixed an IT/S3M bug where Qxx would mess up any pitch slide commands + immidiately following it that had a data part of 00 (ie, D00). + + - Overall NNA has been optimized and improved in many ways. + + +--------------- +Updates to Build 03 of MikMod 3.0 over Build 02. + +-/- General: + + - The volume scale for song volume has been redone to 0->128 instead of + 0->100. + + - You can also control song volume via "md_musicvolume", which is also + on a scale of 0->128. + + - When registering loaders or drivers, you no longer put them in reverse + order. + + - ML_LoadFN() has been modified. It now accepts two parameters, the + filename of the song, and the maximum number of channels allowed to be + allocated. See the MIKMOD.C example for more details. + + - Sound Effects support has been added. See MIKMOD.TXT for complete + details on how to fully utilize MikMod's sound effects routines. + + + - Additions to the MIKMOD.C example file: + + - F1 through F10 now set volumes of 10 through 100. + + - Songs can be paused and resumed via pressing 'P' + + - Added panning separation control via the command line option + '/pansep xx' where x is a value from 0 to 100% (100% being full + stereo). [default = 100%] + + - Added reverse stereo panning option (/revpan). + + - Added volume control via F1 (10%) thru F10 (100%). + + - Maximum allowed mixer channels can be set with the '/c xxx' option. + The max value is 255 channels, the minimum is 2. This will affect + ALL song formats. [default = 64] + + +-/- Player: + + - ImpulseTracker (IT) support is nearly completed. New note actions are + now supported in full. + + - IT Linear slide functions are now fully functional, and greatly op- + timized for both speed and size. + + - IT and XM KeyOff / KeyFade effects should be supported correctly now. + + - Several IT panning bugs have been fixed. + + - There is no longer a need to call MD_PlayStart() or MP_PlayStop() if + no sound effects channels have been specified - they will automatic- + ally be called by MP_PlayStart() and MP_PlayStop() + + - New function: MP_TogglePause(UNIMOD *mf); + Pauses or unpauses a song using MP_PlayStart and MP_PlayStop + + - Channel muting is now availble via the functions: + MP_Mute(); + MP_UnMute(); + MP_ToggleMute(); + + +-/- Loaders: + + - Many IT modules that would not load before will now load. + + - Support for scaling samples to fit into availible memory (for use on + hardware mixer cards, but optional for software mixing as well). + + - Sample Loader functions have been separated from MDRIVER.C into a new + source file, SLOADER.C. + + - XM loader bug fixed that caused a small handful of XMs to crash. + [thanks to Urban Meuller] + + +-/- Software Mixer: + + - Support for reverb and stereo delay have been added, but are not yet + availible in assembly mixer form (C mixer only, see VIRTCH.C). + + - VIRTCH.C can be compiled as a 16 bit sample mixer. This about 50% + slower than the 8 bit sample mixer on Intel machines, and requires + twice as much memory for samples (not yet availible in assembly + mixer form). + + [See VIRTCH.C for information on how to recompile to support these + options] + + - Reverse Stereo is available for all soundcards. + Set "md_mode |= DMODE_REVERSE;" + + - Dolby Surround Sound features are planned for but not yet supported. + To enable surround (for future upgrades of MikMod): + Set "md_mode |= DMODE_SURROUND;" + + +--------------- +Updates to Build 02 of MikMod 3.0 over Build 01. + + - SLOADER has been renamed back to MLOADER. + + - Error messaging has been worked back to the old style of returning a + string and no error code. + + - All references to strings have been defined as UBYTE instead of char. + (is this a problem for anyone?) + + - SB/AWE32 drivers have been added. + (thanks to Steffen Rusitschka) + + - Windows Sound System [WSS] support has been added. + (thanks to Mario Koeppen) + + However, for the driver to detect the card, the following environment + variable must be set: set WSS=A[port] I[irq] D[dma] + + - Several older module loaders have been reinstated (thanks to Dimitry + Boldyrev): FAR, 669, MED, and DSM. These loaders most likely have + some bugs to be worked out. + + - A new version of the "BigMultiply" function has been made, that is both + big-endian friendly and C based. It uses the FPU to do the 64-bit mul- + tiply, and is only used on non-Watcom compilers. + + - A bunch of IT replated replay bugs weeded out. + + - IT and S3M loaders have been optimized to act like other players' load- + ers that detect the REAL number of channels used. One wonders whatever + happened to a simple "numchn" variable in a module format rather than + pre-processing all pattern data to figure out what is used and what is + not. + + - The GUS drivers have been split apart - there were both VTIMER and GUS + timer based drivers. The VTIMER one is for timing-critical DOS appli- + cations, while the GUS timer is exellent for programs that will be run + from a Windows95 dos-box. +