mimas

Mimas is the graphical interface for rubyk and any oscit (open sound control it) enabled devices. The source code for the application is released under the MIT license but the application as a whole is GPL (GNU General Public License) since we are using the excellent juce framework.

The application will run on Mac OS X, Windows and Linux but currently only compiles on Mac OS X.

downloads

We have not released any version of mimas yet.

Source code

The source code can be retrieved with git on github.com/rubyk/oscit.

Bug tracking

If anything seems wrong with this library, please open a ticket (if this seems too much, sent an email to the mailing-list).

mimas name ?

Mimas crater

The name comes from the smallest natural satellite in the solar system that is spherical (looks like a moon).

Mimas has a big crater which makes it look like some sort of giant eye, and that’s what the graphical interface is about: “see and master it all”.

latest blog entries

  • OpenCV + OpenGL control

    This is a short post to announce that I have rewritten all the core management of types and attributes (see this post: patch vs view). This was a pretty big change but we now have an “attributes” field in every object in which we can store about anything that we need.

    Since I had to fix many tests, I also decided to fix the control of rubyk systems running OpenGL.

    As some of you may know, OpenGL is an API that is Thread-contextual. This means you have one global OpenGL context per thread. When you call gl.Color(0.5,0.5,0.0,0.5), you are changing the current thread’s OpenGL context.

    Because of this, and since Rubyk is massively multithreaded oriented, I had a couple of problems updating and getting parameters from GLLua scripts.

    I am happy to tell you that this has been fixed and that I could control OpenCV blur and cube rotation from Mimas !

    opencv control

    Changing live video effect from Mimas.

    The sliders do not have labels yet. These are:

    • /win/open_close (open or close window)
    • /cv/x (x rotation angle)
    • /cv/y (y rotation angle)
    • /cv/z (z rotation angle)
    • /cv/opacity (live video opacity)
    • /cv/blur (live video cv.blur size)

    You can run this example from your rubyk’s build directory:

    cd build
    cp ../examples/GLLua/opencv.json ./
    ./rubyk ../examples/GLLua/opencv.rk
    2010-07-10 - comments (0)
  • Link creation !

    Rubyk and Mimas now work together to enable drag and drop creation of links:

    link creation

    link drop target with tooltip

    2010-06-30 - comments (0)
  • Links shown !

    I’ve been waiting for 2 years to see something that would look like a signal processing tool… And finally, here it is: links in the patch view.

    links

    links in the patch view

    As you can see in the image below, the link shape adapts when the outlet is lower then the inlet. This makes the links easier to see in this case.

    upside down link

    links upside down

    testing with Slot colors

    I think it’s ugly, will only show slot colors when connecting.

    link colors

    testing with slot colors

    Slot tooltip

    I’ve just added tooltip support. When you declare a method in Lua like this (or in C++ with equivalent code):

    function fly(val)
      -- make laptop fly
      return true
    end
    inlet("fly", BangIO("If you send a bang here, your computer will fly"))

    You get some nice tooltip for the inlet:

    slot tootip

    2010-06-24 - comments (0)
  • Showing inlets and outlets

    Just a quick note to say that Mimas now draws inlets and outlets !

    inlets and outlets

    Slots display but links aren’t drawn yet.

    2010-06-22 - comments (0)
  • Started implementation of 'patch' view

    Things are moving quite fast because I want to start using rubyk through mimas. I have spent some time trying to decipher how to make the patch appear as a view so that the same patterns can be used to create, remove or update elements in views or in the patch.

    patch vs view

    In case you wonder, the patch is the thing that represents the processing logic inside the server whereas the views just show controls to alter parameters inside this processing logic.

    patch

    In order to make the patch work, I implemented “to_hash” in oscit. This will also be used to save and restore patches.

    I had some trouble understanding what to do view view-only information (like color, position) that is stored in the Node:

    • expose everything with methods ?
    • or keep this things hidden and use the controller to expose them in the patch view ?

    After lots of hesitation, I decided to not clutter the method namespace with view elements and keep these two worlds separate. So now, if you dump a patch as Json, you will get something like this:

    {
      "@view":{
        "widget":"Node",
        "x":0, "y":0, "width":60, "height":20, "hue":203
      },
      "@class":"/class/Metro",
      "out":{
        "bang":{"/v/value":{}}
      },
      "tempo":115
    }

    This example will probably change, but the main ideas are there: all information regarding view are stored in ’@view’. The “widget” attribute is used by the view to display the proper type of widget and the ”@class” attribute is used on object creation.

    “out” lists the slots with outgoing links and all the other attributes are just serialization of the methods declared in the node/script.

    patch_view

    first patch view (no links inlets or outlets yet)

    2010-06-20 - comments (0)
  • drag & drop new widgets

    You can now add widgets by dragging paths from the browser.

    When you drag a path (“tempo” here) on a device view, the widget steals the color and shape of the closest widget (the new dragged element is the lime full rectangle) and snaps to to ease alignment.

    new widget

    Example of a path drop to create new widgets.

    2010-01-09 - comments (0)
  • async interface editing

    The development of mimas is advancing quite well and proving that the oscit library is actually built on a strong usability ground.

    The interface now handles asynchronous updates: when you enter “edit” mode and move a widget to some other location, a couple of interesting things happen:

    1. you move a “ghost”, not the real widget
    2. when the “ghost” is dropped, an interface update message is sent (with the minimal information needed) to the server
    3. the server notifies all interfaces (including the one you are working on)
    4. you see the widget move

    You can see an example of a ghost being moved in the example below.

    mimas screenshot

    ghost being moved in “edit” mode

    2010-01-04 - tagged: mimas, screenshot - comments (0)
  • rubyk / iPhone app first steps

    As you can see on the screenshot below, “minimas” (oscit controller for iPhone) now also has little sliders magically appearing when an oscit enabled device is connected to the network.

    And yes, this works on my iPhone through wifi and it’s super cool !

    Now I just have to implement the same ”.views” parser as in Mimas (view is provided by the remote application as xml).

    iphone with mimas