n.Kria 0.23: native norns Kria

great work on this. i love kria a ton and the plaits voices make this so much fun to use.

i’m running into an issue where the probability page on the grid doesn’t register button presses and I can’t modify probabilities.

2 Likes

I am also encountering the same difficulties with Fates.

hi

my norns shows the error: SUPERCOLLIDER FAIL after installation emplaitress.
Several restarts of norns didn’t fix the problem. Any ideas or something I miss?

1 Like

Can you ssh to norns and run sclang and paste the output?

@mattallison , @jaseknighter , @anxietymachine - good morning! thanks for the bug reports. I’m looking into them now :slight_smile:

3 Likes

I see. try popping this in your code directory and running it and see if that fixes? https://llllllll.co/uploads/short-url/sOg0xIZ7cEJ5btkYOjhlF4mpUgS.lua

e: haha, somehow my message ended up above yours but @koerby

@zbs

sclang
compiling class library...
        Found 738 primitives.
        Compiling directory '/usr/local/share/SuperCollider/SCClassLibrary'
        Compiling directory '/usr/local/share/SuperCollider/Extensions'
        Compiling directory '/home/we/.local/share/SuperCollider/Extensions'
        Compiling directory '/home/we/norns/sc/core'
        Compiling directory '/home/we/norns/sc/engines'
        Compiling directory '/home/we/dust'
        numentries = 1164279 / 13821094 = 0.084
        4427 method selectors, 3122 classes
        method table size 8717120 bytes, big table size 55284376
        Number of Symbols 13230
        Byte Code Size 409795
        compiled 530 files in 0.99 seconds

Info: 4 methods are currently overwritten by extensions. To see which, execute:
MethodOverride.printAll

compile done
localhost : setting clientID to 0.
internal : setting clientID to 0.
Class tree inited in 0.94 seconds
WARNING: keyword arg 'server' not found in call to Meta_AbstractGroup:new
WARNING: keyword arg 'server' not found in call to Meta_AbstractGroup:new
WARNING: keyword arg 'server' not found in call to Meta_AbstractGroup:new
WARNING: keyword arg 'server' not found in call to Meta_AbstractGroup:new
WARNING: keyword arg 'server' not found in call to Meta_AbstractGroup:new
WARNING: keyword arg 'server' not found in call to Meta_AbstractGroup:new
ALL HAIL THE EMPLAITRESS
Execution warning: Class 'MiPlaits' not found
WARNING: keyword arg 'pitch' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'engine' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'harm' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'timbre' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'morph' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'trigger' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'fm_mod' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'timb_mod' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'morph_mod' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'decay' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'lpg_colour' not found in call to Object:doesNotUnderstand
WARNING: keyword arg 'mul' not found in call to Object:doesNotUnderstand
ERROR: Message 'ar' not understood.
RECEIVER:
   nil
ARGS:

PROTECTED CALL STACK:
        Meta_MethodError:new    0x7a3da0
                arg this = DoesNotUnderstandError
                arg what = nil
                arg receiver = nil
        Meta_DoesNotUnderstandError:new 0x7a51a0
                arg this = DoesNotUnderstandError
                arg receiver = nil
                arg selector = ar
                arg args = [  ]
        Object:doesNotUnderstand        0x75d6a0
                arg this = nil
                arg selector = ar
                arg args = nil
        a FunctionDef   0x113e520
                sourceCode = "{
                |out, pitch=60.0, engine=0, harm=0.1, timbre=0.5, morph=0.5, fm_                                                             mod=0.0, timb_mod=0.0,
                        morph_mod=0.0, decay=0.5, lpg_color=0.5, mul=1.0, aux_mi                                                             x=0.0, gain=1.0, pan=0.0|
                    var sound = MiPlaits.ar(
                            pitch: pitch,
                            engine: engine,
                            harm: harm,
                            timbre: timbre,
                            morph: morph,
                            trigger: Impulse.kr(0),
                            fm_mod: fm_mod,
                            ...etc..."
                arg out = an OutputProxy
                arg pitch = an OutputProxy
                arg engine = an OutputProxy
                arg harm = an OutputProxy
                arg timbre = an OutputProxy
                arg morph = an OutputProxy
                arg fm_mod = an OutputProxy
                arg timb_mod = an OutputProxy
                arg morph_mod = an OutputProxy
                arg decay = an OutputProxy
                arg lpg_color = an OutputProxy
                arg mul = an OutputProxy
                arg aux_mix = an OutputProxy
                arg gain = an OutputProxy
                arg pan = an OutputProxy
                var sound = nil
        SynthDef:buildUgenGraph 0x11baba0
                arg this = a SynthDef
                arg func = a Function
                arg rates = nil
                arg prependArgs = [  ]
                var result = nil
                var saveControlNames = nil
        a FunctionDef   0x11b9c60
                sourceCode = "<an open Function>"
        Function:prTry  0x82a1e0
                arg this = a Function
                var result = nil
                var thread = a Thread
                var next = nil
                var wasInProtectedFunc = false

CALL STACK:
        DoesNotUnderstandError:reportError
                arg this = <instance of DoesNotUnderstandError>
        Nil:handleError
                arg this = nil
                arg error = <instance of DoesNotUnderstandError>
        Thread:handleError
                arg this = <instance of Thread>
                arg error = <instance of DoesNotUnderstandError>
        Object:throw
                arg this = <instance of DoesNotUnderstandError>
        Function:protect
                arg this = <instance of Function>
                arg handler = <instance of Function>
                var result = <instance of DoesNotUnderstandError>
        SynthDef:build
                arg this = <instance of SynthDef>
                arg ugenGraphFunc = <instance of Function>
                arg rates = nil
                arg prependArgs = nil
        < FunctionDef in Method Meta_Emplaitress:initClass >  (no arguments or v                                                             ariables)
        Function:doOnStartUp
                arg this = <instance of Function>
        ArrayedCollection:do
                arg this = [*8]
                arg function = <instance of Function>
                var i = 2
        List:do
                arg this = <instance of List>
                arg function = <instance of Function>
        Meta_StartUp:run
                arg this = <instance of Meta_StartUp>
        Main:startup
                arg this = <instance of Main>
                var didWarnOverwrite = false
^^ ERROR: Message 'ar' not understood.
RECEIVER: nil
`type or paste code here`

I’m also interested if you can dm me an uploaded link to using the file made from using theLOGS option in the system menu. Emplaitress is supposed to install the mi ugens, and it looks like it’s not doing that successfully.

1 Like

0.15 should getcha. Let me know if it doesn’t :slight_smile:

1 Like

Hey! @mattallison and @jaseknighter I think I just fixed midi on the main branch, feel free to update and try it all out! There was an initialization order error that could be hidden if you’d installed one of nbout or tg, so @zbs and I didn’t see it in testing.

2 Likes

thanks, that does the trick (but not on the first run.)
Only after complete removing emplaitress first, then installing mi-ugens and after, installing emplaitress again

2 Likes

Mysterious. we couldn’t reproduce that problem this morning. for now I will assume this was a one-off, if anyone else runs into this let us know.

This is amazing. Can’t wait to try this out!

1 Like

i have it working now. thank you Naomi!

edit:
i also have installed emplaitress and am tickled and amazed.

with emplait running, it seems each track will only send output to either emplaitress or midi. it occurred to me that a fancy new feature would be to allow tracks to allow multiple outputs (e.g., emplaitress + midi).

3 Likes

Wait whaaat? What’s the use case?

the use case is i want to have a script play the same notes using both emplaitress and an external synth controled via midi.

Word. I guess that makes sense!

I can write you a quick mod that adds a splitter nb voice if you like, probably tomorrow or the next day. It’ll show up as one voice, where you edit its params and select some number of other voices to proxy to.

1 Like

please take your time.

a couple of few other things just occurred to me:

  • re emplaitress…in the voice controls menu ‘emplait voice x’ only appears if the the voice is allocated to a track. it would would be swell if the voice menus were always available so they can be updated prior to track allocation.
  • also, on the grid when you are updating notes it would be nice to see some indication whether each step has been activated from the trigger page (e.g. the row of lights could be brighter for triggered notes).
  • also also, how about a pattern recorder that would allow going back in time for each grid page or even recording and playing back a session? perhaps this would take a bit longer to implement than the first two ideas… :stuck_out_tongue:
5 Likes

thanks for the recommendations, that all makes sense to me!

do you know about note sync mode? shift + k3 and then poke the left glyph, that will let you edit trig’s from notepage. but I agree it would be nice to have a subtler version of that for one that glyph is turned off.

1 Like

I’m on Fates and finally have Emplait working which is truly lovely with n.Kria. thank you/

But for the life of me I can’t get Midi output to work. My midi device shows up in Track Output section and Voice Controls but it’s not triggering anything, only hanging notes? I’ve tried to assign the midi instrument to voices 1-4 in the tg section as well to no avail.

1 Like

Looking into it now. I’ll update and tag you when I find out what’s going on :slight_smile:

@Catchthehare the update will come in several hours, but in the mean time if you want to do the fix manually:

/home/we/dust/code/n.kria/lib/nb/lib/nb.lua, line 50 currently reads self.conn:note_off(note, self:ch())

it should say self.conn:note_off(note, 0, self:ch())

:smiley:

e: update is now live

3 Likes