porres / pd-cyclone

A set of Pure Data objects cloned from Max/MSP
BSD 3-Clause "New" or "Revised" License
206 stars 25 forks source link

Added number~ object #589

Closed timothyschoen closed 2 years ago

timothyschoen commented 2 years ago

I'll still do some more testing tonight, but so far it seems to be working.

timothyschoen commented 2 years ago

I see that in Max, the second outlet doesn't respond to float input, only to signal input. Weird imo, but for cyclone I'll have to fix that.

timothyschoen commented 2 years ago

also, it still needs to be added to the makefile. I'll send you a PR later tonight with the final version

porres commented 2 years ago

I already merged it and added to the makefile

porres commented 2 years ago

let me work a bit on it before you make changes :)

timothyschoen commented 2 years ago

Alright, I already made the fix for the second outlet behaviour, but np I can wait ;)

porres commented 2 years ago

send the fix then, just make it compatible to what I have now in your repository

timothyschoen commented 2 years ago

It's okay, I tried it some more and found out that my fix missed a few things, so I can just add it later.

porres commented 2 years ago

well, actually, I have many thoughts here now, because for now it just adapts from iemgui/nbx and the idea would be to mimick the looks of Max. So it should be rectangular at least.

Many things in here are not necessary, like setting a label, position, delta or init.

I think it's cool to keep "send/receive" though, note it needs to hide both in/outlets (you have a bug where it only hides the 2nd one).

The original nbx object is terrible in a few ways. What's ridiculous about it is that you can set both font size and height, which is damn stupid. BTW, your version doesn't change the width when you change the font size, and it should. Setting width seems corrupted. And, well, setting number of digits is fine of course.

We'd also need to draw an arrow down for output mode... and the tilde you have needs to change size according to the font size.

We need to have arguments like in MAX with attributes, at least what we already have in the number~ abstraction.

WOW, on 2nd thought, this looks a bit too complicated. Let me know... maybe you just work on the plain 'number' one for now and what out for similar issues.

I could probably go ahead and work on my simpler [nbx~] object for ELSE with what we have here, let me know if you really want us to nail this first.

porres commented 2 years ago

my last commit just removes set-helpname so it can use the correct help file, I'm not willing to do more right now, so work on fixes.

Also, cyclone/number~ should be able to resize by clicking and dragging on the object, like scope~ and comment

porres commented 2 years ago

The original iemgui objects should also be resized like that, maybe we could help with that too? :)

porres commented 2 years ago

Now, I should really have a more decent properties window for cyclone/comment, the one I could do is really poor! Maybe you can help me figure out how to do a more complex one. I want to have the color picking scheme for the font color and background.

by the way, I need to send some fixes for comment now!

timothyschoen commented 2 years ago

I'll work on the fixes!

I tried to implement drag to resize, but I ran into a problem: how can you intercept mouseclicks in edit mode? Thanks for mentioning oscope~, that will be a nice guide!

Would also be nice to do that for original iemgui! I also really need to get PlugData v0.6.0 done, but it could be a nice project for the future.

I could look into the comment dialog, but tbh I'm bad at Tcl/Tk, I was lucky I could copy/paste 90% of the dialog from iemgui. Maybe a modified iemgui dialog box could also work for comment?

porres commented 2 years ago

Maybe a modified iemgui dialog box could also work for comment?

I hope so! I couldn't do it even with the model we have with cyclone/scope~

timothyschoen commented 2 years ago

I could strip a lot out of the object, shouldn't be too hard. I'll try to make the interface as close as possible to the original number~ abstraction. I initially thought that this was meant for ELSE, so that's I didn't strictly stick to the number~ interface.

I did change something about the way width works, I'll see if I can revert that as well.

timothyschoen commented 2 years ago

The reason why the inlet doesn't disappear btw, is because it's a combined signal/method inlet. You can send methods over a send like that, but probably not signals?

porres commented 2 years ago

I follow the idea that a send/receive name hides all in/outllets. It's like that with [cyclone/scope~]

porres commented 2 years ago

inlets/outlets still keep active, and sends/receives just send and receive via the main left in/outlet

well, one simple thing to do is just remove the send/receive symbols as well :)

porres commented 2 years ago

I initially thought that this was meant for ELSE,

I think it's nice that the GUI is an actual compiled object... an abstraction is a poor trick. But honestly, this is just for the documention and I think the object is rather bad and useless on its own.

I already borrow a couple of objects from ELSE into Cyclone, maybe I should just make my nbx~ object in ELSE and lend it to Cyclone...

porres commented 2 years ago

i envision a simple design... without signal connected, the object can generate signals. With a signal connected it displays them and passes them through, that's it...

It would be something like else/display~ but that would also generate signals (and make display~ rather obsolete and something to consider removing).

timothyschoen commented 2 years ago

i envision a simple design... without signal connected, the object can generate signals. With a signal connected it displays them and passes them through, that's it...

It would be something like else/display~ but that would also generate signals (and make display~ rather obsolete and something to consider removing).

I like that design!

I think I can probably finish [number~] in a few hours, it's mostly just removing stuff!

porres commented 2 years ago

I think I can probably finish [number~] in a few hours, it's mostly just removing stuff!

cool

timothyschoen commented 2 years ago
Screenshot 2022-07-30 at 03 00 08

Both done!

number~:

number:

porres commented 2 years ago

Right outlet always output's the signal value from the left inlet (kinda weird imo, but that's how Max does it)

welcome to Cyclone, the more you have to look into how MAX does stuff, the more you realize how ridiculous the design of their objects is...

porres commented 2 years ago

Left outlet outputs nothing in input mode

that's not how it works in MAX

In properties, 'height' should be renamed to 'Font Size'

porres commented 2 years ago

let's just remove 'label' from [number]. There's a reason why we have cyclone/comment :)

[number] should also deal in the same way with heigth/font size and have just a single parameter.

Why is lower and maximum not "infinite"? I guess we can make this like gatom and have 0/0 be unlimited

porres commented 2 years ago

we should apply some fixes for [number] that I have already proposed for vanilla, like not setting to '0' after you hit enter.

porres commented 2 years ago

It would be nice if the default colors would be the same as in MAX 7+

porres commented 2 years ago

let's discuss stuff here: https://github.com/porres/pd-cyclone/issues/591