I hadn't updated this thread in a long time so there are a lot of new features.

Code:

1.4 public

- You can now associate DMC files with RJDMC for double-clicking- Fixed issues with window order when double clicking files- Added new program icon- Added .dmc file icon- Got rid of adding proper 16+1 byte lengths at end of files- RJDMC no longer crashes if you open a file that's already open somewhere else.- RJDMC tells you when you have a text output that's too large for Famitracker to import.- Writing a .txt file for FT to import will now overwrite existing files with the same name.

- "Tilt" values can be negative now.- All non-text areas become active when moused over.- Saving .dmc and .wav files correctly shows the current filename.- SSRC is now included in the RJDMC executable, so no need to have it in its own folder.

1.1 public

- .wav opening fixes

1.041 private

- Fixed cut/copy/paste/trim/delete so that they no longer crash if the file is too small (one sample)

1.04 public

- Added tilt feature- Fixed a bug where hitting revert crashes program before a .wav is loaded- Fixed several bugs with tilt

v1.03 public

- Minimizing the window when a .wav file is open no longer crashes RJDMC

--------------------------------------

I'm doing this for my senior project in school, so I will be releasing new updates to this program weekly. The premise of this program is that it is a DMC converter that has a UI and several options. It has no name yet

Description-

Converts a PCM .wav (16 or 8-bit, stereo or mono) to DMC format. Only waves above 33144hz will work properly--others will play too fast. If you have a 22khz wave you want to play, convert it to 44khz (or if possible, 33144hz) in some other program first. My program converts the sample rate for larger-than-33144 rates but it does a dirty job of it, so the cleanest sound will probably result from you putting it at 33144.

You can also convert a PCM .wav to another PCM .wav approximation of the DPCM. This is useful for people who make .it/xm/s3m files and want to have dpcm samples that sound like a NES's would. You can also just load full songs into this to play around (warning, large filesizes take awhile).

Compressed .wav formats are not supported, and they will not be in the future most likely. This includes ADPCM, uLaw, etc.

Future features: -<33144hz conversion-multiple quality/pitch settings-Graphical DMC wave display (directly editable, copy/cut/paste)-Preview for the current DMC wav at given frequency-The ability to chop up large wav files so they can be played back as DMCs on the NES-Drag 'n Drop functionality -additional filters-bit crushing

and a bunch of other stuff that I don't really want to list yet

----------------

If you find any bugs with a .wav file (for example, if a .wav causes it to crash or if it's PCM and it whines that this is not a wave file), send me the .wav with a description of what went wrong at rushjet1 (at) 4x86 (dot) com.

Last edited by RushJet1 on Wed Jul 01, 2015 10:51 am, edited 4 times in total.

But of course if it's for scool then I guess you can't plagiarize other people's code, even if it's free.

You shouldn't be plagiarizing anyway. The word "plagiarism" itself tends to conflate three different aspects:

Attribution failure. This is the "classic" definition of plagiarism, in which an author fails to cite the source of an idea or expression appropriated from another author.

Copyright infringement. This involves reproducing the work of another author without the author's permission and beyond what courts have recognized as fair. Ideas are not subject to copyright, though there is no bright line between idea and expression.

NIH. An instructor may require that a specific portion of an assignment be an original work created exclusively by the student in order for the student to receive credit, even if the student cites sources and has permission. This restriction is independent of both attribution and copyright.

Use of a library distributed under an appropriate free software license should not run afoul of attribution failure or copyright infringement, though you should check with your instructor to see what kinds of libraries are OK to use.

But of course if it's for scool then I guess you can't plagiarize other people's code, even if it's free.

You shouldn't be plagiarizing anyway. The word "plagiarism" itself tends to conflate three different aspects:

Attribution failure. This is the "classic" definition of plagiarism, in which an author fails to cite the source of an idea or expression appropriated from another author.

Copyright infringement. This involves reproducing the work of another author without the author's permission and beyond what courts have recognized as fair. Ideas are not subject to copyright, though there is no bright line between idea and expression.

NIH. An instructor may require that a specific portion of an assignment be an original work created exclusively by the student in order for the student to receive credit, even if the student cites sources and has permission. This restriction is independent of both attribution and copyright.

Use of a library distributed under an appropriate free software license should not run afoul of attribution failure or copyright infringement, though you should check with your instructor to see what kinds of libraries are OK to use.

I can use programs that already do functions I need as long as I use it appropriately and attribute them It's the same as using "sources" for writing papers basically. I was gonna use "Secret Rabbit Code" but it's a C DLL that requires you do fill in a c struct and uses pointers to data, and I have no idea how to do that stuff in VB.net

I can use programs that already do functions I need as long as I use it appropriately and attribute them It's the same as using "sources" for writing papers basically. I was gonna use "Secret Rabbit Code" but it's a C DLL that requires you do fill in a c struct and uses pointers to data, and I have no idea how to do that stuff in VB.net

VB handles this by passing things "by reference" - it's a fancy way of saying "pointer." Try looking up "by reference" in the DLL calling routines and see if that gives you a nudge in the right direction.

I can use programs that already do functions I need as long as I use it appropriately and attribute them It's the same as using "sources" for writing papers basically. I was gonna use "Secret Rabbit Code" but it's a C DLL that requires you do fill in a c struct and uses pointers to data, and I have no idea how to do that stuff in VB.net

VB handles this by passing things "by reference" - it's a fancy way of saying "pointer." Try looking up "by reference" in the DLL calling routines and see if that gives you a nudge in the right direction.

Your program looks awesome - keep up the good work!

I actually spent a couple days on that with another programmer friend helping, and we couldn't get it to work. Found a precompiled dll and used that. Made a struct, passed byRef. That didn't seem to work so I made it an IntPtr and marshalled the memory to send over but that produced identical results. The program complained that my ratio was not between 1/12 and 12, which it was. Then I tried compiling the newest version of it but found tons of problems with his Win32 code so I had to fix those. Finally got it compiled and the program said it checked out (tests passed) but it was 1.4MB and unusable in my code without another windows library in the same directory, then VB.net whined about how this was managed code... so I switched programs to one that is much easier to use and works well I'll be posting the new version today.

Batch Processing: If you want to process more than one file at once, first go to edit-> preferences and choose your output method (this will not work in "manual" mode as that expects one at a time). After selecting an option (and a .wav output rate for .WAV output if you want), either drag/drop multiple files onto the application or use the File->Open dialog and select multiple .wav files. They will automatically be created in the same folder as the input files with either "<inputname>.dmc" for DMC output or "<inputname>D.wav" for .WAV output.

It's been awhile since I've officially updated this, so there are a lot of changes (especially behind-the-scenes).

-Memory use is cut way down (for large files)
-Bit Crushing is implemented (0 is off, 1-19 is varying degrees of bits flipped, and 20 is an inverted waveform).
-Volume control is implemented (volume for the input wave is changed by x%).
-Zoom is implemented on the waveform view--unfortunately it only zooms to the middle now.
-You can highlight parts of the wave in the waveform view but it doesn't do anything. -Pitch control is done, and playback is at least pretty close to how the NES would handle it, though not exact.
-Opening DMC files is possible now, and you can edit them just like .wav files.
-Several bugs were fixed, most of which most people wouldn't notice

Again, if there are problems, post here or e-mail me with them. Thanks!

PS- if you get .net errors, chances are that you need to install the latest version of .net

This may sound crazy, but can you add very minimal support for PCM for Famicom Disk System via (PP)MCK/MML syntax? Such voices/SFX used as in the Famitracker FDS HELLO voice demo, Doki Doki Panic, And possibly others,

Of course, That is if you're up to it. There was another converter buried in the Famitracker Forums called WAV2FDS for FamiTracker, but it's not working, because it is of course, a Game Maker app!

I'm pretty sure that's totally different from what I'm doing right now, and it's kind of outside the scope of what I'm trying to do with this program anyway (it's for my senior project, so I have a deadline and don't want to be adding too many time-consuming features).

NOTES:
-Zoom function doesn't work with editing the wave file yet (it acts as if you're zoomed all the way out).
-You can either right click on the wave display or use shortcuts to use the editor functionality.
-CTRL+V = paste, CTRL+C = copy, CTRL+X = cut, CTRL+T = trim, CTRL+Z = revert, CTRL+A = select all
-"quality" Pitch change right now is a bit mediocre quality-wise. I might just have lots of copies of each .wav file in memory for small files.
-To use copy, cut, delete, or trim you must have something selected (by dragging the mouse and making a rectangle). To paste something, you need to click once (without dragging) and a single white line will show up- this is where the info will be pasted.

Who is online

Users browsing this forum: No registered users and 1 guest

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum