GUIDOLib  1.7.7
Guido Engine Internal Documentation
ARTab.h
1 #pragma once
2 
3 /*
4  GUIDO Library
5  Copyright (C) 2023 D. Fober
6 
7  This Source Code Form is subject to the terms of the Mozilla Public
8  License, v. 2.0. If a copy of the MPL was not distributed with this
9  file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 */
11 
12 #include "ARNote.h"
13 #include <sstream>
14 
17 class ARTab : public ARNote
18 {
19  public:
20  ARTab( int string, const char* disp) : ARNote( "tab", 0, 0, 1, 4, 100 ),
21  fString(string), fDisplay(disp) {
22  setPitch (string2pitch (string));
23  setOctave(string2octave(string));
24  }
25  ARTab( const ARTab* tab, bool istied) : ARNote( *tab, istied ),
26  fString(tab->getString()), fDisplay(tab->getDisplay()), fTied(istied) {}
27  virtual ~ARTab() {}
28 
29  virtual ARNote* Clone (bool istied = false ) const { return new ARTab(this, istied); }
30  virtual ARMusicalObject * Copy() const { return new ARTab(this, true); }
31 
32  virtual const char* getTagName() const { return "ARTab"; };
33  virtual std::string getGMNName() const {
34  std::stringstream sstr; sstr << "s" << fString << '"' << fDisplay << '"' << '*' << getDuration(); return sstr.str(); }
35 
36  virtual ARTab* isARTab() { return this; }
37  virtual const ARTab* isARTab() const { return this; }
38 
39  int getString() const { return fString; }
40  std::string getDisplay() const { return fDisplay; }
41  bool isTied() const { return fTied; }
42 
43  private:
44  int string2pitch (int string) {
45  switch (string) {
46  case 1 : return NOTE_A;
47  case 2 : return NOTE_F;
48  case 3 : return NOTE_D;
49  case 4 : return NOTE_H;
50  case 5 : return NOTE_G;
51  case 6 : return NOTE_E;
52  }
53  return NOTE_E;
54  }
55  int string2octave (int string) {
56  if (string > 2) return 1;
57  return 2;
58  }
59  int fString;
60  std::string fDisplay;
61  bool fTied = false;
62 };
ARTab::isARTab
virtual ARTab * isARTab()
Definition: ARTab.h:36
ARTab::getGMNName
virtual std::string getGMNName() const
Definition: ARTab.h:33
ARTab::isTied
bool isTied() const
Definition: ARTab.h:41
ARTab::~ARTab
virtual ~ARTab()
Definition: ARTab.h:27
ARTab
Representation of a guitar tablature.
Definition: ARTab.h:17
ARTab::ARTab
ARTab(int string, const char *disp)
Definition: ARTab.h:20
ARTab::getDisplay
std::string getDisplay() const
Definition: ARTab.h:40
ARTab::getTagName
virtual const char * getTagName() const
Definition: ARTab.h:32
ARTab::Copy
virtual ARMusicalObject * Copy() const
Definition: ARTab.h:30
ARNote::setPitch
void setPitch(int newpitch)
ARNote::setOctave
void setOctave(int newOctave)
Definition: ARNote.h:65
ARTab::getString
int getString() const
Definition: ARTab.h:39
ARMusicalObject::getDuration
virtual const TYPE_DURATION & getDuration() const
Definition: ARMusicalObject.h:45
ARTab::isARTab
virtual const ARTab * isARTab() const
Definition: ARTab.h:37
ARNote
Representation of a GUIDO note.
Definition: ARNote.h:30
ARMusicalObject
The base class for all AR objects. It contains all musical information : duration and time position.
Definition: ARMusicalObject.h:33
ARTab::ARTab
ARTab(const ARTab *tab, bool istied)
Definition: ARTab.h:25
ARTab::Clone
virtual ARNote * Clone(bool istied=false) const
Definition: ARTab.h:29

Guido Project Copyright © 2019 Grame-CNCM