| Author |
Message |
hanez

Joined: Feb 07, 2007 Posts: 10 Location: Austria
|
Posted: Fri Oct 24, 2008 12:13 am Post subject:
JOGI Subject description: GUI components? formated file I/O? Look here! |
 |
|
hi everybody,
i always liked to chuck around, and i always disliked the lack of a GUI and the lack of file input/output.
during the last month i had some time left over so i remembered my (rather poorly) c++ knowledge and i implemented JOGI.
JOGI is a software system that offers access to standard GUI components (like sliders, buttons, ...) and it offers formated file input/output functionality.
It is based on OSC (open sound control).
It consists of a standalone executable program (server), which is mainly an OSC dispatcher (it waits for and acts to certain OSC messages) and some chuck classes that implement the client side.
You don`t have to learn another language, you can generate and even change with time all your GUI from within chuck.
the only thing you have to do is to start the server and then hack your chuck code.
JOGI stands for JuceOscGraphicalInterface.
JUCE is a free (for non commercial use) c++ library for GUI components, that i used as the basis for my own code.
To implement the OSC part i used the free OSPACk c++ library.
both libs are multiplatform.
i post JOGI here, because i think that maybe it is useful for other chuckers also and because i have no webspace to host it somewhere else.
the best way to start is to extract the rar archive and read the readme1st.pdf file in the doc directory.
then try the examples in the examples directory. there is an example chuck file for every feature.
the two more elaborate examples are sinOscMix_example.ck (a nonsense sound generator based on 8 SinOsc UGens) and drumSequ_example.ck, which is more useful because it is a multitrack 16 step midi trigger sequencer.
so far JOGI runs on winXP/2000 (i don´t own a MAC/Linux machine) only but in principle all the code is multiplatform.
maybe somebody takes the time and effort to compile it for the other platforms too.
this is version 0.666 of JOGI.
it supports linear-, rotary-, increment/decrement sliders,
toggle-, push-, radiobuttons
comboboxes,
labels for text input/output,
formated file in- and output
have fun
hannes
| Description: |
|
 Download (listen) |
| Filename: |
jogi.rar |
| Filesize: |
519.67 KB |
| Downloaded: |
474 Time(s) |
|
|
|
Back to top
|
|
 |
Kassen
Janitor


Joined: Jul 06, 2004 Posts: 7678 Location: The Hague, NL
G2 patch files: 3
|
Posted: Fri Oct 24, 2008 3:18 am Post subject:
|
 |
|
Hanez, I think you are being very annoying. Why did you have to post this on this weekend when I have a whole series of gigs?
;¬)
No, seriously, this looks totally amazing at first sight... and with source and docs and examples! And completely out of the blue! Great stuff! _________________ Kassen |
|
|
Back to top
|
|
 |
radarsat1

Joined: Mar 14, 2008 Posts: 85 Location: Montreal
|
|
|
Back to top
|
|
 |
radarsat1

Joined: Mar 14, 2008 Posts: 85 Location: Montreal
|
|
|
Back to top
|
|
 |
radarsat1

Joined: Mar 14, 2008 Posts: 85 Location: Montreal
|
Posted: Fri Oct 24, 2008 10:27 am Post subject:
|
 |
|
Oh yeah, I forgot to mention that I had to modify a couple of lines.
gcc complained about ambiguous casting for the sendValue() function in a few places, so I had to explicity cast to (const char*) whenever you called sendValue() on a String object.
Here's a patch..
| Code: | diff -ru a/jogi/cppsrc/jogi_OscDispatcher.cpp b/jogi/cppsrc/jogi_OscDispatcher.cpp
--- a/jogi/cppsrc/jogi_OscDispatcher.cpp 2008-10-08 20:30:12.000000000 -0400
+++ b/jogi/cppsrc/jogi_OscDispatcher.cpp 2008-10-24 12:04:24.000000000 -0400
@@ -373,7 +373,7 @@
label->setText(labelText, true);
} else if ( secondAdressPattern == T("GetText") ) {
String labelText = label->getText(false);
- sendValue(labelText, name, jogiContentComponent_->getTransmitSocket());
+ sendValue((const char*)labelText, name, jogiContentComponent_->getTransmitSocket());
} else if ( secondAdressPattern == T("SetEditable") ) {
int isEditable((arg++)->AsInt32());
label->setEditable(isEditable, false, false);
@@ -548,7 +548,7 @@
sendValue(itemId, name, jogiContentComponent_->getTransmitSocket());
} else if ( secondAdressPattern == T("GetText") ) {
const String itemText = comboBox->getText();
- sendValue(itemText, name, jogiContentComponent_->getTransmitSocket());
+ sendValue((const char*)itemText, name, jogiContentComponent_->getTransmitSocket());
}
}
}
diff -ru a/jogi/cppsrc/jogu_MainComponent.cpp b/jogi/cppsrc/jogu_MainComponent.cpp
--- a/jogi/cppsrc/jogu_MainComponent.cpp 2008-10-03 13:05:00.000000000 -0400
+++ b/jogi/cppsrc/jogu_MainComponent.cpp 2008-10-24 12:04:14.000000000 -0400
@@ -81,7 +81,7 @@
const String& name = comp->getName();
const String labeltext = label->getText(false);
- sendValue(labeltext, name, getTransmitSocket());
+ sendValue((const char*)labeltext, name, getTransmitSocket());
}
}
}
|
|
|
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 270
|
Posted: Sat Oct 25, 2008 12:52 pm Post subject:
|
 |
|
Looks VERY promising. This may be a gift to Ge and the Dev Team, cross-platform GUI and File I/O! they may adopt it as their own, eh? I'm not into compiling stuff, but when it gets to be mainstream, if it does, I'll jump on it! Well done! _________________ "Let's make noise for peace." - Kijjaz |
|
|
Back to top
|
|
 |
ZigZag

Joined: Jul 05, 2009 Posts: 2 Location: Toronto
|
Posted: Sun Jul 05, 2009 5:11 pm Post subject:
Jogi Subject description: Any Jogi Updates? |
 |
|
Hi Hannez
I have recently been delighted to come across your implementation of the Jogi OSC/GUI combination -brilliant. It works very well not just for Chuck, but, using your examples as a guide, for other OSC driven apps.
I know it's been over a year since you generously handed effort this to the community (many thanks) , and I am wondering if you have continued to develop this platform? Enhancements such as multiple channel OSC-fed level meters, and the ability to dynamically erase and reconfigure the current Jogi session would be excellent. Would you consider extending Jogi further to include this functionality if you have the time?
If you are still out there, I'd appreciate your response.
-ZigZag |
|
|
Back to top
|
|
 |
hanez

Joined: Feb 07, 2007 Posts: 10 Location: Austria
|
Posted: Sat Aug 01, 2009 2:35 am Post subject:
Re: Jogi Subject description: Any Jogi Updates? |
 |
|
| ZigZag wrote: | Hi Hannez
I have recently been delighted to come across your implementation of the Jogi OSC/GUI combination -brilliant. It works very well not just for Chuck, but, using your examples as a guide, for other OSC driven apps.
I know it's been over a year since you generously handed effort this to the community (many thanks) , and I am wondering if you have continued to develop this platform? Enhancements such as multiple channel OSC-fed level meters, and the ability to dynamically erase and reconfigure the current Jogi session would be excellent. Would you consider extending Jogi further to include this functionality if you have the time?
If you are still out there, I'd appreciate your response.
-ZigZag |
hi ZigZag,
shortly after i implemented JOGI an old passion returned to me an hit me with full power: rock climbing
this, together with the necessity to make music, left no time over for coding.
so - no, so far i didn't have continued to develop JOGI.
but hey, i'm still motivated to put additional features into JOGI, so this is not the end of the story, i just can't tell when.
There is a possibility to dynamically reconfigure a JOGI session (i have not really tested it). you can use the osc command "/Component/SetVisible" to make certain GUI components visible/invisible. i don't know how good this works (all the shreds and processes for the invisible gui components are still running, so resourcewise this method is far from being smart).
an approximation to OSC-fed level meters could be narrow sliders.
best regards
hannes _________________ http://soundcloud.com/hanez/
http://virb.com/sonoids |
|
|
Back to top
|
|
 |
ZigZag

Joined: Jul 05, 2009 Posts: 2 Location: Toronto
|
Posted: Fri Aug 07, 2009 4:53 pm Post subject:
Jogi Subject description: The Yogi platform |
 |
|
Hi Hannez
We recently had a 53 year old freehand climber here in Canada (an expert who had been climbing since he was 17) experience his very last mountain... be careful...
You mention that there is a way of setting Yogi components to be invisible, even though they are still consuming resources. But when you set a component to be invisible, does this mean that the widget that had been (still is) at a given coordinate will still be active even though it cannot be seen, or is it effectively disabled if the user still clicks on that region?
-The best way would be to have a global "erase all" from the Yogi canvas, so that you could freely start again from scratch in the same session. If you implement that at some point, I can test it.
I hope you can find the time to further develop this excellent little OSC platform.
-thanks for your reply,
Zig Zag |
|
|
Back to top
|
|
 |
|