Pause aware MIDI conversion - rg_toMIDI.php 2011-05-26 06:36 am The attached NWC 2.5+ User Tool will export MIDI files that sound like NWC playback even if the song file contains Fermata, Breath Mark, and/or Caesura pauses.NWC 2.5 (currently beta) is available to registered users <here>. The tool requires the 2.5 User Tool Starter Kit available <here>.The tool requires installation of these 2 packages from http://www.midiox.com/http://www.midiox.com/zip/Midi2Mtx-Installer.ziphttp://www.midiox.com/zip/Mtx2Midi-Installer.zipInstallationSave the attachment to your User Tool scripts folder as: rg_toMIDI.phpOpen a song into NWC 2.5.Press ALT+F8, click on 'New...'For 'Name:', I simply called it 'to MIDI'Click on 'Browse...' and open rg_toMIDI.php from the list.Add ' -v' to the end. It should look something like:Quotephp\php.exe Scripts\rg_toMIDI.php -vUnder 'Input Type', select 'File Text'Under 'Options', check 'Prompts for User Input'.UseIt is best to start with a small file. These will typically convert in less than a second.Conversion of moonlite.nwc takes about 2 seconds. If you add a pause to 1812.nwc, conversion will take about 6 seconds.If you remove ' -v' (VERBOSE mode) from the command, the closing screen will not appear unless there is an error.Comments welcome. I am unable to test this on anything but XP Pro and am eager to read that it will work on other Windows versions.Note: the tool creates some temporary files. If the tool errs, these may not be deleted. If this happens, remove them manually.2011May31 edit: update to version 1.12012Jan08 edit: update toolkit link Quote Selected Last Edit: 2012-06-30 08:30 am by Rick G.
Re: Pause aware MIDI conversion - rg_toMIDI.php Reply #1 – 2011-05-26 08:25 pm Attempting to run using Windows 7 64 bit machine.This version of windows has two different program areas.The program areas that are 64 bit programs all get installed into c:\Program Fileswhereas any 32 bit (or less) program gets installed intoc:\Program Files (x86)When your program runs, it is assuming that the Midi2Mtx and Mtx2Midi programs are in c:\Program Files.But on a 64bit windows 7 machine, they will be in C:\Program Files (x86)So the procedure fails.After editing your php file so that the early definitions point to the correct program folder, the program ran without error.Here is the output screen for the first attemptQuote 15 477464 0.000 main (449024) 212 496768 0.232 main (484272) 219 0 0.003 fcopy (Resource id #1,user.nwctxt) 220 0 0.554 nwcConv (user.nwctxt,user.mid,-1) 222 16400 0.001 hasPause (Resource id #1) 229 0 0.006 fcopy (user.mid,Calypso.mid) 233 519936 0.803 main (497248) 51213 user.nwctxt 24143 user.mid 24143 Calypso.midThis is the result for the 1812 overture with a pause of 12 added to bar 4Quote 15 477464 0.000 main (449024) 212 496768 0.022 main (484272) 219 0 0.010 fcopy (Resource id #1,user.nwctxt) 220 0 6.707 nwcConv (user.nwctxt,user.mid,-1) 222 16416 0.009 hasPause (Resource id #1) 223 504 1.321 midConv (user.mid,user.txt) 224 32136 0.145 nwcPause (Resource id #1,timing.nwctxt) 225 0 2.663 nwcConv (timing.nwctxt,timing.mid,-1) 226 0 0.112 midConv (timing.mid,timing.txt) 227 3352 0.803 merge (timing.txt,user.txt,out.txt) 228 0 0.262 midConv (out.txt,1812.mid) 233 555968 12.062 main (498760) 1643564 user.nwctxt 303653 user.mid 1914568 user.txt 927662 timing.nwctxt 1929 timing.mid 7273 timing.txt 1914859 out.txt 303653 1812.midThe pause due to the fermata was successfully generated in the midi file.Excellent!Rich. Quote Selected
Re: Pause aware MIDI conversion - rg_toMIDI.php Reply #2 – 2011-05-27 09:31 am RickThanks for the amendment that finds Midi2Mtx and Mtx2Midi whichever windows program area they reside in.I have tested this a number of times now including using Van Basco as the midi player to test karaoke and all is as expected.This is an excellent solution for those nwc users that have been asking for midi export of fermata and the like. Note that I said solution rather than work around. It is just as easy to run your user tool as it is to export to midi. An inovative approach if I am reading your process correctly:Roughly : Export to midi - convert midi to txt - convert nwc to nwctxt - find out where the fermata etc are - work out the timings - put this into the text midi file as appropriate - convert the textmidi file back to midi.Impressive.One point I think that you may want to include is to put in a routine that detects if the output midi file name already exists. At the moment, if it already exists, it is overwritten without a dialogue box. That does not happen with a straight midi export.Not a great problem for me, but may be for others so thought I would mention it. Quote Selected
Re: Pause aware MIDI conversion - rg_toMIDI.php Reply #3 – 2011-05-27 10:05 am Quote from: Richard Woodroffe – 2011-05-27 09:31 amThanks for the amendment that finds Midi2Mtx and Mtx2Midi whichever windows program area they reside in.Thanks. The amendment is incorporated into version 1.1.Quote from: Richard Woodroffe – 2011-05-27 09:31 amOne point I think that you may want to include is to put in a routine that detects if the output midi file name already exists. At the moment, if it already exists, it is overwritten without a dialogue box. That does not happen with a straight midi export.Down around line 25 you'll find:Quote from: rg_toMIDI.php $dlg->SetWindowStyle(wxFD_SAVE); // |wxFD_OVERWRITE_PROMPT);Change it to:Quote $dlg->SetWindowStyle(wxFD_SAVE|wxFD_OVERWRITE_PROMPT);and it will prompt for overwrites. Quote Selected Last Edit: 2011-05-31 12:19 pm by Rick G.
Re: Pause aware MIDI conversion - rg_toMIDI.php Reply #4 – 2011-05-31 12:15 pm Updated to version 1.1This version should work with 64bit Windows versions.Mostly due to changes in NWC 2.5 Beta Preview 7, speed is improved. Quote Selected