#include #include FrettedNotes Fingering::getFingering(const Scale &scale) { FrettedNotes frettedNotes; FrettedNote frettedNote; frettedNotes.size(scale.size()); GlobalDefs::outDebug(scale.toString()); for(int index=0;indexFretboard::Frets) { mCurrString++; mCurrFret=0; if(mCurrString<0)return false; } mCurrFret++; } return found; } bool Fingering::getNext(FrettedNote &frettedNote,const FrettedNote &prevFrettedNote,const Note ¬e) { Note tmpNote; bool found; found=false; GlobalDefs::outDebug(String("[Fingering::getNext] Looking for ")+note.toString()); if(mCurrFret<0||mCurrString>5)return false; while(!found) { tmpNote=mFretboard.getAt(mCurrString,mCurrFret); GlobalDefs::outDebug(String("[Fingering::getNext] Str:")+String().fromInt(mCurrString)+String(" Fret:")+String().fromInt(mCurrFret)+String(" ")+tmpNote.toString()); if(tmpNote==note) { frettedNote.setString(mCurrString); frettedNote.setFret(mCurrFret); frettedNote.setNote(tmpNote); found=true; } if((mCurrFret-mAnchorFret)+1>mMaxStretchFrets) { mCurrFret=mAnchorFret-2; mCurrString++; // mAnchorFret=mCurrFret; if(mCurrString>5)return false; if(mCurrFret<0)mCurrFret=0; } if(mCurrFret>Fretboard::Frets) { mCurrString++; mCurrFret=0; if(mCurrString>5)return false; } mCurrFret++; } return found; }