Przygotowanie krótkiego utworu (~1min) w środowisku Sonic Pi, spełniającego następujące wymagania:
Plik: 08.rb
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.
midi :c4
.
Przyjmuje dodatkowe parametry vel
odpowiadające za „siłę uderzenia w klawisz” (0-127) oraz sustain
określające długość wciśnięcia klawisza.vel
midi_note_on vel: 0
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
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