(ENGLISH TRANSLATION BELOW)
VIBRA har per april 2018 kjøpt inn 3 Myo sensorarmbånd og har tilgang på ytterligere ett i privat eie. Armbåndet var interessante for VIBRA fordi det integrerte flere typer sensorer og trådløs overføring av sensordata via blåtann i en kompakt pakke som er enkel å bruke å grei og lite forstyrrende å ha på. Det eksisterer også flere tilgjengelige programvareløsninger som gir lett tilgang til sensordata - jeg skal gå inn på to av disse nedenfor.

Armbåndene ble lansert av Thalmic Labs i 2015 som en innretning som kunne styre ulike typer programvare ved hjelp av armbevegelser. Armbåndet har 8 elektromyografiske sensorer i form av elektrodepar som er plassert på hver sin lille klump på armbåndet. I tillegg har armbåndet såkalte IMU-sensorer (Inertial measurement Unit), som omfatter akselerometer (3D), gyroskop (3D) og en innebygget kalkulering av romlig orientering i form av såkalte quaternions (wxyz). Armbåndet har også en innebygget gestgjenkjenning, som kanskje ikke er kjemperobust - den funker i tre av fire tilfeller.
Pakken man får fra Thalmic Labs inneholder armbånd, blåtannadapter og USB-kabel for lading, og installeres enkelt ved å følge instruksjonene som følger på nettside og programvare (MyoConnect). Det er imidlertid litt irriterende at man ofte kan slite med å få koblet til armbåndet til programvaren hvis man har flere armbånd i bruk. F.eks. bør man starte programvaren før armbåndet er på for å unngå manglende kontakt. Ladinga av armbåndet fungerer for øvrig greit og batteritida rekker fint til en økt på 3-4 timer.
Oppsett med myo-for-max eller Myo Mapper
Thalmic tilbyr en SDK til utviklere sånn at man skal kunne utvikle programvare som bruker Myo til ulike formål og dette har dannet utgangspunktet for flere grensesnitt til armbåndet. Som Nymoen et al. (2015) påpeker har armbåndet fra kort etter lanseringen blitt brukt til musikalske applikasjoner, og forfatterne viste også i sin studie en prototype av et instrument kontrollert med armbåndet, kalt MuMYO. Det eksisterer også grensesnitt for å bruke Myo med Open Frameworks, Javascript og Processing, men i denne posten skal vi se på myo-for-max av Jules Francois og Myo Mapper av Balandino Di Donato.
Myo-for-max er en pakke utviklet av Jules Francois ved Simon Fraser University med et eksternt objekt (external), hjelpefiler og eksempler som kan lastes ned og brukes i Max 6.1 eller høyere. Her er det testet på OSX 10.12.6 med Max 7.3.4, og der plasseres nedlastningsmappen i mappen ~/Max 7/Packages sammen med øvrige pakker man har installert. Objektet som enkelt nok er kalt myo kobles enkelt opp mot armbåndet ved å sende beskjedene <Connect> og <Stream 1>. Ved å åpne hjelpefila (Cmd+Shift+H) får man en fin oversikt over hvordan man lett kan få tilgang til å strømme sensordataene (se bilde 1) samtidig som ferdig oppsatte multislider-objekt gir en grei grafisk oversikt over dataene som kommer inn.

Her ser vi hvordan både akselerometer, gyroskop, quaternions og EMG kommer ut som lister fra hver sin utgang, mens navn på gjenkjente gester, signalstyrke + batterinivå kommer ut fra henholdsvis utgang 5 og 6. Mulighetene for å lage enkle grafiske representasjonen er en av de store fordelene med myo-for-max etter min mening, samtidig som det åpner for enkel integrasjon med lyd- og evt. video-generering og/eller bearbeiding med Max og/eller Jitter. Ulempen er selvsagt at man må gå til innkjøp av Max, som jo koster litt, især hvis man ikke er student eller lærer ($399).
Skal man, som jeg gjør, bruke Csound til lydgenerering, og/eller dele data med andre, må man imidlertid sette opp kommunikasjon via Open Sound Control (OSC) med udpsend og udpreceive-objektene. Dette er ikke veldig arbeidskrevende, men gjør jo selvsagt at man må fikle litt mer før man får lyd og/eller video fra armbåndet.
Skal man bruke flere armbånd så må man passe på at man gir unike navn til hvert av dem. For at disse navnene skal komme opp i Max må man imidlertid kjøre en omstart på MyoConnect, koble til armbåndene på nytt og til sist starte Max og koble til armbåndene med riktige beskjeder. Under testinga fant vi også ut at det i MyoConnect maksimalt kan være tre armbånd koblet til på samme tid, på tross av at det i det grafiske grensesnittet ser ut som om det skal kunne kobles til flere. Ved å sende en <devices> beskjed til myo-objektet får man så opp tilgjengelige armbånd, og deretter setter man enklest opp riktig armbånd ved å sette <@device armbåndnavn> som argumenter i myo-objektet.
MyoMapper er på sin side et ferdig program, med de fordelene og ulempene som det medfører. En ulempe er at man har mindre fleksibilitet, mens den viktigste fordelen er at det er lett å komme i gang. Her skjer tilkoblingen når man starter opp programmet, men også her må man sørge for at armbåndene er oppe i MyoConnect før oppstart. Her får man imidlertid ikke tilgang til navnene på armbåndene, men må velge nummer på hvert armbånd. Dette er litt tungvint, og gjør at man i stedet må prøve seg fram hvilket som er hvilket. Når man har programmet oppe å kjøre, trykker man <Start>, og så er strømminga av sensordata over OSC igang.
En av fordelene med MyoMapper er at strømming av sensordata over OSC er integrert i programmet. Her er innstillingene for å strømme OSC er lett tilgjengelige i ett av de tre vinduene som er tilgjengelig. I Settings-vinduet (se bilde, øverst til venstre) stiller man porten og IP-adressen i «OSC to main»-avdelingen, og deretter kan man bare huke av for parametere som man ønsker å strømme i Features-vinduet (se bilde, nederst til venstre). Her er det lagt inn både rådata og ulike former for skalering og filtrering, bl.a. glidende gjennomsnitt (moving average), førsteordens differanse, gjennomsnittlig absoluttverdi og annet. Dette gjør at disse typene bearbeiding er svært lett tilgjengelige. For de parameter det gjelder, kan man også stille størrelsen på vinduet eller «bufferen» som det kalles her. Merk at mulighetene her er en god del større i versjon 3 (som ennå ikke finnes på win) sammenlignet med versjon 2. En fin egenskap er at når man holder musa over avkrysningsboksen for den aktuelle parameteren, så får man opp OSC-adressen, samtidig med en liste over antall/typer data.

I Orientation-vinduet kan man også gjøre en del innstillinger som kan endre skalering, forskyving (offset) og invertering (flip), i tillegg til at man kan endre utgangsposisjonen, altså det man betrakter som null-punktet. Her har man også en grafisk representasjon av verdiene gjennom en type glidebryter, noe som gir en grei visualisering. Noe slikt kunne man for så vidt ha ønsket seg også for de andre dataene.
Alt i alt gjør begge program det enkelt å bruke Myo-armbånd som musikalske kontrollere. Begge har sine fordeler og ulemper. Mens myo-for-max krever Max installert og noe fikling før man har brukbare data som man kan distribuere via OSC, gjør Max-rammeverket at man har gode muligheter for visualisering og ulike typer bearbeiding og at man kan gjøre store tilpasninger i oppsettet. Myo Mapper på sin side er veldig lett å få i gang, og særlig versjon 3 har mange muligheter for filtrering og skalering. Programmet har imidlertid liten fleksibilitet og bare visualisering av noen få parametere. I VIBRA har vi landet på Myo Mapper, bl.a. fordi den muliggjør en enkel videresending av parameter til vår OSC server, og fordi vi uansett åpner for å ha filtrering og bearbeiding distribuert til andre maskiner.
ENGLISH TRANSLATION
VIBRA has purchased 3 Myo sensor armbands in April 2018 and has access to another one in private ownership. 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.
Setup with myo-for-max or MyoMapper 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 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 <Connect> and <Stream 1> messages. Opening a help file (Cmd + Shift + H, see image 2 above) gives you a nice overview of how to easily access the sensor data (see Figure 1), while pre-set multislider objects provide a straightforward graphical overview of the data that comes in.
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 <devices> message to the myo object, you get a list of available armbands, and then you can easily put the correct armband by putting <@device armband name> as arguments in the myo object.
MyoMapper 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 <Start>, and then the sensor data will be streaming over OSC.
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.
Conclusion
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.
Referanse/reference
Nymoen, K., Haugen, M.R., and Jensenius, A.R., 2015. Mumyo–evaluating and exploring the myo armband for musical interaction. In Proceedings of the Proceedings of The International Conference on New Interfaces of Musical Expression Conference (Baton Rouge, LA2015), 215-219.