Skip to main content

Announcements

[Oct 15, 2018] Thalmic Labs have announced the discontinuation of the Myo armband.

[Jun 28, 2018] Myo-Python 1.0 has been released. It comes with a number of API changes. If you have been following an older tutorial, you might have the new version installed but use code that worked with the old version.
Check the Migrating from v0.2.x section below.


Python bindings for the Myo SDK

Myo-Python is a CFFI wrapper for the Thalmic Myo SDK.

Table of Contents

Documentation

The documentation can currently be found in the docs/ directory in the GitHub Repository.

Example

Myo-Python mirrors the usage of the Myo C++ SDK in many ways as it also requires you to implement a DeviceListener that will then be invoked for any events received from a Myo device.

import myo

class Listener(myo.DeviceListener):
  def on_paired(self, event):
    print("Hello, {}!".format(event.device_name))
    event.device.vibrate(myo.VibrationType.short)
  def on_unpaired(self, event):
    return False  # Stop the hub
  def on_orientation(self, event):
    orientation = event.orientation
    acceleration = event.acceleration
    gyroscope = event.gyroscope
    # ... do something with that

if __name__ == '__main__':
  myo.init(sdk_path='./myo-sdk-win-0.9.0/')
  hub = myo.Hub()
  listener = Listener()
  while hub.run(listener.on_event, 500):
    pass

As an alternative to implementing a custom device listener, you can instead use the myp.ApiDeviceListener class which allows you to read the most recent state of one or multiple Myo devices.

import myo
import time

def main():
  myo.init(sdk_path='./myo-sdk-win-0.9.0/')
  hub = myo.Hub()
  listener = myo.ApiDeviceListener()
  with hub.run_in_background(listener.on_event):
    print("Waiting for a Myo to connect ...")
    device = listener.wait_for_single_device(2)
    if not device:
      print("No Myo connected after 2 seconds.")
      return
    print("Hello, Myo! Requesting RSSI ...")
    device.request_rssi()
    while hub.running and device.connected and not device.rssi:
      print("Waiting for RRSI...")
      time.sleep(0.001)
    print("RSSI:", device.rssi)
    print("Goodbye, Myo!")

Migrating from v0.2.x

The v0.2.x series of the Myo-Python library used ctypes and has a little bit different API. The most important changes are:

  • The Hub object no longer needs to be shut down explicitly
  • The DeviceListener method names changed to match the exact event name as specified by the Myo SDK (eg. from on_pair() to on_paired())
  • Hub.run(): The order of arguments is reversed (handler, duration_ms instead of duration_ms, handler)
  • myo.init(): Provides a few more parameters to control the way libmyo is detected.
  • myo.Feed: Renamed to myo.ApiDeviceListener

Projects using Myo-Python

Changes

v1.0.4 (2019-04-29)

  • Remove myo.quaternion, it was a leftover and the Quaternion class was actually in myo.types.math
  • move myo.types.math and myo.types.macaddr to myo package instead
  • myo.types package is now a stub for backwards compatibility
  • Depend on enum34 package instead of nr.types.enum which has been removed in nr.types>=2.0.0
  • Update the error message of a ValueError raised in myo.init()

v1.0.3 (2018-06-28)

  • Event.mac_address now returns None if the event's type is EventType.emg (#62)
  • Hub.run() now accepts DeviceListener objects for its handler parameter. This carries over to Hub.run_forever() and Hub.run_in_background().
  • Replace requirement nr>=2.0.10,<3 in favor of nr.types>=1.0.3

v1.0.2 (2018-06-09)

  • Fix Event.warmup_result (PR #58 @fribeiro1)

v1.0.1 (2018-06-09)

  • Fix Event.rotation_on_arm (#59)

v1.0.0 (2018-06-03)

  • Rewrite using CFFI

This project is licensed under the MIT License.
Copyright © 2015-2018 Niklas Rosenstein

Metadata

Release files for myo-python 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for myo-python 1.0.4
File Size Uploaded
myo-python-1.0.4.tar.gz 19.7 kB Details

Release files / myo-python-1.0.4.tar.gz

Download URL myo-python-1.0.4.tar.gz
Size 19.7 kB
Tags Source
SHA-256 checksum
How to use checksums
bfa54b6e4ead1ce13296fa6fd6bf88dd0f12922144bb41786bb4b71e78ace563
BLAKE2b-256 checksum
How to use checksums
ee439b931077a9e6d961f8c87b9a330679f3440b9c24a6624c039a74fe331d9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15

Release history Release notifications | RSS feed

1.0.5

2 release files

This release

1.0.4 This release

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page