Perfect Human Interface wrote:Hey Tulamide, I tried out the FPS thinger, and I'll just have to take your word that it's working correctly as I can't tell anything looking at a bunch of flashing colors like that.

It's cool that it seems to be possible though. I did also get 64 fps with the .exe, so that seems to suggest that the hardware on board isn't limiting it. Is vsync possible, by the way?
That's an interesting lissajou display too. I don't think it's actually an improvement as you think, as the green version also gets every sample with the Graph prim, as long as the number of samples per "snapshot" is equal or greater than the sample rate divided by the trigger rate. And in fact, I think your display isn't drawing enough samples, as it looks very flickery with the "oscilloscope art" audio. It does the same with the Graph prim if you set the number of samples too low.
I also notice that it seems to "overdraw" some lines a good bit (for example, when the cube is drawn towards the beginning). The same thing happens with the PALines prim, for reasons I don't understand, when the pen size is set higher than 0.1. So I tried setting the pen size in yours to 0.1 and it did correct the issue. It would be nice to be able to draw it a bit thicker but I don't know why it does that.
But, since it's in Ruby like you say there should be more flexibility and possibilities.
By the way, it looks a lot better to me with curved drawing in some cases.
Thanks once more for your input, PHI

Yes, the color flashing was just to visually signalize that redrawing is going on. The only important part is the displayed FPS. I probably should have given an epilepsy warning though
Synchronizing is not possible (unless using OpenGL), that's why you see that ugly banding from the color flashes.
Please keep in mind, that the lissajou display was just a (very) quick proof of concept. It wasn't optimized at all. But some of the things you mention are not as you describe them. So let me clear things up, where possible.
1)The display is drawing exactly what is coming from the monos. No more, no less. Maybe I should have been more precise in describing it. The advantage of frames over green is that the former is sync'd to audio.
When audio is given to the audio card/chip, it is done so in blocks of data, called audio frames. A frame contains all channels an audio card/chip can handle, and the length of a frame depends on the used driver and the system's speed. When using ASIO or ASIO4ALL, a user also has the option to define a frame size via ASIO control panel.
Whatever of the above, FS provides a way to slice the mono streams in portions of exactly that frame size (since the technique behind this is a double buffer system, the last but 1 frame is used, which introduces a delay of the frame length, but let's keep that aside). What you get is exactly what is about to be played by the audio card/chip. No matter how fast or slow your computer, or how fast or slow you draw. A frame is sent just before needed by the audio system.
The green tick25 and tick100 however have nothing to do with the audio stream. They are very inaccurate windows timer measures. You can even provoke a total halt of the ticker prims, not sending a trigger at all. So, they are unreliable, imprecise and not audio related. To compensate for that, you buffer a larger amount of data than would be needed (just as you described), forcing the drawing prims to draw data that was already drawn. If you want to learn more about mono to frame, have a look at the manual's Ruby chapter (not the reference)
2) Flickering is going on, because of that's the trick used in such complex lissajou shapes. For example, quite at the beginning you see two triangle-like lines that then form a cross. So you are seeing two lines, right? No, it's acutally one line that's changing position faster than your eye can see. If you are able to break the connection to an oscilloscope that is not yours (maybe the FL Studio one?), you should be able to see it. All you need is a freeze frame, while the cross is displayed. On your display you probably won't see it, because you've dampened the flickering by drawing everything up to twice. So, flickering means a more precise display.
3) Thank you for pointing out the overdrawing. What you experienced is the result of the mitres. Lines and curves are drawn from point to point, and where they met at a point they are connected through mitres. The default settings for those give ugly results (that "overdrawing" you saw). While in green you can't change them (or I wouldn't know), in Ruby you luckily can. It will be in the next version of the display (this was just a quick poc, see above

) FYI, the limit for green to avoid the mitre effect is not 0.1, but 0.125. That's because the default grid setting is 8, which means 1 grid unit represents 8 pixels. 1 pixel therefore is 0.125. Everything below 0.125 is still drawn as 1 pixel.
I also think it looks better curved, that's why I used it in the demo. But it is less precise, so may not show what the original author intended you to see. Maybe I'll make it an option, so everyone can choose whatever is preferred.
Also, because of your post I was closer looking at the current version I'm working on, and found that I was drawing the frame data 3 times. And I already wondered about the high cpu usage. Now it's back to normal, so thank you
