Forums > MaxMSP

Announcing: Miraweb Package

Dec 19 2016 | 3:25 pm

We are happy to announce the release of a new Max Package, Miraweb.

You can find it in the Package Manager, accessed from the ‘File’ menu in the Max app. Please note that Miraweb requires the new Mira Package, version 1.1.9, now available in the Package Manager as well.

Miraweb provides a responsive, websocket-based portal utilizing modern web technologies and open source components for bidirectional communication between Max and many modern web browsers. For those of you who always wanted to use Mira on a non-iOS device, this package is for you!

As far as browser support, we recommend Firefox and Chrome. Due to some issues with touch support, Microsoft Edge is not currently officially supported, but we hope to improve this down the road.

Aside from the Max Package which you can download directly from Max, here are a few relevant links to GitHub repositories and npm Packages related to Miraweb:

xebra-communicator repository:

Xebra.js repository:

Miraweb repository:

xebra-communicator npm package:

xebra.js npm package:

We are excited to see what you will make with these tools! Aside from downloading the Package from Max, get involved by forking the repositories, playing withe the examples, and following up on the GitHub issue trackers for these projects. We are looking forward to your feedback and involvement!


Dec 19 2016 | 6:50 pm

So you can have a webserver that processes requests through max now ? And with a max interface ?

Dec 19 2016 | 11:03 pm

I repeat myelf when under stress

Dec 20 2016 | 5:35 am

Nice. That simplifies a lot of things.

Dec 20 2016 | 5:59 am

Yes !
this will be sooo useful :)

2 distinct computers running several mira.frames ,
are both accessible from chrome on ios , on 2 different tabs.
using Chrome in the same purpose, on any of the 2 computers , leads to the same results.
it’s working very fine here, even with many mira.frames created in both computers in the same time.
and they all appear in the good left-to-right order :)
I didn’t try firefox.

Ben ,
the package manager’ s miraweb tab says Mira package 1.2.3 is needed.
here you suggest 1.1.9.
I’m running 1.1.9 on both computers (macos 10.11.6)
That 1.2.3 suggestion is a mistake? or am i missing something ?

Miraweb is awesome :)


Dec 20 2016 | 9:15 am

@JOUMIK Thanks for noticing the version mistake, that is just an error in the documentation and the latest Mira package version is 1.1.9. I’ll get that fixed up.


Dec 20 2016 | 9:55 am

Looks Great!
Is it a local connection through the browser or can we use this for distance connections through the internet?

Dec 20 2016 | 10:04 am

@Phivos-Angelos Kollias
So far MiraWeb only runs the server locally within Max. If you’d like to make this publicly available you’d have to setup some sort of tunnelling or port forwarding on top yourself. In our testing we used localtunnel and ngrok to do that fand have some guidance on the basic usage/principle in the Xebra.js examples:

However, you might see different results using different services due to your geo location and the location of the tunnelling server itself. F.e we saw a performance difference between the US and Europe. Due to these and other networking factors we can’t offer a perfect out-of-the-box solution for everyone at this point but the basic principle should be the same regardless of the service or your choice.

Dec 20 2016 | 10:40 am

@Phivos-Angelos Kollias

Yes! You can go nuts on the internet.


Sorry mate, couldn’t resist.



Dec 20 2016 | 2:56 pm

@Florian Demmer

Thank you for clearing things out. My imagination started exploding.
I would really like to do some tunneling as it would be great not only to go away from the iPad
but would be also great to go away from the "here" (performing from a distance) but always staying in the "now" (quasi-realtime)

Dec 20 2016 | 3:02 pm


Could you please send some more info about going nut in the web?
I was looking the "Internet sensors projects" of Tom Zicarelli
I haven’t test yet the APIs and the objects
any more suggestions for a Max -InternetOfThings ?

Dec 20 2016 | 3:17 pm

It’s very easy to set up remote connections to machines running Max on the internet.

To get started, check out Florian’s xebra.js documentation, or google "port forwarding"

We’re really looking forward to hearing about the ways people use miraweb in their projects.



Dec 20 2016 | 3:55 pm

Very, VERY exciting stuff, friends at Cycling! Damn, I wish my JS and html skills were a little bit better. I know it’s only come out today, but anybody integrate this into an existing html5 or similar GUI yet?

Christmas come early! Thanx again Max elves ;)

Dec 20 2016 | 7:52 pm

Amazing use of Javascript in this project. I am very much impressed. Congratulations and thanks for adding this new technology to the Max environment.

The youtube promo features some examples of using three.js and p5.js together with xebra.js/max. Are these available somewhere? I have been working on audiovisuals combining Max-DSP with Javascript dynamic behaviours using the jweb object, and I wonder if Miraweb can provide an easier and/or more flexible way to implement communications in both directions (Max<->p5.js). Any hints appreciated!

Dec 20 2016 | 7:55 pm
Dec 21 2016 | 7:46 am

Thanks very much of open sourcing this amazing tool, this is very exiting !

about zebra.js example files:
in order to run the examples, after cloning the github project, I had to manually create a ‘dist’ sub-directory, and copy the downloaded zebra.js file in it. (otherwise the html file only display blank pages)
(I tried npm install xebra.js : it installed zebra *somewhere* , but example files didn’t work)

Dec 21 2016 | 7:51 am

@Mathieu Chamagne

Yeah, you can also do

npm install
npm make build

In the root of the git repo.



Dec 21 2016 | 9:56 am

@Mathieu Chamagne, re: Examples, I’ve changed the reference to be to the hosted prebuilt xebra.js lib, so you don’t need to build anything now to run the examples.


Dec 21 2016 | 10:20 am

Thanks @Ben!

Dec 21 2016 | 11:15 am

Hi! This really is a great christmas present!
Although, I’ve come across an issue: toggles don’t work. I’ve noticed that they blink, in the server side, but they go back to whatever state they were in before.
"Double-bang?", I thought.
Then, I’ve noticed that the multi-touch object also behaves in a bizarre way: each finger I use counts as two! If I press one finger I see a circle with a "2" in it. If I add another finger I get an extra circle with a "4", and so on.
"Double-tiped fingers?", checking… no, I don’t think so.

I’m using a mid-2009 MacBook Pro running 10.10.5 and Max 7.3.1, connecting with an Android 5.1 phone and a Windows 10 tablet, both with Chrome. The issue was present with both devices.


Dec 21 2016 | 11:28 am

@PEDRO, great to hear that you are giving it a go! I can’t reproduce the problems you mention here. I’m trying to imagine a scenario where this would happen.

Can you post a patch? Any errors in the Max Console or in Chrome’s browser developer console?

I’d also recommend restarting the machine just for kicks.

Also, did you download the latest Mira Package from the Package Manager? This is required for Miraweb usage.


Dec 21 2016 | 11:40 am

Hi Guys,
Im really struggling to get this working. I installed the Miraweb fine but there was no xebra. I found the Minified Version and when i clicked on the link it just gave me a load of code. How do I actually use this?

Also when I use the miraweb launcher I just get an error on Chrome and Firefox

  1. Screen-Shot-2016-12-21-at-19.36.12


Dec 21 2016 | 11:43 am

@TOM be sure to install the latest Mira Package as well (v1.1.9 in the Package Manager), and then restart Max.

There is no xebra Max object, per se. "xebra" is just the name of the Javascript connection library that mira.frame will use to communicate from the server (created when you create a mira.frame object) to the browser.

Dec 21 2016 | 11:54 am

I restarted Max not my Mac and that didn’t work.

Its now working that I restarted my mac.


Dec 21 2016 | 12:30 pm

@Ben Thanks for your reply!
The patch is really basic – a toggle and a print.
I’ve tried restarting my computer and I’m using the latest version of Mira.
In the Max Console, I get this:
"Mira Initialized, package version: 1.1.9"
"mira.frame: websocket connection available at ws:/"
I’ve tried with a different router, but the issue endures.
Now, I was about to try something different – opening the patch in my Windows tablet – but I got an error:
"Mira requires Bonjour which appears to be missing. Click here for more info and to download the installer. "
But clicking does nothing.
I didn’t get the chance to check Chrome’s developer console for errors. I will check it and post here if I find any errors.

  1. atoggleandaprint


Dec 21 2016 | 3:34 pm

It’s no use. I’ve tried everything.
Be it in my Mac or in my Windows, the UI objects in the server always get two bangs from the client every time I poke it.
Am I the only one with this issue?!?
… well … you know what? Let me try a different browser…
It works!!! With the default samsung browser of my phone!
But… trying to control two sliders at the same time is tricky: the sliders get all quirky. This didn’t happen with Chrome. :-(

I hope you guys can figure this out.


Dec 21 2016 | 3:39 pm

@PEDRO, thanks for following up. We can reproduce the problem. Basically, with the Chrome browser, Miraweb is getting both a touch event and a pointer event (wrapped as a touch event). Xebra is attaching to both and is sending a touch event for each, hence the "double" touches.

We are working on a fix for this, but in the meantime, you could play around with chrome://flags and disable Pointer Events. In our tests that works to some degree, or you could use a different browser for now. Fix coming soon though!

Any idea what the browser is on your Samsung phone?


Dec 21 2016 | 3:50 pm

Thanks, Ben!
I’ll be looking forward for that fix. Tomorrow I’ll try to install Firefox in the windows tablet and see how it goes.
The phone just ran out of battery, so I’ll check the make of it’s browser tomorrow, too. It’s one of those apps that just says "Internet"! :-)


Dec 21 2016 | 4:18 pm

I have joined just to say Thanks, this is amazing. Best, Andrej

Dec 21 2016 | 10:03 pm

Wow. Game – changing.
Just spent two hours testing and playing and being boggled/awed/inspired by the possibilities.

Is there a limit ( real or theoretical ) to the number of connections allowed/possible/recommended?



Dec 22 2016 | 8:19 am

@Ben, Hi there! I’ve been playing around with this, after having disabled Pointer Events, in Chrome. Everything seems fine, now!
So, now I have some questions:
– Is it possible to set a different ratio for the [mira.frame]? My tablet is 16/9 (1366×768);
– Is it normal that the comments are opaque to the touch? I can’t click on a button if it’s underneath a comment;

Thanks for the help with the Chrome issue and keep up the good work!

Dec 22 2016 | 3:35 pm

Hey everybody,

We just pushed a new, patched version (v1.0.1) of MiraWeb to the Package Manager in order to fix the issue encountered by @PEDRO and would kindly ask you to update.

To give you more insight: It appears as though touch interaction was bugged for Miraweb in the latest version of Chrome. Miraweb was reporting duplicate events, sending two touch events for every touch. The problem was due to a very recent API change in Chrome itself. The all new PointerEvent API got activated alongside MouseEvents and TouchEvents, which led to MW capturing and handling duplicate events for any input. This issue is now considered fixed and we’d be happy to get your feedback wrt functionality of the new version if you’ve encountered this problem yourself before.

Thanks for your patience!

Oh, and as stated before we’d be happy to hear about your MiraWeb based projects but also any insight on what you have in mind for or are already doing with the Xebra.js API.

Dec 22 2016 | 3:44 pm


– the aspect ratio of mira.frame is currently still locked but we are considering this as a feature for future versions
– I filed a GitHub issue for comments preventing interaction with objects placed underneath here:

Thanks much for your feedback and input!

Dec 22 2016 | 4:07 pm

Thank you, @FLORIAN.

Dec 22 2016 | 7:33 pm

Wow. I mean, wow. This is fantastic.

I’ve been testing Mira & Miraweb on a Surface Pro 4, which has (according to Microsoft) "Six sensors— accelerometer, magnetometer, gyro, ambient light sensor, Hall effect, Wi-Fi SAR" – but when I run the mira.motion patch, I’m only getting responses from Rotation Rate (in the Basic panel) and Raw Acceleration (in the First Gen panel). Nothing from Accelerometer, Compass or Orientation (in Basic), or Gyroscope or Magnet (in First Gen).

Any idea why this isn’t working?

Dec 23 2016 | 5:35 am

let me join the parade of fans. truly terrific stuff.

i did a little 7-minute fan-demo and mistakenly posted it to the newsletter comments rather than here. but here’s the link again. the stuff just worked out of the box for me. the demo is across several Macs, including one that’s 100 miles away with Max running behind a firewall.

quick question(s):

– is there a way to tweak the port that Miraweb uses (ig change it from :8086 to something else)?

– the broader question: can more than one Miraweb session (cluster? community?) exist on the same local network?

i’m envisioning having several completely different activities running at the same time. i’d like to have them each show up in a single-tab browser window, rather than as multiple tabs in a single window.

happy to read documentation or tweak code, but could use a starting point.

Dec 23 2016 | 7:40 pm

Xebra is simply fantastic. Thank you!
Have been playing around with it since Sam’s excellent YouTube video came out yesterday I am able to have Max control a web page with sound and light. Delighted with that. Just having trouble getting messages from a web page back to Max.

Any idea how I get a JavaScript slider value back to Max?
I tried the function below with a slider object in Max called metro_delay. Probably needs more object referencing.
Code snippet from body text below does not yet work (scratching head).

<input type="range" id="myRange" value="50">
<p>Click the button to get the value of the slider control.</p>

<button onclick="myFunction()">Try it</button>

<p>Note: input elements with type="range" are not supported in IE 9 and earlier versions.</p>
<p id="demo"></p>

function myFunction() {
var x = document.getElementById("myRange").value;
document.getElementById("demo").innerHTML = x;
// Try sending the html slider value to MAX

Dec 23 2016 | 8:01 pm

I have also tried:
function myFunction() {
var x = document.getElementById("myRange").value;
document.getElementById("demo").innerHTML = x;
// Try sending the html slider value to MAX

function metro(val) {
var patcher = xebraState.getPatchers()[0]; // Assuming it’s the first patcher
var object = patcher.getObjectByScriptingName("metro_delay");
if (object) {
object.setParamValue("distance", val*1000);
//Still broken. Thanks for your help. GM

Dec 24 2016 | 5:24 am

Hey gang, and merry christmas. I just wanted to drop in and say wow, as well. I’m so happy I bought these multitouch displays a while back, this is going to be so much fun! I’m so thankful for this, it’s going to really make a difference. I CAN RUN SO MANY SEQUENCERS NAO!

I just stumbled upon a small display bug here; the "highlight" of live.grid doesn’t work. I took a quick screen shot to show you what I mean.

Max in the background, google chrome in the foreground. Same results with Safari.

Dec 24 2016 | 5:37 am


The HTML input[type="range"] element can get a bit tricky wrt String vs. Number types. Not sure if you’ve debugged already but you might have to do a parseFloat(x, 10) or parseInt(x, 10) as the value property might be a String and ‘esp x * 100’ would give a NaN result in that case.

Two side notes:
Using the "min" and "size" attributes you can also adjust the range of the input element to match the state in Max.

Note that you can also get objects on the global state by their scripting name using: xebraState.getObjectsByScriptingName (see here:

Let me know if that helps you getting started and glad to hear you get everything set up from Max -> Browser already. Sweet!

Dec 24 2016 | 12:30 pm

Thanks Florian.

I managed to get the connectivity back to Max from HTML javascript by looking at some of Sam’s examples using xebra. dat.gui.js.
Now that I have this part working I need to find out how to draw more Max controls outside the dat.GUI window on the main window.

<script src="./xebra.dat.gui.js"></script>
var snd = new Audio("horse.ogg"); // buffers automatically when created
var gui, xebraState;
var canvasConfig = {
message: "Welcome to the Neural Plasticity Tool",
start: false,
word_speed: 2,
sound_delay: 0,
sound_advance: 0,
play: function() {;},
message1: "Test MSG",
clear_msg: false,
about: function() {alert(‘© 2016 by Gregg Mazel!’);}

function makeGui() {
gui = new dat.GUI( {width: 400 } );


function connectXebra() {
var options = {
hostname : "", // localhost
port : 8086
xebraState = new Xebra.State(options);

function addControllersToGui() {
gui.add(canvasConfig, ‘message’).name("Message");
gui.add(canvasConfig, ‘start’).name("Start");
gui.add(canvasConfig, ‘word_speed’, 0, 20).name("Word Speed");
gui.add(canvasConfig, ‘sound_delay’, 0, 20).name("Delay of Sounds");
gui.add(canvasConfig, ‘sound_advance’, 0, 20).name("Pre-play Sound");
gui.add(canvasConfig, ‘about’).name("About");
gui.add(canvasConfig, ‘play’).name("Play Sound");
gui.add(canvasConfig, ‘message1’).name("2nd Message");
gui.add(canvasConfig, ‘clear_msg’).name("Clear Message");

window.onload = function() {
var snd = new Audio("horse.ogg"); // buffers automatically when created
var fillColor = [0, 255, 0];
var fillText = "Neural Plasticity Test 1";
var px = 40;
var py = 50;

bindGuiToXebra(gui, xebraState);


Dec 25 2016 | 1:29 pm

hey, it’s not working here from firefox
do i need to install something else than the miraweb package (and reboot computer) ?

After banging once the example patch (miraweb_launch) Firefox opens, i attach a screenshot. If I bang several other times, aor clic on "connect" on the browser, max console displays this kind of lines :

mira.frame: websocket connection available at ws:/
freeobject: 60800f06f150: bad object
freeobject: 60800f0643d0: bad object
freeobject: 60000d46b3d0: bad object
freeobject: 60000a47ea90: bad object
freeobject: 60000d466310: bad object
freeobject: 60000d46a6d0: bad object
freeobject: 60000d46aed0: bad object
freeobject: 60000ac6e8d0: bad object
freeobject: 600008671650: bad object
freeobject: 60000a679e90: bad object
freeobject: 60000a879fd0: bad object
freeobject: 608009e71190: bad object
freeobject: 608000263c50: bad object

  1. mirawebscrn


Dec 25 2016 | 7:22 pm

Hey @Vichug,

Did you update your Mira package as well? I think those errors may occur with an older version of Mira. Also what version of Max are you running?

Dec 26 2016 | 2:41 am

Hey Sam, Mira seems up to date ; version 1.1.9. Max is 7.3.1. I have troubles connecting on iPad via USB so maybe something is fishy on my end, but i don’t see how

Dec 26 2016 | 4:37 am

>– the aspect ratio of mira.frame is currently still locked but we are considering this as a feature for future versions

that would truly rule. In my case I am using a widescreen display, and its ratio makes things wonky, there’s a ton of border going on, even with fullscreen enabled and such.

Dec 26 2016 | 5:08 am

@Vichug Hmm, sorry to hear you’ve been having difficulty. Would you mind getting in touch with support? They’ll want to know what operating system you’re running as well, which will help us figure out what’s going on. Thanks!

Dec 26 2016 | 7:10 am

i will ! i was hoping to have some kind of common problem :/ hence posting here.

Dec 26 2016 | 9:22 am

In xebra.js/examples/01-quickstart/
there are functions for adding buttons from the Max patch.
Is there a way to name the button in the java script using button’s Max scripting name varname instead of using it’s object id?

Please see:
newButton.appendChild(document.createTextNode("Button "+;



Dec 26 2016 | 9:44 am

@gmazel Definitely. The varname is just an object parameter, so you can just do:

newButton.appendChild(document.createTextNode("Button "+ object.getParamValue("varname"));

Of course, you might need to be a bit careful, since the varname might be blank when the object first is added to xebra, and since the varname may change. But if you’re loading a patch with static varnames you should be okay.


Dec 26 2016 | 10:32 am

Thank you Sam! I am making a custom Neural Plasticity Tool (what the heck is that?) and this project is getting to be super flexible and fun thanks to the work you guys have done in Xebra and putting Max into the equation.

Dec 28 2016 | 3:54 pm


Yep, can totally reproduce and we do show the ‘highlighting’ in Mira App. So yeah, I think MiraWeb should behave similar here. I filed an issue in the MiraWeb repo:

Oh and saw your videos with these gigantic touch displays on Social Media today. Lovely use of MiraWeb!

Jan 03 2017 | 6:02 am

Thanks for this – amazing work!
Is there anyway of getting this to work inside MaxforLive at present?

Jan 03 2017 | 7:18 am

Is there a way to input text in Miraweb? My Windows tablet has an attachable keyboard and it would be very sweet if I could use it to send text messages to Max. Unfortunately, it seems the [textedit] object isn’t supported.

Before Miraweb came out, I was actually working on a slave patch to run on the tablet with a pair of [mxj net.tcp.send] and [mxj net.tcp.recv] to communicate with a master patch in my mac. Now, I’m trying to migrate this patch to Miraweb, which seems easy, but I encounter two hindering factors:
– not being able to use the whole 16:9 screen (big white margins – could these at list be darkened? – plus the tab space);
– not being able to use the keyboard to interact.



Jan 03 2017 | 11:40 am

i was curious about Gavspav’s question about Max4Live so i tried accessing a M4L patch that has a couple mira.frame objects in it from a remote machine, using Miraweb.

interesting behavior in the miraweb_launch object — the openBrowser sub-patcher returns port 0 for the websocket connection.

i tried hitting the machine on port 8086 anyway and got part way in — the connection dialog appears in the remote machine’s web browsers (Firefox and Safari), but the connection itself stalls. opening the mira.frame help patch on the Max-running local machine tripped something. the tabs (my two frames and the one in the help patch) appeared in the remote session, but no controls just a blank screen.

shutting down Live didn’t cure the problem — only a restart of Max did.

Jan 03 2017 | 1:07 pm

Yes I got the same behaviour as you with the port 0.
When I tried to connect to port 8086 I got a "No mira.frame objects in Max" message
If I open the mira.frame help patch after this it does work for me however. I’m on 10.9.5/latest Live and Max.

Jan 03 2017 | 1:30 pm

We are tracking the Miraweb MFL issue and will hopefully have some solutions down the road to this, stay tuned!


Jan 06 2017 | 8:45 am

Does this work without Bonjour installed? (On windows 10, Max 7.3). Hmmm. Obviously not!
For anyone without Bonjour on windows – download latest iTunes & 7zip. Right click on iTunes.exe, choose 7zip, open archive, extract Bonjour msi. Install. Miraweb now works. This may explain the "websocket connection available at http://none:-1" on some comments.

Might have been useful to have a fall-back solution for non-apple users?

Working with a windows 10 phone, although a bit laggy compared to

Jan 06 2017 | 9:07 am

Any advice for this error?

websocket connection available at http://none:-1

Jan 06 2017 | 9:19 am


Any other information about your setup?
What OS?
What computer model?
Latest version of the Mira and Miraweb Packages?
Any customizations to localhost or the computer’s network settings?
When you try to connect via http://localhost:8086/ in a browser on the same machine, what happens?
When do you see the error?


Jan 07 2017 | 7:18 am

10.10.5 on mid 2014 macbook pro… latest versions of Max 7, Mira and Miraweb…

No customizations that I’m aware of. Tried that link in all 3 browsers, it’s saying "localhost refused to connect."

The message loads immediately upon opening Miraweb Launcher… refresh button gives same result.

Thanks for the reply, hopefully this is a simple fix!

Also haven’t seen any posts about ad hoc implementations, and since I haven’t been able to get it to work yet with an internet connection I haven’t been able to test it without one… Is this possible?

Jan 07 2017 | 9:31 am

Just updated to latest OS Sierra… same problem

Jan 09 2017 | 5:17 am


Great add-on!

One question: Is there some way to full cover my 16:9 cellphone screen, It seems mira.frame aspect ratio is fixed to 4:3

Any ideas?

Jan 09 2017 | 8:25 am

@GBRAVETTI Thanks for checking it out! Head over to the Miraweb Github repository for bugs and feature requests in the ‘Issues’ section. The aspect ratio issue is described here:

We are hoping to implement something soon to address this issue.


Jan 09 2017 | 8:28 am

@GMIX I’d recommend dropping a note to Support where we can get more in depth with you:


Jan 14 2017 | 6:22 pm

+1 for Pedro’s request for TEXT INPUT from browser into Max… I suppose the good ol’ "maxhole" + [textedit] will have to do for now, but seems like if you can integrate multi-touch and all the other UI elements, text should not be too difficult…

Also, let the awesome folks from the BACH project integrate bach.roll and bach.score into MIRA! I know they were drooling over this years back, I hope the dream is still alive to get some 3rd party access to the MIRA-fest!

Talk about REAL-time awesomeness… yikes, that would just about put Miraweb over the top!

Thanks again for this awesome package, and the troubleshooting help earlier! Awesome work, and best of all my students can experience MIRA for free… everyone seems to have forgotten the elimination of that app store price tag! Happy New Year folks! Cheers,

Jan 17 2017 | 5:34 am

Today I was experimenting with the awesome Miraweb during an event at University of Granada (PIIISA project) with a lot of students and devices. That was our experience:

Number of devices connected at the same time:
I used an ad-hoc net via my Samsung Android. Apparently it can host only 8 devices. So, we couldn’t test with more than 8 at the same time. Finalle, we managed to connect 4 devices with a 5 tabs Miraweb URL (including laptops and mobile phones). Other devices could load the URL and get the Miraweb connection dialog, but once the mouse was on the Connect button, an icon of forbidden signal appeared. I didn’t tried this time with an ad-hoc net built with my MacBook Pro, because apparently is not visible to Android mobiles (perhaps for security reasons).

We got two different situations. Sometimes Max crashes immediately after activating Miraweb. But when after some attempts Miraweb were succesfully initialized, all the stuff runned very smoothly and responsive, and it went very stable within a 15 minuts impro patch demanding quite heavy CPU usage.
We highly appreciate anyone sharing similar experiencies.

Macbook Pro 2,7 Ghz Intel Core i5 – macOS Sierra 10.12.2
Max 7.3.1, Miraweb 1.0.1, Mira 1.1.9
Ad-hoc Wi-Fi connection made with a Samsung Core Prime

Jan 17 2017 | 6:31 am

@GMIX glad to hear we were able to get MiraWeb running on your end and curious how your students put MiraWeb into use in your classes!

@José Exciting! Thanks for sharing these insights and valuable feedback and seems like there might be some improvements to make in order to ease the MiraWeb experience for these scenarios!

In general I’d like to point out again that most of MiraWeb (in fact all of the client side code) is a MIT licensed, Open-Source project. So ideally we’d like to have the community drive further development, bug fixes and features of this project. There are a lot of potential areas for enhancements but maybe also scenarios where MiraWeb could be improved in order to make it more suitable for a wider range of use-cases. Given the amount of possibilities it feels very appealing to shape further progress of this project with you as users, testers and contributors. Especially for the latter we appreciate your input, are happy to discuss ideas/bug reports/feature requests, but will also accept pull requests and keep contributing ourselves. We understand that it’s rather big and JavaScript based project but we are encouraging everyone to get involved and will of course provide support, documentation or just help/testing if necessary.

Ben mentioned the GitHub repositories already in his initial post here. But let me provide them here again for convenience:


Xebra.js (in case you are using the xebra state/protocol without the MiraWeb client)

Please feel free to use these and especially the Issues section to report bugs, file feature requests or just discuss certain behaviour. Even if you won’t be contributing code we appreciate all input and help, including ticketing, which also helps other people to see what sort of work can/might be done down the line.

So considering this concept I went ahead and filed the following issues based on the latest reports in this thread and yeah, please feel free to add/comment/contribute on GitHub:

Keyboard Input
Totally agree! A feature like keyboard input for UI objects could be helpful! It might even be a potentially interesting entry point for someone willing to contribute code to the MiraWeb project. I filed a Feature Request ticket here:

Connect Dialog Feedback
I think the way the connection dialog switches to a ‘disabled’ button instead of giving more appropriate feedback when attempting to connect might be a bit confusing.

We are also definitely interested in the instances where you were experiencing crashes related to MiraWeb or situations where a client wasn’t able to connect. In order to make it easier for us to track this down crashlogs, system and Max info would be really valuable.

Last but not least, exciting to see that MiraWeb is already getting put into use by you on a broad range of devices.


Jan 17 2017 | 6:39 am

are there any plans in the near future to publish a mira(web) API so that 3rd party developers could add mira support for their objects?

Jan 17 2017 | 7:25 am

@Volker Here is what I can say in terms of MiraWeb and Xebra.js:

The initial release of Xebra.js was limited to a list of built-in objects and parameters. There is a ticket ( for opening this up in order to allow 3rd party objects to share their attrs with a client. It’s been worked on but not released yet. Given that Xebra.js will support this in an upcoming release and you could easily write a Xebra.js based web project supporting your object/external.

Apart from that, MiraWeb currently doesn’t offer a good, clear path of extending the application other than a fork and custom build. So in order to make 3rd party object support more feasible we’d be curious if there are ways you can imagine this to happen/work.

Jan 18 2017 | 4:19 am

Thank you very much for your quick answer, @Florian. This was our first experience with a mid-size audience, but new dates are coming for the next months, as part of this project. We will test Miraweb in a more systematical way, in order to get detailed information about performance, limits and crashes, according to your advice. I understand you prefer receiving this kind of feedback via GitHub. If you need some specific data about our tests, feel free to ask it. It will be nice to help a bit with the improvement of this wonderful new tool.

Viewing 70 posts - 1 through 70 (of 70 total)

Forums > MaxMSP