Launchpad mini MK3 driver

Hi Zynthianers!

I’m working on support for the step sequencer with the Novation Launchpad mini MK3. But, I’ve updated the controller’s firmware (to 2.0), and it does not work with the current driver (I don’t know if the update has any relation at all). It is simply not recognized. The ID of the driver is Launchpad Mini MK3 IN 1, which is, as I understand it, the Launchpad Mini MK3 LPMiniMK3 DAW, as seen with amidi -l. With this ID, the device does not want to change into DAW mode, neither I receive any MIDI message.

If I set it to Launchpad Mini MK3 IN 2, the SysEx to change into DAW mode works (and I see the ‘Session’ button enabled), BUT in that layout (session), I do not receive any MIDI message. If I change to ‘Drums’, ‘Keys’ or ‘User’, I receive MIDI messages as expected (but also the chains). I’ve used the controller with another library that I made, in my PC, and everything works fine.

Could any Launchpad mini MK3 owner test if the current driver (in Oram) works? Thank you!! :slight_smile:

Hi @oscaracena. Zynthian uses a derived name for the device. The kernel driver changed a while ago that broke this and that change became evident when we migrated to the later kernel in Oram. I changed the way the name is derived which works but may differ from what you see in amidi -l. You should be able to see the derived (raw) name in the Zynthian UI by going to the MIDI device’s options (e.g. Admin menu->MIDI Input Devices, bold SELECT on the device) and see what name is shown in the “Rename port” option. This will be prefixed with its type & location, e.g. USB:1.1.1/ and may be truncated due to screen size - so isn’t ideal but may give a clue as to the Zynthian name.

1 Like

Hi @oscaracena !

I can confirm the driver is working perfectly in last oram with my launchpad mini MK3.
It uses “Launchpad Mini MK3 IN 1” as port device ID for session mode (the one used by the driver). The other port (2) is not used by the driver. FYI, i’ve not updated the firmware.

Regards,

1 Like

Thank you @riban and @jofemodo for your time! If your’s works in Oram, then the new firmware is the problem. But, I don’t know why, the SysEx commands and mapping are the same… I’ll keep investigating. Thanks again! :slight_smile:

Are you working with last oram without any mod from your side?
What are the port names you see in the UI log?

Regards,

Yes, I’ve updated just now, and git shows no changes. And with that configuration, even the ‘Session’ button is disabled. Zynthian only receives MIDI as normal. The names are the expected, and also the driver is loaded, but the controller does not work. See this picture:

If I change it to ‘IN 2’, then the ‘Session’ is enabled, but the driver does not receive any ‘midi in’ message.

Could you send UI the logs (debug)?
It seems the session mode is not being enabled. Perhaps this firmware version sucks? Or firmware update was not OK?

Regards,

Sure, this is the log (I’ve cleaned the snapshot to avoid clutter):

Restarting UI in debug mode
Apr 02 09:27:06 zynthian startx[2170]: Merging...done
Apr 02 09:27:06 zynthian startx[2170]: Building XImage...done
Apr 02 09:27:06 zynthian startx[1935]: xinit: connection to X server lost
Apr 02 09:27:06 zynthian startx[1935]:
Apr 02 09:27:06 zynthian startx[1935]: waiting for X server to shut down
Apr 02 09:27:06 zynthian startx[1936]: (II) Server terminated successfully (0). Closing log file.
Apr 02 09:27:14 zynthian systemd[1]: zynthian_debug.service: Deactivated successfully.
Apr 02 09:27:14 zynthian systemd[1]: Stopped zynthian_debug.service - Zynthian User Interface (DEBUG).
Apr 02 09:27:14 zynthian systemd[1]: zynthian_debug.service: Consumed 11.531s CPU time.
Apr 02 09:27:37 zynthian systemd[1]: Started zynthian_debug.service - Zynthian User Interface (DEBUG).
Apr 02 09:27:37 zynthian startx[2438]: X.Org X Server 1.21.1.7
Apr 02 09:27:37 zynthian startx[2438]: X Protocol Version 11, Revision 0
Apr 02 09:27:37 zynthian startx[2438]: Current Operating System: Linux zynthian 6.6.20+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64
Apr 02 09:27:37 zynthian startx[2438]: Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=800 bcm2708_fb.fbheight=480 bcm2708_fb.fbswap=1 smsc95xx.macaddr=D8:3A:DD:37:77:20 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 root=/dev/mmcblk0p2 rootfstype=ext4 fsck.repair=yes rootwait console=tty3 logo.nologo quiet splash vt.global_cursor_default=0 modules-load=dwc2,libcomposite
Apr 02 09:27:37 zynthian startx[2438]: xorg-server 2:21.1.7-3+rpt2+deb12u5 (https://www.debian.org/support)
Apr 02 09:27:37 zynthian startx[2438]: Current version of pixman: 0.42.2
Apr 02 09:27:37 zynthian startx[2438]: Before reporting problems, check http://wiki.x.org
Apr 02 09:27:37 zynthian startx[2438]: to make sure that you have the latest version.
Apr 02 09:27:37 zynthian startx[2438]: Markers: (--) probed, (**) from config file, (==) default setting,
Apr 02 09:27:37 zynthian startx[2438]: (++) from command line, (!!) notice, (II) informational,
Apr 02 09:27:37 zynthian startx[2438]: (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
Apr 02 09:27:37 zynthian startx[2438]: (==) Log file: "/var/log/Xorg.0.log", Time: Tue Apr 2 09:27:37 2024
Apr 02 09:27:37 zynthian startx[2438]: (==) Using config directory: "/etc/X11/xorg.conf.d"
Apr 02 09:27:37 zynthian startx[2438]: (==) Using system config directory "/usr/share/X11/xorg.conf.d"
Apr 02 09:27:37 zynthian startx[2451]: /zynthian/config/img/fb_zynthian_boot.png is 800x480 PNG image, color type GRAY, 8 bit
Apr 02 09:27:37 zynthian startx[2451]: Zooming image by 100%...done
Apr 02 09:27:37 zynthian startx[2451]: Merging...didn't find evidence of prior run.
Apr 02 09:27:37 zynthian startx[2451]: done
Apr 02 09:27:37 zynthian startx[2451]: Building XImage...done
Apr 02 09:27:37 zynthian startx[2444]: ----------------------------------------------
Apr 02 09:27:37 zynthian startx[2444]: Linux Version: bookworm
Apr 02 09:27:37 zynthian startx[2444]: Kernel Version: 6.6.20+rpt-rpi-v8
Apr 02 09:27:37 zynthian startx[2444]: ZynthianOS Version: 2403
Apr 02 09:27:37 zynthian startx[2444]: Virtualization: none
Apr 02 09:27:37 zynthian startx[2444]: Hardware Architecture: aarch64
Apr 02 09:27:37 zynthian startx[2444]: Hardware Model: Raspberry Pi 4 Model B Rev 1.5
Apr 02 09:27:37 zynthian startx[2444]: ----------------------------------------------
Apr 02 09:27:37 zynthian startx[2474]: INFO:zynthian_gui_config.<module>: ZYNTHIAN-UI CONFIG ...
Apr 02 09:27:37 zynthian startx[2474]: INFO:zynthian_gui_config.<module>: Wiring Layout V5
Apr 02 09:27:38 zynthian startx[2474]: ZynCore: Setting-up 20+4 x Zynswitches...
Apr 02 09:27:38 zynthian startx[2474]: ZynCore: Setting-up Zynpots => 4 x PEC11 ...
Apr 02 09:27:38 zynthian startx[2474]: ZynCore->gpiod_start_callbacks: Callback thread created successfully
Apr 02 09:27:38 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Bank Change CCNum: 0
Apr 02 09:27:38 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Bank Change UP: None
Apr 02 09:27:38 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Bank Change DOWN: None
Apr 02 09:27:38 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Program Change UP: None
Apr 02 09:27:38 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Program Change DOWN: None
Apr 02 09:27:39 zynthian startx[2474]: DEBUG:zynthian_lv2.load_engines: Loaded engine config with timestamp: 1711993424.8627837
Apr 02 09:27:40 zynthian startx[2474]: Started libzynaudioplayer using libsndfile-1.2.0
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_engine_audioplayer.zynthian_engine_audioplayer: Supported Audio Codecs: ['aiff', 'aifc', 'au', 'caf', 'flac', 'mp3', 'vox', 'opus', 'ogg', 'wav']
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_main.<module>: STARTING ZYNTHIAN-UI ...
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_state_manager.__init__: Creating state manager
Apr 02 09:27:40 zynthian startx[2474]: Started libzynmixer
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_chain_manager.__init__: Creating chain manager
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer.get_controllers_dict: MIXER CTRL LIST: ['PGA_Gain_Left', 'PGA_Gain_Right', 'ADC_Left_Input', 'ADC_Right_Input', 'Digital_0', 'Digital_1', 'Headphone']
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer.get_mixer_zctrls: ADDING ZCTRL LEVEL: Headphone (Headphone) => 94
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer.get_mixer_zctrls: ADDING ZCTRL SELECTOR: Input 1 Mode (ADC_Left_Input) => VINL2[SE] + VINL1[SE]
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer.get_mixer_zctrls: ADDING ZCTRL SELECTOR: Input 2 Mode (ADC_Right_Input) => VINR2[SE] + VINR1[SE]
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer.get_mixer_zctrls: ADDING ZCTRL LEVEL: Output 1 Level (Digital_0) => 100
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer.get_mixer_zctrls: ADDING ZCTRL LEVEL: Output 2 Level (Digital_1) => 94
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer.get_mixer_zctrls: ADDING ZCTRL SELECTOR: Input 1 Gain (PGA_Gain_Left) => 0.0dB
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer.get_mixer_zctrls: ADDING ZCTRL SELECTOR: Input 2 Gain (PGA_Gain_Right) => 0.0dB
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer._send_controller_value: set 'PGA Gain Left' '0.0dB'
Apr 02 09:27:40 zynthian startx[2474]: Started libzynseq
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer._send_controller_value: set 'PGA Gain Right' '0.0dB'
Apr 02 09:27:40 zynthian startx[2474]: Started libzynsmf
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_autoconnect.init: Initializing 24 slots for MIDI devices
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer._send_controller_value: set 'ADC Left Input' 'VINL2[SE] + VINL1[SE]'
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer._send_controller_value: set 'ADC Right Input' 'VINR2[SE] + VINR1[SE]'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_akai_apc_key25_mk2' for devices with ID 'APC Key 25 mk2 MIDI 2'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_akai_apc_key25_mk2' for devices with ID 'APC Key 25 mk2 IN 2'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_akai_midimix' for devices with ID 'MIDI Mix IN 1'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_duopiano' for devices with ID 'GENERAL IN 1'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_korg_nanokontrol2' for devices with ID 'nanoKONTROL2 IN 1'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_launchkey_mini_mk3' for devices with ID 'Launchkey Mini MK3 IN 2'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_launchpad_mini' for devices with ID 'Launchpad Mini IN 1'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_launchpad_mini_mk3' for devices with ID 'Launchpad Mini MK3 IN 1'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_launchpad_pro_mk2' for devices with ID 'Launchpad Pro IN 1'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_launchpad_pro_mk3' for devices with ID 'Launchpad Pro MK3 IN 1'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_launchpad_x' for devices with ID 'Launchpad X IN 1'
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.update_available_drivers: Ctrldev driver 'zynthian_ctrldev_riband' for devices with ID 'riband Bluetooth'
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_autoconnect.midi_autoconnect: Connected MIDI-in device 0: system:midi_capture_1
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_autoconnect.midi_autoconnect: Connected MIDI-in device 1: system:midi_capture_2
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_autoconnect.midi_autoconnect: Connected MIDI-in device 2: ttymidi:MIDI_in
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_autoconnect.midi_autoconnect: Connected MIDI-in device 3: ZynMaster:midi_out
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_autoconnect.midi_autoconnect: Connected MIDI-out device 0: system:midi_playback_1
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_autoconnect.midi_autoconnect: Connected MIDI-out device 1: system:midi_playback_2
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_autoconnect.midi_autoconnect: Connected MIDI-out device 2: ttymidi:MIDI_out
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_autoconnect.midi_autoconnect: Connected MIDI-out device 3: ZynMaster:midi_in
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer._send_controller_value: set 'Digital' 'Playback' 100%,94% unmute
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Bank Change CCNum: 0
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Bank Change UP: None
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Bank Change DOWN: None
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Program Change UP: None
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Program Change DOWN: None
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_state_manager.stop_rtpmidi: STOPPING RTP-MIDI
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer._send_controller_value: set 'Digital' 'Playback' 100%,94% unmute
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_state_manager.stop_qmidinet: STOPPING QMidiNet
Apr 02 09:27:40 zynthian startx[2474]: DEBUG:zynthian_engine_alsa_mixer._send_controller_value: set 'Headphone' 'Playback' 94% unmute
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_state_manager.stop_touchosc2midi: STOPPING touchosc2midi
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_state_manager.stop_bluetooth: STOPPING bluetooth
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_state_manager.stop_aubionotes: STOPPING aubionotes
Apr 02 09:27:40 zynthian startx[2474]: INFO:zynthian_ctrldev_manager.load_driver: Loaded ctrldev driver Launchpad Mini MK3 IN 1.
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_chain_manager.add_chain: ADDED CHAIN 0 => midi_chan=None, mixer_chan=16, zmop_index=None
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:selector_events.__init__: Using selector: EpollSelector
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_gui_admin.stop_rbpi_headphones: STOPPING RBPI HEADPHONES
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_gui_patterneditor.get_custom_keymap: MIDI channel 0 has not synth processors.
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_gui_brightness_config.init_ctrls: Setting display brightness to 255.
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_controller.config: ZCTRL 'Display': 100 (0 -> 100), None, None
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_gui_brightness_config.init_ctrls: Setting LED brightness to 1.0.
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_controller.config: ZCTRL 'LEDs': 1 (0 -> 100), None, None
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_controller.config: ZCTRL 'CTRL#0': 0 (-100 -> 100), None, None
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_controller.config: ZCTRL 'CTRL#1': 0 (-100 -> 100), None, None
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_controller.config: ZCTRL 'CTRL#2': 0 (-100 -> 100), None, None
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_controller.config: ZCTRL 'CTRL#3': 0 (-100 -> 100), None, None
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_gui.zynswitches_init: INIT 24 ZYNSWITCHES ...
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_gui.zynswitches_midi_setup: CUSTOM I/O SETUP...
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_gui.osc_init: ZYNTHIAN-UI OSC server running in port 1370
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui.close_screen: SCREEN HISTORY => []
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui.close_screen: CLOSE SCREEN 'loading' => Back to 'audio_mixer'
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_state_manager.load_snapshot: Loading snapshot /zynthian/zynthian-my-data/snapshots/last_state.zss =>
Apr 02 09:27:41 zynthian startx[2474]: {"schema_version": 1, "last_snapshot_fpath": "/zynthian/zynthian-my-data/snapshots/last_state.zss", "midi_profile_state": {"MASTER_BANK_CHANGE_UP": "", "SYS_ENABLED": "1", "MASTER_PROGRAM_CHANGE_DOWN": "", "SINGLE_ACTIVE_CHANNEL": "1", "RTPMIDI_ENABLED": "0", "TOUCHOSC_ENABLED": "0", "PORTS": "DISABLED_IN=\\nENABLED_OUT=ttymidi:MIDI_out,QmidiNet:in_1\\nENABLED_FB=", "MASTER_CHANNEL": "0", "USB_BY_PORT": "0", "NETWORK_ENABLED": "0", "FILTER_RULES": "", "PROG_CHANGE_ZS3": "1", "MASTER_PROGRAM_CHANGE_UP": "", "BANK_CHANGE": "0", "CC_AUTOMODE": "0", "TRANSPORT_CLOCK_SOURCE": "0", "MASTER_BANK_CHANGE_CCNUM": "0", "MASTER_BANK_CHANGE_DOWN": "", "PRESET_PRELOAD_NOTEON": "1", "AUBIONOTES_ENABLED": "0", "FINE_TUNING": "440", "ACTIVE_CHANNEL": "0", "MASTER_PROGRAM_CHANGE_TYPE": "Custom", "PLAY_LOOP": "1", "FILTER_OUTPUT": "0", "port_names": {}}, "chains": {"0": {"title": "Main", "midi_chan": null, "midi_thru": false, "audio_thru": true, "mixer_chan": 16, "zmop_index": null, "cc_route": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "slots": [], "fader_pos": 0}}, "zs3": {"zs3-0": {"title": "Last state", "active_chain": 0, "global": {"midi_transpose": 0}, "chains": {"0": {"midi_chan": null, "audio_in": [], "audio_out": ["system:playback_[1,2]$"], "audio_thru": true}}, "mixer": {"midi_learn": {}}, "midi_capture": {"USB:1.1.4/Launchpad Mini MK3 IN 1": {"zmip_input_mode": true, "disable_ctrldev": false, "routed_chains": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]}, "USB:1.1.4/Launchpad Mini MK3 IN 2": {"zmip_input_mode": true, "disable_ctrldev": false, "routed_chains": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]}, "ttymidi:MIDI_in": {"zmip_input_mode": true, "disable_ctrldev": false, "routed_chains": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]}, "ZynMaster:midi_out": {"zmip_input_mode": true, "disable_ctrldev": false, "routed_chains": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]}}}}, "alsa_mixer": {"processor_type": "MX", "bank_info": null, "preset_info": null, "show_fav_presets": false, "controllers": {"PGA_Gain_Left": {"value": 24}, "PGA_Gain_Right": {"value": 24}, "ADC_Left_Input": {"value": 3}, "ADC_Right_Input": {"value": 3}, "Digital_0": {"value": 100}, "Digital_1": {"value": 94}, "Headphone": {"value": 94}}, "current_screen_index": 0}, "zynseq_riff_b64": "dmVycwAAABAAAAAIAFoABP//AAAADAAQYmFuawAAAqYBAAAAABAEAP8AMQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAAAQAAAAAEAP8AMgAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAAAgAAAAAEAP8AMwAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAAAwAAAAAEAP8ANAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAABAAAAAAEAf8ANQAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAABQAAAAAEAf8ANgAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAABgAAAAAEAf8ANwAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAABwAAAAAEAf8AOAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAACAAAAAAEAv8AOQAAAAAAAAAAAAAAAAAAAAAAAAECAAAAAAEAAAAAAAAACQAAAAAEAv8AMTAAAAAAAAAAAAAAAAAAAAAAAAECAAAAAAEAAAAAAAAACgAAAAAEAv8AMTEAAAAAAAAAAAAAAAAAAAAAAAECAAAAAAEAAAAAAAAACwAAAAAEAv8AMTIAAAAAAAAAAAAAAAAAAAAAAAECAAAAAAEAAAAAAAAADAAAAAAECf8AMTMAAAAAAAAAAAAAAAAAAAAAAAEJAAAAAAEAAAAAAAAADQAAAAAECf8AMTQAAAAAAAAAAAAAAAAAAAAAAAEJAAAAAAEAAAAAAAAADgAAAAAECf8AMTUAAAAAAAAAAAAAAAAAAAAAAAEJAAAAAAEAAAAAAAAADwAAAAAECf8AMTYAAAAAAAAAAAAAAAAAAAAAAAEJAAAAAAEAAAAAAAAAEAAAAAA="}
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_processor.get_bank_list: BANK LIST =>
Apr 02 09:27:41 zynthian startx[2474]: [('', None, '', None)]
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_processor.get_bank_list: BANK MSB INFO =>
Apr 02 09:27:41 zynthian startx[2474]: [[0, 1], [0, 0], [0, 0]]
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Bank Change CCNum: 0
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Bank Change UP: None
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Bank Change DOWN: None
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Program Change UP: None
Apr 02 09:27:41 zynthian startx[2474]: DEBUG:zynthian_gui_config.set_midi_config: MMC Program Change DOWN: None
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_state_manager.stop_rtpmidi: STOPPING RTP-MIDI
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_state_manager.stop_qmidinet: STOPPING QMidiNet
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_state_manager.stop_touchosc2midi: STOPPING touchosc2midi
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_state_manager.stop_bluetooth: STOPPING bluetooth
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynthian_state_manager.stop_aubionotes: STOPPING aubionotes
Apr 02 09:27:41 zynthian startx[2474]: INFO:zynseq.restore_riff_data: Restoring RIFF data...

And about the firmware update, it didn’t show any error, and I can enable ‘Session’ mode using the mdevtk library (which uses mido) in my PC, using the interface called Launchpad Mini MK3 LPMiniMK3 DAW.

Perhaps the firmware has crossed device ports. I mean:

  • Launchpad Mini MK3 IN 2 for session MIDI input
  • Launchpad Mini MK3 OUT 1 for session MIDI output

Zynthian assumes (quite reasonably) that you can get the corresponding output port by replacing “IN” by “OUT”. It have worked on all tested devices until now.

Regards,

Can I check this in any way?

Yes. Tweak it in this function:

zynthian_autoconnect.py → def dev_in_2_dev_out(zmip)

You should add a line to replace “1” by “2” / "2 by “1” and see if it works.

Regards

Ok, let me do it.

UPDATE: I’ve made that change, but it happens the same that when I change the dev_ids in the driver: it opens the MIDI interface, and the driver does not receive any MIDI event.

BUT, by error, I started Zynthian without the Launchpad connected, and when I connected it later, it worked flawlessly!! It just does not work when I start Zynthian with the device connected… which increases my curiosity/concern even more… :sweat_smile:

In the autoconnect, names are exactly the same (whether Zynthian starts with/without the Launchpad connected).

There is another difference. I’ve changed the dev_in_2_dev_out() function to print the number that returns:

	try:
		name = devices_in[zmip].aliases[0].replace("IN", "OUT")
		for i, port in enumerate(devices_out):
			if port.aliases[0] == name:
				print(f"RETURN: {i}, for {name}")
				return i
	except:
		return None

And, when it works (connecting after boot), it prints:

RETURN: 2, for USB:1.1.4/Launchpad Mini MK3 OUT 1

But, when it does not work (booting with the Launchpad connected), it prints:

RETURN: 0, for USB:1.1.4/Launchpad Mini MK3 OUT 1

May this be related to the problem? This i should always be the same?


UPDATE: I think this is not related. The index changes as the device is added later. These are the contents of devices_out in either case (index port [aliases]):

# when does not work
0 jack.MidiPort('system:midi_playback_1') ['USB:1.1.4/Launchpad Mini MK3 OUT 1', 'Launchpad Mini MK3 1']
1 jack.MidiPort('system:midi_playback_2') ['USB:1.1.4/Launchpad Mini MK3 OUT 2', 'Launchpad Mini MK3 2']
2 jack.MidiPort('ttymidi:MIDI_out') ['ttymidi:MIDI_out', 'DIN-5 MIDI']
3 jack.MidiPort('ZynMaster:midi_in') ['ZynMaster:midi_in', 'CV/Gate']

# when works
0 jack.MidiPort('ttymidi:MIDI_out') ['ttymidi:MIDI_out', 'DIN-5 MIDI']
1 jack.MidiPort('ZynMaster:midi_in') ['ZynMaster:midi_in', 'CV/Gate']
2 jack.MidiPort('system:midi_playback_4') ['USB:1.1.4/Launchpad Mini MK3 OUT 1', 'Launchpad Mini MK3 1']
3 jack.MidiPort('system:midi_playback_5') ['USB:1.1.4/Launchpad Mini MK3 OUT 2', 'Launchpad Mini MK3 2']

No. It shouldn’t be relevant. It’s just the index the underlying ALSA driver assign to each device. It can change from boot to boot or depending of the connected devices, etc.

Regards,

But it really curious that when connected after booting it gets lower indexes.
I will check this.

No, it gets bigger numbers! index = 0 when connect and then boot, index = 2 when boot, and then connect.

OK! I understanded the reverse.
Could you connect some other devices to see what happens?

Interesting… When I connect the APC Key25, and reboot, it works perfectly! These are the device definitions:

0 jack.MidiPort('system:midi_playback_1') ['USB:1.1.3/APC Key 25 mk2 OUT 1', 'APC Key 25 mk2 1']
1 jack.MidiPort('system:midi_playback_2') ['USB:1.1.3/APC Key 25 mk2 OUT 2', 'APC Key 25 mk2 2']
2 jack.MidiPort('system:midi_playback_3') ['USB:1.1.4/Launchpad Mini MK3 OUT 1', 'Launchpad Mini MK3 1']
3 jack.MidiPort('system:midi_playback_4') ['USB:1.1.4/Launchpad Mini MK3 OUT 2', 'Launchpad Mini MK3 2']
4 jack.MidiPort('ttymidi:MIDI_out') ['ttymidi:MIDI_out', 'DIN-5 MIDI']
5 jack.MidiPort('ZynMaster:midi_in') ['ZynMaster:midi_in', 'CV/Gate']

The index returned in this case is 2. If I disconnect, and connect again after boot, it still works. It has no sense at all! :joy:

Can you post the same listing but for when it isn’t working?

Yes, you have it here (it only has the Launchpad, as connecting the APC works always):


UPDATE: If I connect only the Launchpad, then boot, and the connect the APC, it has the following mapping (in this setting, the APC works, but the Launchpad NOT):

0 jack.MidiPort('system:midi_playback_6') ['USB:1.1.4/Launchpad Mini MK3 OUT 1', 'Launchpad Mini MK3 1']
1 jack.MidiPort('system:midi_playback_7') ['USB:1.1.4/Launchpad Mini MK3 OUT 2', 'Launchpad Mini MK3 2']
2 jack.MidiPort('ttymidi:MIDI_out') ['ttymidi:MIDI_out', 'DIN-5 MIDI']
3 jack.MidiPort('ZynMaster:midi_in') ['ZynMaster:midi_in', 'CV/Gate']
4 jack.MidiPort('system:midi_playback_4') ['USB:1.1.3/APC Key 25 mk2 OUT 1', 'APC Key 25 mk2 1']
5 jack.MidiPort('system:midi_playback_5') ['USB:1.1.3/APC Key 25 mk2 OUT 2', 'APC Key 25 mk2 2']