Just wanted to say I just spent an hour noodling with this. I really like it!
I’m skimming the sourcecode of Nisp, and wondering how meaningful would it be to extend it to have MIDI output? It would surely be fun tracker experience with notes, but I am not sure where would the parameters like
m-sus etc. go. To an arbitrary array of MIDI cc, in which case the semantics would be super confusing, to some MIDI standard cc values based on a judgement call what’s what. Or nowhere and just focus on triggering notes? Also I am not sure when to release a note
I guess I would start from NISP/tracker.lua at 463acbb1ab6a9f7cfddb0cc0f1e0b455a497335f · itsyourbedtime/NISP · GitHub to push some
note_ons to a MIDI device, and build some norns parameters to select MIDI device and map to Nisp tracks to MIDI channels.
PS. messing with Nisp as it is is loads of fun!
What I would personally do is at the beginning just add separate inbuilt fns to output midi and then based on that users could easily develop their own.
So for me basic functionality would be:
- note on
- note off
- midi cc
About releasing note I would personally allow users to both send note offs explicitly and alternatively allow optional duration argument to note on which could then reuse inbuilt Norns clock (or NISP one - don’t know if NISP uses something custom) to send note off
n steps later.
hmm getting a load fail error when i try to run nisp. i’m in the latest update for both norns and the script
You might want to look at this post and the thread it’s in (if you’ve not already seen it) as there were some issues with the latest update that have got a hotfix available in the short term:
thanks, just tried that and restarted. still getting the error unfortunately
### SCRIPT ERROR: load fail /home/we/dust/code/nisp/lib/utils.lua:28: <eof> expected near 'end' stack traceback: /home/we/norns/lua/core/norns.lua:147: in function </home/we/norns/lua/core/norns.lua:147> [C]: in function 'dofile' /home/we/norns/lua/core/startup.lua:42: in function 'include' /home/we/dust/code/nisp/lib/_stdlib.lua:7: in main chunk [C]: in function 'dofile' /home/we/norns/lua/core/startup.lua:42: in function 'include' /home/we/dust/code/nisp/lib/lisp.lua:7: in main chunk [C]: in function 'dofile' /home/we/norns/lua/core/startup.lua:42: in function 'include' /home/we/dust/code/nisp/NISP.lua:11: in main chunk [C]: in function 'dofile' /home/we/norns/lua/core/script.lua:192: in function </home/we/norns/lua/core/script.lua:192> [C]: in function 'xpcall' /home/we/norns/lua/core/norns.lua:148: in field 'try' /home/we/norns/lua/core/script.lua:192: in function 'core/script.load' /home/we/norns/lua/core/menu/preview.lua:23: in function 'core/menu/preview.key' /home/we/norns/lua/core/menu.lua:143: in function </home/we/norns/lua/core/menu.lua:120> # script clear lua: /home/we/norns/lua/core/clock.lua:59: bad argument #1 to 'resume' (thread expected) stack traceback: [C]: in function 'coroutine.resume' /home/we/norns/lua/core/clock.lua:59: in function 'core/clock.resume'
indeed those 2 functions in
nisp/lib/utils.lua seem to be missing the
function keyword in their definitions.