~s-cecilio/lenmus/v5.3

« back to all changes in this revision

Viewing changes to src/sound/Metronome.h

  • Committer: cecilios
  • Date: 2012-07-05 18:23:21 UTC
  • Revision ID: svn-v4:2587a929-2f0e-0410-ae78-fe6f687d5efe:branches/TRY-5.0:706
fix cmakelist

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//--------------------------------------------------------------------------------------
 
2
//    LenMus Phonascus: The teacher of music
 
3
//    Copyright (c) 2002-2010 LenMus project
 
4
//
 
5
//    This program is free software; you can redistribute it and/or modify it under the 
 
6
//    terms of the GNU General Public License as published by the Free Software Foundation,
 
7
//    either version 3 of the License, or (at your option) any later version.
 
8
//
 
9
//    This program is distributed in the hope that it will be useful, but WITHOUT ANY 
 
10
//    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
 
11
//    PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
12
//
 
13
//    You should have received a copy of the GNU General Public License along with this 
 
14
//    program. If not, see <http://www.gnu.org/licenses/>. 
 
15
//
 
16
//    For any comment, suggestion or feature request, please contact the manager of 
 
17
//    the project at cecilios@users.sourceforge.net
 
18
//
 
19
//-------------------------------------------------------------------------------------
 
20
 
 
21
#ifndef __LM_METRONOME_H__        //to avoid nested includes
 
22
#define __LM_METRONOME_H__
 
23
 
 
24
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 
25
#pragma interface "Metronome.cpp"
 
26
#endif
 
27
 
 
28
// For compilers that support precompilation, includes <wx/wx.h>.
 
29
#include <wx/wxprec.h>
 
30
 
 
31
#ifdef __BORLANDC__
 
32
#pragma hdrstop
 
33
#endif
 
34
 
 
35
#ifndef WX_PRECOMP
 
36
#include <wx/wx.h>
 
37
#endif
 
38
 
 
39
class lmMetronome;        //forward declaration
 
40
 
 
41
class lmMetronomeTimer : public wxTimer
 
42
{
 
43
public:
 
44
    lmMetronomeTimer(lmMetronome* pOwner) : wxTimer() { m_pOwner = pOwner; }
 
45
 
 
46
    virtual void Notify();
 
47
 
 
48
private:
 
49
    lmMetronome*    m_pOwner;
 
50
 
 
51
};
 
52
 
 
53
class lmMetronome
 
54
{
 
55
public:
 
56
    lmMetronome(long nMM = 60);
 
57
    ~lmMetronome();
 
58
 
 
59
    // settings
 
60
    void SetMM(long nMM);
 
61
    void SetInterval(long milliseconds);
 
62
 
 
63
    // accessors
 
64
    long GetMM() { return m_nMM; }
 
65
    long GetInterval() { return m_nInterval; }
 
66
    bool IsEnabled() { return m_fEnabled; }
 
67
    bool IsRunning() { return m_fRunning; }
 
68
 
 
69
    // timer events handler
 
70
    void OnTimerEvent();
 
71
 
 
72
    // commands
 
73
    void Start();
 
74
    void Stop();
 
75
    void Enable(bool fValue) { m_fEnabled = fValue; }
 
76
    void DoClick(bool fFirstBeatOfBar=true);
 
77
 
 
78
 
 
79
private:
 
80
    void ClickOn(bool fFirstBeatOfBar);
 
81
    void ClickOff();
 
82
 
 
83
    int         m_nSound;       //last click on sound
 
84
    long        m_nMM;          //metronome frequency: beats per minute
 
85
    long        m_nInterval;    //metronome period: milliseconds between beats
 
86
    bool        m_fEnabled;     //metronome is enabled
 
87
    bool        m_fRunning;     //true if Start() invoked
 
88
    lmMetronomeTimer* m_pTimer; //timer associated to this metronome
 
89
 
 
90
};
 
91
 
 
92
#endif    // __LM_METRONOME_H__
 
93