45 lines
976 B
C++
45 lines
976 B
C++
#ifndef _MUSIC_MELODICMINORSCALE_HPP_
|
|
#define _MUSIC_MELODICMINORSCALE_HPP_
|
|
#ifndef _MUSIC_AEOLIANSCALE_HPP_
|
|
#include <music/AeolianScale.hpp>
|
|
#endif
|
|
|
|
class MelodicMinorScale;
|
|
typedef MelodicMinorScale MinorMajorScale;
|
|
|
|
class MelodicMinorScale : public AeolianScale
|
|
{
|
|
public:
|
|
MelodicMinorScale(Note root=Note::E);
|
|
virtual ~MelodicMinorScale();
|
|
protected:
|
|
virtual void createScale(void);
|
|
private:
|
|
};
|
|
|
|
inline
|
|
MelodicMinorScale::MelodicMinorScale(Note root)
|
|
: AeolianScale(root,"MinorMajorScale(MelodicMinorScale)")
|
|
{
|
|
createScale();
|
|
}
|
|
|
|
inline
|
|
MelodicMinorScale::~MelodicMinorScale()
|
|
{
|
|
}
|
|
|
|
inline
|
|
void MelodicMinorScale::createScale()
|
|
{
|
|
AeolianScale::createScale();
|
|
Note note=getDegree(Degree::VI); // MelodicMinor sharps the 5th degree of the natural minor scale
|
|
note++;
|
|
setDegree(Degree::VI,note);
|
|
note=getDegree(Degree::VII);
|
|
note++; // MelodicMinor sharps the 7th of the natural minor scale
|
|
setDegree(Degree::VII,note);
|
|
}
|
|
#endif
|
|
|