# MIDI Output Send MIDI messages using the `m.` word. Build up parameters on the stack, then emit. The system determines message type based on which parameters you set. ## Note Messages The default message type is a note. Set `note` and `velocity`, then emit: ```forth 60 note 100 velocity m. ;; middle C, velocity 100 c4 note 80 velocity m. ;; same pitch, lower velocity ``` | Parameter | Stack | Range | Description | |-----------|-------|-------|-------------| | `note` | `(n --)` | 0-127 | MIDI note number | | `velocity` | `(n --)` | 0-127 | Note velocity | | `chan` | `(n --)` | 1-16 | MIDI channel | | `dur` | `(f --)` | steps | Note duration | | `dev` | `(n --)` | 0-3 | Output device slot | Duration (`dur`) is measured in steps. If not set, the note plays until the next step. Channel defaults to `1`, device defaults to `0`. ## Control Change Set both `ccnum` (controller number) and `ccout` (value) to send a CC message: ```forth 74 ccnum 64 ccout m. ;; CC 74, value 64 1 ccnum 127 ccout m. ;; mod wheel full ``` | Parameter | Stack | Range | Description | |-----------|-------|-------|-------------| | `ccnum` | `(n --)` | 0-127 | Controller number | | `ccout` | `(n --)` | 0-127 | Controller value | ## Pitch Bend Set `bend` to send pitch bend. The range is `-1.0` (full down) to `1.0` (full up), with `0.0` as center: ```forth 0.5 bend m. ;; bend up halfway -1.0 bend m. ;; full bend down ``` ## Channel Pressure Set `pressure` to send channel aftertouch: ```forth 64 pressure m. ;; medium pressure ``` ## Program Change Set `program` to send a program change message: ```forth 0 program m. ;; select program 0 127 program m. ;; select program 127 ``` ## Message Priority When multiple message types are set, only one is sent per emit. Priority order: 1. Control Change (if `ccnum` AND `ccout` set) 2. Pitch Bend 3. Channel Pressure 4. Program Change 5. Note (default) To send multiple message types, use multiple emits: ```forth 74 ccnum 100 ccout m. ;; CC first 60 note 100 velocity m. ;; then note ``` ## Real-Time Messages Transport and clock messages for external synchronization: | Word | Description | |------|-------------| | `mclock` | Send MIDI clock pulse | | `mstart` | Send MIDI start | | `mstop` | Send MIDI stop | | `mcont` | Send MIDI continue | These ignore all parameters and send immediately.