Muzyka algorytmiczna

Zajęcia 7 (2025-04-09)

Zadanie (na 2025-04-16)

Wykonanie jednego z następujących wariantów wymagań:

  1. Przygotowanie materiału dźwiękowego do filmu - może to być ścieżka muzyczna, mogą być to dźwięki otoczenia, może być to mix obu. Link do materiału filmowego na mailu. Przykładowy plan pracy z tym wariantem zadania:
    1. Obejrzenie filmu i zastanowienie się nad tym co możemy tam umieścić dźwiękowo.
    2. Przygotowanie takiego materiału w Sonic Pi i próba puszczenia równocześnie z filmem
    3. Eksport z Sonic Pi: klikamy rec, uruchamiamy, zatrzymujemy, klikamy rec ponownie i zapisujemy
    4. Dołożyć ścieżkę dźwiękową do materiału filmowego. Do montażu można użyć: Reaper, ffmpeg
  2. Przygotowanie krótkiego doświadczenia dźwiękowego wykorzystującego autorskie lub znalezione w internecie nagrania dźwiękowego. (źródła inspiracji: wyszukać soundscape/sounddesign/muzyka konkretna)

Zadania na zajęciach

  1. Wykorzystując sample dostępne na stronie ZTM Poznań oraz Kmart October 1989 , stwórz utwór o następującej strukturze:
    1. Przez całą długość utworu wykonywany jest sample Kmart October (pierwsze 2 minuty. Przed załadowaniem do Sonic Pi należy skrócić oryginalny plik by ułatwić załadowanie w Sonic Pi. Rekomendowanym programem do skrócenia jest Audacity).
    2. Sample poddawane są obróbce np. efektami, przesunięciem wysokości dźwięków, itp.
    3. Z losowymi odstępami wykonywane są losowe sample od ZTM Poznań, z efektami takimi jak reverb, slicer, echo.

    Ciekawostka: ZTM Poznań udostępnia też trasy tramwajów, z odstępami między przystankami, pozwalając na stworzenie rekreacji przejazdu tramwajem.

Zrzut kodu z zajęć

Gotowy materiał audio

Dokumentacja funkcji sample

Wstępne ładowanie długich plików audio: load_sample

Dostosowanie długości odtworzenia sample'a

Przez skurczenie / rozciągnięcie do zadanej długości

use_synth :blade
live_loop :test do
  sample :loop_amen, beat_stretch: 4
  play_pattern_timed(ring(:f4, :f5, :e4, :e5), 1)
end

Przez zmianę prędkości odtwarzania

sample :loop_breakbeat, rate: 1
sleep sample_duration(:loop_breakbeat, rate: 1)

sample :loop_breakbeat, rate: 0.5
sleep sample_duration(:loop_breakbeat, rate: 0.5)

sample :loop_breakbeat, rate: 2
sleep sample_duration(:loop_breakbeat, rate: 2)

Przez wybór fragmentu

sample :arovane_beat_a, start: 0, finish: 0.1
sleep sample_duration(:arovane_beat_a, start: 0, finish: 0.1)

sleep 1

sample :arovane_beat_a, start: 0.9, finish: 1
sleep sample_duration(:arovane_beat_a, start: 0.8, finish: 1)

Wykorzystywanie plików audio

tomatoes.wav

Poniższy przykład zakłada, że plik znajduje się w tej samej ścieżce co Sonic Pi. Rekomendowanym jest używanie pełnych ścieżek (absolute path).

Windows: \ należy zamienić na \\: ścieżka "C:\Users\test\test.wav" na "C:\\Users\\test\\test.wav"

use_bpm 60

tomatoes = "tomatoes.wav"

sample tomatoes, pitch: 12
sleep sample_duration(tomatoes)

12.times do |n|
  rate = 1 + 0.25 * n

  s = 0.4
  f = 0.67
  sample tomatoes, start: s, finish: f, rate: rate, lpf: :c7
  sleep sample_duration(tomatoes, rate: rate, start: s, finish: f)
end

sample tomatoes, rate: 0.8, attack: 0, decay: 0, sustain: 0, release: sample_duration(tomatoes)

Efekty

# W przypadku fxów pomaga wcześniej załadować:
load_sample "tomatoes.wav"

with_fx :panslicer, smooth: 0.25 do
  with_fx :reverb do
    with_fx :flanger do
      with_fx :ring_mod do
        sample "tomatoes.wav"
      end
    end
  end
end