Roll Scanning - MIDI files from piano rolls

Keywords Used in Rollscan Conversion Files

Background

Information relevant to the original piano roll, and to the conversion process itself, is embedded into the MIDI file as text events. To remain 100% compliant with the industry standard MIDI specification, the appropriate text meta-event type codes are used for different data. For example, the MIDI specification contains reserved meta-types for such things as Title, Composer/Author, Copyright, Instrument-Type, so those defined types are used whenever possible. For other information, the general text meta-event Type-01 is used since this information falls under the category of general information.

MIDI Specification Defined Embedded Information Table


Location Description Meta Event Type
MIDI header MIDI File Format Type = Type-0 (single track) for ScanImageMIDI, PunchMasterMIDI, eRollMIDI and EmulatedMIDI files. Header data
MIDI header Ticks Per Quarter Note = 480 for ScanImageMIDI, eRollMIDI and EmulatedMIDI files.
This happens to correspond to 0.0025 inches of distance along the roll per MIDI tick
PunchMasterMIDI files use 192 Ticks Per Quarter Note for expanded viewing and editing.
Header data
Track-0 Set Tempo - MIDI tempo set equivalent to human tempo indicated on roll for playback. For eRollMIDI and EmulatedMIDI files where takeup spool compensation is desired, additional set-tempo events are used throughout the MIDI file for gradual tempo adjustment. Type 51 set tempo event
Track-0 Title - Typically the Roll title as it appears on the roll box. Often combined with roll-type and roll-number.
- May duplicate information present as later type-01 keyword text
Type 03 text event
Track-0 Instrument Description - Set to Roll Type (Generic, Ampico, Duo-Art, Welte, etc.).
This Type-04 Meta Event, when present, overrides the /type: keyword for certain automatic settings
Type 04 text event
Track-0 Copyright - MIDI rollscan file copyright notice may differ from roll copyright information. Type 02 text event
Track-0 Lyrics - can occur at any position throughout the track. Type 05 text event
Track-0 General Information - items not otherwise covered by the defined keyword/data values below Type 01 text event

Keyword Tables

Keywords and their associated data have been defined as information that is useful to record for each file in support of further processing or subsequent use. Many of the keywords, and the format used, were taken from Wayne Stahnke's definitions for his ANN files. This allows compatibility with files converted to MIDI from earlier BAR/ANN or WEB/ANN format. All keywords begin with a slash ('/') and end with a colon (':'), and do not contain embedded white space within the keyword (although the data may contain whitespace). Keywords are not case sensitive.
Keywords currently used and/or specifically supported by the software are included in the tables below. Other keyword and text event information will be preserved if it is present in the file. Additional information may be embedded within the file as standard Type-01 MIDI text meta-events without keywords.

NOTE: The first 4 keywords are the most critical, since they uniquely (with a few exceptions) identify the roll being scanned, and should be embedded in every rollscan MIDI file if possible. If the roll manufacturer/type, class and number are known (i.e. Welte-licensee 123456) the other information can often be obtained from external references.

Keywords Taken Directly From Roll/Box, or musical content related

KEYWORD Description Meta Event Type
/roll_type: Type of roll used to set the software processing. Should correspond to the XML-template type selected in the conversion software (Generic, Ampico, Duo-Art, Welte, etc.). Type 01 text event
/roll_manufacturer: Manufacturer's name (Ampico, Duo-Art, Imperial, QRS, Supertone, Welte, etc.) Type 01 text event
/roll_class: Class of roll, as subtype of roll_type given above. (i.e. : A or B for Ampico, Licensee or T-100 for Welte, etc. ) Type 01 text event
/roll_number: Roll Catalog Number, as it appears on the roll or roll box Type 01 text event
/roll_authenticity: Authenticity of the roll, expressed as either "Original , or "Recut" depending on whether the copy of the roll scanned was an original vintage roll or not. The words "Original" or "Recut" may be followed by additional information if appropriate, but the first word in the data must be either Original or Recut for the software to recognize it. Type 01 text event
/title: roll title (as it appears on the roll box). Type 01 text event
/subtitle: Sub-title (if any) Type 01 text event
/composer: composer Type 01 text event
/lyricist: lyricist Type 01 text event
/performer: performer/arranger of roll (formerly /pianist:) Type 01 text event
/music_category: classical, popular, religious, etc. Type 01 text event
/song_type: waltz, fox-trot, one-step, hymn, march, etc. Type 01 text event
/key: principal key of selection Type 01 text event
/meter: meter (3/4, 4/4, 6/8, 12/8, etc.) Type 01 text event
/roll_tempo: Tempo as it appears on the roll, if any. May be a range ( i.e. 80 for singing, 90 for dancing) Type 01 text event
/roll_date: Date of recording, manufacture, or issue, if known Type 01 text event
/roll_copyright: Listed copyright registrant, if known Type 01 text event
/roll_city: Location of recording, if known Type 01 text event
/roll_words: Type of words on roll, if any.(Carry-over from Stahnke definitions for completeness) Type 01 text event
/roll_mode: Mode of roll, if applicable.(Carry-over from Stahnke definitions for completeness) Type 01 text event


Keywords Related to the Scanning Process

KEYWORD Description Meta Event Type
/File_Type: Indicates which type of rollscan file this is. (ScanImageMIDI, PunchMasterMIDI, eRollMIDI, EmulatedMIDI ) Type 01 text event
/Source_File_Type: Indicates type of file used to create this file as output. (CIS, TIFF, ScanImageMIDI, PunchMasterMIDI, eRollMIDI ) Type 01 text event
/scanned_by: Identifies archivist that scanned the roll Type 01 text event
/date_scanned: date that roll was scanned ( yyyy-mm-dd format ) Type 01 text event
/scanning_system: Specifies Type of scanner used (MK3, MK4, Rollscan1, Capstan-Drive, Takeup-Spool, Optical Encoder, etc.) Type 01 text event
/roll_printed_image_capture: Indicates the type of image capture performed for the printed/lyric information. Valid values are: "None", "Grayscale-BD" and "Color-BD" where BD is an integer indicating the bit depth of either the grayscale or color image Type 01 text event
/owner: Owner of the roll Type 01 text event
/measurement_system: INCHES or CENTIMETERS - Sets default interpretation of units. Ideally, each data value should contain proper unit labels. If this keyword is not present, software defaults to inches for otherwise undefined units.
At the moment, the software only processes in inches no matter what, but the ability to handle metric data can be included in the future.
Type 01 text event
/punch_step: Displacement between punch steps (inches/mm)
Software indicates whether this value was automatically determined or manually set
Type 01 text event
/punch_length: Leading edge to trailing edge distance for rectangular, round, or obround punch (inches/mm)
Software indicates whether this value was automatically determined or manually set
Type 01 text event
/play_tempo: MIDI file tempo at which playing occurs - tempo units = Beats/min
Software relies on the MIDI Type-51 Set Tempo meta-event, not this keyword
Type 01 text event
/Punch_Matrix_Restoration: APPLIED or DISABLED indicated if applicable. Type 01 text event
/Restoration_Kalman_Filter_Gain: Setting used for punch matrix restoration algorithm, if applicable. Type 01 text event
/MIDI_ticks_per_Punch_Step: Distance in MIDI ticks between adjacent punch rows in PunchMasterMIDI files. Default is 24 for compatibility with MIDI editing software Type 01 text event
/scanner_horiz_DPI: Number of dots per inch (horizontal axis) from the original optical scanner, if available. Type 01 text event
/scanner_LPI: Number of lines per inch (vertical axis) from the original optical scanner, if available. Type 01 text event
/play_speed: (Carry-over from Stahnke definitions for completeness) - (deprecated - defined as play_tempo/10 feet/min) Type 01 text event
/punch_size: (Carry-over from Stahnke definitions for completeness) - (round or obround punch diameter, inches/meters)
Software relies on the /punch_length, not this keyword, for automatic settings
Type 01 text event
/punch_width: (Carry-over from Stahnke definitions for completeness) - (rectangular punch width, inches/meters)
Software relies on the roll template track spacings, not this keyword, for automatic settings
Type 01 text event
/cadence: Webbing cadence (rows) (Carry-over from Stahnke definitions for completeness) Type 01 text event
/thickness: Paper thickness (inches/mm) (Carry-over from Stahnke definitions for completeness) Type 01 text event