summaryrefslogtreecommitdiff
path: root/noncore/multimedia/tonleiter/tonleiterdatahelper.cpp
authorwaspe <waspe>2003-11-16 19:31:57 (UTC)
committer waspe <waspe>2003-11-16 19:31:57 (UTC)
commite7a81ed5ba0dc6b996f179d1dc40d778492218a9 (patch) (side-by-side diff)
tree62081f88e6dad4df5a2f278050cf402c2da9ed98 /noncore/multimedia/tonleiter/tonleiterdatahelper.cpp
parent0b0c071017298ebd189420f85b5aa8d44885c50e (diff)
downloadopie-e7a81ed5ba0dc6b996f179d1dc40d778492218a9.zip
opie-e7a81ed5ba0dc6b996f179d1dc40d778492218a9.tar.gz
opie-e7a81ed5ba0dc6b996f179d1dc40d778492218a9.tar.bz2
first commit
Diffstat (limited to 'noncore/multimedia/tonleiter/tonleiterdatahelper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/tonleiter/tonleiterdatahelper.cpp133
1 files changed, 133 insertions, 0 deletions
diff --git a/noncore/multimedia/tonleiter/tonleiterdatahelper.cpp b/noncore/multimedia/tonleiter/tonleiterdatahelper.cpp
new file mode 100644
index 0000000..6b8a5bd
--- a/dev/null
+++ b/noncore/multimedia/tonleiter/tonleiterdatahelper.cpp
@@ -0,0 +1,133 @@
+#include "tonleiterdatahelper.h"
+
+int Note::getOctaveOfNote(int note)
+{
+ int remain=note%12;
+ return (note-remain)/12;
+}
+//****************************************************************************
+QString Note::getNameOfNote(int note)
+{
+ int octave=getOctaveOfNote(note);
+ return notenames[note-12*octave];
+}
+//****************************************************************************
+int Note::getNoteFromName(QString name,int octave)
+{
+ int notevalue=0;
+ for(int a=0;a<12;a++)
+ {
+ if(name==notenames[a])
+ {
+ notevalue=a;
+ break;
+ }
+ }
+ return notevalue+12*octave;
+}
+//****************************************************************************
+int Note::octaveOfBaseNote(int base,int note)
+{
+ int normnote = (note>=base) ? note-base : (12-base)+note;
+ int octave=getOctaveOfNote(normnote);
+ //qDebug("note %d of %d base is norm %d -> ocatve %d",note,base,normnote,octave);
+ return octave;
+}
+//****************************************************************************
+//****************************************************************************
+Instrument::Instrument()
+{
+ name="UNDEFINED";
+ frets=0;
+}
+//****************************************************************************
+Instrument::Instrument(QString name,int frets,QValueList<int> strings)
+:name(name),frets(frets),strings(strings)
+{
+}
+//****************************************************************************
+Instrument::~Instrument()
+{
+}
+//****************************************************************************
+int Instrument::noOfStrings()
+{
+ return (int)strings.count();
+}
+//****************************************************************************
+int Instrument::noOfFrets()
+{
+ return frets;
+}
+//****************************************************************************
+QString Instrument::instName()
+{
+ return name;
+}
+//****************************************************************************
+int Instrument::string(int id)
+{
+ return strings[id];
+}
+//****************************************************************************
+int Instrument::noOfOctaves()
+{
+ int lowest=strings[0];
+ int highest=strings[strings.count()-1]+frets;
+ return (int)((highest-lowest)/12.0);
+}
+//****************************************************************************
+//****************************************************************************
+Scale::Scale()
+{
+ name="UNDEFINED";
+}
+//****************************************************************************
+Scale::Scale(QString name,QValueList<int> halftones)
+:name(name),halftones(halftones)
+{
+}
+//****************************************************************************
+Scale::~Scale()
+{
+}
+//****************************************************************************
+int Scale::noOfHaltones()
+{
+ return (int)halftones.count();
+}
+//****************************************************************************
+int Scale::getHalfTone(int id)
+{
+ if(id>=0 && noOfHaltones()<id)
+ {
+ return halftones[id];
+ }
+ else
+ return 0;
+}
+//****************************************************************************
+QString Scale::scaleName()
+{
+ return name;
+}
+//****************************************************************************
+bool Scale::noteInScale(int base,int note)
+{
+ int octave=Note::getOctaveOfNote(note);
+ note-=12*octave;
+ int normnote = (note>=base) ? note-base : (12-base)+note;
+
+ if(halftones.contains(normnote)>0)
+ {
+ //qDebug("OK : base : %d, note %d -> norm %d",base,note,normnote);
+ return true;
+ }
+ else
+ {
+ //qDebug("BAD : base : %d, note %d -> norm %d",base,note,normnote);
+ return false;
+ }
+}
+//****************************************************************************
+//****************************************************************************