Class to play tones, various sounds and music in MML format using a PWM channel.
PwmSound.h
- Committer:
- paulg
- Date:
- 2014-03-30
- Revision:
- 0:185bcd9f8e19
- Child:
- 1:67056b9df9ff
File content as of revision 0:185bcd9f8e19:
/****************************************************************************** * File: PwmSound.h * Author: Paul Griffith * Created: 25 Mar 2014 * Last Edit: see below * Version: see below * * Description: * Definitions for PwmSound class. * * Copyright (c) 2014 Paul Griffith, MIT License * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to * deal in the Software without restriction, including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. * * Modifications: * Ver Date By Details * 0.00 25Mar14 PG File created. * 1.00 30Mar14 PG Initial release * ******************************************************************************/ #ifndef MBED_PWMSOUND_H #define MBED_PWMSOUND_H #include "mbed.h" class PwmSound { //private: public: enum MusicStyle { STACCATO, NORMAL, LEGATO }; PwmSound(PinName pin); void tone(float frequency, float duration); //tones void tone(float frequency); void stop(void); void duration(float duration); void volume(float volume); void bip(int n = 1); //beeps and other sounds void beep(int n = 1); void bleep(int n = 1); void buzz(int n = 1); void siren(int n = 1); void trill(int n = 1); void phone(int n = 1); void note(int number, int length); //musical note void tempo(int tempo); void style(MusicStyle style); void tune(unsigned char* t); //play tune from data in array private: PwmOut _pin; float _duration; //duration of tone in seconds float _volume; //crude volume 0.0-1.0 => 0-50% duty cycle int _tempo; //pace of music in beats per minute (32-255) //one beat equals one quarter note (ie a crotchet) int _length; //length of note (1-64), 1 = whole note, 4 = quarter etc MusicStyle _style; //the following support continuous two-tone sounds in background void _setup(float freq1, float freq2, float duration); void _sustain(void); Ticker _sustainTkr; float _freq1; float _freq2; bool _beat; bool _playing; }; #endif // END of PwmSound.h