Klassen | |
class | MutRouteWnd |
Makrodefinitionen | |
#define | GETLINE |
#define | adjazent(a, b) |
#define | DRUMCHANNEL 9 |
#define | GET_INDEX(taste, tonsystem) |
#define | GET_ABSTAND(taste, tonsystem) |
#define | GET_FREQ(taste, tonsystem) |
#define | ZWZ 1.059463094 |
#define | LONG_TO_HERTZ(x) (440.0*pow(ZWZ,((((float)x)/(double)16777216.0))-69)) |
#define | LONG_TO_CENT(x) ( ((float)x)/(double)167772.13 ) |
#define | muT(x) x |
#define | ZIFFER (mutT('0') <= t[i] && t[i] <= mutT('9')) |
#define | TAG ((GisTag*)Cursor) |
#define | TAGEND ((GisTagEnd*)Cursor) |
#define | NOTE1 ((GisNote*)note1) |
#define | NOTE2 ((GisNote*)note2) |
#define | NOTE ((GisNote*)note) |
#define | WTAG ((GisTag*)(*Cursor)) |
#define | WTAGEND ((GisTagEnd*)token) |
#define | xz 5 |
#define | yz 5 |
#define | DEF_MHARRAY(T, name, baseType) |
#define | DEF_MHARRAYPTR(T, name, baseType) |
#define | DEF_STACK(T, name, baseType) |
#define | REUSE(type) type |
#define | ICON(s) wxIcon( s##_xpm ) |
#define | SSCANF sscanf |
#define | STUBBASE(stubtype, typestr) |
#define | STUB STUBBASE("stub function","") |
functions or code that has to be written -- simple function | |
#define | STUBCT(type) STUBBASE("stub function",((const char *) (typeid(type).name()))) |
functions or code that has to be written -- use for static class members | |
#define | STUBC STUBCT(*this) |
functions or code that has to be written -- use for normal class members | |
#define | UNREACHABLE STUBBASE("unreachable code","") |
#define | UNREACHABLECT(type) STUBBASE("unreachable code",((const char *) (typeid(type).name()))) |
#define | UNREACHABLEC UNREACHABLECT(*this) |
#define | ABSTRACT_FUNCTION STUBBASE("unreachable function","") |
#define | ABSTRACT_FUNCTIONCT(type) STUBBASE("unreachable function",((const char *) (typeid(type).name()))) |
#define | ABSTRACT_FUNCTIONC ABSTRACT_FUNCTIONCT(*this) |
#define | MDI_FORCE_EXTERN |
Typdefinitionen | |
typedef wxMBConv | muConvAuto |
Funktionen | |
void | ChangeOutReferences (EDevice *from, EDevice *to) |
EDevice * | NewDevice (EDevice **List, DevType dt, const wxString &name, int devId, EDevice *oldPos, EDevice *newPos) |
create a new device. | |
DevType | Str2DT (char *type) |
RouteType | Str2RT (mutChar *type) |
parse a string representation of a route type | |
EDevice * | GetEOut (int nr) |
char | GetELine (char **p, char *s) |
void | ScanRoutes (char *config) |
read the routes from the configuration | |
void | WriteRoutes (char **config) |
write the routes to the configuration | |
void | CheckBoxesUsed () |
synchronizes BoxUsed with the routes | |
int | SmallestBoxUsed () |
void | ScanDevices () |
translate the GUI routing information to mutabor | |
static double | get_intervall_wert (const char *name) |
double | get_wert_komplex_intervall (struct komplex_intervall *intervall) |
int | intervall_list_laenge (struct intervall *list) |
static void | belege_intervalle (struct intervall **intervalle, struct intervall *liste) |
static int | intervall_nummer (const char *name) |
static void | test_zyklen (int startknoten) |
static void | berechne_intervall_endgueltig (int k) |
void | berechne_intervalle_absolut (struct intervall *list_of_intervalle) |
void | check_komplex_intervall (struct komplex_intervall *liste, const char *konstrukt_name) |
void pascal _export | KeyboardAnalyse (int box, int taste, char isLogic) |
void pascal _export | KeyboardAnalyseSimple (int box, int taste) |
double | GetReal (GisToken *token) |
char | GetMidiInstrument (GisToken *token) |
int | GetTheSpeedFactor (GisToken *token) |
void | GisReadDummy (GisReadHead *, char) |
frac | GisReadHeadOn (GisReadHead **Head, frac dTime, GisReadProceed *proceed) |
TagList * | Copy (TagList *list) |
void | Erase (TagList *list) |
TagList * | RemoveTag (TagList **list) |
TagList * | AddTag (TagList **list, GisTag *tag) |
TagList * | EndTag (TagList **list, GisTagEnd *tagEnd) |
void | GisReadArtDummy (GisReadArtHead *, char) |
frac | GisReadArtHeadOn (GisReadArtHead **Head, frac dTime, GisReadArtProceed *proceed) |
char | StrCmp (const char *s1, const char *s2) |
int | CmpNote (GisToken *note1, GisToken *note2) |
GisWriteHead * | GetMatchingHeader (GisWriteHead **head, const mutString id) |
int | GisWriteHeadGis (GisWriteHead **head, mutString id, GisToken *token, char turn) |
void | CloseAllSubs (GisWriteHead *head) |
IMPLEMENT_DYNAMIC_CLASS (InputDevDlg, InputDevDlgBase) BEGIN_EVENT_TABLE(InputDevDlg | |
InputDevDlgBase | EVT_CHOICE (XRCID("DeviceChoice"), InputDevDlg::OnChoiceSelected) EVT_BUTTON( |
wxString | FileNameDialog (wxWindow *parent, int Command=CM_FILEOPEN, wxString Filename=wxEmptyString) |
void | PRINTWINDOW (wxWindow *window, const wxString &offset=_T("")) |
ERoute * | EDevice::GetRoute (int nr) |
find a route to a given number | |
int | EDevice::nRoutes () |
return the number of routes. | |
void | EDevice::AddRoute (ERoute *route) |
adds a route to the device | |
wxString | EDevice::GetName () |
return the name of the device | |
GisReadHead * | GisReadHead::InsertInfrontOf (GisReadHead *position) |
GisReadHead * | GisReadHead::CutOut () |
void | GisReadHead::CreateSegmentSubs () |
void | GisReadHead::CreateSequenzSubs () |
void | GisReadHead::Read () |
void | GisReadArtHead::Read () |
ChordNote::ChordNote (ChordNote *first) | |
void | ChordNote::CountOnTime (frac dTime) |
void | ChordNote::SetNoteOn (GisToken *note) |
int | ChordNote::SetNoteOff (GisToken *note) |
void | ChordNote::AddGis (GisToken *token) |
void | ChordNote::CheckCloseAlter () |
void | ChordNote::CheckCloseTie () |
int | ChordNote::MutNoteOn (int key, double pitch, int instrId, int taste, mutString sep) |
int | ChordNote::MutNoteOff () |
GisWriteHead * | GisWriteHead::InsertAfter (GisWriteHead *position) |
GisWriteHead * | GisWriteHead::CutOut () |
ChordNote * | GisWriteHead::GetFreeNote () |
ChordNote * | GisWriteHead::GetNote (int instrId, int taste) |
int | GisWriteHead::ReadyForBoss () |
void | GisWriteHead::RemoveComma () |
int | GisWriteHead::CloseSubs (GisToken **cont=0) |
int | GisWriteHead::CloseCurrentToken (char insertRest=1) |
int | GisWriteHead::ProceedGis (GisToken *token, char turn=0) |
void | GisWriteHead::WriteChord () |
void | GisWriteHead::AddTime (frac dTime) |
Variablen | |
EDevice * | InEDevices = 0 |
input devices for GUI | |
EDevice * | OutEDevices = 0 |
output devices for GUI | |
bool | BoxUsed [MAX_BOX] |
which mutabor boxes are used at all? | |
static int | anzahl_intervalle |
static struct intervall ** | intervalle |
static char * | visited |
static char * | matrix |
char | ArticulationHold [5] = { 80, 100, 90, 90, 60 } |
char | ArticulationOff [5] = { 80, 80, 60, 127, 127 } |
bool | LogicOn |
wxHtmlHelpController * | HelpController |
wxMBConv * | muConvAutoFallback = &wxConvISO8859_1 |
wxMBConv * | muConvAutoFallback |
#define ABSTRACT_FUNCTION STUBBASE("unreachable function","") |
#define ABSTRACT_FUNCTIONC ABSTRACT_FUNCTIONCT(*this) |
Definiert in Zeile 115 der Datei mhDefs.h.
Wird benutzt von MutInputDeviceShape::GetInputFilterPanel(), MutOutputDeviceShape::GetOutputFilterPanel(), MutInputDeviceShape::ReadInputFilterPanel() und MutOutputDeviceShape::ReadOutputFilterPanel().
#define adjazent | ( | a, | |
b | |||
) |
matrix [ (a) * anzahl_intervalle * sizeof (char) \ + (b) * sizeof (char)]
Definiert in Zeile 116 der Datei Interval.cpp.
Wird benutzt von berechne_intervalle_absolut() und test_zyklen().
#define DEF_MHARRAY | ( | T, | |
name, | |||
baseType | |||
) |
class name \ { \ public: \ baseType data; \ name(int WXUNUSED(i), int WXUNUSED(j), int WXUNUSED(k)) {}; \ ~name() {}; \ size_t GetItemsInContainer() const { return data.GetCount(); } \ void Flush() { data.Clear(); } \ void Add(T t) { data.Add(t); } \ T& operator[](size_t uiIndex) const { return data[uiIndex]; } \ void Destroy(size_t uiIndex) { data.RemoveAt(uiIndex); } \ void AddAt(T t, size_t uiIndex) { data.Insert(t, uiIndex); } \ void RemoveEntry(size_t uiIndex) { data.RemoveAt(uiIndex); } \ }; \
#define DEF_MHARRAYPTR | ( | T, | |
name, | |||
baseType | |||
) |
class name \ { \ public: \ baseType data; \ name(int WXUNUSED(i), int WXUNUSED(j), int WXUNUSED(k)) {}; \ ~name() {}; \ size_t GetItemsInContainer() const { return data.GetCount(); } \ void Add(T t) { data.Add(new T(t)); } \ void Flush() { data.Clear(); } \ void RemoveEntry(size_t i) { data.RemoveAt(i); } \ T& operator[](size_t uiIndex) const { return *(data[uiIndex]); }\ void Destroy(size_t uiIndex) { /*delete data[uiIndex];*/ data.RemoveAt(uiIndex); } \ void AddAt(T t, size_t uiIndex) { data.Insert(new T(t), uiIndex); } \ }; \
#define DEF_STACK | ( | T, | |
name, | |||
baseType | |||
) |
class name \ { \ public: \ baseType data; \ name() {}; \ name(int WXUNUSED(i), int WXUNUSED(j), int WXUNUSED(k)) {}; \ ~name() {}; \ void Push(T t) { data.Add(t); } \ T Pop() { T h = data.Last(); data.RemoveAt(data.GetCount()-1); return h; } \ bool IsEmpty() const { return data.GetCount() == 0; } \ T Top() const { return data.Last(); } \ }; \
#define DRUMCHANNEL 9 |
Definiert in Zeile 42 der Datei MidiKern.h.
Wird benutzt von OutMidiPort::NoteOff(), OutMidiFile::NoteOff(), OutMidiPort::NoteOn() und OutMidiFile::NoteOn().
( ( (tonsystem)->ton[GET_INDEX(taste,(tonsystem))]==0) ? \ (long) 0 : \ (long)( (tonsystem)->periode * \ GET_ABSTAND(taste,(tonsystem)) + \ (tonsystem)->ton[GET_INDEX(taste,(tonsystem))]))
Definiert in Zeile 63 der Datei MidiKern.h.
Wird benutzt von change_anker(), change_breite(), protokoll_liegende_frequenzen() und protokoll_liegende_relationen().
Definiert in Zeile 51 der Datei MidiKern.h.
Wird benutzt von AddKey(), DeleteKey(), HarmonyAnalysis() und update_pattern().
#define GETLINE |
if ( !GetELine(&p1, s) ) \ return
Definiert in Zeile 636 der Datei EDevice.cpp.
Wird benutzt von ScanRoutes().
#define ICON | ( | s | ) | wxIcon( s##_xpm ) |
Definiert in Zeile 49 der Datei mhDefs.h.
Wird benutzt von MutFrame::CmRoutes() und MutRouteWnd::MutRouteWnd().
#define LONG_TO_CENT | ( | x | ) | ( ((float)x)/(double)167772.13 ) |
Definiert in Zeile 72 der Datei MidiKern.h.
Wird benutzt von protokoll_aktuelle_relationen(), protokoll_aktuelles_tonsystem() und protokoll_liegende_relationen().
#define LONG_TO_HERTZ | ( | x | ) | (440.0*pow(ZWZ,((((float)x)/(double)16777216.0))-69)) |
Definiert in Zeile 71 der Datei MidiKern.h.
Wird benutzt von protokoll_aktuelles_tonsystem() und protokoll_liegende_frequenzen().
#define muT | ( | x | ) | x |
Definiert in Zeile 39 der Datei GIS_Head.cpp.
Wird benutzt von MutFrame::CloseAll(), MutApp::CmQuit(), IMPLEMENT_APP(), InMidiPort::Load(), OutMidiPort::Load(), compat30::LoadRoutes(), MutTextBox::NewText(), MutFrame::RaiseLogic(), InMidiPort::SetDevId(), OutMidiPort::SetDevId(), MutOutputDeviceShape::ShowDeviceDialog(), MutInputDeviceShape::ShowDeviceDialog(), MutFrame::TextBoxOpen() und MutLogicWnd::UpDate().
#define NOTE ((GisNote*)note) |
Definiert in Zeile 817 der Datei GIS_Head.cpp.
Wird benutzt von ChordNote::SetNoteOn().
#define NOTE1 ((GisNote*)note1) |
Definiert in Zeile 732 der Datei GIS_Head.cpp.
Wird benutzt von CmpNote().
#define NOTE2 ((GisNote*)note2) |
Definiert in Zeile 733 der Datei GIS_Head.cpp.
Wird benutzt von CmpNote().
#define SSCANF sscanf |
Definiert in Zeile 56 der Datei mhDefs.h.
Wird benutzt von compat30::LoadRoutes().
#define STUB STUBBASE("stub function","") |
functions or code that has to be written -- simple function
Definiert in Zeile 103 der Datei mhDefs.h.
Wird benutzt von compat30::SaveRoutes().
#define STUBBASE | ( | stubtype, | |
typestr | |||
) |
do { \ std::cerr << stubtype << " in " ; \ std::cerr << __FILE__ << ":" << __LINE__ << ": " ;\ std::cerr << typestr << "::" ;\ std::cerr << __WXFUNCTION__ << std::endl;\ wxFAIL_MSG(wxString::Format(_T("\n\n%s\n\nin %s:%d:\n\n%s::%s\n\n"), \ muT(stubtype).c_str(), \ _T(__FILE__), \ __LINE__, \ muT(typestr).c_str(), \ muT(__WXFUNCTION__).c_str())); \ } while (0)
#define STUBC STUBCT(*this) |
functions or code that has to be written -- use for normal class members
Definiert in Zeile 107 der Datei mhDefs.h.
Wird benutzt von MutFrame::CmFileNew(), MutFrame::CmFileOpen(), OutGis::Gis(), OutGis::Load(), MutBoxShape::MutBoxShape(), EDevice::newOutDevice(), CurrentTimer::Notify(), MutFrame::OnPaint(), MutFrame::OpenFile(), MutBoxChannelShape::ReadPanel(), OutGis::Save(), RoutePanel::SetBox() und MutInputDeviceShape::ShowDeviceDialog().
#define TAG ((GisTag*)Cursor) |
Definiert in Zeile 500 der Datei GIS_Head.cpp.
Wird benutzt von GisReadArtHead::Read().
#define TAGEND ((GisTagEnd*)Cursor) |
Definiert in Zeile 501 der Datei GIS_Head.cpp.
Wird benutzt von GisReadArtHead::Read().
#define UNREACHABLE STUBBASE("unreachable code","") |
Definiert in Zeile 109 der Datei mhDefs.h.
Wird benutzt von CheckBoxesUsed(), compat30::LoadRoutes() und compat30::SaveRoutes().
#define UNREACHABLEC UNREACHABLECT(*this) |
Definiert in Zeile 111 der Datei mhDefs.h.
Wird benutzt von BoxDlg::AddButtonPressed(), OutputFilterPanel::AddPage(), InputFilterPanel::AddPage(), MutOutputDeviceShape::AddRoute(), MutInputDeviceShape::AddRoute(), MutBoxShape::Detach(), BoxDlg::DisableRemove(), OutputFilterPanel::GetCurrentSelection(), InputFilterPanel::GetCurrentSelection(), MutOutputDeviceShape::getRoutes(), MidiFileInputFilterPanel::GetRouteType(), MidiInputFilterPanel::GetRouteType(), GisInputFilterPanel::GetRouteType(), IMPLEMENT_DYNAMIC_CLASS(), EDevice::newOutDevice(), NewMutBoxShape::readDialog(), MutInputMidiFileDeviceShape::ReadInputFilterPanel(), MutInputMidiDeviceShape::ReadInputFilterPanel(), MutInputGuidoFileDeviceShape::ReadInputFilterPanel(), MutOutputMidiFileDeviceShape::ReadOutputFilterPanel(), MutOutputMidiDeviceShape::ReadOutputFilterPanel(), MutOutputGuidoFileDeviceShape::ReadOutputFilterPanel(), MutOutputDeviceShape::ReadPanel(), MutInputDeviceShape::ReadPanel(), MutBoxChannelShape::ReadPanel(), MutNewOutputDeviceShape::replaceSelfBy(), MutBoxShape::replaceSelfBy(), MidiInputFilterPanel::SetRouteType(), GisInputFilterPanel::SetRouteType(), MutBoxShape::ShowBoxDialog(), configtree::toLeaf() und configtree::toParent().
Definiert in Zeile 110 der Datei mhDefs.h.
Wird benutzt von MutBoxChannelShape::CreateRoutePanel().
#define WTAG ((GisTag*)(*Cursor)) |
Definiert in Zeile 1232 der Datei GIS_Head.cpp.
Wird benutzt von GisWriteHead::ProceedGis().
#define WTAGEND ((GisTagEnd*)token) |
Definiert in Zeile 1233 der Datei GIS_Head.cpp.
Wird benutzt von GisWriteHead::ProceedGis().
#define xz 5 |
Definiert in Zeile 31 der Datei MutRouteWnd.h.
Wird benutzt von MutRouteWnd::OnDraw() und PrintBox().
#define yz 5 |
Definiert in Zeile 32 der Datei MutRouteWnd.h.
Wird benutzt von MutRouteWnd::OnDraw().
#define ZIFFER (mutT('0') <= t[i] && t[i] <= mutT('9')) |
Definiert in Zeile 88 der Datei GIS_Head.cpp.
Wird benutzt von GetTheSpeedFactor().
#define ZWZ 1.059463094 |
Definiert in Zeile 70 der Datei MidiKern.h.
typedef wxMBConv muConvAuto |
Definiert in Zeile 167 der Datei muconvauto.h.
void ChordNote::AddGis | ( | GisToken * | token | ) |
Definiert in Zeile 844 der Datei GIS_Head.cpp.
Benutzt ChordNote::CurrentTime, ChordNote::Cursor, ChordNote::LastSep und GisToken::Sep.
Wird benutzt von ChordNote::CheckCloseAlter(), ChordNote::CheckCloseTie(), ChordNote::ChordNote(), GisWriteHead::GetFreeNote() und ChordNote::MutNoteOn().
{ *Cursor = token; Cursor = &((*Cursor)->Next); LastSep = &(token->Sep); CurrentTime = 0; }
void EDevice::AddRoute | ( | ERoute * | route | ) |
adds a route to the device
route | route to be added; |
Definiert in Zeile 65 der Datei EDevice.cpp.
Benutzt ERoute::Next und EDevice::Routes.
Wird benutzt von NewDevice() und ScanRoutes().
Definiert in Zeile 467 der Datei GIS_Head.cpp.
Benutzt GTTag, TagListData::Next, RemoveTag(), TagListData::Tag und GisTag::Type().
Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().
void GisWriteHead::AddTime | ( | frac | dTime | ) |
Definiert in Zeile 1409 der Datei GIS_Head.cpp.
Benutzt GisWriteHead::AddTime(), GisWriteHead::ChordNotes, ChordNote::CountOnTime(), GisWriteHead::CurrentTime, GisWriteHead::Next und GisWriteHead::TotalTime.
Wird benutzt von GisWriteHead::AddTime() und OutGis::AddTime().
{ TotalTime += dTime; CurrentTime += dTime; if ( ChordNotes ) ChordNotes->CountOnTime(dTime); if ( Next ) Next->AddTime(dTime); }
Definiert in Zeile 128 der Datei Interval.cpp.
Benutzt intervall::next.
Wird benutzt von berechne_intervalle_absolut().
{ while (liste) { *intervalle = liste; intervalle++; liste = liste->next; } }
static void berechne_intervall_endgueltig | ( | int | k | ) | [static] |
Definiert in Zeile 169 der Datei Interval.cpp.
Benutzt _(), fatal_error(), get_wert_komplex_intervall(), intervall::intervall_absolut, intervall_absolut, intervall::intervall_komplex, intervall_komplex, intervall_nummer(), intervall::intervall_typ, name, komplex_intervall::next und intervall::u.
Wird benutzt von berechne_intervalle_absolut().
{ int b; double help; switch (intervalle[k]->intervall_typ) { case intervall_absolut: /* hier nichts zu tun */ break; case intervall_komplex: { struct komplex_intervall * lauf; for (lauf = intervalle[k]->u.intervall_komplex.komplex_liste; lauf; lauf = lauf -> next) { b = intervall_nummer (lauf -> name); berechne_intervall_endgueltig (b); } help = get_wert_komplex_intervall (intervalle[k]->u.intervall_komplex.komplex_liste); intervalle[k]->intervall_typ = intervall_absolut; intervalle[k]->u.intervall_absolut.intervall_wert = help; } break; default: fatal_error(0,_C_STR(_("loop"))); } }
void berechne_intervalle_absolut | ( | struct intervall * | list_of_intervalle | ) |
Definiert in Zeile 203 der Datei Interval.cpp.
Benutzt _(), adjazent, anzahl_intervalle, belege_intervalle(), berechne_intervall_endgueltig(), fatal_error(), intervall_absolut, intervall::intervall_komplex, intervall_komplex, intervall_list_laenge(), intervall_nummer(), matrix, name, komplex_intervall::next, test_zyklen(), visited, xalloca() und xde_alloca().
Wird benutzt von mutabor_programm_einlesen().
{ int i,j,k; anzahl_intervalle = intervall_list_laenge (list_of_intervalle); intervalle = (intervall* *) xalloca (sizeof(struct intervall *) * anzahl_intervalle); visited = (char*) xalloca (sizeof(char) * anzahl_intervalle); matrix = (char*) xalloca (sizeof(char) * anzahl_intervalle * anzahl_intervalle); /* Feld mit intervallen initialisieren (zum schnelleren Zugriff) */ belege_intervalle (intervalle, list_of_intervalle); /* Adjazenzmatrix initialisieren (Kein Intervall hängt vom anderen ab) */ for (i=0; i<anzahl_intervalle; i++) { for (j=0; j<anzahl_intervalle; j++) { adjazent (i,j) = 0; } } /* Adjazenzmatrix initialisieren (Abhängigkeiten eintragen) */ for (i=0; i<anzahl_intervalle; i++) { if (intervalle[i]->intervall_typ == intervall_absolut) /* alles ok */ ; else if (intervalle[i]->intervall_typ == intervall_komplex) { struct komplex_intervall * lauf; for (lauf = intervalle[i]->u.intervall_komplex.komplex_liste; lauf; lauf = lauf -> next) { adjazent (i, intervall_nummer (lauf -> name)) = 1; } } else { fatal_error(0,_C_STR(_("loop"))); } } #ifdef DEBUG_ANZEIGE_3 /* Adjazenzmatrix anzeigen */ printf ("Matrix:\n"); for (i=0; i<anzahl_intervalle; i++) { printf ("%s -> ", intervalle[i]->name); for (j=0; j<anzahl_intervalle; j++) { if (adjazent (i,j)) printf ("%s ", intervalle[j]->name); } printf ("\n"); } printf ("\n"); #endif /* auf Zyklenfreiheit Pruefen */ for (k=0; k<anzahl_intervalle; k++) visited [k] = 0; for (k=0; k<anzahl_intervalle; k++) { visited [k] = 1; test_zyklen (k); visited [k] = 0; } /* Toene endgueltig berechnen */ for (k=0; k<anzahl_intervalle; k++) berechne_intervall_endgueltig (k); #ifdef DEBUG_ANZEIGE_3 /* Adjazenzmatrix anzeigen */ printf ("Matrix:\n"); for (i=0; i<anzahl_intervalle; i++) { printf ("%s -> ", intervalle[i]->name); for (j=0; j<anzahl_intervalle; j++) { if (adjazent (i,j)) printf ("%s ", intervalle[j]->name); } printf ("\n"); } printf ("\n"); #endif xde_alloca (intervalle); xde_alloca (visited); xde_alloca (matrix); }
Definiert in Zeile 83 der Datei EDevice.cpp.
Benutzt ERoute::Next und EDevice::Next.
Wird benutzt von NewDevice().
{ for (EDevice *In = InEDevices; In; In = In->Next) for (ERoute *R = In->Routes; R; R = R->Next) if ( R->Out == from ) R->Out = to; }
void check_komplex_intervall | ( | struct komplex_intervall * | liste, |
const char * | konstrukt_name | ||
) |
Definiert in Zeile 314 der Datei Interval.cpp.
Benutzt fatal_error(), get_intervall(), intervall_absolut, list_of_intervalle, mutC_STR, name und komplex_intervall::next.
Wird benutzt von check_konsistenz().
{ for ( ; liste ; liste = liste -> next ) { struct intervall * help = get_intervall (liste -> name, list_of_intervalle); if (help == NULL) { fatal_error (32, mutC_STR(liste -> name), mutC_STR(konstrukt_name)); return; } if (help -> intervall_typ != intervall_absolut) { fatal_error (0, _T(__FILE__), __LINE__); return; } } }
void CheckBoxesUsed | ( | ) |
synchronizes BoxUsed
with the routes
Definiert in Zeile 1167 der Datei EDevice.cpp.
Wird benutzt von MutFrame::CmDoActivate().
void ChordNote::CheckCloseAlter | ( | ) |
Definiert in Zeile 852 der Datei GIS_Head.cpp.
Benutzt ChordNote::AddGis(), ChordNote::AlterBegin, CNAlter, ChordNote::LastSep, mutEmptyString, mutString, ChordNote::Pitch, Sep und ChordNote::Status.
Wird benutzt von ChordNote::CheckClose(), ChordNote::CheckCloseTie() und ChordNote::MutNoteOn().
{ if ( Status & CNAlter ) { mutString s = mutEmptyString; mutString *Sep = LastSep; if ( !LastSep ) Sep = &s; AddGis(new GisTagEnd((GisTagBegin*)*AlterBegin, *Sep)); #ifdef WX if ( Sep->size() ) { *Sep = wxEmptyString; } #else if ( *Sep.length() ) { free(*Sep); *Sep = 0; } #endif Status -= CNAlter; Pitch = 0; } }
void ChordNote::CheckCloseTie | ( | ) |
Definiert in Zeile 880 der Datei GIS_Head.cpp.
Benutzt ChordNote::AddGis(), ChordNote::CheckCloseAlter(), ChordNote::Cursor, ChordNote::LastSep, mutEmptyString, mutString, mutT, ChordNote::nTie, Sep, ChordNote::TieBegin und TTtie.
Wird benutzt von ChordNote::CheckClose().
{ if ( nTie > 1 ) { // close alter CheckCloseAlter(); // insert begin range *TieBegin = new GisTagBegin(TTtie, 0, 0, mutT("("), *TieBegin); // add end range mutString s = mutEmptyString; mutString *Sep = LastSep; if ( !LastSep ) Sep = &s; AddGis(new GisTagEnd((GisTagBegin*)*TieBegin, *Sep)); #ifdef WX if ( Sep->size() ) { *Sep=mutEmptyString; } #else if ( *Sep ) { free(*Sep); *Sep = 0; } #endif } TieBegin = Cursor; nTie = 0; }
ChordNote::ChordNote | ( | ChordNote * | first | ) |
Definiert in Zeile 774 der Datei GIS_Head.cpp.
Benutzt ChordNote::AddGis(), ChordNote::Boss, ChordNote::BossPos, GisWriteHead::ChordPos, ChordNote::CurrentTime, GisWriteHead::Cursor, ChordNote::Cursor, ChordNote::Data, ChordNote::InstrId, ChordNote::Key, ChordNote::LastSep, mutEmptyString, mutT, ChordNote::Next, NO_KEY, ChordNote::nTie, ChordNote::Pitch, ChordNote::Status, ChordNote::Taste, ChordNote::TieBegin, GisWriteHead::TotalTime und ChordNote::TotalTime.
{ // copy data from first Boss = first->Boss; BossPos = first->BossPos; Next = 0; Data = 0; Cursor = &Data; TotalTime = Boss->TotalTime; if ( TotalTime ) AddGis(new GisNote(mutT("_"), mutEmptyString, 0, TotalTime, mutT(" "), 0)); CurrentTime = 0; Boss->ChordPos = Boss->Cursor; Status =0; TieBegin = 0; nTie = 0; LastSep = 0; InstrId = -1; Taste = NO_KEY; Key = NO_KEY; Pitch = 0; }
void CloseAllSubs | ( | GisWriteHead * | head | ) |
Definiert in Zeile 1489 der Datei GIS_Head.cpp.
Benutzt GisWriteHead::CloseSubs(), GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::CutOut(), GisWriteHead::Data, GetGisType(), GTSegment, mutT, GisWriteHead::Next, GisWriteHead::nSub und GisWriteHead::RemoveComma().
Wird benutzt von OutGis::Close().
{ while ( 1 ) { // search the lowest boss GisWriteHead *Boss = 0; for (GisWriteHead *H = head; H; H = H->Next) if ( H->nSub > 0 ) Boss = H; if ( !Boss ) break; // check for "empty" boss if ( !Boss->Data && Boss->nSub == 1 ) { GisWriteHead *h = Boss->Next; Boss->Data = h->Data; Boss->nSub = 0; h->Data = 0; h->CutOut(); delete h; continue; } // check for segment if ( GetGisType(*Boss->Cursor) != GTSegment ) { if ( Boss->Data && !Boss->CommaAtEnd ) { *Boss->Cursor = new GisComma(mutT(" "), 0); Boss->Cursor = &((*Boss->Cursor)->Next); } Boss->Data = new GisSegment(Boss->Data, mutT(" "), 0); GisToken **Cont = Boss->Cursor; if ( Boss->Cursor == &Boss->Data ) Cont = 0; Boss->Cursor = &Boss->Data; Boss->CloseSubs(Cont); } else Boss->CloseSubs(); } /* // check wether there are parallel heads if ( head->Next ) */ // remove comma at end head->RemoveComma(); }
int GisWriteHead::CloseCurrentToken | ( | char | insertRest = 1 | ) |
Definiert in Zeile 1164 der Datei GIS_Head.cpp.
Benutzt GisWriteHead::ChordNotes, GisWriteHead::CloseSubs(), GisWriteHead::CurrentTime, GisWriteHead::Cursor, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, mutT, GisWriteHead::State() und GisWriteHead::WriteChord().
Wird benutzt von GisWriteHead::ProceedGis() und GisWriteHead::ReadyForBoss().
{ if ( ChordNotes ) { WriteChord(); return 0; } switch ( State() ) { case GTNull: if ( insertRest && CurrentTime ) // write a rest { *Cursor = new GisNote(mutT("_"), mutT(""), 0, CurrentTime, mutT(" ")); Cursor = &((*Cursor)->Next); CurrentTime = 0; } break; case GTUnknown: return 1; // impossible case GTSequenz: CloseSubs(); CurrentTime = 0; Cursor = &((*Cursor)->Next); break; case GTSegment: CloseSubs(); CurrentTime = 0; Cursor = &((*Cursor)->Next); break; case GTTag: return 1; // impossible case GTTagBegin: return 1; // impossible case GTTagEnd: return 1; // impossible /* case GTNote: ((GisNote*)(*Cursor))->Duration = CurrentTime; Cursor = &(*Cursor)->Next; CurrentTime = frac(0, 1); // das hier muß anders sein, um mehrere Noten gleichzeitig zu schaffen break; */ case GTParaInt: return 1; // impossible case GTParaReal: return 1; // impossible case GTParaStr: return 1; // impossible } return 0; }
int GisWriteHead::CloseSubs | ( | GisToken ** | cont = 0 | ) |
Definiert in Zeile 1130 der Datei GIS_Head.cpp.
Benutzt GisWriteHead::Boss, GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::CutOut(), GisWriteHead::Data, mutT, GisWriteHead::Next, GisWriteHead::nSub, GisWriteHead::ReadyForBoss() und GisWriteHead::RemoveComma().
Wird benutzt von CloseAllSubs() und GisWriteHead::CloseCurrentToken().
{ GisWriteHead *h = Next; GisToken **Cont = &(((GisSegment*)*Cursor)->Contents); if ( cont ) Cont = cont; while ( h && nSub > 0 && h->Boss == this ) { h->ReadyForBoss(); if ( nSub == 1 && h->CommaAtEnd ) h->RemoveComma(); *Cont = h->Data; if ( Data ) Cont = h->Cursor; if ( nSub > 1 && !h->CommaAtEnd ) { *Cont = new GisComma(mutT(" "), 0); Cont = &((*Cont)->Next); } nSub--; h->CutOut(); delete h; h = Next; } return nSub; }
Definiert in Zeile 757 der Datei GIS_Head.cpp.
Benutzt GTNote, NOTE1, NOTE2, StrCmp() und GisToken::Type().
Wird benutzt von ChordNote::SetNoteOff().
Definiert in Zeile 432 der Datei GIS_Head.cpp.
Benutzt TagListData::Data, TagListData::Next und TagListData::Tag.
Wird benutzt von GisReadArtHead::GisReadArtHead().
void ChordNote::CountOnTime | ( | frac | dTime | ) |
Definiert in Zeile 808 der Datei GIS_Head.cpp.
Benutzt ChordNote::CountOnTime(), ChordNote::CurrentTime, ChordNote::Next und ChordNote::TotalTime.
Wird benutzt von GisWriteHead::AddTime() und ChordNote::CountOnTime().
{ CurrentTime += dTime; TotalTime += dTime; if ( Next ) Next->CountOnTime(dTime); }
void GisReadHead::CreateSegmentSubs | ( | ) |
Definiert in Zeile 252 der Datei GIS_Head.cpp.
Benutzt GisReadHead::Build(), GisSegment::Contents, GisReadHead::Cursor, DEBUGLOG, GTComma, GisReadHead::Id, mutString, mutT, GisToken::Next, GisReadHead::nSub und GisToken::Type().
Wird benutzt von GisReadArtHead::Read() und GisReadHead::Read().
{ GisSegment *Seg = (GisSegment*)Cursor; GisToken *Cont = Seg->Contents; #ifdef WX mutString id = Id + mutT("*"); #else char *id = (char*)malloc(strlen(Id)+2); strcpy(id, Id); strcat(id, "*"); #endif nSub = 0; while ( Cont ) // create the single token subs { nSub++; id[mutLen(Id)] = nSub; DEBUGLOG (other, _T("Creating Sub for %p (%d, %s)"),Cont,nSub,id.c_str()); GisReadHead *Sub = Build(this, Cont, id, 1); Cont = Cont->Next; while ( Cont ) // read until end or comma { if ( Cont->Type() == GTComma ) { Cont = Cont->Next; break; } Cont = Cont->Next; } } }
void GisReadHead::CreateSequenzSubs | ( | ) |
Definiert in Zeile 289 der Datei GIS_Head.cpp.
Benutzt GisReadHead::Build(), GisSegment::Contents, GisReadHead::Cursor, GisReadHead::Id, mutString, mutT und GisReadHead::nSub.
Wird benutzt von GisReadArtHead::Read() und GisReadHead::Read().
{ GisSegment *Seq = (GisSegment*)Cursor; #ifdef WX mutString id = Id + mutT("\x01"); #else char *id = (char*)malloc(strlen(Id)+2); strcpy(id, Id); strcat(id, "\x01"); #endif nSub = 1; GisReadHead *Sub = Build(this, Seq->Contents, id); }
GisWriteHead * GisWriteHead::CutOut | ( | ) |
Definiert in Zeile 1002 der Datei GIS_Head.cpp.
Benutzt GisWriteHead::Next und GisWriteHead::Prev.
Wird benutzt von CloseAllSubs() und GisWriteHead::CloseSubs().
GisReadHead * GisReadHead::CutOut | ( | ) |
Definiert in Zeile 203 der Datei GIS_Head.cpp.
Benutzt GisReadHead::Next, GisReadHead::Prev und GisReadHead::PrevPtr.
Wird benutzt von GisReadArtHeadOn(), GisReadHeadOn() und InGis::ReadOn().
{ #if 0 if ( *(PrevPtr) == this ) // first of list { *PrevPtr = Next; } else // normal list postition { (*PrevPtr)->Next = Next; } if ( Next ) Next->PrevPtr = PrevPtr; Next = NULL; PrevPtr = &Prev; return this; #else if ( *(PrevPtr) == this ) // first of list { *PrevPtr = Next; if (Next) { Next->PrevPtr = PrevPtr; Next->Prev = NULL; } } else // normal list postition { Prev->Next = Next; if (Next) { Next->Prev = Prev; wxASSERT(Next->PrevPtr == &(Next->Prev)); } } Next = NULL; PrevPtr = &Prev; Prev = NULL; return this; #endif }
Definiert in Zeile 483 der Datei GIS_Head.cpp.
Benutzt GisTagEnd::Begin, GTTag, if(), TagListData::Next, RemoveTag(), TagListData::Tag und GisTag::Type().
Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().
void Erase | ( | TagList * | list | ) |
Definiert in Zeile 447 der Datei GIS_Head.cpp.
Benutzt TagListData::Next.
Wird benutzt von GisReadArtHead::~GisReadArtHead() und GisWriteHead::~GisWriteHead().
InputDevDlgBase EVT_CHOICE | ( | XRCID("DeviceChoice") | , |
InputDevDlg::OnChoiceSelected | |||
) |
InputDevDlg constructors
Definiert in Zeile 46 der Datei InputDevDlg.cpp.
Benutzt _(), DEBUGLOG, DTGis, DTMidiFile und DTMidiPort.
:InputDevDlgBase(parent) { DeviceChoice->Clear(); DeviceChoice->Append(_("MIDI Device"),new TypeData(DTMidiPort)); DeviceChoice->Append(_("MIDI file"),new TypeData(DTMidiFile)); DeviceChoice->Append(_("GUIDO file"),new TypeData(DTGis)); TypeBox = DeviceChoice->GetContainingSizer(); PortBox = PortChoice->GetContainingSizer(); MidiFileBox = MidiFilePicker->GetContainingSizer(); DEBUGLOG (other,_T ("MidiFilePicker Growable: %d"), MidiFilePicker->IsPickerCtrlGrowable()); if (MidiFilePicker->HasTextCtrl()) { DEBUGLOG (other,_T ("MidiFileTextCtrl Growable: %d"), MidiFilePicker->IsTextCtrlGrowable()); MidiFilePicker->SetTextCtrlGrowable(true); DEBUGLOG (other,_T ("MidiFileTextCtrl Growable: %d"), MidiFilePicker->IsTextCtrlGrowable()); } GuidoFileBox = GuidoFilePicker->GetContainingSizer(); // GetSizer()->Fit(this); // GetSizer()->SetSizeHints(this); // Centre(); }
wxString FileNameDialog | ( | wxWindow * | parent, |
int | Command = CM_FILEOPEN , |
||
wxString | Filename = wxEmptyString |
||
) |
Definiert in Zeile 36 der Datei mxDefs.cpp.
Benutzt _(), CM_EXECUTE, CM_FILEOPEN, CM_FILESAVEAS, CM_ROUTELOAD, CM_ROUTESAVE, CM_ROUTESAVEAS und name.
Wird benutzt von MutFrame::CmFileOpen(), MutApp::CmFileOpen(), MutRouteWnd::CmRouteLoad() und MutRouteWnd::CmRouteSaveAs().
{ #ifdef DEBUG std::cout << "FileNameDialog: " << Command << std::endl; #endif static const wxString logic_sources(_("Mutabor tuning file (*.mut)|*.mut|Old Mutabor tuning file (*.mus)|*.mus|All files (*.*)|*.*")); static const wxString route_sources(_("Mutabor routing file (*.mur)|*.mur|All files (*.*)|*.*")); wxString title, filetypes, dir(wxEmptyString), name(wxEmptyString) , ext(wxEmptyString); int flags; switch (Command) { case CM_FILEOPEN: title = _("Which Mutabor file shall be loaded?"); filetypes = logic_sources; flags = wxFD_CHANGE_DIR | wxFD_FILE_MUST_EXIST | wxFD_OPEN; break; case CM_EXECUTE: title = _("Which Mutabor file shall be executed?"); filetypes = logic_sources; flags = wxFD_CHANGE_DIR | wxFD_FILE_MUST_EXIST | wxFD_OPEN; break; case CM_FILESAVEAS: title = _("Enter the new Mutabor file name, please!"); filetypes = logic_sources; flags = wxFD_CHANGE_DIR | wxFD_OVERWRITE_PROMPT | wxFD_SAVE; break; case CM_ROUTELOAD: title = _("Which Mutabor route file shall be loaded?"); filetypes = route_sources; flags = wxFD_CHANGE_DIR | wxFD_FILE_MUST_EXIST | wxFD_OPEN; break; case CM_ROUTESAVE: case CM_ROUTESAVEAS: title = _("Enter the new Mutabor route file name, please!"); filetypes = route_sources; flags = wxFD_CHANGE_DIR | wxFD_OVERWRITE_PROMPT | wxFD_SAVE; break; default: wxLogError(_("Unexpected Command Id in FileNameDialog: %d"),Command); return wxString(_T("")); } if (!Filename.IsEmpty()) { wxFileName splitter(Filename); ext = splitter.GetExt(); name = splitter.GetFullName(); dir = splitter.GetPath(); } wxFileDialog * FileSelector = new wxFileDialog(parent, title, dir, name, filetypes, #ifdef __WXCOCOA__ 0 #else flags #endif // ,parent ); int cmd = FileSelector->ShowModal(); wxString retval; retval = (cmd == wxID_OK) ? (FileSelector->GetPath()) : wxString(wxEmptyString); FileSelector->Destroy(); return retval; }
static double get_intervall_wert | ( | const char * | name | ) | [static] |
Definiert in Zeile 38 der Datei Interval.cpp.
Benutzt fatal_error(), intervall::intervall_absolut, intervall_absolut, intervall_komplex, list_of_intervalle, mutC_STR, intervall::name, intervall::next und intervall::u.
Wird benutzt von get_wert_komplex_intervall().
{ struct intervall *lauf; for (lauf = list_of_intervalle; lauf; lauf = lauf -> next) { if ( ! strcmp (name, lauf->name)) { switch (lauf -> intervall_typ) { default: /* und */ case intervall_komplex: fatal_error (0, mutC_STR(__FILE__), __LINE__); break; case intervall_absolut: return lauf->u.intervall_absolut.intervall_wert ; /* break; */ } } } fatal_error(26,mutC_STR(name)); /* Intrvall n.dekl. */ return 0.0; /* to prevent warnings */ }
double get_wert_komplex_intervall | ( | struct komplex_intervall * | intervall | ) |
Definiert in Zeile 68 der Datei Interval.cpp.
Benutzt fatal_error(), get_intervall_wert(), mutC_STR, name und intervall::next.
Wird benutzt von berechne_intervall_endgueltig(), berechne_ton_endgueltig(), expandiere_tonsystem() und expandiere_umstimmung().
{ double ret = 1.0; for ( ; intervall ; intervall = intervall -> next ) { double help = get_intervall_wert (intervall -> name); if (help > 0) ret *= pow (help, intervall -> faktor); else { fatal_error(46, mutC_STR(intervall -> name)); /* unzul. Intervallwert */ } } return ret; }
Definiert in Zeile 597 der Datei EDevice.cpp.
{ start: if ( !p || !(*p)[0] ) return 0; while ( (*p)[0] == ' ' || (*p)[0] == '\n' || (*p)[0] == '\r' ) *p = &(*p)[1]; if ( !(*p)[0] ) return 0; char *p1 = *p; *p = strchr(p1, '\n'); if ( !p ) *p = &p1[strlen(p1)]; while ( *p1 && strchr("\n\r\t ", *p1) ) p1 = &p1[1]; int i = (*p)-p1; strncpy(s, p1, i); s[i] = 0; while ( i > 0 && strchr("\n\r\t ", s[i-1]) ) s[--i] = 0; if ( !s[0] || s[0] == '#' ) goto start; return 1; }
EDevice* GetEOut | ( | int | nr | ) |
Definiert in Zeile 251 der Datei EDevice.cpp.
Benutzt EDevice::Next und OutEDevices.
Wird benutzt von ScanRoutes().
{ if ( nr < 0 ) return 0; EDevice *Out = OutEDevices; while ( Out && nr ) { Out = Out->Next; nr--; } return Out; }
ChordNote * GisWriteHead::GetFreeNote | ( | ) |
Definiert in Zeile 1022 der Datei GIS_Head.cpp.
Benutzt ChordNote::AddGis(), GisWriteHead::ChordNotes, CNNoteOn, mutEmptyString, mutT und ChordNote::Next.
Wird benutzt von GisWriteHead::ProceedGis().
{ if ( !ChordNotes ) return ChordNotes = new ChordNote(this); ChordNote **ANote = &ChordNotes; while ( *ANote ) { if ( !((*ANote)->Status & CNNoteOn) ) { if ( (*ANote)->CurrentTime ) (*ANote)->AddGis(new GisNote(mutT("_"), mutEmptyString, 0, (*ANote)->CurrentTime, mutT(" "), 0)); return *ANote; } ANote = &(*ANote)->Next; } *ANote = new ChordNote(ChordNotes); return *ANote; }
GisWriteHead* GetMatchingHeader | ( | GisWriteHead ** | head, |
const mutString | id | ||
) |
Definiert in Zeile 1425 der Datei GIS_Head.cpp.
Benutzt GisWriteHead::Id, GisWriteHead::InsertAfter(), mutStrCmp, GisWriteHead::Next und GisWriteHead::Prev.
Wird benutzt von GisWriteHeadGis().
{ GisWriteHead *h = *head, *LastHead = 0; GisWriteHead *Boss = h; size_t BossIdLength = mutLen(h->Id); char CmpRes = 0; // search header while ( h ) { #ifdef WX if ( (id.StartsWith(h->Id)) && (mutLen(h->Id) >= BossIdLength) ) { Boss = h; BossIdLength = mutLen(h->Id) + 1; } CmpRes = mutStrCmp(h->Id, id); if ( CmpRes >= 0 ) break; #else if ( !strncmp(h->Id, id, strlen(h->Id)) && (strlen(h->Id) >= BossIdLength) ) { Boss = h; BossIdLength = strlen(h->Id) + 1; } CmpRes = strcmp(h->Id, id); if ( CmpRes >= 0 ) break; #endif LastHead = h; h = h->Next; } if ( CmpRes ) // insert a new header { h = new GisWriteHead(Boss, id); if ( LastHead ) // not at the first position h->InsertAfter(LastHead); else // first position in header list { h->Prev = (GisWriteHead*)head; h->Next = *head; if ( *head ) (*head)->Prev = h; *head = h; } } return h; }
Definiert in Zeile 58 der Datei GIS_Head.cpp.
Benutzt DEBUGLOG2, GetGisType(), GTParaStr, mutString und mutT.
Wird benutzt von GisReadArtHead::Read().
{ if ( token && GetGisType(token) == GTParaStr ) { mutString t; #if defined(WX) mutString v; long value; t=(((GisParaStr*)token)->s).Upper(); DEBUGLOG2(other,_T("t= %s"), t.c_str()); if (t.StartsWith(mutT("MIDI"),&v)) { v.ToLong(&value); DEBUGLOG2(other,_T("v= %s"), v.c_str()); return (char) value; } #else strncpy(t, ((GisParaStr*)token)->s, 30); strupr(t); if ( !strncmp(t, "MIDI", 4) ) return atoi(&t[4]); #endif } return 0; }
wxString EDevice::GetName | ( | ) |
return the name of the device
This function returns the name of the device. All spaces (' ') are replaced by '_'.
Definiert in Zeile 73 der Datei EDevice.cpp.
Benutzt EDevice::Name.
{ wxString s = Name; s.Replace(_T(" "), _T("_")); return s; }
ChordNote * GisWriteHead::GetNote | ( | int | instrId, |
int | taste | ||
) |
Definiert in Zeile 1046 der Datei GIS_Head.cpp.
Benutzt ChordNote::CheckId(), GisWriteHead::ChordNotes und ChordNote::Next.
{ ChordNote *ANote = ChordNotes; while ( ANote ) { if ( ANote->CheckId(instrId, taste) ) break; ANote = ANote->Next; } return ANote; }
double GetReal | ( | GisToken * | token | ) |
Definiert in Zeile 48 der Datei GIS_Head.cpp.
Benutzt GetGisType(), GTParaInt und GTParaReal.
Wird benutzt von GisReadArtHead::Read().
{ if ( GetGisType(token) == GTParaInt ) return (double) ((GisParaInt*)token)->i; else if ( GetGisType(token) == GTParaReal ) return ((GisParaReal*)token)->x; return 0; }
ERoute * EDevice::GetRoute | ( | int | nr | ) |
find a route to a given number
nr | Index indicating which route to return |
Definiert in Zeile 46 der Datei EDevice.cpp.
Benutzt ERoute::Next und EDevice::Routes.
int GetTheSpeedFactor | ( | GisToken * | token | ) |
Definiert in Zeile 89 der Datei GIS_Head.cpp.
Benutzt DEBUGLOG2, GetGisType(), GTParaStr, mutString, mutT und ZIFFER.
Wird benutzt von GisReadArtHead::Read().
{ DEBUGLOG2(other,_T("%p"),token); if ( token && GetGisType(token) == GTParaStr ) { const mutString &t = ((GisParaStr*) token) -> s; DEBUGLOG2(other,_T("%s"),t.c_str()); int i = 0; long n=0, d=0, bpm=0; while ( !ZIFFER && t[i] ) i++; while ( ZIFFER ) n = n*10 + (t[i++]-mutT('0')); while ( !ZIFFER && t[i] ) i++; while ( ZIFFER ) d = d*10 + (t[i++]-mutT('0')); while ( !ZIFFER && t[i] ) i++; while ( ZIFFER ) bpm = bpm*10 + (t[i++]-mutT('0')); DEBUGLOG2(other,_T("%d * 30000 / %d / %d"),d,n,bpm); if ( !n || !d || bpm < 4 ) return 2000; else return d * 30000 / n / bpm; } return 2000; }
void GisReadArtDummy | ( | GisReadArtHead * | , |
char | |||
) |
Definiert in Zeile 631 der Datei GIS_Head.cpp.
{
// just a dummy
}
frac GisReadArtHeadOn | ( | GisReadArtHead ** | Head, |
frac | dTime, | ||
GisReadArtProceed * | proceed | ||
) |
Definiert in Zeile 637 der Datei GIS_Head.cpp.
Benutzt GisReadHead::Boss, GisReadHead::Cursor, GisReadHead::CursorNext(), GisReadHead::CutOut(), DEBUGLOG2, GisReadHead::Next, GisReadHead::nSub, GisReadArtHead::Read(), GisReadHead::Time, GisReadArtHead::Time2 und GisReadHead::Turn.
{ DEBUGLOG2(other,_T("")); frac MinTime = frac(-1, 1); beginloop: while ( *Head ) { GisReadArtHead *h = *Head; if ( h->nSub > 0 ) // header has subs { Head = (GisReadArtHead**)&(h->Next); continue; } if ( h->nSub == 0 ) // all subs has finished { proceed(h, h->Turn++); // end of segment or sequenz h->CursorNext(); h->Time = 0; } if ( h->Time != frac(0, 1) ) // header in normal state { h->Time -= dTime; if ( h->Time <= frac(0, 1) ) { proceed(h, h->Turn++); if ( h->Turn == 2 ) { h->Time = h->Time2; h->Time2 = 0; } if ( h->Turn > 2 ) h->CursorNext(); } } h->nSub = -1; // normal header // now check, wether count down Time is 0 // if h->time = 0 then h->Cursor points to the GisToken next to proceed while ( !(h->Time) ) // read next tokens { if ( h->Turn) { proceed(h, h->Turn++); if ( h->Turn == 2 ) { h->Time = h->Time2; h->Time2 = 0; } if ( h->Turn > 2 ) h->CursorNext(); else continue; } if ( !h->Cursor ) // header finished, kick away { h->CutOut(); if ( h->Boss ) h->Boss->nSub--; // inform the boss delete h; goto beginloop; } // proceed proceed(h, 0); h->Read(); if ( h->nSub != -1 ) goto beginloop; if ( !(h->Time) ) // token without duration h->CursorNext(); } // check MinTime if ( MinTime == frac(-1,1) || h->Time < MinTime ) MinTime = h->Time; // next Header Head = (GisReadArtHead**)&(h->Next); } return MinTime; }
void GisReadDummy | ( | GisReadHead * | , |
char | |||
) |
Definiert in Zeile 352 der Datei GIS_Head.cpp.
{
// just a dummy
}
frac GisReadHeadOn | ( | GisReadHead ** | Head, |
frac | dTime, | ||
GisReadProceed * | proceed | ||
) |
Definiert in Zeile 358 der Datei GIS_Head.cpp.
Benutzt GisReadHead::Boss, GisReadHead::Cursor, GisReadHead::CursorNext(), GisReadHead::CutOut(), GisReadHead::Next, GisReadHead::nSub, GisReadHead::Read() und GisReadHead::Time.
{ frac MinTime = frac(-1, 1); beginloop: while ( *Head ) { GisReadHead *h = *Head; if ( h->nSub > 0 ) // header has subs { Head = &(h->Next); continue; } if ( h->nSub == 0 ) // all subs has finished { proceed(h, 1); h->CursorNext(); h->Time = 0; } if ( h->Time != frac(0, 1) ) // header in normal state { h->Time -= dTime; if ( h->Time <= frac(0, 1) ) { proceed(h, 1); h->CursorNext(); } } h->nSub = -1; // normal header // now check, wether count down Time is 0 // if h->time = 0 then h->Cursor points to the GisToken next to proceed while ( !(h->Time) ) // read next tokens { if ( !h->Cursor ) // header finished, kick away { h->CutOut(); if ( h->Boss ) h->Boss->nSub--; // inform the boss delete h; goto beginloop; } // proceed proceed(h, 0); h->Read(); if ( h->nSub != -1 ) goto beginloop; if ( !(h->Time) ) // token without duration h->CursorNext(); } // check MinTime if ( MinTime == frac(-1,1) || h->Time < MinTime ) MinTime = h->Time; // next Header Head = &(h->Next); } return MinTime; }
int GisWriteHeadGis | ( | GisWriteHead ** | head, |
mutString | id, | ||
GisToken * | token, | ||
char | turn | ||
) |
Definiert in Zeile 1483 der Datei GIS_Head.cpp.
Benutzt GetMatchingHeader() und GisWriteHead::ProceedGis().
Wird benutzt von OutGis::Gis().
{ return GetMatchingHeader(head, id)->ProceedGis(token, turn); }
IMPLEMENT_DYNAMIC_CLASS | ( | InputDevDlg | , |
InputDevDlgBase | |||
) |
InputDevDlg type definition
GisWriteHead * GisWriteHead::InsertAfter | ( | GisWriteHead * | position | ) |
Definiert in Zeile 982 der Datei GIS_Head.cpp.
Benutzt GisWriteHead::Next und GisWriteHead::Prev.
Wird benutzt von GetMatchingHeader().
GisReadHead * GisReadHead::InsertInfrontOf | ( | GisReadHead * | position | ) |
Definiert in Zeile 134 der Datei GIS_Head.cpp.
Benutzt DEBUGLOG, GisReadHead::Next, GisReadHead::Prev und GisReadHead::PrevPtr.
Wird benutzt von GisReadHead::GisReadHead().
{ DEBUGLOG (other, _T("pos = %p; this = %p"),position,this); if ( !position ) { Next = NULL; Prev = this; return this; } #if 0 // *(position->Prev) == position if ( *(position->PrevPtr) == position ) { // first position DEBUGLOG (other, _T("first position %p, Prev: %p, Next: %p, cmp: %p"), position, position->Prev, position->Next, *((position->PrevPtr)) ); *(position->PrevPtr) = this; } else { // normal position in list DEBUGLOG (other, _T("first position %p, Prev: %p, Next: %p, cmp: %p"), position, position->Prev, position->Next, *((GisReadHead**)(position->PrevPtr)) ); (*(position->PrevPtr))->Next = this; } PrevPtr = position->PrevPtr; Next = position; *(position->PrevPtr) = this; return this; #else // *(position->Prev) == position if ( *(position->PrevPtr) == position ) { // first position DEBUGLOG (other, _T("first position %p, Prev: %p, Next: %p, cmp: %p"), position, position->Prev, position->Next, *((position->PrevPtr)) ); *(position->PrevPtr) = this; PrevPtr = position->PrevPtr; position->PrevPtr = &(position->Prev); } else { // normal position in list DEBUGLOG (other, _T("first position %p, Prev: %p, Next: %p, cmp: %p"), position, position->Prev, position->Next, *((GisReadHead**)(position->PrevPtr)) ); position->Prev->Next = this; wxASSERT(position->PrevPtr == &(position->Prev)); } Prev = position->Prev; Next = position; position->Prev = this; return this; #endif }
int intervall_list_laenge | ( | struct intervall * | list | ) |
Definiert in Zeile 119 der Datei Interval.cpp.
Benutzt intervall::next.
Wird benutzt von berechne_intervalle_absolut() und calc_declaration_numbers().
{ if (list) return 1 + intervall_list_laenge (list -> next); return 0; }
static int intervall_nummer | ( | const char * | name | ) | [static] |
Definiert in Zeile 138 der Datei Interval.cpp.
Benutzt anzahl_intervalle, fatal_error() und mutC_STR.
Wird benutzt von berechne_intervall_endgueltig() und berechne_intervalle_absolut().
{ int i; for (i=0; i<anzahl_intervalle; i++) if ( ! strcmp (name, intervalle[i]->name)) return i; fatal_error(26,mutC_STR(name)); /* Ton n.dekl. */ return 0; /* to prevent warnings */ }
void pascal _export KeyboardAnalyse | ( | int | box, |
int | taste, | ||
char | isLogic | ||
) |
Definiert in Zeile 611 der Datei Execute.cpp.
Benutzt execute_aktion(), first_keyboard und keyboard_ereignis::next.
Wird benutzt von KeyboardIn() und MutLogicWnd::UpDate().
{ for (struct keyboard_ereignis *help = first_keyboard[box]; help ; help=help->next) if ( toupper(taste)==help->taste && isLogic == ( help->the_logik_to_expand != NULL ) ) { execute_aktion(box, help->aktion); return; } }
void pascal _export KeyboardAnalyseSimple | ( | int | box, |
int | taste | ||
) |
Definiert in Zeile 625 der Datei Execute.cpp.
Benutzt execute_aktion(), first_keyboard und keyboard_ereignis::next.
Wird benutzt von keyboard_analyse() und KeyboardIn().
{ for (struct keyboard_ereignis *help = first_keyboard[box]; help ; help=help->next) if ( toupper(taste)==help->taste ) { execute_aktion(box, help->aktion); return; } }
int ChordNote::MutNoteOff | ( | ) |
Definiert in Zeile 942 der Datei GIS_Head.cpp.
Benutzt ChordNote::AlterBegin, ChordNote::Boss, CNAlter, CNNoteOn, ChordNote::CurrentTime, ChordNote::Cursor, GetGisType(), GTNote, ChordNote::LastSep, GisToken::Next, GisWriteHead::NoteOn, ChordNote::nTie und ChordNote::Status.
{ if ( !(Status & CNNoteOn) ) return 1; if ( GetGisType(*Cursor) != GTNote ) return 1; if ( CurrentTime ) { ((GisNote*)(*Cursor))->Duration = CurrentTime; Cursor = &(*Cursor)->Next; } else // note with no duration { // delete empty note delete *Cursor; *Cursor = 0; // delete alter if ( Status & CNAlter && !(*AlterBegin)->Next ) { delete *AlterBegin; Cursor = AlterBegin; *Cursor = 0; Status -= CNAlter; } LastSep = 0; if ( nTie ) nTie--; } CurrentTime = 0; Status -= CNNoteOn; Boss->NoteOn--; return 0; }
int ChordNote::MutNoteOn | ( | int | key, |
double | pitch, | ||
int | instrId, | ||
int | taste, | ||
mutString | sep | ||
) |
Definiert in Zeile 914 der Datei GIS_Head.cpp.
Benutzt ChordNote::AddGis(), ChordNote::AlterBegin, ChordNote::Boss, ChordNote::CheckCloseAlter(), CNAlter, CNNoteOn, ChordNote::Cursor, GisWriteHead::GetKey(), GisWriteHead::GetOctave(), ChordNote::InstrId, ChordNote::Key, ChordNote::LastSep, mutT, NO_KEY, Note(), GisWriteHead::NoteOn, ChordNote::nTie, ChordNote::Pitch, GisToken::Sep, ChordNote::Status, ChordNote::Taste und TTalter.
{ if ( Status & CNNoteOn ) return 1; if ( pitch != Pitch && key != NO_KEY ) { CheckCloseAlter(); AlterBegin = Cursor; AddGis(new GisTagBegin(TTalter, 0, new GisParaReal(pitch, mutT(">(")), mutT("<"), 0)); Status |= CNAlter; Pitch = pitch; } GisToken *Note = new GisNote(key, Boss->GetOctave(), Boss->GetKey(), sep); *Cursor = Note; LastSep = &Note->Sep; InstrId = instrId; Taste = taste; Key = key; Status |= CNNoteOn; Boss->NoteOn++; if ( nTie ) nTie++; return 0; }
EDevice* NewDevice | ( | EDevice ** | List, |
DevType | dt, | ||
const wxString & | name, | ||
int | devId, | ||
EDevice * | oldPos = 0 , |
||
EDevice * | newPos = 0 |
||
) |
create a new device.
List | list where the device should be added |
dt | type of the new device |
name | name of the new device |
devId | identifier of the new device |
oldPos | old position of the device (will be removed or overwritten) |
newPos | new position of the devices |
Definiert in Zeile 98 der Datei EDevice.cpp.
Benutzt EDevice::AddRoute(), ChangeOutReferences(), DEBUGLOG2, EDevice::DevId, EDevice::DT, DTMidiPort, EDevice::Mode, MutaborDeviceUnregistered, name, EDevice::Name, EDevice::Next und EDevice::Routes.
Wird benutzt von ScanRoutes() und WriteRoutes().
{ DEBUGLOG2(routing,_T("(%x, %d, %s, %x, %x)"), List, dt, (name.c_str()), oldPos, newPos); // Position finden zum Daten abladen EDevice *Pos = 0; ERoute *R = 0; if ( oldPos == newPos && oldPos ) { Pos = oldPos; Pos->DT = dt; #ifdef WX Pos->Name = name; #else strcpy(Pos->Name, name); #endif Pos->DevId = devId; Pos->Mode = MutaborDeviceUnregistered; } else { if ( oldPos ) { // Position von oldPos als Adresse finden EDevice **PreOldPos = List; for (;*PreOldPos; PreOldPos = &((*PreOldPos)->Next)) if ( *PreOldPos == oldPos ) break; // oldPos löschen, Routen retten R = oldPos->Routes; oldPos->Routes = 0; *PreOldPos = (*PreOldPos)->Next; oldPos->Next = 0; delete oldPos; } // evtl. nur löschen if ( dt == -1 ) { if ( R ) delete R; return 0; } // Position von newPos als Adresse finden EDevice **PreNewPos = List; for (;*PreNewPos; PreNewPos = &((*PreNewPos)->Next)) if ( *PreNewPos == newPos ) break; // Device einfügen Pos = new EDevice(dt, name, devId); Pos->Routes = R; Pos->Next = *PreNewPos; *PreNewPos = Pos; } // Testen, ob Device schon so existiert for (EDevice **Dev = List ; *Dev; Dev = &((*Dev)->Next)) if ( *Dev != Pos && (*Dev)->DT == dt && ( #ifdef WX ( !(*Dev)->Name.Cmp(name) ) || #else ( !strcmp((*Dev)->Name, name) ) || #endif ( dt == DTMidiPort && (*Dev)->DevId == devId ) ) ) { // doppeltes Device gefunden, Routen ¸bertragen und lˆschen EDevice *Dev1 = *Dev; if ( Dev1->Routes ) { Pos->AddRoute(Dev1->Routes); Dev1->Routes = 0; } *Dev = Dev1->Next; Dev1->Next = 0; ChangeOutReferences(Dev1, Pos); delete Dev1; break; } return Pos; }
int EDevice::nRoutes | ( | ) |
return the number of routes.
Definiert in Zeile 56 der Datei EDevice.cpp.
Benutzt ERoute::Next und EDevice::Routes.
void PRINTWINDOW | ( | wxWindow * | window, |
const wxString & | offset = _T ("") |
||
) |
Definiert in Zeile 135 der Datei mxDefs.cpp.
Benutzt DEBUGLOG2.
{ if (!window) DEBUGLOG2 (other,_T("NULL window.")); }
cout << "[" << Id << "," << (int)turn << "]"; token->Echo(); cout << " ";
Definiert in Zeile 1235 der Datei GIS_Head.cpp.
Benutzt AddTag(), GisWriteHead::ChordNotes, GisWriteHead::CloseCurrentToken(), GisWriteHead::CommaAtEnd, GisToken::Copy(), GisWriteHead::Cursor, TagListData::Data, EndTag(), GisWriteHead::GetFreeNote(), GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, TagListData::data::i, GisWriteHead::Id, GisWriteHead::Key, GisWriteHead::NoteOn, GisWriteHead::Octave, GisToken::Sep, ChordNote::SetNoteOff(), ChordNote::SetNoteOn(), GisWriteHead::State(), TTkey, TToct, GisToken::Type(), GisWriteHead::WriteChord(), WTAG und WTAGEND.
Wird benutzt von GisWriteHeadGis().
{ int Res = 0; int Id; if ( turn == 1 ) return 0; CommaAtEnd = 0; if ( !turn ) // this token first time { Res = CloseCurrentToken(); // close the current Token if ( Res ) return Res; switch ( token->Type() ) { case GTNull: return 3; // impossible case GTUnknown: *Cursor = new GisToken(token->Sep); Cursor = &((*Cursor)->Next); break; case GTSequenz: *Cursor = new GisSequenz(0, token->Sep); ((GisSequenz*)*Cursor)->Sep2 = ((GisSequenz*)token)->Sep2; break; case GTSegment: *Cursor = new GisSegment(0, token->Sep); ((GisSegment*)*Cursor)->Sep2 = ((GisSegment*)token)->Sep2; break; case GTTag: case GTTagBegin: /* if ( token->Type() == GTTag ) *Cursor = new GisTag(((GisTag*)token)->Name, ((GisTag*)token)->Para, token->Sep); else *Cursor = new GisTagBegin(((GisTag*)token)->Name, ((GisTag*)token)->Para, token->Sep); */ *Cursor = token->Copy(); Id = WTAG->Id; if ( Id == TToct ) { if ( WTAG->GetParaType(1) == GTParaInt ) AddTag(&Octave, WTAG)->Data.i = ((GisParaInt*)WTAG->GetPara(1))->i; } else if ( Id == TTkey ) { if ( WTAG->GetParaType(1) == GTParaInt ) AddTag(&Key, WTAG)->Data.i = ((GisParaInt*)WTAG->GetPara(1))->i; } Cursor = &((*Cursor)->Next); break; case GTTagEnd: *Cursor = new GisTagEnd(0, token->Sep); Cursor = &((*Cursor)->Next); if ( WTAGEND->Begin ) { Id = WTAGEND->Begin->Id; if ( Id == TToct ) EndTag(&Octave, WTAGEND); else if ( Id == TTkey ) EndTag(&Key, WTAGEND); } break; case GTParaInt: case GTParaReal: case GTParaStr: return 4; case GTComma: *Cursor = new GisComma(token->Sep); Cursor = &((*Cursor)->Next); CommaAtEnd = 1; break; case GTNote: ChordNote *ANote = GetFreeNote(); if ( ANote ) ANote->SetNoteOn(token); else return 1; break; } } else // second call { if ( State() != token->Type() && token->Type() != GTNote) return 2; if ( token->Type() != GTNote ) Res = CloseCurrentToken(); else { if ( ChordNotes ) { Res = !ChordNotes->SetNoteOff(token); } if ( !NoteOn ) // write the Chord WriteChord(); } } return Res; }
void GisReadArtHead::Read | ( | ) |
Erneute Implementation von GisReadHead.
Definiert in Zeile 503 der Datei GIS_Head.cpp.
Benutzt AddTag(), GisReadArtHead::Alter, ARStaccatto, ARTenuto, GisReadArtHead::Articulation, ArticulationHold, TagListData::data::ch, char, GisReadHead::CreateSegmentSubs(), GisReadHead::CreateSequenzSubs(), GisReadHead::Cursor, TagListData::Data, DEBUGLOG, frac::denominator(), EndTag(), GisReadArtHead::GetArticulation(), GetMidiInstrument(), GetReal(), GetTheSpeedFactor(), GTNote, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, TagListData::data::i, GisReadHead::Id, GisReadArtHead::Instr, GisReadArtHead::Intensity, frac::numerator(), GisReadArtHead::Octave, TAG, TAGEND, GisReadArtHead::Tempo, GisReadHead::Time, GisReadArtHead::Time2, TTaccent, TTalter, TTinstr, TTintens, TToct, TTstacc, TTtempo, TTten, GisReadHead::Turn und GisToken::Type().
Wird benutzt von GisReadArtHeadOn() und InGis::ReadOn().
{ int Id = 0; DEBUGLOG (other, _T("Id: %d; Cursor: %p"), Id, Cursor); if ( !Cursor ) return; Turn = 3; DEBUGLOG (other, _T("Cursor->Type %d"), Cursor->Type()); switch ( Cursor->Type() ) { case GTSegment: CreateSegmentSubs(); Turn = 2; break; case GTSequenz: CreateSequenzSubs(); Turn = 2; break; case GTNote: Time2 = ((GisNote*)Cursor)->Duration; Time = Time2 * frac(ArticulationHold[GetArticulation()], 100); DEBUGLOG (other, _T("Time: %d/%d; Time2: %d/%d"), Time.numerator(),Time.denominator(),Time2.numerator(),Time2.denominator()); Time2 -= Time; DEBUGLOG (other, _T("Time: %d/%d; Time2: %d/%d"), Time.numerator(),Time.denominator(),Time2.numerator(),Time2.denominator()); Turn = 1; break; case GTTag: case GTTagBegin: Id = TAG->Id; if ( Id == TTintens ) { if ( TAG->GetParaType(2) == GTParaInt || TAG->GetParaType(2) == GTParaReal) AddTag(&Intensity, TAG)->Data.ch = (char) (GetReal(TAG->GetPara(2)) * 127); } else if ( Id == TTaccent ) { AddTag(&Intensity, TAG)->Data.ch = 120; // ??? what value } else if ( Id == TTstacc ) { AddTag(&Articulation, TAG)->Data.ch = ARStaccatto; } else if ( Id == TTten ) { AddTag(&Articulation, TAG)->Data.ch = ARTenuto; } else if ( Id == TToct ) { if ( TAG->GetParaType(1) == GTParaInt ) AddTag(&Octave, TAG)->Data.i = ((GisParaInt*)TAG->GetPara(1))->i; } else if ( Id == TTalter ) { if ( TAG->GetParaType(1) != GTParaStr ) AddTag(&Alter, TAG)->Data.i = (int) (GetReal(TAG->GetPara(1)) * 0x1FFF) ; } else if ( Id == TTinstr ) { if ( TAG->GetParaType(2) == GTParaStr ) AddTag(&Instr, TAG)->Data.ch = GetMidiInstrument(TAG->GetPara(2)); } else if ( Id == TTtempo ) { if ( TAG->GetParaType(2) == GTParaStr ) { long int speed = (AddTag(&Tempo, TAG)->Data.i = GetTheSpeedFactor(TAG->GetPara(2))); DEBUGLOG (other, _T("Got speed factor %ld"),speed); } } break; case GTTagEnd: DEBUGLOG (other, _T("Ended tag.")); if ( !TAGEND->Begin ) break; DEBUGLOG (other, _T("Tag Id was %d."),TAGEND->Begin->Id); Id = TAGEND->Begin->Id; if ( Id == TTintens || Id == TTaccent ) EndTag(&Intensity, TAGEND); else if ( Id == TTstacc || Id == TTten ) EndTag(&Articulation, TAGEND); else if ( Id == TToct ) EndTag(&Octave, TAGEND); else if ( Id == TTalter ) EndTag(&Alter, TAGEND); else if ( Id == TTinstr ) EndTag(&Instr, TAGEND); else if ( Id == TTtempo ) EndTag(&Tempo, TAGEND); } // the other tokens don't influenz the way of reading }
void GisReadHead::Read | ( | ) |
Erneute Implementation in GisReadArtHead.
Definiert in Zeile 304 der Datei GIS_Head.cpp.
Benutzt GisReadHead::CreateSegmentSubs(), GisReadHead::CreateSequenzSubs(), GisReadHead::Cursor, DEBUGLOG, GTNote, GTSegment, GTSequenz, GisReadHead::Time und GisToken::Type().
Wird benutzt von GisReadHeadOn().
{ DEBUGLOG (other, _T("Cursor: %p"),Cursor); if ( !Cursor ) return; switch ( Cursor->Type() ) { case GTSegment: CreateSegmentSubs(); break; case GTSequenz: CreateSequenzSubs(); break; case GTNote: DEBUGLOG (other, _T("Setting time")); Time = ((GisNote*)Cursor)->Duration; break; } // the other tokens dont influenz the way of reading }
int GisWriteHead::ReadyForBoss | ( | ) |
Definiert in Zeile 1062 der Datei GIS_Head.cpp.
Benutzt GisWriteHead::CloseCurrentToken(), Comma(), GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::Data, GTNote, GTSequenz, GisToken::Next, GisWriteHead::SingleToken und GisToken::Type().
Wird benutzt von GisWriteHead::CloseSubs().
{ CloseCurrentToken(0); //+ zu hart: bei Unknown muß keine Note eingefügt werden (zumindest nur beim ersten // put in Sequenz, when single token mode #ifdef GMN_STRICT if ( SingleToken && Data && &Data->Next != Cursor && Data->Type() != GTSequenz ) { char isSingle = 2; GisToken *Token = Data, LastToken = 0; while ( 1 ) { if ( Token->Type() == GTNote ) if ( isSingle ) isSingle--; if ( Token->Next ) Token = Token->Next; else break; } if ( !isSingle ) { GisToken **Comma = 0; if ( CommaAtEnd ) // get right position { Comma = &Data; GisToken **Comma = &Data; while ( (*Comma)->Next ) Comma = &((*Comma)->Next); *Comma = 0; } Data = new GisSequenz(Data, " "); Cursor = &Data->Next; if ( Comma ) { *Cursor = *Comma; Cursor = &(*Comma)->Next; } } } #endif return 0; }
void GisWriteHead::RemoveComma | ( | ) |
Definiert in Zeile 1110 der Datei GIS_Head.cpp.
Benutzt GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::Data und GisToken::Next.
Wird benutzt von CloseAllSubs() und GisWriteHead::CloseSubs().
Definiert in Zeile 456 der Datei GIS_Head.cpp.
Benutzt TagListData::Next.
void ScanDevices | ( | ) |
translate the GUI routing information to mutabor
make devices and routes so that we can avoid this function enable changes on line
Definiert in Zeile 1200 der Datei EDevice.cpp.
Benutzt InDevice::AddRoute(), DEBUGLOG2, OutDevice::GetDeviceList(), InDevice::GetDeviceList(), OutDevice::GetNext(), EDevice::newInDevice(), EDevice::newOutDevice(), ERoute::Next, EDevice::Next und OutEDevices.
{ // clean device lists DEBUGLOG2(routing,_T("")); if ( InDevice::GetDeviceList() ) { delete InDevice::GetDeviceList(); } if ( OutDevice::GetDeviceList() ) { delete OutDevice::GetDeviceList(); } // handle output devices { OutDevice *Out = OutDevice::GetDeviceList(); EDevice * oute = OutEDevices; if (oute) { Out = oute->newOutDevice(); for (oute = oute -> Next; oute ; oute = oute->Next) { DEBUGLOG2(other,_T("oute: %x"), oute); Out -> SetNext(oute->newOutDevice()); Out = Out->GetNext(); } } } // handle input devices for (EDevice * ine = InEDevices; ine ; ine = ine->Next) { InDevice *In = ine->newInDevice(); DEBUGLOG2(other,_T("ine: %x; In: %x"), ine, In); if (!In) continue; // Permit unknown devices wxASSERT(In); // handle routes for (ERoute * routee = ine->Routes; routee; routee = routee->Next) { DEBUGLOG2(other,_T("routee: %x"), routee); Route * r = routee->newRoute(); wxASSERT(r); DEBUGLOG2(other,_T("route: %x"), r); In->AddRoute(r); } } }
void ScanRoutes | ( | char * | config | ) |
read the routes from the configuration
config | configuration to be read |
Definiert in Zeile 641 der Datei EDevice.cpp.
Benutzt EDevice::AddRoute(), EDevice::BendingRange, DTUnknown, GetEOut(), GETLINE, InEDevices, NewDevice(), OutEDevices, Str2DT() und Str2RT().
{ // Listen s‰ubern if ( InEDevices ) { delete InEDevices; InEDevices = 0; } if ( OutEDevices ) { delete OutEDevices; OutEDevices = 0; } // Zerlegen von config char s[200], *p1 = config; GETLINE; while ( strncmp(s, "OUTPUT", 6) ) { GETLINE; } GETLINE; // Output lesen while ( strncmp(s, "INPUT", 5) ) { char Type[20], Name[200]; int DevId, BendingRange; // int test = sscanf (s, "%s %s %d %d", Type, Name, // &DevId, &BendingRange); int test = sscanf (s, "%s \"%[^\"]^^\" %d %d", Type, Name, &DevId, &BendingRange); if ( test < 2 ) test = sscanf (s, "%s %s %d %d", Type, Name, &DevId, &BendingRange); if ( test < 2 ) { //3 ?? } EDevice *Out = NewDevice(&OutEDevices, Str2DT(Type), Name, DevId); if ( test == 4 ) Out->BendingRange = BendingRange; GETLINE; } GETLINE; // Input lesen while ( 1 ) { // Device lesen char Type[20], Name[200]; int DevId = -1; int test = sscanf (s, "%s \"%[^\"]\" %d", Type, Name, &DevId); if ( test < 2 ) test = sscanf (s, "%s %s %d", Type, Name, &DevId); if ( test < 2 ) { //3 ?? } EDevice *In = NewDevice(&InEDevices, Str2DT(Type), Name, DevId); GETLINE; // Routen lesen while ( Str2DT(s) == DTUnknown ) { // Route lesen char Type[20]; int IFrom = 0, ITo = 0, Box = 0, BoxActive = 0, OutDev = -1, OFrom = -1, OTo = -1, ONoDrum = 1; test = sscanf(s, "%s %d %d %d %d %d %d %d %d", Type, &IFrom, &ITo, &Box, &BoxActive, &OutDev, &OFrom, &OTo, &ONoDrum); if ( test < 2 ) { //3 ?? } In->AddRoute(new ERoute(Str2RT(Type), IFrom, ITo, Box, BoxActive, GetEOut(OutDev), OFrom, OTo, ONoDrum)); GETLINE; } } }
int ChordNote::SetNoteOff | ( | GisToken * | note | ) |
Definiert in Zeile 826 der Datei GIS_Head.cpp.
Benutzt ChordNote::Boss, CmpNote(), CNNoteOn, ChordNote::CurrentTime, ChordNote::Cursor, ChordNote::Next, GisWriteHead::NoteOn, ChordNote::SetNoteOff() und ChordNote::Status.
Wird benutzt von GisWriteHead::ProceedGis() und ChordNote::SetNoteOff().
void ChordNote::SetNoteOn | ( | GisToken * | note | ) |
Definiert in Zeile 818 der Datei GIS_Head.cpp.
Benutzt ChordNote::Boss, CNNoteOn, ChordNote::Cursor, NOTE, GisWriteHead::NoteOn und ChordNote::Status.
Wird benutzt von GisWriteHead::ProceedGis().
int SmallestBoxUsed | ( | ) |
Definiert in Zeile 1179 der Datei EDevice.cpp.
Benutzt ERoute::Next, EDevice::Next und EDevice::Routes.
{ int Box = 256; for (EDevice *In = InEDevices; In; In = In->Next) for (ERoute *R = In->Routes; R; R = R->Next) if ( R->Box >= 0 ) #ifdef VC8 Box = min(Box, R->Box); #else Box = STD_PRE::min(Box, R->Box); #endif if ( Box == 256 ) return 0; else return Box; }
Definiert in Zeile 197 der Datei EDevice.cpp.
Wird benutzt von ScanRoutes().
{ char *DTName[] = { "", "MIDIPORT", "MIDIFILE", "GMN" }; int i; for (i = 3; i > 0; i--) if ( !strncmp(type, DTName[i], strlen(DTName[i])) ) break; return (DevType)i; }
RouteType Str2RT | ( | mutChar * | type | ) |
parse a string representation of a route type
This function returns the numeric route type to a string representation
type | String (array of mutChar ) |
Definiert in Zeile 235 der Datei EDevice.cpp.
Benutzt RTName.
Wird benutzt von ScanRoutes().
Definiert in Zeile 743 der Datei GIS_Head.cpp.
Wird benutzt von CmpNote().
{ if ( s1 ) { if ( s2 ) return strcmp(s1, s2); else return 1; } else return s2 != 0; }
static void test_zyklen | ( | int | startknoten | ) | [static] |
Definiert in Zeile 150 der Datei Interval.cpp.
Benutzt adjazent, anzahl_intervalle, fatal_error(), mutC_STR, name und visited.
Wird benutzt von berechne_intervalle_absolut().
{ int i; for (i=0; i<anzahl_intervalle; i++) { if (adjazent (startknoten, i)) { if (visited [i]) { fatal_error(67,mutC_STR(intervalle [startknoten]->name), intervalle [i]->name); } visited [i] = 1; test_zyklen (i); visited [i] = 0; } } }
void GisWriteHead::WriteChord | ( | ) |
Definiert in Zeile 1366 der Datei GIS_Head.cpp.
Benutzt ChordNote::CheckClose(), GisWriteHead::ChordNotes, GisWriteHead::ChordPos, GisWriteHead::CurrentTime, ChordNote::Cursor, GisWriteHead::Cursor, ChordNote::Data und ChordNote::Next.
Wird benutzt von GisWriteHead::CloseCurrentToken() und GisWriteHead::ProceedGis().
{ if ( !ChordNotes ) return; // close open ties ChordNote *ANote = ChordNotes; while ( ANote ) { ANote->CheckClose(); ANote = ANote->Next; } char BossLine = 1; // wether in Boss data also data for Chord; char SingleLine = 0; // wether there is in fact only one Line (no real chord) if ( Cursor == ChordPos ) BossLine = 0; if ( !ChordNotes->Next && !BossLine ) SingleLine = 1; #ifdef CHORDS_WITH_REST ChordNotes->AddRest(); #endif if ( SingleLine ) // only one line (no real chord) { *(ChordNotes->Cursor) = *ChordPos; *ChordPos = ChordNotes->Data; if ( Cursor == ChordPos ) Cursor = ChordNotes->Cursor; ChordNotes->Data = 0; } else {} delete ChordNotes; ChordNotes = 0; CurrentTime = 0; }
void WriteRoutes | ( | char ** | config | ) |
write the routes to the configuration
config | configuration to be written to |
Definiert in Zeile 1030 der Datei EDevice.cpp.
Benutzt EDevice::BendingRange, EDevice::DevId, EDevice::DT, DTGis, DTMidiFile, DTMidiPort, DTNotSet, DTUnknown, Route::IFrom, EDevice::Mode, EDevice::Name, NewDevice(), ERoute::Next, EDevice::Next, EDevice::Nr, OutEDevices, EDevice::Routes und RTName.
{ char *s = (char*) malloc(30000), s1[200]; s[0] = 0; // config s‰ubern if ( *config ) free(*config); // Unbenˆtigte Out Devices entfernen EDevice *Out; EDevice *In; for (Out = OutEDevices; Out; Out = Out->Next) Out->Nr = 0; for (In = InEDevices; In; In = In->Next) for (ERoute *R = In->Routes; R; R = R->Next) if ( R->Out ) R->Out->Nr = 1; Out = OutEDevices; while ( Out ) { if ( !Out->Nr ) { NewDevice(&OutEDevices, DTNotSet, "", 0, Out, 0); Out = OutEDevices; continue; } Out = Out->Next; } // Output schreiben strcat(s, "OUTPUT\n"); int nr = 0; for ( Out = OutEDevices; Out; Out = Out->Next) { Out->Nr = nr++; // Nummerierung zur bequemen Referenzierung beim Input schreiben char s2[200]; if ( strchr(Out->Name, ' ') ) sprintf(s2, "\"%s\"", Out->Name); else strcpy(s2, Out->Name); switch ( Out->DT ) { case DTUnknown: sprintf(s1, " UNKNOWN %s\n", s2); break; case DTMidiPort: sprintf(s1, " MIDIPORT %s %d %d\n", s2, Out->DevId, Out->BendingRange); break; case DTMidiFile: sprintf(s1, " MIDIFILE %s %d %d\n", s2, 0, Out->BendingRange); break; case DTGis: sprintf(s1, " GMN %s\n", s2); break; } strcat(s, s1); } // Input schreiben nr = 0; strcat(s, "INPUT\n"); for ( In = InEDevices; In; In = In->Next) { // Device schreiben In->Nr = nr++; // Nummern zur Referenz bei Play/Stop In->Mode = 0; // Mode auf "registriert" setzen char s2[200]; if ( strchr(In->Name, ' ') ) sprintf(s2, "\"%s\"", In->Name); else strcpy(s2,In->Name); switch ( In->DT ) { case DTUnknown: sprintf(s1, " UNKNOWN %s\n", s2); break; case DTGis: sprintf(s1, " GMN %s\n", s2); break; case DTMidiPort: sprintf(s1, " MIDIPORT %s %d\n", s2, In->DevId); break; case DTMidiFile: sprintf(s1, " MIDIFILE %s\n", s2); break; } strcat(s, s1); // Routen schreiben for (ERoute *R = In->Routes; R; R = R->Next) { int OutNr = ( R->Out ) ? R->Out->Nr : -1; sprintf(s1, " %s %d %d %d %d %d %d %d %d\n", RTName[R->Type], R->IFrom, R->ITo, R->Box, R->Active, OutNr, R->OFrom, R->OTo, R->ONoDrum ? 1 : 0); strcat(s, s1); } } *config = strdup(s); free(s); }
int anzahl_intervalle [static] |
Definiert in Zeile 104 der Datei Interval.cpp.
Wird benutzt von berechne_intervalle_absolut(), intervall_nummer() und test_zyklen().
char ArticulationHold[5] = { 80, 100, 90, 90, 60 } |
Definiert in Zeile 42 der Datei GIS_Head.cpp.
Wird benutzt von GisReadArtHead::Read().
char ArticulationOff[5] = { 80, 80, 60, 127, 127 } |
Definiert in Zeile 43 der Datei GIS_Head.cpp.
bool BoxUsed[MAX_BOX] |
which mutabor boxes are used at all?
Definiert in Zeile 1165 der Datei EDevice.cpp.
Wird benutzt von MutFrame::CmDoActivate() und MutFrame::UpdateBoxMenu().
wxHtmlHelpController* HelpController |
Definiert in Zeile 228 der Datei MutApp.cpp.
Wird benutzt von MutConfigDialog::CmHelp(), IMPLEMENT_APP(), MutApp::OnExit() und MutApp::ShowHelp().
EDevice* InEDevices = 0 |
input devices for GUI
Definiert in Zeile 41 der Datei EDevice.cpp.
Wird benutzt von MutRouteWnd::OnDraw() und ScanRoutes().
struct intervall** intervalle [static] |
Definiert in Zeile 106 der Datei Interval.cpp.
bool LogicOn |
Definiert in Zeile 316 der Datei MutFrame.cpp.
Wird benutzt von MutFrame::CeActivate(), MutFrame::CeExecute(), MutFrame::CeInDevPause(), MutFrame::CeInDevPlay(), MutFrame::CeStop(), MutFrame::CmDoActivate(), MutFrame::CmInDevPlay(), MutFrame::CmInDevStop(), MutFrame::CmPanic(), MutFrame::CmRoutes(), MutFrame::CmToggleCAW(), MutFrame::CmToggleOWM(), MutFrame::DoStop(), MutRouteWnd::OnDraw(), MutFrame::StopInDev() und MutFrame::ToggleTextBox().
Definiert in Zeile 112 der Datei Interval.cpp.
Wird benutzt von berechne_intervalle_absolut().
wxMBConv* muConvAutoFallback |
Definiert in Zeile 242 der Datei muconvauto.cpp.
wxMBConv* muConvAutoFallback = &wxConvISO8859_1 |
Definiert in Zeile 242 der Datei muconvauto.cpp.
EDevice* OutEDevices = 0 |
output devices for GUI
Definiert in Zeile 42 der Datei EDevice.cpp.
Wird benutzt von GetEOut(), ScanDevices(), ScanRoutes() und WriteRoutes().
Definiert in Zeile 110 der Datei Interval.cpp.
Wird benutzt von berechne_intervalle_absolut() und test_zyklen().