Loligo - music from pixels

edited March 2014 in Share Your Work

I want to show you a project I've been working on for a while now. It's a node-based development environment for generative music, made with Processing 1.7 and the audio-library "the Beads Project".

Here's a little demo video:

You can download the program on my website:

Let me know what you think.



  • edited March 2014

    Seems like a mix of sounds + electricity + chemistry! ^:)^

    ... made with Processing 1.7...

    What version is that?! :-/

  • Oh, yeah I guess it was Processing 1.5.1...

  • Compulsive viewing - absolutely brilliant =D>

  • edited April 2014

    ^:)^ you could try putting some starting connections examples..

  • But there are examples in the program. Just click on the file-symbol up left, there's a point in the menu called "examples" with six totally rad compositions in it! Or are those to complicated for a start? I'll add some really basic setups..

  • edited April 2014

    it's amazing.

    We bow before you.

    I was just playing around a bit, it crashes when I try to insert a mic-node.

    Does a mic-node listen to a mic or to LineIn?

    Thank you!

    The error log

    java.lang.IllegalArgumentException: No line matching interface TargetDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, big-endian is supported. at javax.sound.sampled.AudioSystem.getLine(Unknown Source) at Source) at Source) at net.beadsproject.beads.core.AudioContext.getAudioInput(Unknown Source) at at pr.AudioModule.postInit( at pr.ModuleManager.newModule( at pr.ModuleManager.newModule( at module.loader.DynClassLoader.getModule( at gui.modulmenu.ModulMenuItem.mouseClicked( at pr.Input.mouseReleased( at pr.Loligo.mouseReleased( at processing.core.PApplet.handleMouseEvent(Unknown Source) at processing.core.PApplet.dequeueMouseEvents(Unknown Source) at processing.core.PApplet.handleDraw(Unknown Source) at Source) at Source)

  • in the nodes menu when hoovering over Retrigger it says

    Failed to load Description.

  • edited April 2014

    Position of a new node

    it occurs to me that the nodes menu opens when you right click.

    Instead of using the current mouse position for the new node, you could use the position of that right click. Thus we could position the new node in one go just where the initial right click was. (This doesn't apply when you click on the icon with the mouse of course).

    The anchor points

    Each node has one or more anchor points (what's the name?). That confused me a bit. Let me explain. I feel some anchor points can be used for connecting lines between nodes and some can not.

    E.g. the antenna has 2 anchor points: angle and length. But to trigger a Xylophone you can only use one, the length, right? But when I drag a connecting line on to it, both points shine brighter, no matter whether I can drop on it or not. Better would be that only the one that can be dropped on shines brighter (the angle) while in drag/drop mode.

    Where can I go with my new connecting line?

    In the drag mode (when I drag a connecting line) allanchor points of all nodes that could be dropped on (only them) could be in a new color. So I know where I can go to with my new connecting line.

    It's a great inspiring work and I wish you success with it!

    Greetings, Chrisir ;-)

  • Thanks for your feedback Chrisir! Really helps a lot when people point out problems with the interface etc.

    And thanks for posting this error log.. I haven't paid much attention to the mic node, yet. It's supposed to use the standard audio input as defined by JavaSound. On my laptop it's the build-in microphone..

    Yup, I forgot to add a description to Retrigger.. it's basically a "broken record" effect.

    I like your idea to place new nodes at the position of the right click. But you can also drag items directly from the node menu instead of clicking on them.

    The anchor points are referred to as inputs and outputs. Inputs are always on the left side of the node, outputs on the right. Any output can be connected to any input, but you can't connect two inputs or outputs to each other. "Angle" is an input that controls the orientation of the antenna!

    If you manage to build something cool, I'd love to see the save-file!

  • edited April 2014

    Thanks for your reply.

    Your example "circular" reminds me of a Rube Goldberg Machine.

    It's awesome.


  • The mic-node

    you wrote:

    It's supposed to use the standard audio input as defined by JavaSound. On my laptop it's the build-in microphone..

    yes, I don't have a mic here (only a mic-port) maybe that's why the error occurs?

    There should be one node to listen to line-in and one node to listen to what's played on the PC (when I play something in the browser, in youtube) [or is that the same?]

    Other idea

    Apart from making music: This could be a great tool for kids to teach them programming. When you had an if-clause-node or a while-node or a for-loop-node...

  • It seems the error occurs because your soundcard and/or audiodriver doesn't support the specified input format.

    Yeah, I guess I'm going to add a menu to the mic node to choose all available audio inputs from.

    I've already thought about writing a node that evaluates conditions in one way or another. I can't really imagine how loops would make sense in this framework, though. What would you imagine something like a "for-node" to look like, what would it loop through?

  • edited April 2014

    you wrote

    how loops would make sense in this framework, though. What would you imagine something like a "for-node" to look like, what would it loop through?

    I was going away from making music from pixels towards the idea to have a system to teach children programming without having to type.

    E.g. when you have 2 for-loop nodes they could deliver an output from 0..10, value increases every second and then restarts

    when both nodes go to a arithmetic node to multiply bot values, you could have the rows

    1x1, 2x1, 3x1 2x1, 2x2, 3x2 etc.

    (it's a little more complicate than that because it's a double for-loop, so the outer loop triggers the inner loop and waits for the inner loop)

    like here

    for (int i=0;i<=10;i++) {
      print(i+": \t");
      for (int j=0;j<=10;j++) {
        print (i*j+"\t");

    which gives

    0: 0 0 0 0 0 0 0 0 0 0 0
    1: 0 1 2 3 4 5 6 7 8 9 10
    2: 0 2 4 6 8 10 12 14 16 18 20
    3: 0 3 6 9 12 15 18 21 24 27 30
    4: 0 4 8 12 16 20 24 28 32 36 40
    5: 0 5 10 15 20 25 30 35 40 45 50
    6: 0 6 12 18 24 30 36 42 48 54 60
    7: 0 7 14 21 28 35 42 49 56 63 70
    8: 0 8 16 24 32 40 48 56 64 72 80
    9: 0 9 18 27 36 45 54 63 72 81 90
    10: 0 10 20 30 40 50 60 70 80 90 100

    so when you had a node to print numbers one after another

    or a node to print a grid that would be cool for kids - but it's another sketch, not to do with sound

  • I see. What you're describing isn't really a for-loop, though, it's just incrementing values over a period of time. You can actually kind of do that in Loligo with the Counter node. Only thing that's missing is a print-function. But yeah, visual programming languages like this one can be a good way to introduce children to coding.

  • sounds great!

  • Looks cool. Sad it's windows only atm. I have my pc disconnected :(

  • There are also versions for Mac + Linux now!

  • are there other changes apart from OS

  • Nope, it's still the same file bundled in a Mac app.

  • Thanks!!

  • Talking about visual languages. I think softimage ICE has the best node system i ever used. For the rest i used vvvv and max/msp and they are really bad compared to ICE. If you ever want to go deeper into making a node based system i suggest looking into it. Specially making compounds is done really well. Look at 4 minutes into the video:

    Sad Autodesk is killing their best 3d application :(

  • Looks interesting. So far, I've orientated myself towards the node systems of Quartz Composer and the compositor in Blender. I've been thinking a lot about how to design compounds.. they are somewhat tricky with Loligo, since the graphic- and reader-nodes need to be present on the main window at all times.

  • Wow that's really cool! Delightful sounds :)

  • edited May 2014

    Hi, This is a really nice and impressive piece of graphical programming environment. It invites to make visual art that sounds well, or music that looks good! Makes me think of the artmachines from Jean Tinguely or the paintings of Joan Miro. Very inspiring! I have been playing with it and enjoyed it very much. It is so cool that you shared this. Thanks!

    Some feedback: - I like the beautiful, very direct, intuitive and handy interface - I wish the shapes could have a larger size - Being able to choose the size of the window at the start of a new project also would be handy - I miss a master volume element - a possibility to send numbers to max/msp would turn your Loligo into a wonderful control element.

  • Thank you Dirk!

    Most of your wishes are already planned for the next versions. I already have half-finished nodes for MIDI-in/out lying around, but direct communication with max/msp, supercollider, etc would also be worth considering..

  • @TidensBarn


    did you develop it further, publish it... or something?

    how have you done the msg_boxes?


  • I tried the program on mac but I can't load any images. After I choose an image with single image nothing happens and nothing works anymore.

  • edited May 2015

    Hm looks like email notifications for new posts are deactivated by default in this forum.. thanks to whoever sent me this message on my website.

    @Chrisir I'm still working on it. There are tons of new features that have accumulated over time, but most of them aren't quite ready for release yet. You can have a little foretaste down below.. There's new buttons for undo/redo, play/pause and record to file as well as Midi In + Out Nodes and a couple of fun new demo patches.

    The msg boxes are made with Java Swing. In fact, the whole Processing sketch is embedded in a JFrame.

    @clankill3r Thanks for the bug report! I only have a laggy virtual Mac, so I didn't really do much testing on the OS version.. anyway, the problem should be resolved in the version down below.

    Links: Win Mac

  • Cool! Nice to see you still work on this. I will check it asap.

  • Thank you so much....!

  • You should add webcam support!

  • @TidensBarn @1:16 how was this accomplished ? i been trying to determine what sorta function one can use to have my hand change a outcome when placed over a specific area of the video feed.

    im looking to have the mouse pointer have this capability to be placed over colors and hace something happen like you did with you sound project

Sign In or Register to comment.