~s-cecilio/lenmus/v5.3

« back to all changes in this revision

Viewing changes to include/lenmus_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-2012 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 __LENMUS_METRONOME_H__        //to avoid nested includes
22
 
#define __LENMUS_METRONOME_H__
23
 
 
24
 
//lomse
25
 
#include "lomse_metronome.h"
26
 
using namespace lomse;
27
 
 
28
 
//lenmus
29
 
#include "lenmus_injectors.h"
30
 
#include "lenmus_midi_server.h"
31
 
using namespace lenmus;
32
 
 
33
 
//wxWidgets
34
 
#include <wx/wxprec.h>
35
 
 
36
 
#ifndef WX_PRECOMP
37
 
#include <wx/wx.h>
38
 
#endif
39
 
 
40
 
 
41
 
namespace lenmus
42
 
{
43
 
 
44
 
//forward declarations
45
 
class GlobalMetronome;
46
 
 
47
 
 
48
 
//---------------------------------------------------------------------------------------
49
 
class MetronomeTimer : public wxTimer
50
 
{
51
 
private:
52
 
    GlobalMetronome* m_pOwner;
53
 
 
54
 
public:
55
 
    MetronomeTimer(GlobalMetronome* pOwner) : wxTimer(), m_pOwner(pOwner) {}
56
 
 
57
 
    void Notify();
58
 
 
59
 
};
60
 
 
61
 
//---------------------------------------------------------------------------------------
62
 
class GlobalMetronome : public Metronome
63
 
{
64
 
private:
65
 
    int m_nSound;               //last click on sound
66
 
    MetronomeTimer* m_pTimer;   //timer associated to this metronome
67
 
    MidiServer* m_pMidiServer;
68
 
 
69
 
public:
70
 
    GlobalMetronome(ApplicationScope& appScope, long nMM = 60);
71
 
    ~GlobalMetronome();
72
 
 
73
 
    // mandatory overrides
74
 
    void start();
75
 
    void stop();
76
 
 
77
 
    // timer events handler
78
 
    void OnTimerEvent();
79
 
 
80
 
    // commands
81
 
    void DoClick(bool fFirstBeatOfBar=true);
82
 
 
83
 
 
84
 
private:
85
 
    void ClickOn(bool fFirstBeatOfBar);
86
 
    void ClickOff();
87
 
 
88
 
};
89
 
 
90
 
 
91
 
}   // namespace lenmus
92
 
 
93
 
#endif    // __LENMUS_METRONOME_H__
94