I wanted to share something I just tried and had excellent results with. But first, a simple disclaimer: I am not responsible for any damage that may occur to either your computer, engine, or DCS equipment. It is important to be very thorough and patient when doing this, and if you're careful, you should be able to expect good results. However, I am merely sharing my experiences for the hope of helping others, but I am not, nor am claiming to be, an expert on MTH sound files. If you attempt this, you will be proceeding at your own risk.
Before attempting to follow any of the steps below, it is best if you are at least moderately computer savvy, are familiar with loading and retrieving sound files using the DCS loader (and loading chain files in the case of PS3 engines), and are somewhat familiar with Mark DiVecchio's ADPCM program.
For years, I had been loading different sound files onto MTH engines, but the engine's speed would usually be wrong or the steam chuffs would not be in sync, despite whatever chuff rate was selected on the remote. The engine's mileage would also add up wrong.
Last year, I discovered Mark DiVecchio's ADPCM program for modifying and editing engine sounds. Recently, his 1.5.8 update included a new "engine parameters" section. When comparing my engine's original files with one's I wanted to change them to, nearly every value was different. I suspected these to be the likely cause for the engine's improper operation.
Unfortunately, this section does not allow you to permanently change any parameters at this time, though I have informed Mark about this and thankfully, he is working on an update. In the mean time, I wanted a way to adapt a file form another engine to work on one of mine. Since all the values are in hex, I decided to see if I could find the values using HxD, a hex editor program. Sure enough, I found the matching values by searching for them, and they were all at the top/beginning of the file. I simply swapped in the values of my original engine's file and everything worked perfectly. I decided to redo this process in order to demonstrate how I did this.
First off, we have our target engine. A RailKing 2-8-0 with PS3. It's important to have the product number handy. In this case, it's 33-1044-1. I downloaded a copy of the engine's original sound file along with its chain file.
Next, I located the engine on MTH's website that I wanted the sound file from and downloaded its sound file. I would suggest listening to some of the sounds with ADPCM to see if you like it first. In this case, it's the 22-3553-2 Premier 2-8-0.
Now would be a good time to mention that the file you pick needs to be the same type as your engine type. For example, an early PS2 5 volt can only use another 5 volt file, a PS2 3 volt can only use a PS2 3 volt file, and a PS3 can only use a PS3 file.
Edit: I should also add, some early PS2 3 volt boards had 1mb capacity, whereas later ones had 2mb capacities. You can load a 1mb file into a 2mb board, but not the other way around.
Further edit: From what I've read, if you have an engine upgraded to a PS3/2 upgrade board, you can load either a PS2 3 volt file or a PS3 file. If I am wrong on this, I'm hoping someone will correct me.
I then placed the files in a folder together and extracted their contents as they are both PS3 files. For PS2, you will just have two .mth files.
I opened the two files in ADPCM and opened their engine parameters. As you can see, they are both quite different. The RK 2-8-0 is on the left, the Premier on the right. What needs to be done, is the data from the RK 2-8-0 needs to be inserted in the Premier 2-8-0's sound file. As I mentioned before, this cannot currently be done with ADPCM as the changes will not be saved. This is where HxD comes in.
I opened the premier engine's file with HxD and searched for the first hex value. As you can see, it is very close the the beginning of the file. I have also seen in some cases where there are dupiclate hex values just by chance in the sound file. I would suggest searching using forward, backward, and all and then typing over the value that comes first.
I then typed over the Premier value with the RK 2-8-0's value. The changes are highlighted in red by HxD. Then repeated the process for the next two hex values.
When I arrived at the chuff rate, I stopped. I wanted the default chuff rate to be 4, rather than 2. If I copied the RK's value, then it would be 2, but if I left the premier value in, the chuff would be sporadic since the chuff factor appears to be tied to the other values. The trick is to take the RK's value (02A0) and divide it by two. Using an online hex calculator gave me 150 in hex, so I typed 0150 in the Premier value's place.
After that, I simply typed the engine's clock factor as I did for the previous values.
I then closed both files and saved the now modified file with Hxd. Upon opening the modified file with ADPCM, the values now matched except for the chuff, which correctly shows 4. You may also notice, I get a checksum error since the file has been changed. In my experience, this has not caused any issues, but if it does, I do not know of a fix yet. If you are attempting this, always do this step. If one of the values hasn’t changed, you likely typed over the wrong one and I suggest you start over with a fresh copy of the sound file.
With the hex values matching, I moved on to the softkeys. The RK 2-8-0 does not have any light softkeys whereas the Premier 2-8-0 does. I simply unchecked all the light softkeys. The sound softkeys I left alone since I did not modify any sounds.
Now came time to load. I loaded the modified sound file just like any other sound file. I then shut the engine down after it started up when the loading completed, deleted the engine from my remote, and re-added it. This resets the softkeys and will give access to the quillable whistle.
After this, I tested nearly every engine feature one can think of in DCS. For testing, this included running the engine slow and observing the chuff rate is actually 4, rather than 3.5 or some other incorrect number. I also set the chuff rate to different values in DCS to make sure they worked. If set to 1, the engine should chuff in the same spot for every wheel rotation. I also ran the engine with another PS3 engine right behind it in all engines mode. The speed should be a very close match, although I've never had 2 engines run the EXACT same speed, even identical models, but it should be close enough not to make a difference if used in a lashup.
Nearly everything checked out okay, however I did discover the quillable whistle would not play correctly. It would just play the quill clip with no actual control over it. To remedy this, I shut the engine down and loaded the engine's original chain file (not the one we took the sounds from). The engine went through its beeps and power cycles and powered on. I then shut the engine down and removed power. This was followed by another set of beeps. Finally, after reapplying power, the engine was functioning correctly as if it came this way from MTH.
On a different PS3 engine I have, I experienced the whistle only playing the loop, the chuffs not working, and other sporadic sounds such as static, upon immediately loading the sound file. Loading the chain file fixed all these problems.
Here is a short demonstration of the engine with the new sounds. I think it sounds great and I'm very pleased with the results. I have also tried the same process for a PS2 engine, minus the chain file part, and was also successful.
Some final thoughts...
This definitely isn't for everybody. There are a lot of steps that need to be followed correctly. Entering anything in the incorrect space in HxD can mess up the file, and possibly even the engine. I would also think this would almost certainly void your warranty and I can guarantee this is not supported by MTH in any way, shape, or form. As I said in the intro, I am NOT an expert on MTH sound files, boards, DCS, or engines, but I'm hoping this at least can help someone get desirable results for swapping sound files. I will reiterate, this requires plenty of time, patience, and precision. If you attempt this, do not expect to do this very quickly. I would set aside a few hours for this just to be safe. I'm going to say once more that I am not responsible in any way, shape, or form for any accidental damage that may occur to your engine, computer, files, or DCS system. If you attempt this, you will be proceeding at your own risk. That said, I wish to hear from anyone that does try this.
I would finally like to give a huge thanks Mark DiVecchio for his efforts of the ADPCM program. Thanks to his work, DCS engines are more customizable than ever and without his help and his program, this and a lot more would not be possible.