Oktober 17, 2023
SCARBEE SUN BASS – FINGER ist unser „Bass-Meisterwerk“. Es ist mit fortschrittlicher Programmierung und Skripting ausgestattet, das einen Großteil der technischen Arbeit automatisch für Sie übernimmt .
Mein Kollege Nils Liberg, ein Experte für Kontakt-Skripting, und ich, Thomas Hansen Skarbye, haben viele Jahre damit verbracht, ein umfassendes Framework für unsere Bass-Bibliotheken zu entwickeln. Unsere Mission war es, einige der schwierigsten Probleme bei virtuellen Instrumenten anzugehen und zu lösen. Benutzer von VSTi-Systemen für klassische Instrumente hatten mit diesen Problemen zu kämpfen (wie individuelle negative Spurverzögerungen, damit nicht nur jede Artikulation zur gleichen Zeit ankommt, sondern auch das Timing unterschiedlicher Dynamiken/Geschwindigkeiten gesteuert werden kann) – und ich bin mir nicht sicher, ob irgendein anderer Entwickler diese lästigen Herausforderungen lösen konnte. Unsere erste komplizierte Aufgabe war:
Automatische Timingkorrektur von Angriffen mit kompensierten „Enden“, um die „Audiolöcher “ zu füllen:
Unsere Forschung zielte zunächst auf die Entwicklung von Slap-Bass-Bibliotheken ab, bei denen Techniken wie Daumenschlag, Zupfen und Auf- und Abschlag mit einem Nagel verschiedene Pre-Attack-Längen einführen. Diese Vorarbeit legt den Grundstein für eine vereinfachte MIDI-Programmierung dieser vielfältigen Basslinien, einschließlich des nahtlosen Übergangs zwischen weichen und harten Tönen.
Wenn die verschiedenen Anschlagsspitzen nicht konsistent sind, müssen Sie die MIDI-Noten für jede Artikulation manuell verschieben. Dadurch ist es praktisch unmöglich, das Tempo zu ändern oder Groove-Vorlagen und Swing-Quantisierung zu verwenden, da Sie alles neu anpassen müssen.
Bei einer harten Anschlagstärke ist der Ton vor dem ersten Peak kürzer als bei einer weichen Anschlagstärke, da die Fingerbewegungsgeschwindigkeit unterschiedlich ist und verschiedene Artikulationsarten auch eine unterschiedliche Länge dieses „Voranschlags“ haben können – z. B. hat ein Daumenanschlag einen kurzen „Voranschlag“, während ein Zupfen oder Pick-Schaben sehr lang ist. Wenn Sie also alle Samples so schneiden, dass der erste große Peak bei allen Samples zur gleichen Zeit auftritt (damit Sie für jeden Artikulationstyp unterschiedliche negative Spurverzögerungen vermeiden können), entsteht das Problem, dass zwischen zwei aufeinanderfolgenden Noten ein „Audioloch“ (Stille) entsteht:
Nehmen wir an, Sie schneiden die Samples so, dass der erste Peak genau 50 ms vom Startpunkt des Samples entfernt liegt.
Wenn Sie z. B. eine weiche Note mit einer hörbaren Voranschlagsdauer von 50 ms spielen, gefolgt von einer harten Note mit einer hörbaren Voranschlagsdauer von 5 ms + 45 ms Stille - Sie erhalten ein Audioloch von 45 ms zwischen den Noten. Die Lösung besteht darin, die Löcher zu füllen, indem das Note-Off der ersten Note basierend auf der hörbaren Pre-Attack-Länge der zweiten Note verzögert wird. Es stellte sich jedoch als weitaus komplexer heraus, als wir zunächst dachten, da es zu Situationen kommen kann, in denen ein NOTE-ON beginnt, bevor das NOTE-OFF endet. Es dauerte mehr als ein Jahr Experimente und Entwicklung, bis wir eine Lösung fanden, die tatsächlich funktionierte.
Automatische Phasenkorrektur beim Kombinieren von Artikulationen:
Wenn Sie z. B. ein gehaltenes Sample mit einem Pull-off-Sample einer ganzen Note kombinieren (das am ursprünglich aufgezeichneten Übergangspunkt abgeschnitten ist), erhalten Sie nur dann einen sanften, naturgetreuen Übergang, wenn die Phase 100 % korrekt ist. Wenn Sie dies mithilfe eines Tiefpassfilters überprüfen, hören Sie, dass die Note „gebeugt“ wird – als ob Sie einen Pitch-Bend auf das gehaltene Sample angewendet hätten. Wenn die Phase jedoch nicht stimmt, hören Sie stattdessen zwei Noten, die nacheinander gespielt werden. Wir haben festgestellt, dass selbst eine nicht perfekte Phase einer einzelnen ms Probleme verursachen würde.
Zuerst versuchten wir, das Problem zu lösen, indem wir erweiterte EQ-Hüllkurven einführten, um die „Unebenheiten“ bei den Übergängen herauszufiltern. Das Problem war jedoch, dass dies zwar bestimmte schlechte Übergänge beheben konnte, gleichzeitig aber die guten Übergänge zerstörte. Was den Übergang beeinflusste, waren unterschiedliche „Legato-Tail“-Samples, die an unterschiedlichen Phasenpositionen + der Zeit/Länge der vorherigen Note begannen. Während wir also bei einem 1/16-Noten-Pull-Off bei Tempo 120 eine perfekte Phase erzielen konnten, kam es bei einem Tempo von 119,9 zu einer Phasenkollision ...
Da wir auch vibrierende Saiten aufgenommen haben, mussten wir unterschiedliche Tonhöhen und Zykluslängen kompensieren. Und wir kompensieren sogar die Verwendung von Pitch-Wheel und Modulationen – das wirkt sich auch auf die Phase aus.
Die Lösung bestand also darin, die Phase aller Samples zu scannen und dann ein System zu erstellen, bei dem das Kontakt-Skript die genaue Position der Phase jedes gespielten Samples kennt – zu jedem Zeitpunkt. Dann verschiebt das Skript automatisch die zweite Note nach vorne, um eine perfekte Phase zu erreichen. Eine große Herausforderung waren die Legato-Samples, da sie aus drei Teilen bestehen würden: der Quellnote, dem Übergang und der Zielnote. Alle drei Teile hätten eine unterschiedliche Phase und wir müssten genau vorhersagen, wo im Phasenzyklus unser neuer Übergangspunkt erscheinen würde.
Automatische Timingkorrektur von Hammer-Ons, Pull-Offs und kurzen Slides nach oben/unten - nachdem die Phase korrigiert wurde:
Als wir das erste Phasenproblem gelöst hatten, stellten wir fest, dass wir stattdessen ein Timing-Problem bekommen würden, da die Legato-Artikulationen nicht gleichzeitig vorwärts verschoben würden. Beispielsweise könnten die tiefen Noten einen Phasenzyklus haben, der größer als 30 ms ist, und die Zyklen der hohen Noten könnten kleiner als 1 ms sein.
Und je nach Position der ersten Notenphase könnte die Legato-Note um jeden beliebigen ms-Wert verschoben werden. Wenn beispielsweise eine gehaltene Note (oder eine beliebige Legato-Artikulation, die als Anschlagsnote verwendet wird) mit einem Zyklus von 30 ms auf halbem Weg endete, müsste die nächste Note um 15 ms verschoben werden. Wenn der Zyklus 1 ms nach dem Start endete, müsste die nächste Note um 29 ms verschoben werden usw.
Also mussten wir ein System entwickeln, das das gestörte Timing kompensiert – das heißt, jedes Mal, wenn ein Legato-Sample zeitlich verschoben wird, wird es wieder ins richtige Timing zurückversetzt. Aber wie ist das möglich? Würde das nicht bedeuten, dass die Phase wieder schlecht wäre? Ja. Aber nicht, wenn wir einen zeitlichen „Spielraum“ schaffen, in dem wir die Übergangsphase mit unvollkommener Phase verschieben können …
Und das haben wir gemacht. Wir haben das natürliche Timing des Eintreffens beispielsweise eines 1/16 Hammer-Ons gemessen und dann Timing-Kompensationen für alle Arten von Artikulationen erstellt. Beispielsweise hat ein Halbton-Slide einen kürzeren Übergang als ein Ganzton-Slide. Wenn also beide Samples am Anfang des Übergangs abgeschnitten werden, ist das Eintreffen der Zieltonhöhe unterschiedlich. Und das musste kompensiert werden.
Monatelang haben wir mit Zeit und Phase experimentiert, oft aufgegeben … und dann waren wir besessen und haben das Problem gelöst.