Unknown parent

mastodon - Link to source

aeva

tragic. pygame.display.flip seems to always imply a vsync stall if you aren't using it to create an opengl context, and so solving the input events merging problem is going to be a pain in the ass. it is, however, an ass pain for another night: it is now time to "donkey kong"

EDIT: pygame.display.flip does not imply vsync! I just messed up my throttling logic 😁 huzzah!

This entry was edited (1 month ago)
Unknown parent

mastodon - Link to source

aeva

C++ RAII semantics are so universally applicable to all programs (sarcasm) that even the C++ standard library provides alternatives to scope guard objects if you don't want to use them. come on man
Unknown parent

mastodon - Link to source

aeva

and by "going ape shit" i just mean gently flutter tapping two fingers rapidly to generate touch events faster than i could with just one finger, such as to trill between two notes or repeatedly play one very quickly. doing that on one mouse button to generate one note repeatedly very fast feels a lot more aggressive
This entry was edited (1 month ago)
Unknown parent

mastodon - Link to source

aeva

it's possible that I'm doing something wrong with the handling of touch events and it's something i can fix still, but now i'm wondering if there's a faster way to confirm if "going ape shit" playing virtual instruments is a normal intended use case for touch screen monitors by their manufacturers and the people who wrote the linux infrastructure for them, or if they all were going for more of a "tapping apps" vibe
Unknown parent

mastodon - Link to source

aeva

ok I can go ape shit with a mouse and it works perfectly and like I mean double kick ape shit, but the dropped events problem still persists with the touch screen ;_;
This entry was edited (1 month ago)
Unknown parent

mastodon - Link to source

aeva

ideally the ordering of those events would be represented in the patch evals but they just happen as they happen. It's plenty responsive with a mouse though. I'll have to try out the touch screen later and see if the problem is basically solved now or not.
in reply to aeva

You are deeper beyond where I code, so forgive me if this is dumb. I believe mobile touch screens have multi finger tracking. So: If touch 1 and touch 2 are too fast or similar finger recognition, the touch event array could be stuck at length 1 and simply move the existing event to position 2, like a drag/teleport instead of reading a second touch. Might be that you are tapping faster then the touch device can track, or that both fingers are being read as the same one? Just thoughts.
Unknown parent

mastodon - Link to source

Andrew Geng

with a lot of objects in memory, occasional hitches sounds suspiciously like gc generation 2. If you haven't already...

import gc
gc.set_debug(gc.DEBUG_STATS)

Usually I escalate to gc.callbacks, then discover the cycles are created by a (networking-related, in my cases) library.

I once got it so I could've turned off gc but the pace of allocations was then low enough that we chose to tolerate hitches in case of future cycles.

gc.freeze() seemed a possible next step but I didn't try.

Unknown parent

mastodon - Link to source

poetaster

hmmn. I run realtime kernels and was pleasantly surprised that more recent (6 voice) supercollider patches ran without droping frames with a queneo midi controller. On a raspi 3+ at 1gHz. I CAN crush the box by holding 16 pads at the same time, though 😀 That's with jackd running at rt priority -P98 at 44.1 kHz. On a 2.8 gHz dual core, it's rock solid . If you're running recent hatdware, it can be made as stable as apple's core audio.
Unknown parent

mastodon - Link to source

Leonard Ritter

the "proper" way of doing this would be to maintain a ringbuffer that's big enough to fetch as much history as you wish to support, then get the desired range from the rb, collect min/max amplitude for all samples per vertical line and render the bounds (effectively a very simple candle graph).

but i have done this before and it's not fun to write.

This entry was edited (1 month ago)
Unknown parent

mastodon - Link to source

Andrew Zonenberg

I've started having ngscopeclient filters output a quiet NaN when they have a scalar output and are requested to do something that doesn't make sense (missing inputs, contradictory configuration, divide by zero, etc).

(For waveform outputs we already had the ability to simply not output anything, but there's no concept of a null scalar in our object model)

Unknown parent

mastodon - Link to source

DDR

Back when I was working on the Frogatto game, we made it so that if you accidentally divided anything by zero you got 20,000. Turns out your can just define stuff and nobody can stop you. :3
Unknown parent

mastodon - Link to source

gkrnours

I think it's the second time you mentioned saving and last time you mentioned native file browse control but if you force all patch to be in a single directory (let's say %appdata%/your_app or ~/.config/your_app), you could simply have a button called save and another called load which clear the area and display a button per saved patch
Unknown parent

mastodon - Link to source

poetaster

when I started making a touch ui for github.com/poetaster/synth github.com/hsaturn/synth, which permits rapid writing of generators & such, I quickly realized, no connectors. I started with 2d shapes and fitting, but got stuck as I started on 3d. In short, I don't want wires like in PD/max or axoloti, because it's impossible to be precise with my fingers on small touch screens. But fitting shapes, worked. Need to start on this again.
in reply to Evie 🏳️‍⚧️

@pupxel the touch pad into my laptop has two way clicks can be generated, one which is as a gesture, and the other by physically clicking a button. physically clicking the button is working fine. the gesture clicks have the same problem as the multi touch screen which is a different device that does not go through the mouse subsystem and whose mouse events are ignored by my program