hoijui / JavaOSC

OSC content format/"protocol" library for JVM languages
http://www.illposed.com/software/javaosc.html
BSD 3-Clause "New" or "Revised" License
156 stars 43 forks source link

Problem with Ardour reply messages #32

Open flxkrmr opened 7 years ago

flxkrmr commented 7 years ago

First, thanks a lot for this library! Helps me a lot :)

I want to develope a remote application to control the DAW Ardour via OSC messages. Stateless message sending works like charm so far, but message receiving made some problems. It seems that Ardour sends certain 'reply' messages starting with the string #reply. As your library only checks for the first char, it assumes that these messages are #bundle messages:

private boolean isBundle(final Input rawInput) {
    return rawInput.getBytes()[0] == BUNDLE_IDENTIFIER;
}

The raw bytes are interpeted wrong and lead to a java.lang.OutOfMemoryError in OSCByteArrayToJavaConverter#convertBundle() (line 157).

I couln't find anything about these reply messages in the OSC 1.0 specs. Maybe something from a more recent specification? Any suggestion how I should deal with that?

--- EDIT ---

I just realized you have a development branch that is way ahead of the master branch. I will try this one later, but I guess it has similar problems, as it uses the same bundle check.

flxkrmr commented 7 years ago

I've asked in the Ardour forum and it seems that these messages can be treated very similar to normal command messages (https://community.ardour.org/node/14456#comment-46448)

With OSC 1.0 it was totally fine to check only the first byte of the message, but I think this has changed. Unfortunately I have not found any official information about this. Specification for OSC 1.1 seems to be down (http://opensoundcontrol.org/spec-1_1)

hoijui commented 7 years ago

hey! :-) thanks for reporting.. just saw it now (somehow i can;t get notifications going through to me here). aha.. i never heard anything about that before. i found this document: http://opensoundcontrol.org/files/aws-query-cmd-system-osc04.pdf which might be the blueprint/origin of this format. i think it is rather unfortunate that they chose a format that is incompatible with OSC 1.0 and 1.1, for no reason i could imagine, but well... it is at least as unfortunate that OSC (the website and organization and all that) is dead since so many years already, so things like that are bound to happen. there should be some kind of replacement, serving as a new standard forming entity, but well... i guess it makes sense that we support this reply format in JavaOSC aswell. i will do that sometime, but can give no info about when. right now i am a bit loaded, but then again one never knows when you gt addicted and going on something. thanks again for the good report. is this very important for you, right now? are you able to hack something together yourself (change JavaOSC so it works for you, for the moment), or do you want to even write proper patches?

flxkrmr commented 7 years ago

No, it is not this important right now. I tried to hack together a small android app with your library, but have not worked on it for a few days. When I come back to it, I will fork your project and try to make it work with the reply messages. I will let you know if I have something :)

7890 commented 5 years ago

Hi, FYI: it seems that ardour doesn't send messages with a prefixed '#' anymore. See https://github.com/Ardour/ardour/commit/8b8f47430adfefc624af19f8f27585039560cc81 There is an option now.

hoijui commented 5 years ago

ahhh nice! thank you @7890