<div dir="ltr"><div dir="ltr">You can view the logic related to both drawing the nodes and handling how they can connect to one another in the unit below. Note that I also check for circular references so that one node cannot indirectly lead back to itself. Also, the rendering only hits the nodes that are connected to the final output node TDisplayNode or FDisplay in the TNodeList by working its way backwards from it to only connected nodes.<div><br></div><div><a href="https://github.com/sysrpl/ImageShop/blob/master/src/imagenodes.pas">https://github.com/sysrpl/ImageShop/blob/master/src/imagenodes.pas</a><br></div><div><br></div><div>Regarding the next project, I think I am going to concentrate two different programming tasks for my students. One task is to create various tones through simple functions, and the other is to create effects (again through simple functions) which manipulate a sound source. Examples of effects might include a chorus effect, pan effect, flanger effect, reverb effect, echo effect, and probably a few crazy original sounding effects that don't make much sense for musicians to use. In any case, I suspect that I will allow the user to again hook effects up together in a chain, possibly using the same node type user interface where one effect outputs samples that can be fed into other effects.</div><div><br></div><div>And in place of the image drawn above like in the Image Shop example, I might just make the rendering take the shape of graphing real time wave forms and cut back slightly on the musical staff, at least until another point in time.</div></div></div>