Jump to content

DDC Improver Tool (Windows, Mac)


Recommended Posts

  • Developer


This tool originated as a command line program I wrote in Ruby to automate a workaround to prevent DDC from moving sections that are not placed on the first beat of a measure. Since than I've added more features and eventually decided to make it into a GUI program using C#, largely as a learning experience.
It is called DDC Improver since I couldn't think of a better name. Some of the features in the program have nothing to do with DDC and it can also process files with manual DD.

-Can process multiple files simultaneously

-Prevents DDC from moving sections that are not on the first beat of a measure
-Restores FHPs set at the beginning of noguitar sections
-Adjusts the lengths of handshapes if they are too close together
-Fixes phrases that have only one level by adding a second level to them
-Can automatically place crowd events
-Move phrases/sections off beat with special phrase names
-Removes beats that come after the audio has ended

-Can be used to remove DD from files
-Checks the XML for issues
About the XML checking feature:
-The program will complain if you have a tone change that is placed on a note. This is not really an error, it's more of a best practice to place a tone change before the note it occurs. 
-The only check that can give you false positives is the check for mismatches between anchor position and chord fingering.




-Updated DDC to v3.7
-Fixed a bug in the "one level phrase fixer"
-Added a check for chords whose chord notes have different sustains
-Updated to .NET 5.0


Windows version

Requires the .NET 5 Runtime


Mac version

Requires macOS version 10.13 - 10.14, with Wine installed on in order to execute DDC.

Though DDC Improver itself does work on 10.15 (Catalina), the functionality is severely limited since running DDC does not work due to it being a 32bit program.


A Linux build is possible if anyone actually wants it.


The source code is available at github.


Old versions changelog:



- Added "Quick Remove DD" feature (can be found in the Tools menu)
- Added "Open Containing Folder" context menu item
- Added relative note/chord finding to the "so" custom event
 -Fixed a minor bug with crowd event placement checking
- Fixed the tab order in the configuration window
- Fixed a null reference exception in the chord slide handshape length fix
- Fixed an off-by-one error in the FIXOPEN chord processor
- Fixed a false positive in the bend value mismatch check
- Change the internal representation of time codes to use integers instead of floating point numbers
- Changed where the program settings and logs are stored for better cross-platform compatibility
- Removed the select DDC executable button from the configuration window
- Updated the phrase moving section in the Help window
- Improvements to the UI of the Avalonia version 
- Updated Avalonia to version 0.9.11
- Updated .NET Core to version 3.1



-Added "so" (Slide Out) custom event

-Added "anchor placeholder note" removing

-Added checking for the need to reset arrangement IDs

-Added XML check for unpitched slide notes with linknext

-Added linknext chord slide handshape length correction

-Updated Avalonia to version 0.8.3

-Updated the WPF version to run on .NET Core 3



-Updated DDC to version 3.6

-Removed first phrase/beat moving workarounds

-Added 'overwrite original file' option

-Added Ctrl+P and F5 shortcuts for 'Process'
-Added shortcut keys to Avalonia version
-Added anchor placement checking (will notify of anchors that are a couple of milliseconds away from a note)
-Added crowd event correction (E0 -> e0 etc)
-Improved the "chord fingering relative to anchor position" check
-Couple of minor bugfixes


-The processing the program does is more efficient and uses less memory (but new bugs may have been introduced  :ph34r: )

-Processing of manual DD has been improved

-The handshape adjustment has been improved

-Added relative phrase moving name "moveR" which you should use instead of the "moveto" ones since it is easier to use and does not rely on absolute times. See the Help inside the program.

-Added "moteto--m--s--" phrase moving pattern where the time is in minutes, seconds and milliseconds

-The FHP will be moved with the phrase/section automatically

-Added option to display times (in the log) in minutes, seconds and milliseconds instead of seconds and milliseconds

-The program writes a comment with the version number into the processed XML files

-Fixed a bug that could cause wrong NLD phrase ids in certain circumstances if "Keep END phrase location" is enabled and DDC has moved the END phrase

-Other bug fixes

-Minor improvements to the UI



-Fixed a strange crash bug in the Windows version when clicking the scroll bar in the help window



-Cross platform version available

-Fixed a couple of minor bugs

-Added checks for notes with both harmonic and pinch harmonic and notes inside noguitar sections


  • Like 2
Link to comment
Share on other sites

@@iminashi can't seem to get a Mac port working stable. Kept trying different Wine engines, and .NET versions, but i keep getting window flickers and crashes when hitting Configuration button. I will ask if JustinAiken can make a Mac version of your tool, if thats alright with you.

Check out my Released, WIP, and
Future CDLCs here(Ubisoft Style):
I)ark_Seph's Customs

Link to comment
Share on other sites

  • Developer


Funny, when I try the program in a Ubuntu VM, the Configuration works, but Help crashes the program. (Edit: Because I forgot to install corefonts  :ph34r:)


An actual Mac version would be quite a bit of work I imagine.


In any case, I do plan on releasing the source code eventually™.

Link to comment
Share on other sites

  • 2 weeks later...
  • Developer

Released v1.1 with a few minor changes.


I decided to make a cross platform version to see how hard it would be (It wasn't too bad). The UX is not as good as the Windows version, but the core functionality is the same.

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...
  • Administrator

@@iminashi i'm curious to know if you could add an option to have the DD xml overwrite the default xml so that i can still rely on the same toolkit template when i do add DD. It would make my life relatively easier :)

Firekorn's workshop
In Flames Discography


Link to comment
Share on other sites

  • 2 months later...
  • 8 months later...
  • Developer

Uploaded version 2.2 which has a few new (minor) features.


The Windows version now uses the new .NET Core 3.0 so you will need to have that installed.


New Features:


- "so" (Slide Out) custom event

When placed on a chord that has an unpitched slide out, the program generates an empty handshape near the end of the slide.

This will cause the fingers in the handshape to slide down or up with the slide. It is a minor effect that is sometimes used in oDLC (can be seen in the beginning of 25 or 6 to 4 for example).
Though it is possible to manually create empty handshapes in EOF, DDC removes them.
See the Help inside the program for more info.
-"Anchor placeholder note" removing
A new option that is enabled by default.
Removes notes that have no other purpose in life than being a placeholder for anchors (FHP) for DDC.
Like the rightmost note in this picture:
This feature is mostly for the OCD people out there; I don't think it has much of an effect on the note detection.
-Checking for the need to reset arrangement IDs
A new option that is disabled by default.
It is mostly for people who intend to update their CDLCs a lot and don't want people to lose their play stats.
When enabled, the program will store the max difficulty levels and phrase names for each phrase in every arrangement.
When processing a file, it compares the max difficulty levels of the phrases to the previous DD generation, and displays a warning if there are levels with the same phrase name but lower max difficulty. In this case it may be best to change the arrangement ID for that arrangement in order to prevent crashes in riff repeater for people who have played that arrangement at max difficulty before.
Link to comment
Share on other sites

I never use DD, but I wonder if you code genies wouldn't think about better algorithms for automatic correct fret hand positions, because they are surely the most annoying thing ( besides the lack of better visible strum patterns) in RS

Link to comment
Share on other sites

  • 8 months later...
  • Developer



That's a bug in DDC that can happen if you begin a handshape that has both chords and notes on a note instead of a chord. A workaround is start the handshape at the first chord.

Link to comment
Share on other sites

  • Developer

v3.0 has been released.


The place where the program configuration and logs are stored has been changed, so your settings will be reset to defaults when updating from v2.2. You may also delete the logs directory from the program folder when updating.


The most prominent new feature is "Quick Remove DD", which I added since using the DDC tab in the Toolkit to remove DD always felt cumbersome to me.

As an example, removing DD from all three arrangements from the AC/DC Powerage Full Album custom:

With the Toolkit's DDC tab: ~1 min 45 sec

With "Quick Remove DD": ~1 sec

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

So I've been using this tool for a while and love it, but today I'm getting an error I haven't seen before: DDC has created a handshape with an invalid chordId (-1).


Looking through the XML, I've found 2 handshapes that it seems to be setting -1 to. 






I've removed and re-marked the handshapes to no avail. Removing them does eliminate the error in DDI. I poked around the source code a bit and the only place I could find a chordid getting set to -1 was in the unit tests. Any idea what may be happening here and how to resolve it? As a workaround could I use and random int for those ids in the XML?



  I tried to reproduce this specific scheme.

  No more issue with DDC v3.7.


Thanks for reporting this

Link to comment
Share on other sites

  • 1 month later...

@@iminashi I just installed this and the .NET on my Windows VM under Parallels (I'm on Mac) and it works like a charm. Thanks so much for this!


I did, however, have to guess as to whether to instal the x64 or x86; given the discussion about 32-bit and so on I've seen in several places here, I opted for x64 and it works very nicely!


For all I know, it didn't matter which I installed; however, may I suggest adding a parenthetical note on your initial post saying which to instal or whether or not it matters, and perhaps making the download link more prominent? At first I didn't see it despite looking, so thought I might have to recompile the whole business; but given that you said somewhere you'd eventually provide the source I figured that couldn't be right, so I found it eventually :)


Of course, could be that I'm just getting old and my eyesight ain't so great, so no worries, really. Great piece of software! Deeply appreciated!

  • Like 1
Link to comment
Share on other sites

  • Developer

@@nick_beat One should install the .NET version that matches the Windows version. DDC Improver itself should work the same on 32-bit and 64-bit Windows, though I've only tested it on 64-bit Windows 10.

Link to comment
Share on other sites

  • 2 months later...
  • Administrator

So i've encountered a little odd case :


This is likely link to the "fix one level phrases" part of the process when it handle the very first phrase of a track.

The problem is that the anchor definition doesn't get copied on subsequent level breaking the note display.

Here is the xml after DDI was used

As you can see, the anchor at 22.950 on fret 2 is only on the difficulty 0 and not on any other difficulty level.

If you need more file to fix that little bug, feel free to ask but i reckon that should give you enough information to work with.

Firekorn's workshop
In Flames Discography


Link to comment
Share on other sites

  • iminashi changed the title to DDC Improver Tool (Windows, Mac)
  • Developer

I've uploaded a new version, which is probably the last one since the program I've been working on, DLC Builder (an alternative to the Toolkit's CDLC Creator tab) contains most of DDC Improver's functionality.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...

Important Information

By using this site, you agree to our Guidelines. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. - Privacy Policy