passthrough
project name: passthrough
project url: https://github.com/nattog/passthrough
author: nattog
description: midi passthrough library with examples
discussion url: https://llllllll.co/t/passthrough/31156
documentation url: https://norns.community/authors/nattog/passthrough
tags: utility mod midi

passthrough

passthrough offers midi routing between connected ports on norns. it is similar to midi thru on hardware devices although it comes with some extra functionality.

animated image of passthrough mod interface

introduction

passthrough extends norns to act as a midi routing hub. each incoming data to a port can be assigned to either a specific port for output, or all ports. it allows the user to send midi while simultaneously running a norns script.

passthrough is built as a mod and also as a library that can be added to individual scripts. they are functionally the same, but the mod version runs at all times, during scripts or when no script is loaded. If the mod is installed and turned on in the mods menu, passthrough will be running.

use cases

requirements

norns + midi devices

if your midi hardware does not offer midi via usb, a midi interface such as an iConnectivity mio helps to connect with 5-pin midi ports.

installation

passthrough is available from the maiden catalogue or by running the following command in the maiden repl ;install https://github.com/nattog/passthrough

getting started

passthrough assigns some midi routing settings for each connected midi device in the norns system menu found at SYSTEM > DEVICES > MIDI :

additionally, Midi panic is a toggle to stop all active notes if some notes are hanging.

there are two example scripts, showing how to interact with passthrough either as a mod or a library. they detail how to include it in scripts so that users can define callbacks on incoming midi data.

mod

navigate to the mod menu at SYSTEM > MODS, scroll to PASSTHROUGH and turn encoder 3 until a + symbol appears. restart norns and passthrough is running. when norns is shutdown, the current state of passthrough is saved. When norns is next powered on, this state will be recalled.

navigate back to the mod menu and this time there will be a > symbol to the right of PASSTHROUGH. press key 3 and the screen should display the passthrough mod menu

mod menu controls

library

passthrough can be used with the example scripts or by attaching it to external scripts, by adding the following code at the head of the script file:

if util.file_exists(_path.code.."passthrough") then
  local passthrough = include 'passthrough/lib/passthrough'
  passthrough.init()
end

the installation has been successful if PASSTHROUGH appears in the script’s params menu.

user event handling

scripts can listen for midi events handled in passthrough and define their callbacks.

  -- script-level callbacks for midi event
  -- id is the midi device id, data is your midi data
  function user_midi_event(id, data)
      local msg = midi.to_msg(data)
      -- to find the port number, there is a helper function provided
      -- port = passthrough.get_port_from_id(id)
  end

  passthrough.user_event = user_midi_event

issues

raise any issues experienced with passthrough either in the v2 thread on lines or by logging a new issue on the github repo.

contributing

wishing to contribute a new feature or change? github pull requests are welcome.

version history

for older versions, check the releases in the repo. releases older than v2.3.0 are legacy, and no longer supported for development