Disharmony Audio Patch
Version: 0.9.7.52
Author: derula
Date: October 30, 2010
Version History
- 30.09.2011 Disharmony 0.9.7.52 (Tool versions 0.9.2):
- Fixed licensing issues.
- Volume can now be changed from game Variables without lag.
- Added a GUI to EffectsManager for managing keyboard functionality.
- Added import function for RMXP style loop start points in LoopEditor.
- Fixed language packs to work across different regions with same language.
- Behind-The-Scenes upgrade to Delphi XE.
- Sound effects are now loaded whole (no longer streamed).
- Sound effects are kept in memory for a short time to speed up replay.
- System sound effects are now permanently kept in memory for speed.
- Added improved tracker support based on libmodplug (thanks Mason Wheeler!).
- .link.wav files now also allow links to MIDI files.
- Fixed a small installer bug.
- 30.10.2010 Disharmony 0.9.6.43:
- Fixed short pause at start of MIDIs.
- Fixed inconsistency with fading (starting a Non-MIDI again while it is fading in, fade will restart).
- Fixed fadeout for MIDI files (MIDI continued to play after fadeout).
- Fixed MIDI Tempo control (only had 5 different settings before).
- Improved performance at the beginning of loops.
- Fixed playback of files that cannot be sought (e.g. very short OGGs); a loop start point greater than 0 is obviously not supported for such files.
- Added .link.wav support for sound effects.
- Checks for music playing and "played once" could return incorrect values if the music has been faded out. Now, both will say false once a fadeout has been started.
- Added a feature that will set a switch according to a key's state (tool will be added later).
- 29.12.2009 Disharmony 0.9.5.31:
- Fixed Windows 7 compatibility (thanks Cherry!).
- Fixed a bug that made tools unusable when using huge window borders.
- 24.10.2009 Disharmony 0.9.5.30:
- Fixed a bug where stopping sounds by playing them again at volume 0 crashed the game.
- Fixed a bug where setting out-of-bounds volume values crashed the game or did weird things.
- Fixed Harmony Patcher GUI that failed to enable the patch button and then failed to patch.
- Added Spanish translation for tools. Thanks again to EN.I!
- 13.08.2009 Disharmony 0.9.5.29 (Loop Editor 0.9.1.6):
- Fixed bug that stopped Non-MIDIs from fading sometimes.
- Added support to play multiple Non-MIDIs at once like MIDI channels.
- Added possibility to change the volume of MIDI channels separately.
- Added possibility to define a Switch that will cause Disharmony to re-apply all effects.
- Added French and German translations to all tools (big thanks to king kadelfek!)
- Loop Editor: Enlarged Buttons so that translations fit them.
- Effects Manager: Added ability to set channel volumes / reload switch.
- Harmony Patcher: Changed to only take a single project.
- Setup updated to 0.9.1.1: Restructured install components and added possibility to install other languages than your system language as well.
- 15.06.2009 Disharmony 0.9.4.26 (Loop Editor 0.9.1.4) (unreleased):
- Fixed music fade volume change rate.
- Fixed a bug where the first MIDI didn't play when using an auto enter patch.
- Fixed a bug that made it impossible to play the same music again after starting to fade it out.
- Finally fixed those stupid "mini loops".
- Added support for Effects and new tool (Effects Manager).
- Added the new tool Harmony Patcher to be able to use Disharmony from RPG Maker 2003.
- Added possibility to stop a specific sound by playing it again at volume 0.
- Loop Editor: Added ability to set the loop starting point for MIDI files, minor fixes.
- Setup updated to 0.9.1.0: Uninstall old version prior to installing new one, minor fixes & changes, added Spanish and French translations (thanks to EN.I and king kadelfek)
- 21.12.2008 Disharmony 0.9.3.23 (Loop Editor 0.9.0.3):
- Now actually supports Ineluki's MP3- / Keypatch.
- Plays MP3 files in newer RPG Maker 2003 versions correctly (inside the game, if it is patched).
- (Hopefully) no more performance issues or random loops.
- Upgraded to DSMix Advanced which takes advantage of DirectX 9.
- Loop Editor: Recompiled to use DSMix Advanced.
- 02.10.2008 Disharmony 0.9.2.21:
- Fixed a bug that resulted in the MIDIs being played with an incorrect Tempo setting if they were rapidly played after another MIDI.
- Setup: It had the old Version number, fixed that.
- 01.10.2008 Disharmony 0.9.2.20 (Loop Editor 0.9.0.2):
- "No Loop" setting did not actually work. Now, it hopefully does.
- MIDI playback is now performed by Disharmony. The beginning of the MIDI will be skipped if it is silent, and the Controller 111 is recognized.
- Loop Editor: Dunno. I think I just compiled it twice which added up to the version number.
- 30.03.2008 Disharmony 0.9.1.20 (Loop Editor 0.9.0.0):
- Fixed a bug or two where "Played BGM Once" didn't work with songs without loop or songs with a loop starting point different from 0.
- Loop Editor: Fixed a bug where Pressing F1 would cause an error instead of displaying the help file.
- Setup updated to 0.9.0.0: Transformed message boxes into a more GUI approach, added German translation.
Planned Future Versions
- I plan to do a Disharmony version for RPG Maker XP. Yes, I know, there's already an FMOD script for RMXP, but Disharmony has some features FMOD doesn't have, like correctly playing the MIDIs (see below) and reading loop start points from file tags.
Description
Disharmony Audio Patch (in short, "Disharmony") is a replacement for the default audio system (will be referred to "Harmony" in the following) of RPG Maker 2000 and 2003. It is designed to be as compatible as possible, while fixing the worst flaws of Harmony and introducing new features.
Features
- Full DirectSound playback of music (except MIDI, which is played via midiOut) and sound effects. Due to that, all file formats for which a DirectShow filter is installed are supported. By default this is raw WAV, MP3 and WMA.
- With an additional library (libdiscord.dll, which is a modified libmodplug), many tracker formats can be played back as well.
- Reading access to special looping information in MP3, WMA and OGG tags. This information can be written to MP3 and OGG files using Loop Editor, a special tool that comes with Disharmony.
- Using effects like Chorus, Echo, etc. when playing non-MIDI music. Disharmony takes advantage of Cherry's work on Finder to read game Switches and Variables with which you can control those effects.
- Theoretical playback of an infinite number of sound effects simultaneously.
- Disharmony stops all currently playing sounds with a given file name if you play the same again at volume 0.
- "Played BGM Once" fork condition is supported for all audio formats.
- Midis are played back and a very similar way the original harmony.dll did it. That is, the beginning of songs are cut off if they are silent, and the controller 111 is supported as a loop starting point indicator. Furthermore, a few bugs with the original harmony.dll are fixed, most notably the one that made all MIDIs sound strange if a previously played MIDI made changes to some controllers.
- "MIDI Play Pos" will return the music playback position in milliseconds for all kinds of input file.
- No link files have to be created like in Ineluki's patch. They are still supported, though.
- Full support for Ineluki's keypatch.
- Apart from the needed DirectShow filters, no additional DLL are required if you aren't using Ineluki's keypatch.
- Full compatibility to original harmony.dll: Volume (logarithmic volume control), Speed, Panpot and Fade-In / Fade-Out (also logarithmic) are all supported.
Instructions
To use Disharmony in your project, the best way is to download the installer below and install the patch. If you're using RPG Maker 2000 Value! or RPG Maker 2003 greater than version 1.04, you will need to use Harmony Patcher GUI to patch the RPG Maker executable and the RPG_RT.exe of every game you want to use Disharmony with. Harmony Patcher GUI is included with Disharmony, and hints on how to use it are provided on program startup.
If you want to distribute a project using Disharmony, simply copy Disharmony's harmony.dll into your project's folder along with the three text files that come with Disharmony.
Credit
These people directly wrote software for Disharmony:
- Mason Wheeler (modified libmodplug library, Delphi libmodplug headers and help with port to new Delphi version)
- Cherry (reading / changing RPG Maker variables, determining a project's real executable and its version)
- Bananen-Joe (patching RPG Maker 2003 executables to use Disharmony)
I took advantage of the free software from the following people:
- Colin Wilson (most of the MIDI part)
- Carlos Barbadosa and Pavel Bibergal (most of the DirectShow part)
- Project JEDI (extra controls in the tools)
- Jurgen Faul (reading / writing Audio file tags)
- Daniel Wischnewski (tool translations framework)
Thanks
The translation team:
- EN.I (Spanish translation)
- king kadelfek (French translation)
Bug reporters and testers:
- Mason Wheeler
- EN.I
- Neok
- Tropical-Bird
- Nemica
- Knumonmaster
- psy_wombats
- Cherry
- Bananen-Joe
Support
There's plenty ways to contact me in my
profile here. Feel free to do so if you find any bugs. Also, you can post in this thread.
Known Compatibility Issues
Disharmony isn't 100% backwards-compatible to Harmony. There are some small details that behave slightly differently. If you feel that one of them causes a regression, feel free to contact me.
Download
You can download Disharmony Audio Patch from its
Homepage or use one of these direct links:
Author's Notes
This patch has been inspired by Ineluki's MP3 patch, which has been dominant in the German scene for quite a while. That patch, however, isn't very similar to Harmony; instead, it requires it to be present as well. Most features that Harmony offers simply don't work with MP3 Patch, or don't work as expected. It is difficult to use, and has few features. I talked to Ineluki and told him about these issues, but he told me that those were intended. So I begged him to give me the source code for the DLL interface so that I can write my own Harmony replacement.
Well. He gave it to me. With one condition however: I must not give it away, and I must make Disharmony compatible to his MP3 patch. That's what I did, though I don't really see the point...
Restrictions
If you want to use Disharmony in your project, simply copy Disharmony's harmony.dll into your project's directory. Additionally, due to licensing of parts of Disharmony, you have to add the three text files - copying.txt, MPL.txt and LGPL.txt - to your project. If you don't do it, you're breaking the license and not allowed to use Disharmony in the future. At least, that's how I understand it; after all, IANAL.