71 lines
1.3 KiB
C++
71 lines
1.3 KiB
C++
#ifndef _GUITAR_FINGERING_HPP_
|
|
#define _GUITAR_FINGERING_HPP_
|
|
#ifndef _MUSIC_SCALE_HPP_
|
|
#include <music/scale.hpp>
|
|
#endif
|
|
#ifndef _GUITAR_FRETBOARD_HPP_
|
|
#include <guitar/Fretboard.hpp>
|
|
#endif
|
|
#ifndef _GUITAR_FRETTEDNOTE_HPP_
|
|
#include <guitar/FrettedNote.hpp>
|
|
#endif
|
|
|
|
class Fingering
|
|
{
|
|
public:
|
|
Fingering();
|
|
virtual ~Fingering();
|
|
FrettedNotes getFingering(const Scale &scale);
|
|
private:
|
|
enum{MaxStretchFrets=4,DefaultString=5};
|
|
bool getFirst(FrettedNote &frettedNote,const Note ¬e);
|
|
bool getNext(FrettedNote &frettedNote,const FrettedNote &prevFrettedNote,const Note ¬e);
|
|
int getCurrString(void)const;
|
|
void setCurrString(int currString);
|
|
int getCurrFret(void)const;
|
|
void setCurrFret(int currFret);
|
|
|
|
Fretboard mFretboard;
|
|
int mMaxStretchFrets;
|
|
int mStartString;
|
|
int mCurrString;
|
|
int mCurrFret;
|
|
int mAnchorFret;
|
|
};
|
|
|
|
inline
|
|
Fingering::Fingering()
|
|
: mMaxStretchFrets(MaxStretchFrets), mStartString(DefaultString), mCurrString(mStartString), mCurrFret(0)
|
|
{
|
|
}
|
|
|
|
inline
|
|
Fingering::~Fingering()
|
|
{
|
|
}
|
|
|
|
inline
|
|
int Fingering::getCurrString(void)const
|
|
{
|
|
return mCurrString;
|
|
}
|
|
|
|
inline
|
|
void Fingering::setCurrString(int currString)
|
|
{
|
|
mCurrString=currString;
|
|
}
|
|
|
|
inline
|
|
int Fingering::getCurrFret(void)const
|
|
{
|
|
return mCurrFret;
|
|
}
|
|
|
|
inline
|
|
void Fingering::setCurrFret(int currFret)
|
|
{
|
|
mCurrFret=currFret;
|
|
}
|
|
#endif
|