Packages

A cross-platform, realtime MIDI processing in Elixir library which wraps the midir Rust library.

Current section

Files

Jump to
midiex lib midiex backend.ex
Raw

lib/midiex/backend.ex

defmodule Midiex.Backend do
@moduledoc false
use Rustler,
otp_app: :midiex,
crate: :midiex
# mix_config = Mix.Project.config()
# version = mix_config[:version]
# github_url = mix_config[:package][:links]["GitHub"]
# mode = if Mix.env() in [:dev, :test], do: :debug, else: :release
# use RustlerPrecompiled,
# otp_app: :midiex,
# crate: :midiex,
# version: version,
# base_url: "#{github_url}/releases/download/v#{version}",
# targets: ~w(
# aarch64-apple-darwin
# aarch64-unknown-linux-gnu
# aarch64-unknown-linux-musl
# riscv64gc-unknown-linux-gnu
# x86_64-apple-darwin
# x86_64-pc-windows-msvc
# x86_64-pc-windows-gnu
# x86_64-unknown-linux-gnu
# x86_64-unknown-linux-musl
# x86_64-unknown-freebsd
# ),
# nif_versions: ["2.15"],
# mode: mode,
# force_build: System.get_env("MIDIEX_BUILD") in ["1", "true"]
# ##########
# NATIVE API
# ##########
# MIDI port functions
def list_ports(), do: err()
def count_ports(), do: err()
def connect(_midi_port), do: err()
def close_out_conn(_out_conn), do: err()
def create_virtual_output_conn(_name \\ "MIDIex-virtual-output"), do: err()
def create_virtual_input(_name \\ "MIDIex-virtual-input"), do: err()
# MIDI messaging functions
def send_msg(_out_port_conn, _midi_msg), do: err()
# Midiex callback functions
def subscribe(_midi_port), do: err()
def unsubscribe_all_ports(), do: err()
def unsubscribe_port(_midi_port), do: err()
def unsubscribe_port_by_index(_port_index), do: err()
def subscribe_virtual_input(_name \\ "MIDIex-virtual-input"), do: err()
def unsubscribe_virtual_port(_name), do: err()
def unsubscribe_all_virtual_ports(), do: err()
def get_subscribed_ports(), do: err()
def get_subscribed_virtual_ports(), do: err()
def notifications(), do: err()
def hotplug(), do: err()
defp err(), do: :erlang.nif_error(:nif_not_loaded)
end