19.11.2012

Cubase 7 – Mac OSX: Device Independent Resolution

Es gibt durchaus Gründe, warum man in Cubase bislang auf dem Macintosh unter OSX/64 Bit die Noten nicht drucken konnte.

Bisher konnte man auf dem Mac zum Drucken (als Entwickler) noch die (betagte) API von „Carbon” benutzen. Wenn man das jedoch unter einem 64Bit-Betriebssystem zum Laufen bringen will, muß man die „Cocoa“-API unterstützen. Dabei geht „Cocoa“ Wege in der Grafik-Ausgabe, die – zumindest in der Welt von schwarz-weißem Ausdruck von Noten, in der man Antialiasing auch gezielt ausschalten muß – mehr Probleme verursachen, als sie lösen.

Wenn man bisher eine Grafik (etwa eine Linie) auf ein Device (den Bildschirm, oder einen Drucker) ausgeben wollte, lautete der Deal ungefähr so: das Betriebssystem erzählt der Applikation, über welche Auflösung das angeschlossene Device verfügt, und überläßt es danach der Applikation, wie sie mit dieser Information verfährt.

Bislang „wußte“ ein Programm, mit welcher Auflösung der Grafik es zu tun hat – 72 dpi auf dem Bildschirm etwa, oder 300 oder 600 dpi auf einem handelsüblichen Drucker; oder sehr viel mehr auf einem professionellen Ausgabedevice.

Ein Programm konnte mit diesen Informationen zB. Linien so „malen“, daß sie auf dem Bildschirm genau ein Pixel „dick“ sind, auf dem Drucker aber zB. in 0.46 pts (Points) erscheinen – das sind auf einem Drucker, der 300 dpi „kann“, dann Linien, die 3 Pixel „dick“ sind.

Das Modell, das Apple in „Cocoa“ vorantreibt, wird beworben mit dem Attribut: „Device-independet“. Ein Programm muß sich dann darauf verlassen, daß die Ausgaben auf den Bildschirm exakt genauso funktionieren wie die auf den Drucker: es adressiert das unterliegende Grafik-System auf dem Bildschirm wie auf dem Drucker mit Koordinaten in Fließkommazahlen, und überläßt den Rest dem Betriebssystem.

Apple hat damit ein Modell etabliert, das mit allem bricht, was Applikationen mit „professioneller Grafik“ bislang als gegeben annehmen konnten.

Ich habe gerade einige Mühe, einen Weg zu finden, wie ich den Ausdruck der Notation in Cubase auf dem Mac so zum Laufen bekomme, daß es mit diesem Konzept klar kommt – daß die User nicht ständig darüber stolpern, wenn hier ein Pixel zu viel und dort ein anderes zu wenig erscheint, wenn sie Notenlinien und Taktstriche auf den Drucker bringen (vom „Malen“ von Balken über 16tel oder 32tel Noten ganz zu schweigen).

Das von Apple durchgedrückte Modell funktioniert recht gut, wenn man zB. bildbearbeitenden Applikationen das Funktionieren erleichtern will. Wenn man es mit Notation ernst meint, wird es jedoch richtig schwierig. Es wird eine echte Herausforderung, hier Workarounds zu finden.

Hier ein Beispiel (32tel Balken, wobei zwischen jedem Balken ein genau definierter Zwischenraum besteht[1]):

Das funktioniert wirklich perfekt nur dann, wenn die Applikation Kontrolle über jedes einzelne Pixel hat; nicht aber, wenn eine API, die mit Koordinaten in "floats" zu tun hat (und die Koordinaten, abhängig von der jeweiligen Situation, auf- oder abrundet) ihr ständig dazwischen funkt.

  1. [1] Auch hier, in einem Screenshot von Cubase unter Windows 7, funkt das Antialiasing schon sehr unschön dazwischen – wobei das bei einem Ausdruck auf einen Drucker, der nur schwarz-weiß beherrscht, eher keine Rolle spielt.
(Kommentarfunktion z.Zt. deaktiviert.)