Skip to content

DRO Trimmer v4 r1

DRO Trimmer v4 r1 has been released.

  • Documentation now available, online via BitBucket, and distributed with the binary package as a static HTML file.
  • Added “Undo” and “Redo” menu items and shortcuts. You can now undo/redo any changes to the DRO file.
  • Added “Goto” dialog, for instantly going to a specified position.
  • Added “Loop Analysis” feature, which uses multiple analysis methods to look for portions of data that could indicate a loop point. Refer to the documentation for details.
  • Added specific register usage information. (Takes a little while to process)
  • Added keyboard shortcuts for new menu items, and for going to the next and previous delay instruction. (Refer to the manual)
  • Added shortcuts and keyboard accelerators to menus. (Wraithverge)
  • DRO Info: No longer displays a warning popup. Edit functionality is disabled by default, and must be enabled via the configuration file (“drotrim.ini”).
  • Find Register: Added ability search backwards.
  • Find Register: Layout adjustments. (Wraithverge)
  • Find Register: Changed “D-08” and “D-16” options for DRO v1 to “DLYS” and “DLYL” (matching DRO v2).
  • Main view: Added “Bank” column. The register column no longer displays a value like 0x100 to indicate the high bank.
  • Main view: “Description” column now displays specific register information. More general information is now contained in the “Description (all register options)” column.
  • Main view: Fixed issue where deleting a large amount of instructions would take a long time.
  • Main view: Changed “Reg” column to “Reg.”
  • Main view: Added version number to the window title. (Wraithverge)
  • Main view: When deleting the last item in the list, select the new last item.
  • Main view: Fix some issues where items were not focused correctly after deleting an item, using “Find Register”, and other functions.
  • dro_player: Fix “Ctrl-C” shortcut not killing the program (timer would stop updating but music would continue playing).
  • Added configuration item to load DRO Trimmer in a maxmimized window. (Wraithverge)
  • Updated the “About” and “Help” dialogs.
  • Rework the icon loading. Will now attempt to load an external icon file if run from the Python interpreter. win32api is no longer required for loading the icon in the executable.
  • Code restructure and refactoring.
  • License blurb added to dro2to1 source.
  • Updated to PyOPL 1.3

Python Source (66.69 KB)

Win32 Executable (5.5 MB)

BitBucket site (including online documentation)

DRO Trimmer v3 r7

DRO Trimmer v3 r7 has been released.

  • Add configuration option to specify the “playback tail” length.
  • Add configuration option to specify the audio buffer size.
  • Add dro2to1 tool, converts DRO V2 files to the V1 format.
  • Fix issue #1 – pressing backspace/delete key in “Song Info” dialog deletes instructions.
  • Fix issue #2 – misspelling of “occurrence”.
  • Fix issue #3 – Find Register status bar text references “line” instead of “position”.
  • Mitigate issue #4 – search for “drotrim.ini” in the same location as the executable.

Python Source (31.02 KB)

Win32 Executable (5.46 MB)

DRO Trimmer v3 r6

DRO Trimmer v3 r6 has been released.

  • Add keyboard shortcuts:
    • CTRL-F for Find Register
    • CTRL-I for DRO Info
    • CTRL-SHIFT-S for Save As
    • CTRL-S for Save
    • CTRL-O for Open DRO
    • CTRL-H for Help
    • Spacebar to start & stop music playback (from selected pos.)
  • Prevent multiple “Find Register” dialogs from opening. (Would cause unexpected behaviour)
  • Fix issue where using “Find Register” function would not deselect found occurrances (introduced in v3 r4).

Python Source (29.12 KB)

Win32 Executable (5.46 MB)

Permalinks for all applications

I’ve set up permalinks for all applications, and make things a bit nicer to link to.

This link will display the list of all of my applications.

Here are links for each application:

You can get an application’s latest binaries or source code, by adding “bin” or “src” to the application’s URL. For example, for DRO Trimmer:

To get the latest release for a particular version, add the version number to the URL as well:

To get a specific release, add the release number to the URL as well:

I’ll try and incorporate these links in to the website proper, work out a better way to inter-link everything, and go through old blog posts to fix all the broken download links.

DRO Trimmer v3 r5

DRO Trimmer v3 r5 has been released.

  • Added a new ‘DRO Info’ menu option, to view and edit some DRO info (like the hardware type, or the song length).
  • Added a button to play just the last 3 seconds (approx.) of the song.
  • Fixed standalone DRO player, which got broken in v3 r4.
  • Default width of the ‘position’ column decreased.

Python Source (28.95 KB)

Win32 Executable (5.46 MB)

DRO Trimmer now available on BitBucket

I have set up a project for DRO Trimmer on BitBucket. This should make it easier for people to get the source code, may encourage forks & modifications, and also provides issue tracking and a wiki (which I’ll eventually write to).

(If you know GitHub, this is the same sort of thing, but it supports Mercurial version control, which suits me better.)

DRO Trimmer v3 r4

DRO Trimmer v3 r4 has been released.

  • Add the ability to select multiple instructions at a time. Hold the ‘control’ or ‘shift’ key while clicking.
  • V2 files will be analyzed for initial delay instructions or calculated delay mismatch, the same as V1 files.
  • Internal changes around how analysis is done.
  • Fix bug where deleting instructions at the end of the list would not refresh the list display correctly.

Python Source (26.69 KB)

Win32 Executable (5.46 MB)

DRO Trimmer v3 r3

DRO Trimmer v3 r3 has been released.

  • More accurate rendering method, should remove any timing inaccuracies at low sampling rates.
  • When seeker/player threads error, tell the DRO player to stop playing.
    (Should avoid infinite loop in standalone player when an error occurs)
  • In DRO player standalone mode, check if file exists before trying to play it.
  • Update to PyOPL 1.2

Python Source (26.55 KB)

Win32 Executable (5.46 MB)

DRO Trimmer v3 r2

DRO Trimmer v3 r2 has been released.

  • Add ability to play DRO songs within DRO Trimmer
  • Add command-line executable “dro_player” to play songs
  • Audio setup is read from an external “drotrim.ini” file
  • Change “Line” column to “Pos.”
  • Different register search range – only up to 0xFF (will find usage in both low and high banks)
  • For V2 files, display high/low bank status in the register (e.g. “0x105” for register 5 in the high bank)
  • Validate V2 codemap does not exceed 128 entries

Note that the DRO Player functionality is totally optional if you’re running the Python files directly; DRO Trimmer will degrade gracefully if you are missing the PyOPL or PyAudio libraries, so you can still edit files as normal, you just won’t be able to play them within DRO Trimmer.

The command-line “dro_player” tool can be used to play an DRO song, handy if you’re on a PC without a different DRO player (like Winamp + AdPlug).

You need to have the Microsoft Visual C++ 2008 runtimes installed in order to run the Windows executable for DRO Trimmer v3 r2. This is due to switching to Python 2.7.

Thanks to Adam Nielsen (Malvineous) for documenting the DRO v2 format, writing PyOPL and updating it to add support for Dual OPL-2 and OPL-3, and answering my questions!

Python Source (26.24 KB)

Win32 Executable (5.46 MB)

EDIT 2012-05-05: download links fixed.

How to compile Python 2.x extensions in Windows with MinGW

I recently tried to make use of the PyOPL library, which makes use of C++ extensions for Python. Getting the code compiling in Windows using MinGW was a bit of a chore, as it’s expecting to use Microsoft Visual Studio’s C++ compiler. Getting MinGW working required a few extra steps.

  • Download and install MinGW (including both the C and C++ GNU compilers)
  • Add mingw32’s “bin” directory to your PATH environment variable; e.g. append PATH with “c:\MinGW\bin;”
  • Create (or edit) a “distutils.cfg” file in “C:\Python27\Lib\distutils\distutils.cfg” (alter the path to match your Python installation)
  • In “distutils.cfg”, add this text:
  • Edit “C:\Python27\Lib\distutils\”, do a find & replace to remove all references to ” -mno-cygwin” (this option was removed from GCC)

That should be all you need to get up and running.