前提環境
- OS Ubuntu 22.04
- DJコントローラー Pioneer DDJ-FLX4
- portmidiをインストールできる環境(下記参照)
https://qiita.com/t-yamanashi/items/38e4cd7124c4daac111f - xdotoolがインストールできる環境(下記参照)
https://qiita.com/t-yamanashi/items/956a715caa7abde7a6b6
実施するざっくり説明
- midi inからデーター取得
- midiデーターによってキーボードとして信号を送る
ソース
defmodule DdjKeyout do
@moduledoc """
Documentation for `Keyout`.
"""
def main() do
{:ok, input} = PortMidi.open(:input, "DDJ-FLX4 MIDI 1")
PortMidi.listen(input, self())
midi_in(input)
PortMidi.close(:output, input)
end
def midi_in(input) do
receive do
{^input, [{{144, 11, 0}, _}]} ->
IO.inspect("end")
{^input, [{{151, 4, 0}, _}]} ->
send_key("a", input)
{^input, [{{151, 5, 0}, _}]} ->
send_key("b", input)
{^input, [{{151, 6, 0}, _}]} ->
send_key("c", input)
{^input, [{{151, 7, 0}, _}]} ->
send_key("d", input)
a ->
IO.inspect(a)
midi_in(input)
end
end
def send_key(key, input) do
System.cmd("xdotool", ["type", key])
midi_in(input)
end
end