This one is simple. Bought a Volca FM, connected with a usb-midi cable, sent it midi notes from Sonic Pi. It worked Oh, I had to switch it on first. Very low latency, nice sounds. After all the shenanigans trying to get various software synths to work on Raspberry Pi this was fresh air.
I’ve got this running in a SPi buffer, one loop takes local OSC and sends MIDI to the volca. The other one sends a sync note every 4 bars or so to a locally running VCV Rack to reset it’s clock.
#Osc2Midi V2 midi_all_notes_off #Local Sync Pulse live_loop :osc2midi_localsync do use_real_time n,v,d,ch = sync "/osc:127.0.0.1:4560/sync" midi n, v, channel: ch, sustain: d, port: "loopmidi_port" end #Volca live_loop :osc2midi_volca do use_real_time n,v,d,ch = sync "/osc:127.0.0.1:4560/midi" midi n, v, channel: ch, sustain: d, port: "usb_midi_interface" end
On a remote PC I have this similar script that receives OSC and sends MIDI notes to its VCV Rack
midi_all_notes_off live_loop :osc2midi_recv do use_real_time n,v,d,ch = sync "/osc:192.168.1.64:4560/midi" midi n, v, sustain: d, channel: ch, port: "loopmidi_port" end
On my ‘Conductor PC’ I simply send OSC notes to whatever remote device I choose, more or less as if they were
play commands. This little bit of abstraction will make it easier to set things up, integrate other hardware, and allow switching between voices in the moment.
#Little ARP 12.times do osc "/midi", notes["34262847".ring[look].to_i],127,0.2,2 if "x-x-x-xxx".ring[tick]=="x" end