Skip to content

Latest commit

 

History

History

EightBitTunes

TuneManager

A C++ library for Arduino that uses ABC Notation to read music information from an SD Card and play it to a piezo.
For more information on the ABC Notation: http://abcnotation.com/
You can search their large database of ABC Notated songs here: http://abcnotation.com/search
Many more songs can be found outside of this website, just google phrases such as "[song name] abc notation"!

This library does not fully support ABC Notation, it only supports what is needed from the notation to play a basic (one note at a time) 8bit song.

To be more specific, this library currently supports:

  • Four continuous octaves (starting at the octave below Middle C)
  • Flats, Sharps, Normalized Notes (no doubles) (examples: ^A is A sharp, _A is A flat, =A is normal A)
  • Modifying note durations (examples: A2 is the A note for twice the default duration, A/2 and A/ are half default duration, A3/4 is 75% of default duration)
  • The following header fields (both in the header and in mid-tune when surrounded by [] tags) :
    - M - Meter (default: 4/4)
    - L - Note Length (default: 1/8)
    - Q - Tempo (default: 120)

This library IGNORES:

  • The K - Key Header, currently this library defaults to C Major Key
  • Repeat symbols ( :| )
  • Any stemmed notes, except for the first note in the bracketed stem (ex: in the simple stem [ABC], only A would play, B and C would be ignored)
  • Doubled up flats/sharps, these will default to single flats/sharps respectively (ex: ^^A will be interpretted as ^A)
  • Anything inside double quotes (")
  • Any whitespace or decorative characters (such as bars |, parenthesis (), newlines, etc)

This library will break/error or display undefined behaviour if:

  • The K - Key Header is not the last header (either in the initial header set or the mid-tune header changes)

Note: This library is still in development and is potentially unstable. Some known bugs include potentially incorrect tempo parsing and some undefined behaviours with certain extra characters.