Muzyka algorytmiczna

Zajęcia 8 (2024-11-20)

Cel zajęć

  1. MIDI w Sonic Pi
  2. Łączenie Sonic Pi z zewnętrznymi syntezatorami

Zadanie

Na kolejne zajęcia (2024-11-27)

Przygotowanie krótkiego utworu (~1min) w środowisku Sonic Pi, spełniającego następujące wymagania:

  1. Wykorzystuje komunikację MIDI do co najmniej dwóch instrumentów (np. dwie instancje Helma)

Kod z zajęć

Plik: 08.rb

Tworzenie komunikatów MIDI w Sonic Pi

Za tworzenie i wysyłanie komunikatów MIDI odpowiada rodzina funkcji midi*. Każda z nich akceptuje parametr port:, który pozwala na wybranie docelowego portu. Domyślną wartością jest * wysyłająca na wszystkie porty.

10.times do |i|
  midi :c4, vel: i * 10, sustain: 1
  sleep 1
end
use_real_time

in_thread do
  use_midi_defaults port: "timidity_timidity_port_0_136_0"
  midi_pc 24 # AcousticGuitarNylon

  loop do
    midi scale(:c4, :major).tick
    sleep 1
  end
end

in_thread do
  use_midi_defaults port: "timidity_timidity_port_1_136_1"
  midi_pc 19 # Church Organ
  loop do
    midi scale(:c2, :major).tick
    sleep 4
  end
end

Tworzenie portów wirtualnych

Linux

Najprostsza metoda - zwiększenie liczby portów tworzonych automatycznie przez ALSA:

# echo "options snd-seq-dummy ports=4" > /etc/modprobe.d/more-midi-ports.conf
# reboot

Windows

  1. Zainstalowanie i uruchomienie oprogramowania loopMIDI
  2. Dodanie portów wirtualnych przyciskiem "+"