In diesem Artikel werde ich über mein Addon zum Mixer sprechen, über die Gründe, die mich dazu veranlasst haben, es zu erstellen, den Entwicklungsprozess und den „Erfolg“ auf YouTube.

Hintergrund
Alles begann damit, dass ich vor ungefähr einem Jahr (im November 2018) in YouTube ein so ungewöhnliches Cover für
The Ultimate Canon gesehen habeDer Typ nahm die Samples jeder Note des Songs auf und stellte durch sorgfältige Bearbeitung den gesamten Song daraus zusammen. Für wen es ist, aber ich finde es zumindest lustig. Und die Anzahl der Aufrufe (zu dieser Zeit etwas mehr als 1.000.000) zeigte, dass das Thema (
1% Gitarrenfertigkeit 99% Bearbeitungsfertigkeit ) beliebt war.
Ich bin mir sicher, dass diejenigen, die zumindest ein wenig am Mischen von Songs beteiligt waren, wissen, dass es manchmal einfacher ist, den Track leicht zu schneiden und zu verschieben, als einen nachlässigen Gitarristen zu bitten, den Part erneut abzuspielen. Ich habe auch klassische Cover gemacht, und schon damals hatte ich die Idee, mich einzuschleichen und ein Cover zu erstellen, genau wie der Typ aus dem Video. Und jetzt sehe ich, dass "meine Idee dreist gestohlen wurde" und einen guten Auspuff bekam. Ich war verärgert, dass mein Zug abfuhr, aber mir wurde klar, dass ich das Gleiche tun konnte, aber auf einer anderen Ebene, und einen neuen Schritt hinzufügte -
1% Gitarre, 1% Bearbeitung, 98% Programmierkenntnisse .
Darüber hinaus können Sie auf diese Weise viel komplexere Kompositionen erstellen, die bei manueller Bearbeitung nur wenige Menschen die Geduld haben.
Entwicklung
Die Aufgabe bestand also darin, den Prozess des Aufschneidens von Klangbeispielen in eine musikalische Komposition zu automatisieren.
Zuallererst war es notwendig, die zukünftigen Programmdaten über die Komposition, ihre Noten, Spuren, Instrumente irgendwie zu vermitteln. Ich dachte sofort an GuitarPro und seine Datenexportoptionen: MusicXML und MIDI.
Die Suche führte mich dazu, einen Parser für Midi-Dateien auf Python
music21 auszuwählen . Dies ist nicht nur ein Parser, sondern ansonsten brauche ich nichts vom Modul. Und die Analoga waren entweder mit schrecklicher Dokumentation oder konnten nicht so einfach tun, was ich brauchte wie Musik21.
Großartig, jetzt kann ich Daten aus Midi-Dateien über Tracks, ihre Notizen, ihre Position und Dauer abrufen. Wir gehen weiter.
Basierend auf diesen Daten müssen Sie nun aus Video- / Audiodateien schneiden. Dann habe ich schnell genug gewählt. Auf jeden Fall Blender, trotz seiner bescheidenen Fähigkeiten als Video-Editor. Ich habe Erfahrung mit Adobe PremierePro, After Effects, aber es gibt meinen eigenen Skript-Dialekt, der nirgendwo anders nützlich ist und dessen Funktionen mir unbekannt sind. In Blender kann fast jede Aktion über ein Python-Skript ausgeführt werden. Und das passt schon zur Sprache der Musik21. Es ist erwähnenswert, dass ich zu dieser Zeit überhaupt nicht mit Python vertraut war, daher betrachtete ich dieses Projekt auch als eine hervorragende Gelegenheit, um diese beliebte Sprache kennenzulernen. Bingo!
Allmählich begann ich mich mit der Sprache zu beschäftigen, gab Midi-File-Notizen über music21 an die Konsole aus, sah mir schnell an, wie man Add-Ons für den Mixer erstellt, und fuhr mit der ersten praktischen Aufgabe fort: Generieren von Beispieldaten. Er nahm jede einzelne Note auf der Gitarre auf und begann zu schneiden, hörte aber bald auf. Mein interner Programmierer protestierte gegen diese mühsame Arbeit (und es kann viele Notizen für jedes Instrument geben: 30-50). Dazu müssten die Noten geschnitten und einzeln in separaten Dateien gerendert werden. Dazu müsste jede Spur in der Länge an den Anfang der Timeline angepasst werden ... Im Allgemeinen musste dieser Vorgang vereinfacht werden.
Die Lösung bestand darin, so etwas in Blender als Marker zu verwenden. Dies sind im Wesentlichen Punkte mit Textinformationen, die für einen bestimmten Frame festgelegt werden können. Die Logik war folgende: Der Benutzer arrangiert sein Video und Audio (wenn das Audio auf einer separaten Spur aufgenommen wurde), treibt sie aneinander und markiert mit den Markierungen den Anfang jeder Note im Video und gibt im Markentext an, um welche Art von Note es sich handelt (A #, D, C und usw.) und seine maximale Dauer in der Aufzeichnung. Die Informationen zu den Markierungen werden dann in einer Datei aufgezeichnet und bereits beim Schneiden einzelner Noten verwendet.

Der nächste Punkt war der eigentliche „Kern“ der Funktion - das Schneiden von Notizen und ihre Positionierung auf der Zeitachse. Ironischerweise gibt es nichts Besonderes zu sagen: Es gab viel Lesedokumentation, Blenders Dokumentation war alles andere als immer ziemlich detailliert, aber nach und nach erreichte ich, was ich wollte. Als ich das erste Ergebnis sah (und hörte) (es war eine kurze Komposition der Epidemic-Frodo-Gruppe), kannte das Glück keine Grenzen. Ich denke, jeder kennt das Gefühl, wenn endlich etwas herauskommt.

Die Qualität des Codes ist schlecht. Ich habe es eilig versucht, weil Ich stellte mir vor, dass ich nicht der einzige war, der an so etwas dachte und hier nicht vor mir her kommen wollte (Spoiler! Wie naiv ich war). Daher gab es keine Zeit, mich an den Stil zu halten und über die Struktur nachzudenken. Ich versuchte, einen funktionierenden Prototyp schneller zu bekommen.
Nuancen
Nun zu den Nuancen der Implementierung. Blender hat eine Begrenzung in den Ebenen des Editors, maximal 32. Das Bild zeigt, dass die Audio- und Videobeispiele (grün und lila) jeweils 14 Ebenen einnehmen und in aufsteigender Reihenfolge und dann wieder am Anfang ihres Sektors gebildet werden. Dies liegt an der Tatsache, dass Sie mit Blender nicht in der Lage sind, eine Probe über einer anderen zu erzeugen. Und in der Musik kommt es oft vor, dass die nächste Note noch vor dem Ende des vorherigen Klangs beginnt. Um Überlappungen zu vermeiden, habe ich mich daher entschlossen, die nächste Note auf einer höheren Ebene als der vorherigen zu erzeugen. Wenn die Ebenen des Sektors enden, beginnen Sie erneut mit der ersten Ebene (es ist unwahrscheinlich, dass die erste Note bis zu 14 Ebenen vorwärts klingt). Ja, dies könnte intelligenter gemacht werden, indem Schichten gespeichert werden, aber wie gesagt, ich hatte es eilig.
Die aufmerksamsten könnten feststellen, dass der gesamte Sektor 2 mal 14 Ebenen umfasst, dies sind 28 und das Maximum in Blender 32. Tatsache ist, dass Sie für Spawn-Notizen 2 Original-Tracks (Video und Audio) durch ein Skript spawnen und diese dann ausschneiden müssen Hinweis. Und du kannst nicht auf einem anderen Track erscheinen, also habe ich die 31. und 32. Schicht für dieses Geschäft reserviert. Die 29. und 30. werden für die Zwischenspeicherung bereits generierter Spuren verwendet: Die Erzeugung erfolgt unter einer Spur aus der MIDI-Datei, dann werden die Noten zu einer Spur gruppiert, auf die 29/30-Ebene übertragen, wir erzeugen die nächste Spur usw.
Es gibt auch eine Nuance: In Midi-Partituren gibt es eine Eigenschaft wie die Wiedergabegeschwindigkeit. Und es kann sich innerhalb der Komposition viele Male ändern. In music21 habe ich nie die Möglichkeit gefunden, diese Geschwindigkeitsänderungen zu verfolgen. Daher stimmt die Geschwindigkeit der generierten Noten mit der allerersten Geschwindigkeit überein, die in der Midi-Datei angegeben ist. Es gibt 2 Lösungen:
- Erstellen Sie für jeden Abschnitt mit einer neuen Geschwindigkeit nur damit eine neue Midi-Datei.
- Generieren Sie erneut Abschnittsnotizen mit dem Tempo-Geschwindigkeitsmodifikator (multiplikativer Faktor zur Anfangsgeschwindigkeit).

Ich bevorzuge es, meine eigenen Tracks für jede Geschwindigkeit in GuitarPro hinzuzufügen, dann reicht es in Blender aus, sie nur mit einem Geschwindigkeitsmodifikator zu generieren. Es ist schneller und schwieriger, verwirrt zu werden.
Video Editor-Dienstprogramme
Nachdem Sie einen Entwurfssatz mit generierten Tracks erstellt haben, müssen Sie eine beobachtbare Abdeckung anbringen. Das heißt, Positionieren Sie die Titel in den Ecken des Videos, wechseln Sie je nach Musik usw. In einem Mixer ist das ziemlich schlecht. Um den Effekt auf die Spur anzuwenden, müssen Sie eine andere Spur von oben „kleben“, die beim Rendern gerendert wird, und sie an der richtigen Position platzieren.
Besonders hervorzuheben sind Akkorde. Dies ist der Fall, wenn mehrere Noten gleichzeitig erklingen, d. H. Beim Rendern eines Videos wird nur die Kopfnote des Akkords angezeigt. Die Lösung bestand darin, den gleichen Effekt hinzuzufügen (glücklicherweise brechen sie nicht, wenn sie einander überlagert werden). Wenn ich während der normalen Bearbeitung der generierten Tracks alles manuell machen könnte, wäre das Bearbeiten jeder Note des Akkords zu viel. Wie Sie wissen, habe ich diese Nuance auch automatisiert. Auf Knopfdruck „Chordify Strips“ werden nun die ausgewählten Samples nach Bedarf transformiert und jede Note des Akkords gezeichnet.


Und noch ein Punkt der Automatisierung: Manchmal haben die generierten Proben leere Teile untereinander. Dies liegt an der Tatsache, dass die Punktzahlen an diesen Stellen plötzlich leere Stellen sind. In GuitarPro klingt dies normal, da aufgrund verschiedener Effekte der Klang der Note dazwischen gehalten wird. Im Mixer bilden sich jedoch Hohlräume. Sie müssen gefüllt werden, indem die vorherige Note vor der nächsten gedehnt wird. Genau diese Aufgabe erledigt die Schaltfläche „Lücken füllen“.
Die Funktionalität der Arbeit mit der Lautstärke wurde auch auf Kleinigkeiten geschrieben, sowie die Fähigkeit, eine fehlende Note durch eine andere zu ersetzen, jedoch mit einem anderen Wert der Tonhöhe, wodurch Sie über die Grenzen des Instrumentenbereichs hinausgehen können (obwohl sie in der Praxis nicht mehr als 1 Oktave beträgt).
Ruhm auf Youtube
Das Addon ist also fertig. Etwa anderthalb Monate wurden von Beginn der Idee an verbracht, er arbeitete abends in seiner Freizeit. Es ist Zeit, ein Cover zu machen, das das Handcover dieses Mannes schlägt. Ich habe das gleiche Lied gewählt, aber in einem Rock-Arrangement: Canon Rock. Es ist viel melodischer und komplizierter als das Original und wird die neue Ebene meines Ansatzes deutlich machen. Ja, und als Antwort auf ein bereits beliebtes Video kann es die Aufmerksamkeit eines Publikums auf sich ziehen.
Im obigen Text habe ich ein bisschen getäuscht, weil Ich habe angefangen, an dem Cover zu arbeiten, während ich das Add-On geschrieben habe, damit ich anhand seines Beispiels verstehe, welche Funktionen benötigt werden, und es implementieren kann.
Und jetzt ist das
Cover fertig und poliert ! Er drehte die Einleitung und das Ende, in denen er in gebrochenem Englisch versuchte, die Steilheit meiner Antwort zu erklären. Er sprach einige Wörter absichtlich mit Fehlern (Kompliment, Double Y Eff), in der Hoffnung, die Zuschauer dazu zu bringen, Änderungen in den Kommentaren vorzunehmen. Vorschau vorbereitet. In Erwartung des erwarteten Triumphs wurde das Video mit angehaltenem Atem hochgeladen und veröffentlicht. Ich habe sie in Cover-Gruppen auf Cover geschickt und den Link auf Instagram zu diesem Typen geworfen. Er hat übrigens einen sehr triumphalen Spitznamen: Ralph Jay Triumfo.
Die Zeit verging. Es gab keinen Triumph. Am ersten Tag bekam ich ungefähr 100 Aufrufe, von denen die Hälfte meine und meine Freunde waren. Dann gab es eine Pause. Mit jedem neuen Tag wurde ich mehr und mehr von diesem ganzen Unternehmen enttäuscht. Verstehen die Leute wirklich nicht, wie cool ich es gemacht habe? Warum funktioniert Mundpropaganda nicht? Oder war die Idee selbst nur in meinem Kopf cool?
Wie dem auch sei, ich mochte das Ergebnis und begann allmählich, immer mehr neue Cover zu machen.
Zu dieser Zeit nahm ich an den Dreharbeiten zur Sendung „Brain Modeling“ im lokalen Fernsehen teil und erwähnte einmal mein Handwerk in einem Gespräch mit dem Moderator. Das Ergebnis war ein kleiner Bericht über mich. Mama,
ich bin im Fernsehen !
Ich habe vollkommen verstanden, dass Rentner hauptsächlich lokales Fernsehen schauen, daher gab es keine Erwartungen daran.
Schon damals wollte ich den Add-On-Code in meinen Sinn bringen, die Generierung optimieren und das Add-On öffentlich zugänglich machen, aber das Scheitern des Triumphs verringerte meine Begeisterung. Außerdem wurde dann die vollständige Version der neuen Version von Blender vorbereitet und die API geändert. Ich wollte auf die Veröffentlichung im Sommer warten und das Addon auf die neue Version übertragen und dann veröffentlichen, aber es gab auch keinen besonderen Wunsch.
Und jetzt, nach fast einem Jahr, als die Aufrufe des ersten Videos kaum mehr als 600 waren, beschloss ich, ein Addon in die Öffentlichkeit zu bringen und diesen Artikel zu schreiben. Vielleicht wird es zumindest meine Freizeit aufhellen, aber gleichzeitig tadelte ich.
Natürlich habe ich versucht, das Addon auf die neue Version 2.80 zu übertragen, aber es stellte sich heraus, dass der Video-Editor nicht nur nicht verbessert, sondern sogar verschlechtert wurde. Die Leistung ist viel schlechter, manchmal stürzt es ab, wenn schwere Tracks erzeugt werden. Der Herausgeber selbst begann langsamer zu werden. Die Unfähigkeit, bestimmte Audiospuren zu dämpfen (ich hoffe, dies ist ein Fehler, und sie werden in der nächsten Nebenversion behoben). In der Zwischenzeit benötigt das Addon die gute alte Version 2.79
Hier ist ein
Link zum Addon . Vergessen Sie nicht, music21 auf den Python Interpreter Blender zu setzen. Ich freue mich auf das massive Erscheinen synthetisierter Cover von Ihnen.