electro-music.org   Dedicated to experimental electro-acoustic
and electronic music
 
 Front Page  |  Radio  |  Forum  |  Media  |  Playlists  |  Wiki
Forum with support of Syndicator RSS
 FAQFAQ   CalendarCalendar   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   LinksLinks
 RegisterRegister   ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in  Chat RoomChat Room 
 Forum index » DIY Hardware and Software » ChucK programming language
JOGI
Post new topic   Reply to topic Moderators: Kassen
Page 1 of 1 [9 Posts]
View unread posts
View new posts in the last week
Mark the topic unread :: View previous topic :: View next topic
Author Message
hanez



Joined: Feb 07, 2007
Posts: 10
Location: Austria

PostPosted: Fri Oct 24, 2008 12:13 am    Post subject: JOGI
Subject description: GUI components? formated file I/O? Look here!
Reply with quote  Mark this post and the followings unread

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


jogi.rar
 Description:

Download (listen)
 Filename:  jogi.rar
 Filesize:  519.67 KB
 Downloaded:  474 Time(s)

Back to top
View user's profile Send private message
Kassen
Janitor
Janitor


Joined: Jul 06, 2004
Posts: 7678
Location: The Hague, NL
G2 patch files: 3

PostPosted: Fri Oct 24, 2008 3:18 am    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Send e-mail Visit poster's website
radarsat1



Joined: Mar 14, 2008
Posts: 85
Location: Montreal

PostPosted: Fri Oct 24, 2008 9:57 am    Post subject: Reply with quote  Mark this post and the followings unread

Nice, I managed to compile it on Linux.
Here's a binary (Ubuntu) and Makefile.
(The Makefile assumes there is a folder in "jogi" called "juce" and another called "oscpack", and they are already built.)


jogi_ubuntu.png
 Description:
Ubuntu screenshot
 Filesize:  159.1 KB
 Viewed:  494 Time(s)
This image has been reduced to fit the page. Click on it to enlarge.

jogi_ubuntu.png


Back to top
View user's profile Send private message
radarsat1



Joined: Mar 14, 2008
Posts: 85
Location: Montreal

PostPosted: Fri Oct 24, 2008 10:03 am    Post subject: Reply with quote  Mark this post and the followings unread

Weird, it only included one of my two attachments. Apparently it doesn't want me to use bzip2. (bz2 rejected file extension..)


jogi_linux.zip
 Description:
Linux (Ubuntu) binary for JOGI, w/ Makefile.

Download (listen)
 Filename:  jogi_linux.zip
 Filesize:  3.47 MB
 Downloaded:  436 Time(s)

Back to top
View user's profile Send private message
radarsat1



Joined: Mar 14, 2008
Posts: 85
Location: Montreal

PostPosted: Fri Oct 24, 2008 10:27 am    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 270

PostPosted: Sat Oct 25, 2008 12:52 pm    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Send e-mail
ZigZag



Joined: Jul 05, 2009
Posts: 2
Location: Toronto

PostPosted: Sun Jul 05, 2009 5:11 pm    Post subject: Jogi
Subject description: Any Jogi Updates?
Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message
hanez



Joined: Feb 07, 2007
Posts: 10
Location: Austria

PostPosted: Sat Aug 01, 2009 2:35 am    Post subject: Re: Jogi
Subject description: Any Jogi Updates?
Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message
ZigZag



Joined: Jul 05, 2009
Posts: 2
Location: Toronto

PostPosted: Fri Aug 07, 2009 4:53 pm    Post subject: Jogi
Subject description: The Yogi platform
Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic Moderators: Kassen
Page 1 of 1 [9 Posts]
View unread posts
View new posts in the last week
Mark the topic unread :: View previous topic :: View next topic
 Forum index » DIY Hardware and Software » ChucK programming language
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
Log in
Username:     Password:      Log me on automatically each visit    


Forum with support of Syndicator RSS
Powered by phpBB © 2001, 2005 phpBB Group
Copyright © 2003 through 2026 by electro-music.org