passthrough v2

Turns out this was nothing to do with Passthrough. It is the particular scripts I am using (mx.synths, and mx.samples) and how they prioritize MIDI input devices that is causing my woes and nothing to do with the recent implementation of Passthrough. My bad.

Feel free to delete these once you see to tidy up the thread. :slight_smile:

1 Like

I’m quite inspired by the new feature to modulate wifi with MIDI devices.

…or might be a bug in device table state handling.

Details
  • I have a MIDI device called LilyPad USB.
  • My wifi hotspot which wasn’t active at time of the photo is called How do names even work?
  • Sleeping norns cleaned everything up.

Hmm… that’s really bizarre! Passthrough device detection pools from the midi.devices table, so I’m not sure why a wifi hotspot would show up here…

Hey there! Just checking in for some setup help. I’m trying to pass midi CCs from 16n through norns through 2host into ableton. I’m using

2host is indicating that it’s definitely passing the CCs (blinkenlights blink when I move a fader), but I’m not able to use ableton’s midi map to apply them to anything.

My settings in passthrough are as follows:
Yes
All
No change
Device src.
no
no
c
major

lmk if there’s anything I can do to get this rolling!

Can you clarify the wiring setup?

is this correct?

16n --> norns
norns --> 2host --> computer with ableton

Which 2host do you have (teensy version or QTpy version?)

Can you check with MIDI Monitor (or whatever the Windows equivalent is) if the MIDI is being received on the computer side?

You may need to check the Ableton MIDI settings?

Running latest update on stock Norns and getting the same errors when 1) no MIDI device is attached and 2) the mod is enabled and 3) you press K3. Norns freezes and requires a restart:

lua: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/menu.lua:190: in field 'set_page'

/home/we/norns/lua/core/menu/mods.lua:24: in function 'core/menu/mods.key'

/home/we/norns/lua/core/menu.lua:143: in function </home/we/norns/lua/core/menu.lua:120>

When you turn an encoder, more errors:

Summary
lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua: /home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

lua: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

/home/we/dust/code/passthrough/lib/mod.lua:353: in field 'redraw'

/home/we/norns/lua/core/mods.lua:112: in field 'redraw'

/home/we/dust/code/passthrough/lib/mod.lua:331: in field 'penc'

/home/we/norns/lua/core/menu.lua:116: in function 'core/encoders.callback'

/home/we/norns/lua/core/encoders.lua:60: in function 'core/encoders.process'

lua:

/home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/passthrough/lib/mod.lua:353: attempt to index a nil value (field '?')

stack traceback:

[C]: in function 'error'

/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'

thanks for the report! i’ll look into this!

1 Like

Sure thing and thanks for making this mod possible :raised_hands:

Hey there, I have just merged a fix - could you update your version of Passthrough and let me know if its working for you?

2 Likes

Just updated Passthrough and no errors - thank you so much for getting that sorted :raised_hands:

1 Like

Would be super cool if this included pattern rec (unquantized midi looping) maybe like earthsea.
Not sure if norns could handle this in parallel to another app sequencer tho.

[SOLVED] User infront of Norns error. Forgot to activate Mod before restart :man_facepalming:
Hi @nattog , just tried to use passthrough on the latest norns version 220321.
It shows up under SYSTEM>MODS>
but I can not enter.
Restart did not help.
Reset did not help.
Powercycle norns shield did not help.

any ideas? Am I the only one running into this issue?
Thanks in advance and thanks for this really cool tool!

I’d love to add crow outputs to this mod, but it’s quite labyrinthine - can anyone point me at where that would go? THanks :slight_smile:

1 Like

The bulk of the logic for passthrough is in lib/core.lua

To start, you’d want to add crow related functionalities to pt.device_event in that file. Following this, you may want to consider how it will work with the UI and config for each port.

Happy to explain the codebase a bit further, I’m aware there is some optimisation to do…

1 Like

Hello there ! thank you very much for the script , I can now send midi data from a launchpad to a blofeld and trigger it! I have a question that is probably very simple to resolve but im not so sure: I know I can select which channel to send midi to in param but what If I want to send midi to multiple channels simultaneously from the launchpad, can I map each row to be sent to a different midi channel ? Thanks

Hey there… glad you’re able to use it well!

I haven’t used launchpads so forgive me if my very brief research into them has led me astray here. But would you be able to use a custom mode for your launchpad using this tool? https://components.novationmusic.com/

It appears possible to create and send a custom mode to your launchpad where buttons/rows have been setup to send to specific midi channels? This would be the easiest solution. I quickly put together a version where you have two keyboards sending over different MIDI channels.

Passthrough doesn’t handle this use-case independently, where you have MIDI data coming on on one channel and sending to various different channels. It would require some code changes + new UI to handle this.

2 Likes

hello there ! hey thank you very much!! I really appreciated it, im going to take a look right away and let u know how it goes!

v2.2.0 released

@Daniel_Gorgan has added a new feature: CC limiting

From the updated documentation:

CC limit sets the limit of midi CC messages to be sent for every channel per 25ms timeframe. if more messages than this limit are received, then the last messages (per channel) will be sent automatically on next timeframe. this is useful when a midi controller is generating too many messages too fast (eg. moving all the faders at once on a novation launchcontrol xl). the Pass all option allows all CC messages to passthrough, without any kind of limiting. the Pass none option doesn’t allow any midi CC messages to passthrough, effectively removing all of them

6 Likes

Thanks for the support @nattog . I also updated the documentation on passthrough | norns community

2 Likes

@nattog I noticed that @zbs asked above RE the addition of Crow as an output destination from a Midi Device.

Been searching and couldn’t find a mod that did this, and thought Passthrough was a great candidate, stumbling across it here.

I have VERY LITTLE technical ability to be able to do this, but was wondering if you’d consider adding it to the script/mod as I’d love to use a midi keyboard to play my Eurorack via Crow and free up Norns for some of the great effects scripts.

I know that Gridkeys support this, but would prefer to use a Midi Keyboad rather that Grid in this use case.

Thanks

Matt

2 Likes