Old 06-11-2019, 12:44 AM   #1
Human being with feelings
Join Date: Sep 2012
Posts: 8
Question Problems & Suggestions

Hi everybody,

I just recently discovered OSCII-bot and am very happy I found it. It's kind of a dream come true for me to be able to create complex MIDI and OSC scripts with a simple programming language that compiles on the fly. However, here are some problems that I found (I'm using OSCII-bot on macOS 10.13.6).

1. When specifying MIDI ports via @input or @output, OSCII-bot only matches the substring to the port name of the MIDI port and not the device name (but the reference says "substring devicename match").

This is a problem because if I have multiple MIDI devices that have the same port names (e.g. "Port 1" and "Port 2", there are quite a lot of these), there is no way for me to distinguish one devices from another. I know that I can use the "skip" parameter to specify the second or third device with a specific port name, but what if one device is not connected and how to determine in which order the devices are sorted in OSCII-bot? Also, MIDI ports can not be renamed in macOS's Audio-MIDI-Setup, unlike devices, which can be renamed to be able to distinguish them when one has more than one device of the same model.

I looked at the source code and found that OSCII-bot uses "kMIDIPropertyName" in "midiInputDevice::do_open" and "midiOutputDevice::do_open" in "midi_osx.cpp". Apple's documentation says:
"The recommended way to display an endpoint's name is to ask for the endpoint name, and display only that name if it is unique. If it is non-unique, prepend the device name."
This is clearly not done here, because the device name is never prepended, even if the endpoint (port) name is not unique. But I don't think that Apple's recommendation to only prepend the device name when an endpoint name is not unique is a good solution, because matching would again not work properly when one device with the same port names as another one is not connected.

A simple solution to this problem would be to always prepend the device name by replacing "kMIDIPropertyName" with "kMIDIPropertyDisplayName" ("Provides the Apple-recommended user-visible name for an endpoint, by combining the device and endpoint names.")

This way OSCII-bot matches against "Device name port name" instead of just "port name". So I am able to rename my devices in Audio-MIDI-Setup and can specify the midi ports in OSCII-bot without any guesswork and confusion. I built OSCII-bot with this simple change in Xcode 10.1 and it seems to work as intended.

I am aware that this might break compatibility with older versions, but maybe a solution could be to introduce a new keyword, e.g. "@inputdevice" to be able to use the proper MIDI names.

2. OSCII-bot sadly does introduce a bit of latency to the MIDI messages stream when processing. I noticed 2 to 5 ms for the simplest of scripts (one input, one output, just send the incoming message to the output) and up to 10 ms for more complex scripts. This is fine for manipulating and routing control messages and the like, but makes it unusable for live playing and manipulating midi notes, which is my main focus at the moment. For now, I have to use Bome Midi Translator for routing (which does not introduce any noticeable latency) and OSCII-bot for controller manipulation and switching of BMT presets. I would love to be able to do everything in OSCII-bot because I find it so much easier to program in a proper programming language than the approach that BMT takes. But with this very noticeable amount of latency, I can't.

3. On macOS, OSCII-bot is closed immediately when the ESC-key is pressed. I think this is not expected to happen in a macOS application. An application that stays opened to do some processing should not be terminated with a single (accidental) key press.

Thanks and best regards,
jnobody is offline   Reply With Quote

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT -7. The time now is 03:23 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.