subnetworks not abstractions?

robin's Avatar


13 Oct, 2015 03:44 PM

From the documentation, I was expecting a subnetwork (SN) to act as an abstraction. Once I created a SN I copied it and noticed it was entirely separate code. Modifying one SN did not update the other.

This seems less than useful. As a newbie I assume I am missing something really basic.

  1. Support Staff 1 Posted by Frederik De Ble... on 13 Oct, 2015 05:55 PM

    Frederik De Bleser's Avatar

    Hi Robin,

    You're not missing anything. Subnetworks in NodeBox 3 are designed like subdirectories on a hard drive: they copy their entire contents as well.

    If you find this silly, so do we :-) We're currently working on NodeBox Live, which is a version that runs on the web. There, we changed the behaviour of subnetworks to work like functions (we also renamed them "functions"). So you can use a function in many places, and they are interoperable with plain JavaScript functions.

    Once the kinks in NodeBox Live are ironed out, we'll probably backport this functionality to NodeBox 3 as well.

    If you want, I can send you an invite to the NodeBox Live alpha release so you can play with it yourself.

  2. 2 Posted by robin on 13 Oct, 2015 06:59 PM

    robin's Avatar

    Thanks for your reply.
    I am terrible with graphics really, but pretty good with programming in general and Python in particular. Your intriguing product came to my attention when researching possible tools for my students. They learn Max and sometimes pd, so the visual paradigm is familiar to them. For graphics they use either Jitter or Processing.
    I've been hacking a few things together in NodeBox. As a programmer, the first thing I look for is abstraction and encapsulation. Thanks for clearing that up for me!

    I have a few other questions that are likely to be feature requests. Should I ask them here or on the forum? As for NodeBox Live... I can see the appeal, but wonder what the benefits are? Is it simply to get output directly in a browser pane?
    Functions are obviously worth having. Having to give up Python for Javascript... not so much.

    Robin Parmar
          From: Frederik De Bleser <[email blocked]>
     To: [email blocked]
     Sent: Tuesday, October 13, 2015 6:55 PM
     Subject: Re: subnetworks not abstractions? [NodeBox 2 & 3 #5607]
     #yiv8425974785 pre {width:92%;margin:10px 2%;padding:5px 2%;background:#efefef;border:1px solid #d6d6d6;}#yiv8425974785 blockquote {margin-left:0;padding-left:1em;border-left:5px solid #ccc;}

  3. Support Staff 3 Posted by Frederik De Ble... on 13 Oct, 2015 07:14 PM

    Frederik De Bleser's Avatar

    I agree completely with the abstraction / encapsulation part. Note that if you write your own nodes in Python, the only thing that is copied is the definition of the node, which is still a little bit more than you want, but not too much.

    Our development process is driven by the experiences and feedback of students, and having something that would run in the browser (and tablets, and smartphones) was a very common question. We do indeed use JavaScript (when in Rome...), so if that's not your thing, I can't really help you.

    Again, we'll probably backport this into NodeBox 3 as well, though not in the immediate future.

  4. 4 Posted by robin on 13 Oct, 2015 07:56 PM

    robin's Avatar

    OK, that's understandable. It will be good to know when this is backported. In the meantime I might check out your new project depending on where my mind is at the time!
    Here are a few things for NodeBox 3. The first two are usability/interface problems. The last two are feature suggestions.

    I find it cumbersome to manipulate the windows. (I don't use a scroll mouse, or a mouse of any kind.) Standard scrollbars with magnify buttons would be just fine.

    I am not sure how the display window relates to the actual rendered viewport. Perhaps this window should actually be the specified size? Or some sort of ruler indicators within it?
    Export to GIF would be nice. My first project was to make an animated logo, but there is no quick way to do this AFAIK.

    I am trying and failing to get smooth rendering with Frame. Likely because there is no tweening support.

    It would be crazy cool to be able to work with video. Animation could be optionally locked to the video timeline as it is with Frame. A suite of nodes could process arrays of data from video. Then you'd be getting into Jitter territory, so I can understand if that's not where you want to go. But it's actually why I checked out your tool in the first place.

    ----- Robin Parmar
          From: Frederik De Bleser <[email blocked]>
     To: [email blocked]
     Sent: Tuesday, October 13, 2015 8:14 PM
     Subject: Re: subnetworks not abstractions? [NodeBox 2 & 3 #5607]
     #yiv4572022707 pre {width:92%;margin:10px 2%;padding:5px 2%;background:#efefef;border:1px solid #d6d6d6;}#yiv4572022707 blockquote {margin-left:0;padding-left:1em;border-left:5px solid #ccc;}

  5. Support Staff 5 Posted by john on 21 Nov, 2015 07:13 AM

    john's Avatar

    Hi Robin,

    Just found your thought-provoking thread. A few thoughts...

    I sometimes use a scroll mouse (at work) but more often do everything from my laptop trackpad. When I first starting using NodeBox I found the window interactions frustrating, but grew to appreciate them after discovering some of their poorly-documented features.

    (e.g. hold space bar to pan, two fingers on pad to zoom, set output frame in document properties, check "Bounds" box to see output frame, etc.) Note to Frederick: I do wish I had the option to use a different control key than space bar (control, option, command, shift); this would allow me to pan when sharing my laptop screen to an iPad using AstroPad or Duet.

    NodeBox has one of the nicest, simplest, most powerful ZUIs (zoomable user interfaces) I've seen. There are seven orders of magnitude of zoom which you can use to produce deep PDFs, interesting animations, etc. The zooming on both sides of the display is fluid and addicting.

    As for tweening, you might want to search through some of the forum threads for discussions on morphing. As Frederick explained, NodeBox does not yet have a morphing/tweening node, but you can roll your own without too much trouble.

    I have also experienced some choppiness in animations when there's a lot of computation required for each frame, but this usually smooths out when you export your MP4.

    NodeBox is not intended to be a robust animation app, but it can produce some kinds of animations which are hard to do in other tools. And because it's vector-based, the resulting MP4 files are often dramatically smaller (in terms of file size) than typical MP4s.

    It would actually be possible to build a crude video timeline UI entirely within NodeBox. You could render a timeline node to display multiple tracks and markers, reposition the markers by scrubbing X values on rectangles, then do lookups on their positions and use that to drive complex animations. Just change the rendering node to switch from timeline view to final display. (This is a pretty wacky idea, but I mention it only to illustrate that NodeBox is more powerful and versatile than it may seem at first.)

    As for Export to GIF - yes, that *would* be nice! In the meantime, I think there are some tools out there that could do the conversion for you, either from the MP4 or from the set of individual frame PNGs.

    I hope you will keep dabbling with NodeBox. I think its a great teaching tool (and lots of fun besides).


Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:


Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts


? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac

Recent Discussions

15 Jun, 2024 06:14 AM
08 Jun, 2024 09:05 AM
08 Jun, 2024 09:00 AM
04 Jun, 2024 04:37 AM
29 May, 2024 05:15 AM


29 May, 2024 05:12 AM
28 May, 2024 07:37 PM
25 May, 2024 11:52 AM
24 May, 2024 07:39 AM
16 May, 2024 02:11 AM
14 May, 2024 01:29 AM