s32 SEQ_TERMINAL_PrintCurrentMixerMap(void *_output_function) { void (*out)(char *format, ...) = _output_function; char str_buffer[128]; MUTEX_MIDIOUT_TAKE; u8 map = SEQ_MIXER_NumGet(); int i; out("Mixer Map #%3d\n", map+1); out("==============\n"); out("|Num|Port|Chn|Prg|Vol|Pan|Rev|Cho|Mod|CC1|CC2|CC3|CC4|C1A|C2A|C3A|C4A|\n"); out("+---+----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+\n"); for(i=0; i<16; ++i) { sprintf(str_buffer, "|%3d|%s|", i, SEQ_MIDI_PORT_OutNameGet(SEQ_MIDI_PORT_OutIxGet(SEQ_MIXER_Get(i, SEQ_MIXER_PAR_PORT)))); int par; for(par=1; par<2; ++par) sprintf((char *)(str_buffer + strlen(str_buffer)), "%3d|", SEQ_MIXER_Get(i, par)+1); for(par=2; par<12; ++par) { u8 value = SEQ_MIXER_Get(i, par); if( value ) sprintf((char *)(str_buffer + strlen(str_buffer)), "%3d|", value-1); else sprintf((char *)(str_buffer + strlen(str_buffer)), " - |"); } for(par=12; par<16; ++par) sprintf((char *)(str_buffer + strlen(str_buffer)), "%3d|", SEQ_MIXER_Get(i, par)); out("%s\n", str_buffer); } out("+---+----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+\n"); out("done.\n"); MUTEX_MIDIOUT_GIVE; return 0; // no error }
///////////////////////////////////////////////////////////////////////////// // Sends a single mixer value ///////////////////////////////////////////////////////////////////////////// s32 SEQ_MIXER_Send(u8 chn, seq_mixer_par_t par) { mios32_midi_port_t midi_port = SEQ_MIXER_Get(chn, SEQ_MIXER_PAR_PORT); mios32_midi_chn_t midi_chn = SEQ_MIXER_Get(chn, SEQ_MIXER_PAR_CHANNEL); s32 value; if( (value=SEQ_MIXER_Get(chn, par)) < 0 ) return 0; // don't return error, as it could be misinterpreded as a MIDI interface issue switch( par ) { case SEQ_MIXER_PAR_PRG: return value == 0 ? 0 : MIOS32_MIDI_SendProgramChange(midi_port, midi_chn, value-1); case SEQ_MIXER_PAR_VOLUME: return value == 0 ? 0 : MIOS32_MIDI_SendCC(midi_port, midi_chn, 7, value-1); case SEQ_MIXER_PAR_PANORAMA: return value == 0 ? 0 : MIOS32_MIDI_SendCC(midi_port, midi_chn, 10, value-1); case SEQ_MIXER_PAR_REVERB: return value == 0 ? 0 : MIOS32_MIDI_SendCC(midi_port, midi_chn, 91, value-1); case SEQ_MIXER_PAR_CHORUS: return value == 0 ? 0 : MIOS32_MIDI_SendCC(midi_port, midi_chn, 93, value-1); case SEQ_MIXER_PAR_MODWHEEL: return value == 0 ? 0 : MIOS32_MIDI_SendCC(midi_port, midi_chn, 1, value-1); case SEQ_MIXER_PAR_CC1: return value == 0 ? 0 : MIOS32_MIDI_SendCC(midi_port, midi_chn, SEQ_MIXER_Get(chn, SEQ_MIXER_PAR_CC1_NUM), value-1); case SEQ_MIXER_PAR_CC2: return value == 0 ? 0 : MIOS32_MIDI_SendCC(midi_port, midi_chn, SEQ_MIXER_Get(chn, SEQ_MIXER_PAR_CC2_NUM), value-1); case SEQ_MIXER_PAR_CC3: return value == 0 ? 0 : MIOS32_MIDI_SendCC(midi_port, midi_chn, SEQ_MIXER_Get(chn, SEQ_MIXER_PAR_CC3_NUM), value-1); case SEQ_MIXER_PAR_CC4: return value == 0 ? 0 : MIOS32_MIDI_SendCC(midi_port, midi_chn, SEQ_MIXER_Get(chn, SEQ_MIXER_PAR_CC4_NUM), value-1); } // not supported // don't return error, as this could be misinterpreted as a MIDI interface issue return 0; }