Files
Work/guitar/Fingering.hpp
2024-08-07 09:16:27 -04:00

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 &note);
bool getNext(FrettedNote &frettedNote,const FrettedNote &prevFrettedNote,const Note &note);
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