Loc2Midi - This project uses realtime location data to control audio effects plugins in order to simulate movement throughout a virtual soundscape

Visualization of coordinate math

Video demonstration of project

This project uses realtime location data to control audio effects plugins in order to simulate movement throughout a virtual soundscape. Both a "map" of sounds in [-1, 1] coordinate space and the corner points of the listening space that the user sets are used to map out virtual sounds in real space. As the listener moves through the area they defined, each different audio source in the soundscape will move around the stereo field.

This program was originally written to be used with gps2ip, which transmits GPS coordinates in real time over TCP. The GPS data was unfortunately not nearly precise enough for the size of the listening area I tested out (about 10ft x 10ft). It may be accurate enough to map out sounds in a much larger space.

In place of real location data, I set up a graph acting as an X/Y controller which is used to simulate the listener's movement throughout the listening area.

Requirements:

  • loopMIDI
    used to create a virtual MIDI port need to send created MIDI messages to DAW. Another virtual MIDI program may also work.
  • midicat
    used to send MIDI messages from Go. Midicat.exe must be placed in the same directory as loc2Midi.exe
  • Reaper
    used for sound playback and manipulation.
  • ATK for Reaper
    used to control spatial characteristics of each audio track.

To run:

  • Start loopMIDI on computer, create a new virtual MIDI port if necessary.
  • Modify config.json if necessary/desired.
    • Set MIDIPortName to the name of your created virtual port
    • Set audio track coordinates. Values should be in range [-1, 1]
  • Open reaper and set up each track's plugins and MIDI mappings.
    • Each track should have 4 audio channels and contain an ATK transform plugin, and two volume control plugins (the first controlling audio channels 1-2, the second controlling audio channels 3-4).
    • Messages are sent as MIDI pitch bend values, each track uses 3 channels. The first channel controls the azimuth (angle) of the sound, the second controls the degree of transformation (distance), and the third controls the volume. Set up the mappings as shown:

      there should be an image here
  • Run go run main.go or loc2Midi.exe. A browser window will open, containing a graph with a central point that you can use to control the listening location. For smoother movement, set the graph's step value to 0.

Current limitations:

  • Only supports 5 tracks.
  • Changes to coordinates in config.json are not reflected in the graph controller.
  • Direction that the listener is facing does not change angle of the tracks.
  • Defined listening can only be rectangular.
Similar Resources

That's right - order that nice pizza 🍕 with `kubectl`

pizza-controller making kubernetes do what it was always meant to do: order pizza. https://gum.co/kubernetes-crds to get up to speed with custom resou

Sep 27, 2022

Order Dominos pizza from the command line

Order Dominos pizza from the command line

Dominos pizza from the command line. Table of Contents Installation Setup Commands Config Menu Cart Order Tutorials None Pizza with Left Beef Installa

Jan 6, 2023

Are you programming and suddenly your stomach is rumbling? No problem, order your Ifood without leaving your favorite text editor ❤️

vim-ifood Você ta programando e de repente bateu aquela fome? Sem problemas, peça seu Ifood sem sair do seu editor de texto favorito ❤️ Are you progra

Jun 2, 2022

Lightweight CLI tool to programmatically rescale your Hetzner virtual server daily to optimize your budget spending

Lightweight CLI tool to programmatically rescale your Hetzner virtual server daily to optimize your budget spending

Nov 28, 2022

Run your workloads on ephemeral Virtual Machines

vm-spinner Run your workloads on ephemeral Virtual Machines. Descriprion A simple tool that spawns an arbitrary number of VMs in parallel, runs the sa

Jan 21, 2022

Tabouli: a TUI for interacting with firmware/embedded devices that support a CLI via serial interface/virtual COM Port

Tabouli: a TUI for interacting with firmware/embedded devices that support a CLI via serial interface/virtual COM Port

Tabouli Information Tabouli is a TUI for interacting with firmware/embedded devi

Apr 2, 2022

Mimic - a eBPF virtual machine and emulator which runs in userspace

Mimic is a eBPF virtual machine and emulator which runs in userspace. Mimic attempts to 'mimic' the eBPF machinery we find in the Linux kernel, as well as other possible implementation/environments.

Dec 6, 2022

A command-line tool that uses a fake AI neural network to tell whether or not Ben is sus

Is ben sus? Let's use an AI neural network, trained by his own tweets to figure out. A command-line tool that uses a fake AI neural network to tell wh

Jan 7, 2022

donLoader is a shellcode loader creation tool that uses donut to convert executable payloads into shellcode to evade detection on disk.

donLoader WARNING: This is WIP, barely anything was tested properly. Use at your own risk. Description donLoader is a shellcode loader creation tool t

Sep 20, 2022
create boilerplate structure for neovim plugins

boilit Boil yourself a sweet plugin Installation • Usage Ain't nobody got time to create plugin directories: boilit yourself! boilit creates boilerpla

Dec 28, 2022
A command tool to help user install oh-my-zsh plugins fast in a comfortable way

zshx A command tool to help user install oh-my-zsh plugins fast in a comfortable way. in other way, it is a zsh plugin package manager. How to use the

Feb 11, 2022
go program that installs and customizes ohmyzsh tmux vim via various plugins and other nice to haves
go program that installs and customizes ohmyzsh tmux vim via various plugins and other nice to haves

Pimp-My-Shell Table of Contents Pimp-My-Shell Install Usage About Resources Tmux Hotkeys VIM Hotkeys Adjusting Custom Aliases Mac Fix Terminal bind ke

Dec 22, 2022
Command line tools for creating and compiling JavaScript Minecraft plugins.

@customrealms/cli CustomRealms command-line tools for setting up and compiling JavaScript Minecraft plugins. Installation Install the CLI on your comp

Aug 2, 2022
Fast, realtime regex-extraction, and aggregation into common formats such as histograms, numerical summaries, tables, and more!
Fast, realtime regex-extraction, and aggregation into common formats such as histograms, numerical summaries, tables, and more!

rare A file scanner/regex extractor and realtime summarizor. Supports various CLI-based graphing and metric formats (histogram, table, etc). Features

Dec 29, 2022
Stonks is a terminal based stock visualizer and tracker that displays realtime stocks in graph format in a terminal.
Stonks is a terminal based stock visualizer and tracker that displays realtime stocks in graph format in a terminal.

Stonks is a terminal based stock visualizer and tracker. Installation Requirements: golang >= 1.13 Manual Clone the repo Run make && make install Pack

Dec 16, 2022
Gocheat - Golang terminal client for cht.sh that uses charm.sh's bubbletea project

Go Cheat.sh install gotext go get -u golang.org/x/text/cmd/gotext go generate

Jun 3, 2022
Discord screenshare, now with audio!

audio-share-discord-linux Discord screenshare, now with audio! Build Instructions go build . chmod +x audio-share-discord-linux ./audio-share-discord-

Nov 9, 2022
A youtube library for retrieving metadata, and obtaining direct links to video-only/audio-only/mixed versions of videos on YouTube in Go.

A youtube library for retrieving metadata, and obtaining direct links to video-only/audio-only/mixed versions of videos on YouTube in Go. Install go g

Dec 10, 2022
GC2 is a Command and Control application that allows an attacker to execute commands on the target machine using Google Sheet and exfiltrate data using Google Drive.
GC2 is a Command and Control application that allows an attacker to execute commands on the target machine using Google Sheet and exfiltrate data using Google Drive.

GC2 GC2 (Google Command and Control) is a Command and Control application that allows an attacker to execute commands on the target machine using Goog

Dec 13, 2022