/***************************************************************************
                          Scales.h  -  description
                             -------------------
    begin                : Fre Aug 15 2003
    copyright            : (C) 2003 by klaus frieler
    email                : kgf@omniversum.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/
#ifndef SCALES_H
#define SCALES_H
#include "Types.h"


class Scale
{
   static const uint major[];
   static const uint minor1[];
   static const uint minor2[];
   static const uint minor3[];
   static const uint chromatic[];

public:
      Scale(){}
      Scale(uint scale);
      Scale(vector<uint> scale):m_scale(scale), m_sz(scale.size()){}
      ~Scale(){m_scale.clear();}

      void           setScale(uint scale);
      uint           getScaleDegree(uint pitchClass);
      vector<uint>   getScaleAbsolute(uint baseTone, uint mode);

protected:
      vector<uint> m_scale;
      uint         m_sz;
};
#endif
