[K] Narzędzi muzycznych ciąg dalszy
Idąc za ciosem (mam na myśli poprzedni wpis o narzędziach), postanowiłem znacząco ułatwić sobie życie domowego mock-upera. Skoro MIDI Tools Hub jest w stanie przygotować w miarę czysty plik MIDI do dalszej obróbki, dobrze byłoby jeszcze trochę nad tym plikiem popracować, by siadać do DAW już tylko z myślą doborze instrumentów i pracą nad artykulacjami i dynamiką.
Niewątpliwie jedną z dość czasochłonnych operacji jest ustalenie tempa opracowywanego utworu. Idę w tym momencie zwykle na łatwiznę, czyli posiłkuję się już istniejącymi wykonaniami, choć faktycznie już nie tak często, jak jeszcze rok temu - jednak doświadczenie robi swoje. Niemniej, pierwsza wersja tempa utworu często bywa "kalkowana" z jakiegoś istniejącego nagrania, które akurat podoba mi się najbardziej spośród mi znanych.
Robiłem to zazwyczaj po prostu w Fender Studio Pro - miałem już przygotowaną wstępnie aranżację, przypisane instrumenty, skonfigurowane grupy i tak dalej. Wstawiałem wtedy na dole dodatkową ścieżkę z plikiem WAV gotowego nagrania i brałem się za pracowite mapowanie. Innymi słowy, na ścieżce tempa rysowałem punkty, dzięki którym wersja MIDI trzymała się mniej więcej tempa pliku WAV. Nie jest to zadanie trywialne, ale jeśli zna się trik z trzymaniem klawisza Ctrl (co daje możliwość "dociągania" danego punktu do konkretnego miejsca w pliku WAV), to też nie jest aż tak źle:
Fender Studio Pro - edycja punktów tempa
Skoro całkiem dobrze poszło mi z MIDI Tools Hubem i przeglądarkami MIDI/audio, postanowiłem przygotować narzędzie do tworzenia mapy tempa. Pierwszy pomysł był taki, by po prostu nanieść np. w Acoustice markery w kluczowych miejscach, potem podobne markery nanieść w pliku MIDI, w tych samych miejscach. Skrypt miałby wtedy względnie proste zadanie - po prostu wyliczyć tempo między znacznikami MIDI tak, aby pokryły się ze znacznikami audio. Wymagało to pewnej gimnastyki matematycznej przy przeliczaniu danych położenia MIDI na dane czasowe audio, ale też nie przesadzajmy, że było to jakieś skomplikowane.
Bardzo szybko okazało się jednak, że wydumany przeze mnie sposób jest mało praktyczny. O ile markery w MIDI to nie był duży problem, to już synchronizacja tego, co usłyszałem w pliku WAV z konkretnym taktem już nie była taka banalna i często wymagała prześledzenia sporego kawałka partytury.
Stąd już był mały krok do napisania aplikacji, która "nałoży" na siebie dane MIDI i audio, po czym pozwoli po kolei wyklikać punkt audio i punkt MIDI, potem kolejna para, i kolejna. Połączenie takiego działania z jednoczesną możliwością odsłuchu audio to był strzał w dziesiątkę. Pierwotna wersja powstała błyskawicznie i zadziałała praktycznie od razu:
Pierwsza, bardzo prosta wersja narzędzia
Apetyt jednak rośnie w miarę jedzenia. Pierwszą rzeczą, która okazała się być niezbędna, był zapis stanu pracy - nazwałem to "projektem", bo i dlaczego by nie. Chodzi o to, by móc przerwać pracę i wrócić do niej po jakimś czasie, więc program zapisuje aktualny stan, naniesione znaczniki, ustawienia itd. A skoro już coś takiego jak "projekt" powstało, to dorobiłem od razu automatyczny zapis po dodaniu każdego nowego punktu, w myśl zasady: strzeżonego Pan Bóg strzeże.
W tym momencie mógłbym już się zatrzymać, bo narzędzie działało całkiem sensownie. Dodałem jednak listę ścieżek MIDI, aby móc sobie wyświetlać tylko te potrzebne aktualnie dane MIDI, bo wiadomo, raz gra flet, a raz kontrabas. Dodałem też podgląd ścieżki tempa, żeby od razu widzieć, co tak naprawdę program dodaje.
Wersja ostateczna (na razie)
I gdy już miałem dać spokój, pojawiła się inna myśl. Skoro mam w jednym miejscu dane MIDI i audio, a na dodatek na koniec pracy są one dość dokładnie zsynchronizowane ze sobą, dlaczego nie pójść o jeszcze jeden krok dalej i... skopiować sobie obwiednię głośności jako dane dynamiczne MIDI?
Pomysł wydawał się prosty - tworzę na nowej ścieżce mnóstwo nut tej samej wysokości, np. szesnastki. W takich samych "kwantach" mierzę głośność RMS pliku audio i po uwzględnieniu skalowania oraz poziomu szumu pliku audio mogę tę głośność przenieść albo na parametr velocity wygenerowanych nut, albo na kontroler CC1 (albo na oba naraz):
Widoczne na dole okna paseczki velocity, odwzorowujące obwiednię głośności pliku WAV
Było tu nieco problemów z prawidłowym określeniem właściwej dynamiki (jak szeroki zakres dynamiki audio ma być brany pod uwagę oraz ile z tej dynamiki przenieść do danych MIDI), ale ostatecznie się to udało - po prostu przeniosłem część ustawień "na wierzch", by móc je zmieniać w zależności od konkretnie przetwarzanego pliku.
Znów koniec wydawał się bliski, ale pomyślałem, że skoro ładnie mi się ta dynamika przenosi na MIDI, to po co sobie komplikować życie i później ją w DAW kopiować ręcznie - w końcu widzę od razu, które ścieżki kompletnie nie mają żadnej dynamiki. Dodałem zatem pole typu checkbox i oznaczone w ten sposób ścieżki w czasie zapisu finalnego pliku MIDI "dziedziczą" dynamikę tak, jak robi to ta dodatkowa ścieżka. Ją także zapisuję, tak na wszelki wypadek.
Koniec końców dostałem narzędzie, w którym całkiem przyjemnie pracuje się nad ścieżką tempa, z dodatkowym bonusem w postaci możliwości przeniesienia dynamiki wykorzystywanego nagrania audio. Ani tempo, ani dynamika nie są ostateczne, bo w praktyce i tak trzeba je przerabiać, szczególnie jeśli chodzi o reakcję poszczególnych bibliotek na zmiany velocity/CC1, ale trochę pracy można sobie oszczędzić. A czy nie o to chodzi w dobrych narzędziach?




Komentarze
Prześlij komentarz