View Full Version : [C* .NET] Calling DMC from external program with selected files

05-17-2005, 10:59 AM
I have my own music manager build in C* with Visual Studio .NET 2003, now running Visual Studio .NET 2005 Beta 2 using the Microsoft Beta Experience Kit.

I made it so I can view my directories with MP3 files, have my own options for renaming those files automaticly, etcetera.
The only thing I'm still doing manually is converting files with DBPoweramp to .ogg using the Ogg Vorbis aoTuV b3 SSE2 codec (64-bit machine with WinXP x64 Edition).

Now I have seen the DMC File Selector and that does exactly what I want also. When I select a few files, it opens the Music Converter, but it has on the background the files selected that were selected in the DMCfs. That's exactly what I want!

Did a bit research and was expecting that DMCfs was calling MusicConverter.exe when I push the "Convert To" button on the toolbar. Instead a new process doesn't get started for showing the converting options.

Is there a way to simply add files to DMC without using the DMCfs?
Can it be done using a COM component? I tried the example (http://www.dbpoweramp.com/developer-scripting-dmc.htm), but I get a lot errors. Looks like the COM components doesn't get recognized. In VS I tried add items to the toolbox -> COM components. But something like DMC is not listed.

Or using the commandline?
Or an DLL that I can call?

I like DMC very much! The only thing for me it the above problem I would like to tackle :smile2:

05-17-2005, 02:44 PM


05-17-2005, 02:56 PM
Alrighty... this could turn into babbling, so if it does, just ignore me.

What I did to do what I think you want to do...

1) Created a new project, then in the solution explorer (right side of the IDE in VS .NET 03), right click "References," then select "Add A Reference." In the resulting window select the COM tab, and scroll down to "DMC Scripting 1.0 Type Library." Double-click it, and then click Ok at the bottom of the window.

2) In the code for your project, preferably in the code for the form that you're going to be calling DMC from, up at the top, below the other "using" statements type the following


3) Now in your code wherever youre going to do the call to the MusicConverter do something like this:

DMCSCRIPTINGLib.Converter dMC = new DMCSCRIPTINGLib.ConverterClass();

dMC.VolumeNormalize = 0;
dMC.PreserveTags = 1;

if (System.IO.Directory.Exists("c:\\ConvertedMusic\\")) {
dMC.ConvertToFolder = 1;
dMC.ToFolder = "C:\\ConvertedMusic\\";
else {
dMC.ConvertToFolder = 0;

// for this part im assuming youve got an object string[] fileQueue of file names.
string[] fileQueue = {"c:\\file1.mp3", "c:\\file2.mp3"};
for (int i = 0; i < fileQueue.Length; i++) {
if (System.IO.File.Exists(fileQueue[i]) {

dMC.GoConversion("Wave", 0, 0, 1, 1);

In Spoon's example in the developer section, there are some differences. For instance the GoConversion method in the examples works like this:

GoConversion(string, bool, bool, bool, bool)

While the Scripting Library I have works like this:

GoConversion(string, int, int, int, int)

I assumed 0 = false 1 = true.
I didn't actually run what I've got there, but it compiles just fine. :)

Hopefully that helps! If not, then I'll just erase this monster.

05-17-2005, 05:24 PM

http://www.dbpoweramp.com/developer-scripting-dmc.htmI already explained in my post with the corresponding URL that I tried that with no luck...

Anyway I just read the startpost of iTunesIsEvil and that works like a charm. Thousands of thanks :thumbup: Now I really think DMC is da bomb! :smile2:

The only thing I did wrong was searching for the COM component at the wrong place :(
Had to tune some, fixed a syntax typo in your code. I'll post a part of my code for those who like it maybe later, sadly got some other work to do tonight.

About iTunesIsEvil's question: In the GoConversion function setting e.g. NoOverwrite to 1 will overwrite a file, but not display a message asking "whether or not to overwrite the existing file". So indeed 1 = true, 0 = false.

05-17-2005, 07:05 PM
Had to tune some, fixed a syntax typo in your code.
Yeah... I kinda slapped that together in like 5 min. It actually took longer to get it posted on here Ok, than it did to code the darn thing. I wasn't getting any syntax errors though, I was compiling just fine... I'd be interested to see what that was. Anyway: Cheers, and good luck with doing the rest of whatever you're trying to do with this idea :)

05-17-2005, 07:37 PM
I was compiling just fine... I'd be interested to see what that was.
Ok, here is the line of your code:
if (System.IO.File.Exists(fileQueue[i]) { Just 1 closing tag for the if statement. So this is correct:
if (System.IO.File.Exists(fileQueue[i])) {

And for the conversion call I use Ogg vorbis instead of Wave, so this is what I use:

dMC.GoConversion("Ogg Vorbis aoTuV b3 SSE2", 1, 1, 1, 0);

But remember it's a great job you did! :thumbup:

05-18-2005, 04:49 PM
Thanks iTunesIsEvil

05-19-2005, 04:35 PM
Thanks iTunesIsEvil
NP... Since I got VS.NET '05 I've been on a C* kick (moreso than usual) anyway. I'm currently rewriting iRevolt in 05 and trying to use some of the new pretty stuff MS has put in there. So far it's going unexpectedly well! I plan to uhhh... "release" it as a beta for anyone that actually feels like downloading the .NET Framework 2.0 Beta.

PS: If anyone *does* feel like downloading the Framework 2.0, and helping to test iRevolt soonish, please feel free to PM me, or e-mail development@NO_SPAM.gk-soft.net (after removing the obvious spam filter).

05-19-2005, 06:50 PM
That is the killer for .net, the ~20 MB framework :(

05-19-2005, 09:46 PM
That is the killer for .net, the ~20 MB framework
Yeah... It's not too nice of a dl... Though before I managed to get the 2005 VS on DVD, I just downloaded C* 2005 Express Edition, and went ahead and downloaded the MSDN Express Collection. 204MB. Ouch. :yawn: I think I took a nap while that downloaded. Sheesh.