#ifndef _MUSIC_MELODICMINORSCALE_HPP_ #define _MUSIC_MELODICMINORSCALE_HPP_ #ifndef _MUSIC_AEOLIANSCALE_HPP_ #include #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