понеделник, 6 септември 2021 г.

За генеративната музика

Музиката представлява организирана система от звуци, която предизвиква определени реакции.

Обикновено музикалните звуци са тонове с определена височина и трайност, но се правят не малко експерименти с използване на произволни звуци и шумове, от които се изграждат музикални композиции (или поне звукови композиции).

Така музикалното произведение се строи от определен звуков материал - тонове или шумове. Композиторът организира този материал в осмислена система от звуци, които прозвучават последователно или едновременно.

Повторението е най-простия начин да се получи организирана система.
В следващия пример с програма съм получил случайна последователност от 5 тона, която се повтаря 8 пъти:

Пограмата, с която генерирах този пример, е написана на езика на системата LilyPond:

\version "2.18.2"
nnotes = 5   % брой ноти в мотива
duration = 2
% 0-цели, 1-половини, 2- четвъртини, 3-осмини, 4 - шестнадесетини, 5-тридесетивторини
ambitus = 24
randomNotes =
  {
    $(let ((random-state (seed->random-state (current-time))))
      (make-sequential-music
        (map (lambda (x)
               (let ((idx (random ambitus random-state)))
                 (make-event-chord
                   (list
                     (make-music 'NoteEvent
                                 'duration (ly:make-duration duration 0 1/1)
                                 'pitch (ly:make-pitch
                                   (quotient idx 7)
                                   (remainder idx 7)
                                   0))))))
              (make-list nnotes))))
  }
motiv = \randomNotes
\score {
  \new StaffGroup <<
    \new Staff {
      \set Staff.midiInstrument = #"acoustic grand"
      \tempo 4 = 240
      \time 5/4
      \motiv
      \motiv
      \motiv   
      \motiv
      \motiv
      \motiv   
      \motiv
      \motiv   
      \bar "|."
    }
  >>
  \layout {
    \context {
      \Score
      \remove "Timing_translator"
      \remove "Default_bar_line_engraver"
    }
    \context {
      \Staff
      \consists "Timing_translator"
      \consists "Default_bar_line_engraver"
    }
  }
 \midi { }
}
 

Тази програма чертае нотния запис и създава MIDI файл, който може да бъде изсвирен от виртуален или хардуерен инструмент.

Еднотактовият мотив сам по себе си представлява просто 5 случайни ноти. Но, когато започне да се повтаря, възниква някаква музикална логика.

Философско отклонение

Не е задължително композиторът да бъде човек. Възможно е компютърна програма да създава музикални произведения по определени правила. Тези правила могат да бъдат целенасочено измислени или да бъдат в някаква степен случайни или подчиняващи се на математически или други закономерности, взети извън музиката.

Например, правен е опит очертанията на една планина със своите върхове да бъдат изтълкувани като мелодична линия, задаваща промяната на височината на тоновете във времето.

Генеративната музика (Generative music) се създава непосредствено в процеса на изпълнението от компютър или друга автоматична система (например аналогова моделираща система, модулен синтезатор или други устройства). Правилата за автоматично генериране на тоновете могат да съдържат в различни пропорции определеност или случайност.

Генеративното музикално произведение може постоянно да варира, никога да не се повтаря точно и да звучи потенциално безкрайно.

По начало се предполага, че музиката освен форма има и някакво съдържание, смисъл. Когато композиторът е човек, може да се очаква, че той предава някакъв смисъл със своето произведение. Но когато музиката се генерира автоматично какъв е нейният смисъл ?

Възможен отговор дава природата. Какъв е смисълът на някоя планина или друг красив природен пейзаж ? Тях не ги е създал нарочно някой човек с цел да бъдат красиви или да предават някакъв смисъл. Въпреки това и красотата на природата, както изкуството, може да предизвиква емоционална реакция у човека. Така изглежда, че това са родствени феномени.

Практически опити

Направих прости софтуерни системи, които пораждат автоматично мелодични последователности. В един експеримент използвах нееднородна система: в Linux стартира семпъл-плейъра timidity, в който съм заредил свои семпли; по-нататък във виртуалния модулен синтезатор VCV Rack се генерира последователност от MIDI ноти, които се подават на timidity да ги изсвири.

Като семпли записах тоновете на калимба. Използвах диатонична алт-калимба Bolf Kalimbas с 15 пластини в сол мажор. Тази калимба има тяло във вид на плътна дъска от орех. Пластините са от пружинна стомана и са доста ниско над тялото, но при тихо и внимателно свирене звукът е изключителен.

Общият брой на пластините и строя са от значение за звука, защото когато се удря една пластина зазвучава не само тя, но едновременно и някои от другите, които са в резонанс със нейните обертонове. Така се формира много богата обща звучност.

Получи се такава последователност от тонове:



Част от нея в нотен запис изглежда така (с темпо 60 четвъртини в минута):

Системата от модули на VCV Rack, с която е генериран този пример, изпълнява само функциите да създава последователността от MIDI ноти. Най-общо, чрез модул генератор на шум и модул Sample&hold се генерират случайно променящи се височини на ноти; с нискочестотни осцилатори LFO и генератори на шум се модулира силата на тоновете. Накрая получената последователност от MIDI ноти се подава на работещия като сървър семпъл-плейър timidity.

Софтуерният модулен синтезатор VCV Rack е удобен и за живо изпълнение. Чрез модула MIDI-MAP с хардуерен MIDI контролер или клавиатура може да се управляват различни параметри на другите модули. А модулът CV-MIDI може да управлява освен виртуални инструменти и външни хардуерни синтезатори.


Няма коментари:

Публикуване на коментар