Giter VIP home page Giter VIP logo

m5stickc-plus-ringtone-jukebox's Introduction

M5StickC-Plus-Ringtone-Jukebox

The Ringtone Jukebox is a front end interface for the M5StickC Plus that allows playing of RTTTL (Ringtone Text Transfer Language) ringtones/tunes/jingles/songs via the internal buzzer of the hardware. It was inspired by Dave Hyland's RTTTL parser, which he contributed to the MicroPython forum in July 2016. You can read the topic here: https://forum.micropython.org/viewtopic.php?f=14&t=2172&p=12291


Objective

The objective of this project was to implement the RTTTL functionality using the M5Stack uiFlow Blockly IDE and create a user interface for the ringtones. My goal was to use as many native, non-customized blocks as I could. But in reality, there are limitations and bugs with the uiFlow IDE, in which I had to use a few execute blocks to workaround those issues.


Current Functionality

  • Browse a catalog of ringtones (6 pages), select the ringtone, and play it.
  • Play a random ringtone
  • Set the volume

Future Functionality (WIP)

  • Play all ringtone in consecutive order
  • Shuffle all ringtones
  • "Name that tune" game mode with players and score tracking

Installation Instructions

  1. Copy rtttl.py and songs.py to the M5StickC Plus device using Adafruit ampy CLI tool (preferred), Thonny IDE, or Mu IDE and put them in the /flash directory
  2. Using your browser (Chrome is preferred), go to the web uiFlow IDE at https://flow.m5stack.com
  3. Open RingtoneJukebox.m5f using the menu in the upper right of the IDE
  4. Run the program (using the Play button) or Download the program (using the Download option in the IDE menu) to your M5StickC Plus device

Navigation Instructions

NOTE: There are 3 buttons on the M5StickC Plus. Power/Reset on the left side, Button A (labeled M5) on the front, and Button B on the right side.

After the program loads, the user is presented with the Menu.

Menu

Menu

  • Press Button B to move the selection dot down the list. It will wrap back to the top after the last menu item.
  • Press Button A to select that menu item.

Browse Catalog

Browse Catalog

  • Press Button B to move the selection dot down the list. It will go to the next page after the last ringtone on the current page. After the last ringtone on page 6 it will wrap back to page 1.

  • Long press Button B (for 2 seconds) to skip to the next page of the catalog

  • Press Button A to play your selection. When a ringtone is playing, press Button B to stop the ringtone and return to the previous menu.

    Playing

  • To get back to the menu from the catalog, press Button A and Button B simultaneously

Volume

Volume

  • Press Button B to increase the volume
  • Press Button A to decrease the volume
  • Press Button A and Button B simultaneously to save the volume setting and go back to the menu

uiFlow

Flow

To update a ringtone

  • Copy and replace the ringtone code into songs.py for the ringtone that you want to update.
  • Copy the updated songs.py file to the M5StickC Plus device
  • Update the ringtone's title in one of the page1 through page6 list definitions in the Setup block (note: right-click the block and click "Expand Block" to see the list of titles)
  • Run/Download the program on the M5StickC Plus

Background Information

The RTTTL specification is described here in detail:

https://www.mobilefish.com/tutorials/rtttl/rtttl_quickguide_specification.html

http://www.convertyourtone.com/rtttl.html

Many more sample ringtones can be found here: http://www.convertyourtone.com/ringtones.html

m5stickc-plus-ringtone-jukebox's People

Contributors

bstein2379 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.