MIDI2TXT.DOC
上传用户:sun1865
上传日期:2008-12-23
资源大小:59k
文件大小:9k
源码类别:

midi

开发平台:

Visual C++

  1. ******************************
  2. MIDI2TXT v1.14
  3. midi binaries to text mnemonic  
  4.       by Guenter Nagler 
  5.     1995 
  6.   (info@gnmidi.com)
  7. ******************************
  8. [1] BACKGROUND
  9. My first intention writing this program was getting knowledge about
  10. midi. After writing the pendant TXT2MIDI program I used it to sequence 
  11. some music titles. When I bought my music workstation (including a more
  12. powerful sequencer) my use of MIDI2TXT/TXT2MIDI changed into an
  13. updating environment to make less compatible midi files full compatible.
  14. Another use possibility came up when I copied some excellent midi
  15. binaries from news://alt.binaries.sounds.midi . I converted one with
  16. MIDI2TXT into text, commented all commands that played notes in leading
  17. track and converted it back into another midi file (TXT2MIDI). The new 
  18. midi file played the full background of the music while I was able to 
  19. learn playing the lead voice for my own pleasure.
  20. [2] FILES DESCRIPTION
  21. MIDI2TXT.EXE.........converter program
  22. MIDI2TXT.DOC.........this file, showing usage of MIDI2TXT.EXE
  23. only MIDI2TXT.EXE is required to run program
  24. [3] COPYRIGHT
  25. MIDI2TXT (c) 1995 was created by Guenter Nagler.
  26. MIDI2TXT is free and may be used as you wish with this one exception:
  27.     You may NOT charge any fee or derive any profit for distribution
  28.     of MIDI2TXT.  Thus, you may NOT sell or bundle MIDI2TXT with any 
  29.     product in a retail environment (shareware disk distribution, CD-ROM,
  30.     etc.) without permission of the author.
  31. You may give MIDI2TXT to your friends, upload it to a BBS, or ftp it to
  32. another internet site, as long as you don't charge anything for it.
  33. Distributing modified programs or own programs that use parts of this 
  34. program requires permission of author!
  35. [4] DISCLAIMER
  36. MIDI2TXT was designed to handle 100% compatible midi files.
  37. It was tested with 600 different midi files but I can not say if 
  38. each 100% midi compatible midi file can be correctly converted.
  39. So I give no guarantees of the results, especially with non 100% 
  40. compatible midi files.
  41. If you find a midi file that you think to be 100% compatible midi
  42. that is not correctly converted, please send a sample file to 
  43. info@gnmidi.com . 
  44. Use MIDI2TXT at your own risk.  Anything you do with MIDI2TXT is your
  45. responsibility, and not the author's.  Any damage caused to any person,
  46. computer, software, hardware, company, or business by running MIDI2TXT 
  47. is your responsibility, and the author will not be liable.
  48. If you don't understand these terms, or are not sure of something, or
  49. are afraid something bad might come of using MIDI2TXT, don't  use  it!
  50. You are here forewarned.
  51. [5] INSTALLATION 
  52. [MSDOS]
  53.   Simply copy MIDI2TXT.EXE in a directory that is in your path.
  54.   When you start the program without arguments
  55.   C:> MIDI2TXT
  56.   you should get the usage text (see next section)
  57. [6] USAGE
  58. usage: midi2txt [-error][-chunk][-short][-info][-lyric][-tact][-units][-ms][-dec] file.mid [file.txt]
  59. options:
  60. -error checks file only. Produces only error report
  61. -chunk prints structure of midi file (header, tracks)
  62. -short prints short info about text, tracknames, programs
  63. -info prints info about text, tracknames, programs, controls
  64. -lyric prints lyrics only
  65. -tact marks end of tact bars with .
  66. -units prints position of all events in midi units.
  67. -ms prints position of all events in milliseconds.
  68. -dec print decimal values instead of notes, channels, programs,pauses...
  69. The parts in brackets [...] are optional.
  70. The text output is normally written to screen but can be relinked
  71. to a file  (> filename.txt)  or a printer (> prn). See your MS-DOS 
  72. manual for usage of  > and >> operators.
  73. The program MIDI2TXT allows some options:
  74. -error  checks midifile for errors 
  75. -chunk  shows only the header and midi tracks (without contents, but 
  76. channel number if available)
  77. -short  shows only program changes and text information
  78. -info   shows only program changes, bank changes, volume and text 
  79. information (no notes and time delays)
  80. -lyric  shows only text and lyric meta events and interprets special
  81. character sequences in text (as used in some karaoke players):
  82.    / or    as end of line, end of paragraph
  83.    @K    kind of midi file (usually karaoke)
  84.    @V    version
  85.    @I    information
  86.    @L    language
  87.    @T    title of file 
  88. If none of the options -chunk, -short, -info, -lyric is specified all
  89. midi commands are printed.
  90. -tact   marks all tact changes with a point and comments. 
  91. The measure number is printed as comment behind each tact bar.
  92. -units prints a comment /* U... */ before each midi event
  93.         with current song position in midi units.
  94. -ms prints a comment /* ...ms */ before each midi event 
  95.         with current song position in milliseconds since start of song.
  96. Warning:
  97.   Do not expect that MIDI2TXT + TXT2MIDI will produce a copy of the original
  98.   file! MIDI allows to encode its commands in different ways without 
  99.   changing the semantic of the notes (It is allowed to compress the 
  100.   midi file by ommiting redunant command bytes, but it is no duty).
  101.       
  102. [7] A sample of resulting text output
  103. // is a comment that ends at end of line (all characters are ignored)
  104. /* is a comment that ignores all characters, lines until */ 
  105. // the comments at right side are not produced by the program 
  106. // sample.mid
  107. mthd                        // start of header
  108.   // 1 song                 // midi2txt converts only the first song!
  109.   // 3 tracks
  110.   unit 192 // is 1/4        // time units that build a quarter pause
  111. end mthd                    // end of header
  112. mtrk                          // start of a track without channel
  113.   copyright "(c) Guenter Nagler"   // any copyright text 
  114.   trackname "Ballade pour Adeline" // any track name
  115.   tact 4 / 4 24 8                  // song in 4/4 tact, 24 clicks per beat, 8/32 is 1/4 note
  116.   beats 68                         // tempo in ticks/min or beats/min
  117. end mtrk                           // end of track
  118. mtrk($D)                           // a track with channel D hex (=13 dec)
  119.   trackname "Melody"
  120.   program BritePno               // program name
  121.   balance  left                    // a panpot control parameter
  122.   +c4 $40;                         // + are pressing keys, velocity as param
  123.   48;+g4 $40;                      // 48 is 1/16 duration (pause to next command)
  124.   48;-g4 $7F;                      // - are releasing keys, velocity as param
  125.   +c5 $40;                         // note commands are separated by ;
  126.   1/16;-c5 $7F;                    // exact aligned duration can be written as 1/16
  127.   +d5 $40;
  128.   1/16;-d5 $7F;
  129.   -c4 $7F;
  130.   +c4 $40;
  131.   1/16;+g4 $40;
  132.   1/16;-g4 $7F;
  133.   +c5 $40;
  134.   1/16;-c5 $7F;
  135.   +d5 $40;
  136.   1/16;-d5 $7F;
  137.   -c4 $7F;
  138.   +c4 $40;
  139.   1/16;+g4 $40;
  140.   1/16;-g4 $7F;
  141.   +c5 $40;
  142.   1/16;-c5 $7F;
  143.   +d5 $40;
  144.   1/16;-d5 $7F;
  145.   -c4 $7F;
  146.   +c4 $40;
  147.   1/16;+g4 $40;
  148.   1/16;-g4 $7F;
  149.   +c5 $40;
  150.   1/16;-c5 $7F;
  151.   +d5 $40;
  152.   1/16. // tact 1                       // end of tact 1  (using option -tact)
  153. end mtrk
  154. A further description of the text language can be found in documentation
  155. of TXT2MIDI.
  156. [8] SUGGESTIONS / COMMENTS / BUG REPORTS / QUESTIONS
  157.      WWW:    http://www.gnmidi.com
  158.    contains all my dos/unix midi programs
  159.      EMAIL:  info@gnmidi.com
  160. [9] CHANGES
  161. v1.0 to v1.1: 
  162.   * added version field in midi header
  163.   * tempo is now printed by beats command as floatingpoint numbers
  164.   * new option -error checks if midifile is correct otherwise
  165.     prints an error message
  166.   * some portability changes for UNIX compatibility
  167. v1.1 to v1.2:
  168.   * added detailed sysex information for common sysex commands
  169.     (GMReset, GSReset, GSExit)
  170.   * minor bugs in output information level 
  171. v1.2 to v1.3:
  172.   * added meta events mnemonics prefixchannel and prefixport
  173. v1.3 to v1.4:
  174.   * bug fixed that caused unexpected end-of-file-error for certain valid midi files
  175.   * added -version option
  176.   * note B is now written as B (former H, as used in German language)
  177. v1.4 to v1.5:
  178.   * added RPN control commands highrpn, lowrpn
  179.   * fixed bug that generated negative number of quarternotes for very high
  180.     pause values
  181.   * added XGreset command
  182.   * added option to print unit numbers in comments /* ... */
  183.   * output filename can be specified directly (behind input filename)
  184. v1.5 to v1.6:
  185.   * added option -units
  186.   * added option -ms
  187.   * usage explains options
  188. v1.6 to v1.7:
  189.   * support large events (larger than 1 kb)
  190. v1.7 to v1.8:
  191.   * cannot calculate and print milliseconds in other than first track
  192.     if tempo changes during the song, because the program does not consider
  193.     tempo changes in first track when printing any other track.
  194.     (see program midinote.zip it does consider this)
  195.   * printing of milliseconds and units suppressed if not printing all info
  196.    (e.g. using options -i -e -l ...)
  197.   * now printing time/units after each pause
  198. v1.8 to v1.9:
  199.   * added new option -dec to make it easier to parse midi file from text
  200.   * added comments to each track telling the tracknumber 
  201. v1.9 to v1.10:
  202.   * option -tact now also supports tact other than 4/4
  203. v1.10 to v1.11:
  204.   * program names adapted to be compatible to the other utilities
  205.   * printing xf tail as comment
  206.   * fixed small RPN problem
  207. v1.11 to v1.12:
  208.   * handling of option -tact in case of midi files with tact errors
  209. v1.12 to v1.13:
  210.   * bug fix when read error occurs in very long sysex that is too short
  211. v1.13 to v1.14:
  212.   * help for users that cannot use the dos utilitiy