Interactive dance collaboration
New interactive dance collaboration with dancer Camille Jackson and choreographer Robert Wechsler
VIBRA has four Myo armbands as of April 2018 and in this post we will give an outline of how they can be used in interactive work with movement with two different software solutions. The armband was interesting for VIBRA because it integrated several types of sensors and wireless transmission of sensor data via bluetooth into a compact package that is easy to use. There are also several available software solutions that provide easy access to sensor data - I will review two of these below.
The Myo armbands were launched by Thalmic Labs in 2015 as a device that could control various types of software using arm movements. The armband has 8 electromyographic sensors in the form of electrode pairs that are placed around the armband. In addition, the armband has so-called Inertial Measurement (IMU) sensors, which include accelerometer (3D), gyroscope (3D) and a built-in spatial orientation calculation in the form of quaternions (wxyz). The armband also has a built-in gesture recognition, which is not its greatest feature - it works in three out of four cases.
The package provided by Thalmic Labs includes armband, bluetooth adapter and USB cable for charging, and is easily installed by following the instructions provided on the website and software (MyoConnect). However, it is a little annoying that you can often struggle to connect the armband to the software if you have more armbands in use. E.g. you have to remember to start the software before the armband is turned on to avoid failing contact. The charging of the armband works well, and the battery lasts about 3-4 hours.
Thalmic offers a SDK for developers in order to be able to develop software that uses Myo for various purposes, and this has formed the basis of several interfaces to the armband. As Nymoen et al. (2015) points out, the armband was used in musical applications only shortly after launch, and the authors also demonstrated in their study a prototype of an instrument controlled by the armband, called MuMYO. There are also interfaces for Myo in Open Frameworks, Javascript and Processing, but in this blog post we will look at the myo-for-max of Jules Francois and MyoMapper by Balandino Di Donato.
Myo for Max help window
Myo-for-Max is a package developed by Jules Francois at Simon Fraser University with an external object, help files and examples that can be downloaded and used in Max 6.1 or higher. Here it is tested on OSX 10.12.6 with Max 7.3.4, and the download folder was placed in the ~ /Max 7/Packages folder together with other packages I had installed. The object, simply called myo, is easily connected to the armband by sending the
In image 2 above, we can see how both accelerometers, gyroscopes, quaternions and EMG appear as lists from outlets 1-4, while recognized gestures, signal strength + battery levels are sent to outlets 5 and 6. The ability to make simple graphical representation is one of the great benefits of myo-for-max in my opinion, while allowing for easy integration with audio and video generation and / or processing with Max and / or Jitter. The drawback is, of course, that you have to purchase of Max if you don’t own it, which is quite costly, especially if you are not a student or a teacher ($ 399).
If you want to use Csound for audio generation and/or sharing data with others, as I do, you have to set up communication through Open Sound Control (OSC) with the udpsend/receive objects. This is not very labor-intensive, but of course you have to do a little more preparation until you get data from the armband.
Should you use more armbands, make sure that you give unique names to each of them. However, in order for these names to come up in Max, you must reboot MyoConnect, reattach the armbands and finally start Max and connect the armbands with the correct messages. During testing, we also found that in MyoConnect, at most three armbands can be connected at the same time, despite the fact that in the graphical interface there seems to be more free slots. By sending a
MyoMapper is, on its own, a complete program, with the advantages and disadvantages it brings. One disadvantage is that you have less flexibility, while the main advantage is that it is easy to get started. In the same way as in myo-for-max the connection happens when you start the program, and similarly you also have to make sure that the armbands show up in MyoConnect before startup. Here, however, you will not be able to access the names of the armbands but must choose the number of each armband. This is a little cumbersome, and instead of identifying them by their name, you have to try out which one is which. To run the program, press
Myomapper main window
One of the advantages of MyoMapper is that streaming of sensor data over OSC is integrated into the program. Here the settings for streaming OSC are readily available in one of the three windows available. In the Settings window (see image 3 above, top left), you can set the port and IP address in the “OSC to Main” section, and then you can simply select the parameters that you want to stream in the Features window (see picture, bottom left). Here, both raw data and different types of scaling and filtering are included. moving average, first order difference, average absolute value and more. This allows these types of filtering and calculations to be very easily available. For the parameters that it applies to, you can also set the size of the window or the “buffer” as it is called here. Note that the possibilities here are a lot bigger in version 3 (which is not yet on win) compared to version 2. A nice feature is that when you hover over the checkbox for that parameter, you get the OSC address at the same time with a list of number / types of data.
In the Orientation window (see image 3 above), you can also make some settings that can change scaling, offset, and inversion (flip), as well as changing the center position, which is considered to be the zero point. Here you also have a graphical representation of the values through a type of slider, which gives a clear visualization. Something like this would have been nice also for many of the other data streams.
All in all, both programs make it easy to use Myo armbands as musical controls. Both have their pros and cons. While myo-for-max requires Max installed and some fixing before you have usable data that can be distributed via OSC, the Max framework makes it fairly easy to visualize and do different types of filtering and calculations, and that you can make major adjustments to the setup. MyoMapper, on the other hand, is very easy to get started with, and especially version 3 has many possibilities for filtering and scaling. However, the program has little flexibility and only visualization of a few parameters. In VIBRA we have landed on MyoMapper, including because it allows for a simple forwarding of parameters to our OSC server and because we need to distribute filtering and processing to other machines.