# MIDI Editor

To open the editor window, select one or more MIDI files in the browser and click the "Edit" button on the toolbar (or double click the item). You can also edit any file without loading it in the browser by choosing "File/Open".

## Toolbar

The toolbar on the top of the document contains the play/stop button, the event list filtering / search field, and the encoding menu.

The "Show Lyrics" button switches to the lyrics page. Lyrics are displayed using the encoding specified in the "Encoding" popup menu and may be printed/copied. To return to the events page, click the "Event List" button.

#### Player

Click on the time/bar counter while playing a file to update the event list selection to the nearest playing note.

#### Text Encoding

Since standard MIDI files do not have a defined way to specify the text encoding used, MidiKit allows you to specify a default encoding. On Mac OS 10.10 and later, the encoding can also be "guessed" when opening the file. These settings are found in the preferences panel (MidiKit/Preferences…" menu item).

## Event List

The event list editor contain 9 columns: Measure, Track, Channel, Status, Second, Third, Data, Frame and MIDI Ticks.

The "Second" and "Third" columns display different data depending on the event type:

- MIDI events: second and third byte of the MIDI event.
  NB: The note on event contains three numbers in the "third" column: the first one is the note on velocity, the second is the note off velocity and the third is the note duration (in MIDI ticks). The note value is displayed in the "second" column using the Middle C3 convention by default. You can change to Middle C4 or raw note value in the preferences panel. Take note that you can always enter a raw MIDI note value when editing such event.

- System Exclusive Messages: SysEx manufacturer/description is displayed in the "Second" column and SysEx value (if available) is displayed in the "Third" column.
- Meta events: The meta event type is displayed in the "Second" column and the meta event value is displayed in the "Third" column.

The "data" column contain the event raw data. Only System Exclusive messages and Sequencer Specific meta events are editable in this column. Roland SysEx data checksum is automatically computed.

You can filter the displayed data by selecting/unselecting corresponding event types in the toolbar. These buttons are arranged in three rows: The first row for MIDI events, the second for channels and the third for meta events. You may use the "All/None" button to select/unselect all buttons in the same row. You may also option-click or command-click to either select only one or select all but one in a row.

The text search field allows to filter events which contain the search string in their data.

Displayed tracks are also filterable with the "tracks" popup button. You may option-select or command-select to either select only one tracks or select all but one track.

You may copy, paste, modify, insert, duplicate and delete events with unlimited undo/redo support.

### Pasting events:

The copied data is pasted at the selected row time/track. Pasted data maintain the original timing between events.

If no rows are selected:

- When copying/pasting inside the same document, the data is pasted at the last visible event time (+ note duration, if applicable).
- When copying/pasting between different documents, the data is pasted at the original source time.

Holding down the option key while pasting will bring the "Paste Options Dialog", allowing more control on pasting destination/behavior.

Take note that some meta events time (like time signatures) are alway forced to the beginning of a measure. So trying to paste a time signature to, say, 001:03:478 will not work.

Data is also copied as tabular text and can be pasted in applications supporting this format (text editors, spreadsheets).

### Editing multiple events:

You can set the status/second to multiple events at the same time. The new "Status" is applied to the entire selection. The new "Second" is only applied to events with the same status.

Editing channel/track and value (third) on multiple selection can be done by choosing"Selection/Edit" (or by option-double clicking). The dialog will present the values of the first selected event. Only checked fields will be modified. The "third" value is applied on events of the same type of the first selected event.

NB: When modifying the note event third, use the "*" wildcard character to keep original values.

For example, to modify only notes off values, use <wildcard><new note off velocity><wildcard> as shown here:

You can also use the +/- signs to add/substract values.

For example, to add 5 to the selected notes velocities, enter the string +5 * *

### Shifting events:

You can also move backward/forward a selection of events by choosing "Selection/Shift…".You'll be asked to choose between four options:

1. Selected Events (default). The operation will be applied only on selected events.
2. All Events. Every event starting from the first selected one will be shifted.
3. Channel "X". Only events on the specified channel will be shifted. The channel number is the channel of the first selected event. Channel 0 is used for sysex/meta events.
4. Track "X". Only events in the specified track will be shifted (the track number is the track of the first selected event).

### Adding/Deleting events:

To delete events, just press the "Backward Delete" key on your keyboard or click the "Minus" button in the bottom left of the event list. To duplicate an event, select it and click the "Plus" button. If no event is selected when you click this button, a default C3 Note is inserted at the beginning of the song.

### Adding tracks:

To add a new track, just set the track number of any event to a value greater than the current number of tracks. The "Add New Track" dialog will show up. Unused tracks (containing no events) will automatically be removed from the saved file.

### Playback:

The player allows a preview of the MIDI file via Core MIDI or Apple DLS Synth. Playback starts from the currently selected event or, if no events are selected, from the current playhead position.

Click the player time area (next to the play button) to select the event closest to the playhead position.

The "Speaker" button toggles the playback of note events while they are clicked.