November 14, 2016 at 10:15 pm #280
Thank you for this tool. I’ve written OSC routing/proxy software for personal use (and I’ve released the source to some things as well), but nothing with the scope of TWO.
It looks like it could replace my current set of tools but I’m having a hard time getting started.
I appreciate the time and effort put into the documentation. I fear, though, that it has an emphasis on too much detail (e.g. a lengthy exposition on OSC itself) over task-specific clarity.
For example, in the section on controllers, while there is a great deal of information on assorted controller aspects, the section simply says, “Upon creating an Editor, …” without explaining exactly how that happens. I clicked around for a while and finally got to an Editor, but was able to then do anything useful with it.
Meanwhile the section on the Router describes what it can do but says nothing about how to set one up.
I’ve been hacking about on my one trying to get something working while reading along in the manual, but I’ve not been able to do anything useful.
Are there any simple, step-by-step, examples for accomplishing specific tasks?
Thank again for TWO; I’ll keep trying to figure out how to use it.
Perhaps I can deconstruct the Bach example to learn how to make my own.
(I realize how hard it is to write docs, especially when it’s your own, since you know it so well. Often it can be hard to realize when something needs a more detailed explanation for a newcomer.)November 15, 2016 at 10:21 am #281
Thank you for this very valuable feedback!
A tutorial is greatly needed and is very high on my list of priorities. Perhaps a simple one now, rather than a very good one down the road, would be a good way to re-prioritize! I will still then make the very good one of course.
The AudioVisualBach example is perhaps unnecessarily complex towards getting started – it serves to show what can be achieved, but is not the ideal first step I realize.
Here’s a simpler one I’ve been making. If you run on windows, download this and give it a spin:
(Note: I deleted this, since there’s an updated version further down this thread).
If you are on OS X, bear with me and I will upload a file within the week.
I will also write a step-by-step of how to arrive at the setup there.
Thank you for your interest!
November 16, 2016 at 12:41 am #282
- This reply was modified 2 years, 4 months ago by onar3d.
Thanks very much for this. I’ll try this out and let you know how it goes.November 20, 2016 at 11:00 pm #283
I had trouble running the compiled Processing sketches. I was able to get them going by running the sketch code from Processing directly (after installing the Mother library). (I think the compiled exe programs were silently breaking on some 32-bit vs 64-bit issue.)
Once I had that code running, and after trying out the TWO demo, I had a number of questions. I was going to post them here but decided to just check my understanding of a few items.
I then figured out a few more things, so I’m now working on my own simple demo. I will post Processing code (or a link to the code) and demo instructions when I’ve got it ready.November 22, 2016 at 11:40 am #284
I tried the above example on my machine before uploading obviously, but yes, a good practice for next time is that I run it on both a 32 and a 64 bit machine to make sure it works on all!
I have built the example for OS X as well, and streamlined it a bit, I also have a half-finished step-by-step tutorial that I will try to wrap up today, I’ll post it here as soon as I am done.
As for you making examples, that would be awesome, anything you make I’d be delighted to see!
Ilias B.November 22, 2016 at 11:45 am #285
…As for questions, ask away! 🙂November 22, 2016 at 4:18 pm #286
Hello again, now I have finished a tutorial draft, and also updated the examples, here it is:
I realized why the Processing programs didn’t work for you: I hadn’t embedded Java. Now there’s a 32-bit JRE embedded so they should run right away.
Copy-Pasting of entities in the program I realize should be at the top of my TODO-list after making this tutorial. I’ll get to work on that for the upcoming new Alpha.
I just saw your online book on Open Sound Control – great to find another person as enthusiastic as I am over OSC!
Ilias B.November 25, 2016 at 1:46 am #288
I will take a look at the updated example.
I ran into a issue. TWO crashes every so often. Today it crashed as I was trying to delete a Global Editor. I had been saving my work every so often. After the crash I tried to load my *.two file but nothing appeared.
In the Messages section it says “Loading file failed, because an object referenced in the file did not exist!”
I have no idea how to fix this. I can see my settings in the two XML, but cannot resume my project. What “object” would the xml be trying to reference?November 25, 2016 at 1:46 am #289
BTW, I got the same error loading the .two file even when using an earlier version of the file, one saved before any crashes.November 25, 2016 at 9:08 am #291
That’s not good at all!
I know that my last round of changes introduced a “multi-threading racing condition” which can cause crashing sometimes. I am working on a fix for the next release. This should only ever happen when setting things up, when just running a setup it is in my experience very stable. But let me know if your experience differs!
In the meanwhile, I’m quite certain this occasional crashing goes away if, in the settings panel, you disable the “Build Namespaces” option at the very bottom.
As for the file, that is an error that I haven’t had in very long – have you perhaps used the “Merge” feature? Please email me the file so that I can figure out how it is that it is broken, and make sure it never happens again! I will email you a fixed file in return, alternatively upload a build with which the file works.
The message at the bottom on an object reference missing, is more of a debugging message for me the developer, I should make that clearer – it is not something an end-user can do anything to fix.
Ilias B.November 26, 2016 at 9:38 am #296
I figured it out and fixed your file. It was because you had a Node in your namespace that has an empty “ID/Address Part”. I’ve now given it a name in the XML, so that it loads. I sent you the file over email.
And I should disallow this in the GUI so that this cannot happen by mistake.
It makes no sense in OSC to have an empty fragment, this would result in an address pattern like follows: “/root/sub/othersub//etc” – “//” is as far as I know illegal. If it is part of some wildcard specification I’m not sure, I should double check now that we came upon this, but I think not!
As soon as I’m done refactoring the code to fix the multithreading bug, I’ll be releasing a new Alpha.
Ilias B.December 2, 2016 at 1:22 am #297
I’ve posted my demo on gitlab: https://gitlab.com/neurogami/TWO-simple-demo
There are two simple Processing sketches. One that reads a config file, and one the bundles two programs into a single sketch with no config.
The configurable sketch is much like the slide-show demo sketch but it just changes window colors.
There’s a .two file as well. The main README walks through how I set up the TWO project. There are some questions in there as well for things I did not understand.
The biggest difference with my demo is that I have TWO send the exact OSC as defined in the Namespace, with no additions to the address patterns coming from the Scene Address or the Global Editor. This reflects my experience when using OSC with various commercial applications such as Renoise and Reaper.
Let me know what I got wrong. 🙂December 4, 2016 at 5:40 pm #298
Now that the gitlab page is public I got to take a look at your example and tutorial – I like it, it’s the most minimal example possible that still shows some of the benefits of TWO! Of course TWO’s usefulness increases with complexity, but one needs to get started somewhere.
The reason that you are able to add “Address Parts” also at the Location and Address levels, is that for some OSC servers this makes sense. But of course, for many others, such as renoise and reaper as you say, it does not! In that case you just leave the field blank.
I think you’ve got the hang of it quite well! One thing I haven’t used in my examples yet, but makes sense in this context, is the “preferred handling” option for the TTS’s, in the Namespaces panel: if the TTS has 3 or more TT’s, the control component in the global editor becomes a colour picker, if the preferred handling is set to one of the colour options.
On to the questions from your gitlab page:
“WARNING! There is no undo. If you accidentally click delete there is no confirmation prompt, and no way to recall what has been deleted. Save your work as you go.”
On the lack of Undo: I agree it is a crucial feature. I’ve implemented infinite undo/redo in other programs and know how to do it, but it is not trivial so I’ve been postponing it, to get TWO out. Undo/Redo will most definitely be implemented as soon as I’ve wrapped up all the minor bugs and features in my TODO list.
“Question: Are “type tag” and “tag type” (or “tagtype”) both commonly used? Are they the same thing?”
I’ve actually never before seen the term “tagtype” or “tag type”. I did a quick search but couldn’t find it anywehere in relation to OSC, as far as I know the term is always the other way around, i.e. “type tag”.
“Question: Do IDs need to be unique across the whole application? Or are IDs context-dependant? (That is, can I have the color node ID be “color”, and the color tagtype ID also be “color”
Id’s need not be unique across the application. Their only restriction is that they cannot be blank ((I’ll fix it to check for that), that they cannot contain spaces (I replace with “_” automatically), and that they have to be different within the same level of a hierarchy, which I also currently enforce, by disallowing the entering of an ID if it clashes with an existing one. (Note: I think I’ll be renaming the ID fields to just “Name” throughout).
“Question: Who uses these (Address) IDs?”
They are for internal use within TWO, so that parts of TWO can interrelate.
They are also so that you can ensure that each Address has a name that makes sense to you as a user. Sometimes OSC address patterns are pretty nonsensical, because of (in my opinion) bad design of the software at the receiving/transmitting end. You can in this case simply recognize which each is from the ID that you have chosen to give it, instead of remembering a cryptic address pattern.
Typo in your text: “Adddresses”.
“Question: Is this needed? Can you not just create a different OSC Network location?”
At a single location, you can have many Namespaces, or vice versa, the same namespace at many locations, as in your example. Separating the Location from the namespace, and associating them in an Address, makes for much more flexible use.
“Question: The saturation slider does not stop when it hits ‘1.0’; it will keep sending higher values. Can we change this?”
The clip setting ensures that the value going out, does not go beyond the ranges you have set. But the values in the controllers, should still be allowed to go beyond those ranges, due to how they interrelate with the matrix. This is a more advanced, but nonetheless important feature:
If you have mapped an incoming value to that destination in a matrix (as in the AudioVisualBach example), then the values in the Editor act as offsets to the mapped value. So, say you have a destination range of 0.0-1.0, and an incoming value of ‘-0.5’. If you then want an offset such that at the destination, the value then becomes 1.0 (the maximum), it has to be possible that the offset is beyond that destination range – in the case of this example 1.5.
Thank you for this, I am glad to get input from users of TWO, do keep posting updates on how you get along with it!
Now on to wrapping up the next Alpha release 🙂
Ilias BergströmDecember 5, 2016 at 7:43 pm #301
By the way, I’ll also look into how I’ll best include this example of yours (and perhaps other OSC examples that you’ve published) with the next download.
I just have to figure out a good way of packaging it all without having to include a full JRE separately for each example first!December 5, 2016 at 9:27 pm #302
And for the record, I’ve found that “//” is a wildcard in the OSC 1.1 specification: cnmat.berkeley.edu/system/files/attachments/Nime09OSCfinal.pdf
I won’t be supporting wildcards for this version of TWO, but good to have noted, I should support wildcards in future releases.
You must be logged in to reply to this topic.