Mittwoch, 29. Oktober 2014

"hmm_ShowRanges" - ein Noteworthy-Composer-2-User-Tool zum Überprüfen von Tonumfängen

Inhaltsübersicht

  1.   Überblick
  2.   Beispiel 1
  3.   Beispiel 2
  4.   Regeln für Bereichsakkorde
  5.   Beispiel 3
  6.   Beispiel 4

Überblick


Ich habe ein kleines Werkzeug ("User Tool", in Noteworthy-Nomenklatur) erstellt, das prüft, ob Noten in einem System vorgegebene Tonumfänge überschreiten. Ich hätte das schon vor Jahren schreiben sollen, weil es beim Prüfen von Chor- und anderen Arrangements enorm hilft. Aus irgendeinem Grund habe ich bis vorgestern gewartet, um mir (die wenigen nötigen Stücke von) PHP beizubringen und mich auf die kleinen Algorithmen zu konzentrieren ...

Natürlich verwende ich in dem Programm vorhandene Ideen und Programme – ich stand sozusagen "auf den Schultern von Riesen": Die Idee für das Tool ist schon grob im adp_Ranges-Skript aus dem "NWC2 User Tool Starter Kit" verwirklicht; in meinem Code baue ich auf Noteworthys nwc2clips-PHP-Bibliothek auf: Besten Dank an die jeweiligen Autoren!

Mein Tool kann hier als ZIP-Datei heruntergeladen werden. Es erfordert die vorherige Installation des "NWC2 User Tool Starter Kit", das man hier finden kann. Zur Installation des Tools bitte die Noteworthy-Dokumentation konsultieren!

Im folgenden gebe ich einen kurzen Überblick, wie man das Tool verwendet. Alle folgenden Beispiele verwenden eine ziemlich sinnfreie Melodie, die zu allem Überfluss (nein: um Eigenschaften des Tools zu zeigen) auch noch mittendrin einen Bassschlüssel sowie am Ende komische Akkorde enthält:

Beispiel 1


Im einfachsten Fall will man alle Noten außerhalb eines bestimmten Bereichs markieren – etwa jene, die außerhalb des Stimmumfangs eines Sängers oder einer Chorstimme liegen.
Die folgenden Schritte zeigen, wie man das prüft:
  1. Man schreibt ganz am Anfang des Systems einen "Bereichsakkord" (oder "Tomumfangsakkord") – in diesem Beispiel einfach eine Oktav. In der Praxis wird man diese Bereichsakkorde mit "Visible: Never" versehen, aber hier habe ich ihn einmal sichtbar gelassen, um den Effekt der Prüfung zu zeigen:
  1. Als nächstes markiert man das ganze System ab dem Bereichsakkord:
  1. Und nun ruft man das Tool auf (Alt-F8, dann Tool auswählen und anklicken; wenn man es als letztes schon ausgeführt hat, dann reicht auch Alt-T E für "Tools → Repeat").
Hier sieht man das Ergebnis (nachdem man die Selektion aufgehoben hat): Alle Noten außerhalb der Oktav sind mit rot markiert, also so wie der "Bereichsakkord":
Der Bereichsakkord hat also einen Bereich beschrieben, innerhalb dessen die Noten nicht verändert werden. Dabei werden die Noten des Bereichsakkords noch zum Bereich gezählt, weil das bei Tomumfangsangaben – sowohl von Singstimmen wie auch von Instrumenten – so üblich ist. Alle Noten oberhalb des c" und unterhalb des c' werden markiert.

Wie man sehen kann, funktioniert das Tool auch bei Schlüsseln innerhalb der Notenzeile korrekt, und auch bei Akkorden mit Notenhälsen in beiden Richtungen (was intern etwas kompliziert ist ...).

Und mit Ctrl-Z (Undo) kann man all die Färbereien wieder zurücknehmen, sodass der nächste Ausdruck noch immer schwarz-weiß aus dem Drucker herauskommt!

Beispiel 2


Hier ist ein weiteres Beispiel, diesmal mit zwei Bereichen:
  • Der innere Bereich geht vom eingestrichenen e zum h'; er ist z.B. der Bereich, in dem man anstrengungslos spielen oder singen kann.
  • Der äußere Bereich, vom c' zum e", beschreibt z.B. den Gesamtbereich, den mit mit dem Instrument spielen kann. Sie sollen eine Art von Markierung erhalten.
Noten außerhalb dieser Bereiche sind überhaupt nicht spielbar und sollen anders markiert werden:
Hier ist das Ergebnis, nachdem alle Noten markiert wurden und das Tool ausgeführt wurde:
Man sieht, dass die Noten innerhalb des inneren Bereichs unverändert sind, die Noten innerhalb des äußeren Bereichs dreieckige, rosafarbene Notenköpfe erhalten, schließlich die Noten außerhalb der Bereiche runde rote Notenköpfe bekommen.

Regeln für Bereichsakkorde


Vor den weiteren zwei Beispielen fasse ich hier die Regeln für das Schreiben von Bereichsakkorden zusammen:
  • Ein Bereichsakkord muss eine gerade Anzahl von Noten enthalten.
  • Die zwei äußersten Noten (also die höchste und die tiefste) bestimmen der äußersten Bereich. Sie müssen daher gleichen Notenkopf und gleiche Farbe haben.
  • Wenn man diese äußersten Noten entfernt, gibt es wieder zwei äußerste, die nun den nächsten Bereich bestimmen. Daher müssen sie auch wieder gleichen Notenkopf und gleiche Farbe haben.
  • Und diese "Schalen von Bereichen" können nun so weitergehen (aber ich habe bisher höchstens drei ineinandergeschachtelte Bereiche benötigt).
  • Die tiefen Noten zweier Bereiche dürfen auch gleich sein (dazu kommt gleich ein Beispiel), die oberen allerdings nicht (weil der Algorithmus für das Finden der Bereiche sonst zu kompliziert wäre).
  • Bereichsakkorde können jede beliebige Sichtbarkeit ("Visibility") haben. Wie oben erwähnt, wird man sie in der Praxis unsichtbar machen ("Visibiliy: Never").
Wenn der erste Akkord in der Auswahl diese Bedingungen nicht erfüllt, dann macht Tool vermutlich "irgendwas": In manchen Fällen wird es den nächsten Akkord als Bereichsakkord zu interpretieren versuchen, vielleicht macht es aber auch was anderes ... die Fehlerbehandlung ist nicht sehr ausführlich. Mit Ctrl-Z ("Undo") kommt man aber immer zum vorherigen Zustand zurück!


Beispiel 3


Bereiche müssen, wie beschrieben, sauber "verschachtelt" sein (siehe aber Beispiel 4, was man tut, wenn das nicht so ist!), aber die untere Note zweier Bereiche kann dieselbe sein. Das ist für die Bereichsangaben einiger Instrumente wie Violine oder B-Klarinette sinnvoll, wo der tiefste mögliche Ton auch ein "bequemer" Ton ist. Im folgenden Beispiel beginnen innerer und äußerer Bereich beide beim c'. Wenn man den Bereichsakkord mit ganzen Noten darstellt, dann sieht man diese beiden Bereichsgrenzen auch schön nebeneinander (bei kleineren Notenwerten werden die Köpfe von Noteworthy übereinandergelegt). Zur Abwechslung ist der äußere Bereich hier giftgrün:
Und hier ist das Ergebnis nach Markierung aller Noten und Ausführung des Tools:

Beispiel 4


Manchmal muss man zu verschiedenen Zwecken mit ganz verschiedenen Bereichen prüfen. Ein Beispiel könnte die Prüfung einer Klarinettenstimme auf "Register" sein, zusätzlich zur übergreifenden Prüfung des Tonumfangs. Dazu kann man am Anfang des Systems mehrere Bereichsakkorde angeben – der, der als vorderster markiert wird, steuert die Bereichsprüfung. Ein Problem dabei wäre, dass mitmarkierte Bereichsakkorde (z.B. der zweite, wenn man mit dem ersten prüft) geändert werden – aber das Tool ist so nett, dass es Akkorde mit Sichtbarkeit "Never" nicht ändert. Hier sind zwei Prüfakkorde ...
... das Ergebnis, wenn man alle Noten auswählt, also mit dem ersten Akkord prüft (der zweite, unsichtbare, wird nicht verändert!), ...
... und das Ergebnis bei der Prüfung mit dem zweiten Akkord:

Das ist das Ende meiner Beschreibung des "hmm_ShowRanges"-User-Tools. Wenn es außer mir noch jemand hilft, würde mich das freuen!