dragonlord_ | hi ! i need help with kde plasma system settings, it keeps crashing, any help plz ? | 00:46 |
---|---|---|
dragonlord_ | anyone ? | 00:48 |
dragonlord_ | plz help, :((( | 00:51 |
kryten | dragonlord_: Just curious.. since you are crossposting.. are you actually using Kubuntu or Ubuntu Studio? | 00:57 |
dragonlord_ | ubuntu-studio | 01:02 |
dragonlord_ | 20.10, i reinstalled but same :( | 01:03 |
dragonlord_ | need help, only system settings crashes when changing tabs, | 01:04 |
dragonlord_ | i can't sleep till it works :((( | 01:06 |
dragonlord_ | :( | 01:16 |
dragonlord_ | hi ! my system settings keeps crashing, got 20.10.. any help plz ? | 14:05 |
sirriffsalot | dragonlord_: need more details mate | 14:27 |
sirriffsalot | dragonlord_: ah, I seem to remember you asking about changing tabs and then finding that your system crashes? If that's the case, try installing a different desktop environment and use that, see if the same problem occurs | 14:28 |
dragonlord_ | really, i like plasma :( | 14:37 |
dragonlord_ | no other solution ? | 14:37 |
OvenWerks | Maybe ask in #kubuntu | 14:38 |
dragonlord_ | no answer | 14:38 |
dragonlord_ | gonna try | 14:38 |
sirriffsalot | dragonlord_: before you could hope to solve it you at least need to figure out what the problem is | 14:41 |
sirriffsalot | dragonlord_: if my suggestion solves it, then you know to ask in #kde, because it's most likely a bug in your DE (desktop environment) | 14:41 |
sirriffsalot | Sigh | 14:42 |
sirriffsalot | Dragonlord still has some remaining beasts to slay | 14:42 |
BrianHechinger[m | where do jack_midi_event_t and jack_midi_event_get() live? The docs aren't completely clear and I can't built this thing I'm writing. :( | 15:04 |
OvenWerks | BrianHechinger[m: you are asking this here? not #LAD? | 15:05 |
OvenWerks | sorry #lad | 15:05 |
BrianHechinger[m | A) I didn't know about #lad | 15:06 |
BrianHechinger[m | B) You're all like smart and stuff so I thought you might know. :-P | 15:06 |
OvenWerks | Are you writing in c or c++ | 15:07 |
OvenWerks | in c++ generally client.midi_event_get() for example | 15:09 |
OvenWerks | leave the client param out | 15:09 |
BrianHechinger[m | I was just doing plain C | 15:09 |
BrianHechinger[m | started with the simple_client.c | 15:10 |
BrianHechinger[m | which builds and runs | 15:10 |
BrianHechinger[m | but I don't want to touch audio, I want to capture midi events | 15:10 |
OvenWerks | You can look at https://github.com/ovenwerks/studio-controls | 15:11 |
BrianHechinger[m | go-jack has a bug that makes it useless. I was kinda looking at python which I didn't want to do but it's just a wrapper around the c libraries (as everything seems to be) | 15:11 |
OvenWerks | sorry wrong link. | 15:11 |
BrianHechinger[m | so I just went for C | 15:11 |
OvenWerks | https://github.com/ovenwerks/midikb | 15:11 |
OvenWerks | https://github.com/ovenwerks/midikb/blob/master/jack.c has the jack stuff | 15:12 |
BrianHechinger[m | yeah, like the docs totally fail to mention midiport.h which I'm assuming is super important here. :-D | 15:12 |
OvenWerks | yeah... | 15:13 |
BrianHechinger[m | oh, and look at that, they all light up in the IDE all happy now | 15:13 |
OvenWerks | BrianHechinger[m: in general the jack api is easier to use than ALSA | 15:15 |
BrianHechinger[m | it seems simple enough, they just leave out some very important details in the docs | 15:15 |
OvenWerks | some of us are not very good at writing docs :) | 15:16 |
BrianHechinger[m | I'm one of us | 15:16 |
BrianHechinger[m | :-D | 15:16 |
BrianHechinger[m | but that seems like a pretty egregious oversight. | 15:17 |
OvenWerks | The examples are supposed to help :) | 15:19 |
OvenWerks | Thats where I started | 15:19 |
OvenWerks | midikbd was my first jack program (forked from actkbd) | 15:22 |
BrianHechinger[m | So i'm capturing the midi event: `printf("buf: %s\n", midi_event.buffer);` | 16:23 |
BrianHechinger[m | But I get `SuspendRefNum error` as my string. | 16:23 |
OvenWerks | why would you expect a string? I guess midi is char. | 16:25 |
BrianHechinger[m | buffer is an unsigned char pointer, so %s is appropriate | 16:29 |
OvenWerks | yes but may not be readable. | 16:29 |
BrianHechinger[m | but it's literally this string: `SuspendRefNum error` | 16:30 |
OvenWerks | Which seems wrong you should have a 3 byte string | 16:31 |
OvenWerks | (maybe two for a PC) | 16:31 |
OvenWerks | Maybe not initialized? | 16:32 |
BrianHechinger[m | ok, but what is `SuspendRefNum error` and where is it coming from? | 16:33 |
OvenWerks | I don't know | 16:34 |
OvenWerks | I just know I have to open a client, set the process call back (where I read MIDI), create a port in the right direction and then activate the client | 16:35 |
BrianHechinger[m | I've done all that, now I'm trying to process the events | 16:35 |
BrianHechinger[m | oh wait | 16:36 |
BrianHechinger[m | I've forgotten to call jack_midi_event_get | 16:36 |
BrianHechinger[m | THAT'S better. :) | 16:38 |
BrianHechinger[m | ok, now how do I match those to what I see in Ardour's MIDI Tracer? | 16:38 |
OvenWerks | Before actually using this, remove all printf statements as they are not rt safe | 16:38 |
BrianHechinger[m | ok, good to know | 16:39 |
OvenWerks | if you want to print out midi values, stuuf the events (raw) into a jack ring buffer and read out opf that buffer in another thread (like your main thread) | 16:40 |
OvenWerks | other wise you risk xruns | 16:40 |
BrianHechinger[m | what if I want to trigger other actions? same thing? | 16:41 |
OvenWerks | as long as your ring buffer is big enough to keep up with traffic it will not cause xruns | 16:41 |
OvenWerks | it depends on how much code goes into that | 16:41 |
BrianHechinger[m | it's not going to be a ton | 16:42 |
BrianHechinger[m | just find a process and send it a signal | 16:42 |
OvenWerks | if you are taking midi in and coverting it and directly putting MIDI out from that it is ok. | 16:42 |
OvenWerks | signals I don't know if they are blocking or not. anything blocking is not RT safe | 16:42 |
BrianHechinger[m | they shouldn't be but I'd have to check to be sure | 16:44 |
OvenWerks | The guys in #lad probably know better off the top of their head | 16:44 |
OvenWerks | This is a _very_ quite channel | 16:44 |
OvenWerks | Anyway, my policy for my own work, is to as little as possible in any jack call back. Drop values into a ring buffer or pick up processed from a ring buffer. Then I don't have to worry about any calls I make being non-rt | 16:53 |
OvenWerks | Also note that most jack call backs can not make a jack call from within the call back. Set a flag or ring buffer and do it from another thread. | 16:55 |
BrianHechinger[m | ok, all good things to know. Thanks! | 16:56 |
BrianHechinger[m | Thanks for the #lad tip, got it all sorted! | 17:32 |
* BrianHechinger[m < https://matrix.org/_matrix/media/r0/download/matrix.org/MgPJvNRUmJxjcJnZHJapCTEN/message.txt > | 17:33 | |
BrianHechinger[m | those are the stop and play transport buttons on the nanokontrol. :) | 17:33 |
BrianHechinger[m | now to draw the rest of the owl | 17:33 |
BrianHechinger[m | IT WORKS MUAHAHAHAHAHAHA | 18:02 |
OvenWerks | :) | 18:02 |
BrianHechinger[m | I can now pause and unpause Valheim with the stop and play transport buttons. (valheim doesn't actually pause so I SIGSTOP/SIGCONT it) | 18:03 |
OvenWerks | Life is a hack ... | 18:04 |
BrianHechinger[m | and we're all hackers | 18:15 |
BrianHechinger[m | @ove | 18:29 |
BrianHechinger[m | klajsdhflkasjdf | 18:29 |
BrianHechinger[m | OvenWerks: ok, I'm not fast enough, I'll need to do the buffer/ring thing | 18:29 |
BrianHechinger[m | every press of the button causes an xrun | 18:30 |
OvenWerks | :) | 18:30 |
BrianHechinger[m | although to be fair I don't really care, but I'll probably fix it for the learning aspect. | 18:30 |
OvenWerks | both midikbd and mcpdisp use ring buffers, but midikbd is in c while mcpdisp is in c++ | 18:31 |
OvenWerks | jack ring buffers do not require a jack client and can be set up before creating a client/port/etc. | 18:32 |
OvenWerks | I try to set up a buffer about 3 or 4 times what I think. They need to be an even hex value (0x10, 0x100, etc. | 18:34 |
OvenWerks | for midi there are a few ways of doing things. I think I pull three bytes per event (just add an extra for 0x0 for PC events), so check ring buffer size is > than 3, pull event, cycle. I do some preliminary filtering in the jack call back to eliminate events I am not interested in like running status | 18:39 |
OvenWerks | Another way is to put event length as 1 byte, followed by that number of bytes. At the other end check length is more than 0, pull one byte, check length > length, pull those bytes. This will take care of all kinds of events. You do have to have a way of saving length if the evnt has not made it into the buffer (actually this should never happen I think) | 18:46 |
OvenWerks | But if all you need is 3 byte events... it's easy. I guess you could pull one byte at a time and do all parsing after the ring buffer. | 18:47 |
BrianHechinger[m | Yeah, I filter out the events I want (only two) | 22:26 |
BrianHechinger[m | and from there i don't even need to send an event, it can be an arbitrary payload. | 22:26 |
BrianHechinger[m | I just need to signal one of two things. I could do it with a single bit. :-D | 22:27 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!