patch_state
seems not to be updated for nodes, see Render node andQueue
;- very often, Hydra rendering doesn't start at all;
- send last value immediately on connection;
- when dragged, nodes reset state;
- when dragged, links disappear;
- when user starts to drag node, it blinks;
- link overlaps the inlet/outlet hover area;
- Some nodes are harder to drag after adding them;
- Why sometimes Hydra output is not working;
- API: recursive references to buffers are not working, like:
shape(4,0.9).diff(src(o0).scale(0.9).mask(shape(4,0.9,0.01)).rotate(0.1)).out(o0)
noise(10, 0).modulate(o0).blend(o0,0.9).out(o0)
src(o0).modulateRotate(noise(2,0),0.03).hue(0.003).layer(shape(2,0.125).luma().color(0,0,1)).out(o0)
- Knobs controls instead of numbers items in
Num
nodes; - Preview sequences;
- [v]: Be able to compile expressions;
- [v]: Pretty-print Hydra structure;
- Nodes with images as sources;
- [v] Don't show hidden inlets;
- Disconnect links when they're clicked;
- [v] Caluclate the number of links for slots and support styling the "empty" ones differently, be able to dim slot if it's not connected to anything;
- Show values on the slots;
- Value editors;
- [v] Ribbons;
- [v] Finish remove-node buttons;
- Better layouting, may be using
Flex
layout; - [v]: Hover areas are still not perfect;
- Hot/cold inlets;
- Could nodes store
Signal
s instead ofChannel
s?Functor
instances and s.o. - Extracting values from inlets in Definitions is quite painful, why don't provide User with API with using
Channel
/Shape
purposes (get rid ofHydra.Extract
)?SendToOutlet
/SendToInlet
should also verify type;
- Node Families and Channel IDs could be parameters of toolkit etc., as types;
NoodleM
, which haspatch_state
as state and also provides access to inlets and outlets as a Free Monad (seeHalogenM
) — so what can be used ineffectful
processing function of the node;- Should it only allow getting/modifiying user patch state and getting inlet values (adapted to types using channels) or should it provide the whole set of actions such as connecting nodes, sending values to outlets etc.? Or both should be there, just as different algebras?
Osc
andRender
nodes have only logic, considering above (NoodleM
) implemented, move this logic to the nodes definitions instead; Same withBuffer
nodes — it's better to keep component's logic inside the component andHydra
-related logic (like, compulation) inside the nodes;- Find a way to make
Node
s aFunctor
, to be able to map data; Hydra
as a separate purescript package?;- Layouts:
- [v]: Layouts are just positions bounds to components, unify searching by position, adding items etc. to them;
reflow
should act like keeping existing nodes at the place and moving only those that don't fit;- Maybe be nodes layout in App should be one
BinPack (Location Node.Id)
whereLocation a = Here a | Moved Pos a | Free | Replaced a (Location a)
, so the order of the nodes is kept and the previously reverved area in the DOM is kept even when the node was moved or removed, just translates to another place; but that could raise problems with z-index; - Some universal layouting like
elm-ui
, but forpurs
(IsLayout
instance for it as well); - Layered and mixed layouts (pinned + bin-packed);
- [v]: Different link styles;
- [v]: Different connector styles;
- Move CSS to
purescript-css
, use CSS styles constructor; - More styles, PD style;
- I don't like the fact
patch_state
is passed through all the components up and down, i.e.LUser Node -> Patch -> App
and thenApp -> User Patch
andApp -> Patch -> User Node
may be there's a way to simplify it? (or see above and move this state to theNoodleM
); - [v]: Dockerfile, fix deployment;
- [v]:
Out
with a buffer number; - [v]:
to-buffer
andfrom-buffer
nodes; - Render node;
- Fast node;
- Math node;
- Pi node;
- [v] Time node;
- [v]: Mouse.x / Mouse.y nodes;
- Screen width / height nodes;
- Canvas width / height nodes;
- [~] Node for sequences — accepting values so that sequences could be joined;
- Preview node (to see the contents of the output);
- [v] The nodes with some status display inside (i.e.
osc
); - [v] The node with interactive control inside (i.e. knob in Num node);
- Nodes to help with expressions;
- Spreads node, min/max/step;
- [v]: Color node with preview;
- [v]: Palette node;