Skip to content

Commit

Permalink
remove the old multiplatform client, update readme, smart omission of…
Browse files Browse the repository at this point in the history
… webclient features when ofxLibWebsocket is not available
  • Loading branch information
armadillu committed Aug 24, 2017
1 parent 751683e commit 49e10c9
Show file tree
Hide file tree
Showing 14 changed files with 50 additions and 2,031 deletions.
66 changes: 42 additions & 24 deletions README.md
@@ -1,22 +1,21 @@
# ofxRemoteUI


[![Build Status](https://travis-ci.org/armadillu/ofxRemoteUI.svg?branch=master)](https://travis-ci.org/armadillu/ofxRemoteUI)
[![Build status](https://ci.appveyor.com/api/projects/status/0cne779u0mdp8mvp/branch/master?svg=true)](https://ci.appveyor.com/project/armadillu/ofxremoteui/branch/master)
[![Build Status](https://travis-ci.org/armadillu/ofxRemoteUI.svg?branch=master)](https://travis-ci.org/armadillu/ofxRemoteUI) [![Build status](https://ci.appveyor.com/api/projects/status/0cne779u0mdp8mvp/branch/master?svg=true)](https://ci.appveyor.com/project/armadillu/ofxremoteui/branch/master)

OpenFrameworks addon that allows you to serve c++ variables/parameters (bool, float, int, enum, string, ofColor) on the network, so that you can modify them remotely. It uses server client architecture, where your app is the server. It communicates both ways; you can modify your project's variables from the client, but you can also pull your app's variable values from the client; this way you can track values that evolve programatically. It runs on OSC.

You can save and then load "presets", which allow you to quickly change values for a lot of your parameters quickly. You can also make "group presets" to change only the values of a subset of your parameters.

__Compile against OF master branch. If you are trying to use this
against an older version (0.9.8 or lower) you should use the commit tagged
with "OF_0.9.8". It requires ofxPoco in OF versions >0.9.8__
__Compile against OF master branch. If you are trying to use this
against an older version (0.9.8 or lower) you should use the commit tagged
with "OF_0.9.8". It requires ofxPoco in OF versions >0.9.8__


Watch a quick [Intro Video](http://youtu.be/F18f67d_WjU).

![MultiPlatform Client](https://farm4.staticflickr.com/3926/14983323502_4019a37a8f_o_d.png "List of Clients") In Order of appearance, OSX Client, Built In Client, iOS Client (wip), multiplatform client (based on ofxUI)

![Clients](screenshots/clientList.png "List of Clients")
In order of appearance in the screenshot above, Mac OS X native Client, Built In Client (inside your OpenFrameworks app), Web Client (served from your OpenFrameworks app), iOS Client (not quite flushed out).


---
Expand All @@ -39,26 +38,28 @@ Watch a quick [Intro Video](http://youtu.be/F18f67d_WjU).
* Log remotely - ofxRemoteUIServer allows you to log messages to you client with RUI_LOG(); which accepts printf-like formatted writing.
* ofxRemoteUI can be used outside OF in any C++ project, and in Processing thx to [@kritzikratzi](http://github.com/kirtzikratzi)
* Easy to use C++ Macros hide complexity away, very easy to plug into any existing project.
* Support for native ofParameters of compatible types (int, float, bool, string ofColor, ofVec). Allows you to edit native OF ofParamater types from RemoteUI. See "example-ofParameter".
* Support for native ofParameters of compatible types (int, float, bool, string ofColor, ofVec). Allows you to edit native OF ofParameter types from RemoteUI. See "example-ofParameter". *outdated!
* Control parameters from any web browser through websockets (requires ofxLibWebsockets).

## Dependencies

* ofxXmlSettings
* ofxOsc
* ofxPoco in OF v > 0.9.8
* ofxPoco in OperFrameworks version > 0.9.8
* ofxLibWebsockets *optional

## Available Clients

* Native OSX client, feature complete (this should be your first choice)
* Alternative mutliplatform (iOS/win) client built on top of ofxUI (less features & less robust, stale)
* Native iOS client (WIP - OSC is not very reliable over WIFI).
* built in client (inside the OF app) for basic edits, saving, resetting, and global and group preset loading and saving.
* Built in client (inside the OF app) for basic edits, saving, resetting, and global and group preset loading and saving.
* WebClient based on [dat.GUI](https://github.com/dataarts/dat.gui). Connect to OpenFrameworks through websockets (thx to [@jackosx](http://github.com/jackosx)).
* Native iOS client (WIP - OSC is not very reliable over WIFI and only basic features implemented).


## Compatibility

Works in OpenFrameworks, but also in plain C++ projects.
[@kitschpatrol](http://github.com/kitschpatrol) is actively working on a Cinder Block that works on top of a fork [here](https://github.com/kitschpatrol/Cinder-RemoteUI). He's added some awesome feature like getter/setter support for your params, and maybe one day we'll be able to merge back.
[@kitschpatrol](http://github.com/kitschpatrol) is actively working on a Cinder Block that works on top of a fork [here](https://github.com/kitschpatrol/Cinder-RemoteUI). He's added some awesome feature like getter/setter support for your params, and maybe one day we'll be able to merge back.

There's also a feature limited version of the server for Processing, made by [@kritzikratzi](http://github.com/kirtzikratzi)! See <a href="http://superduper.org/processing/remoteUI">here</a>.

Expand All @@ -70,7 +71,7 @@ I know there's tons of very good UI's already, but one thing that bothers me abo

It's OSC based, and it includes a native OSX Client. The Native OSX Client allows param colorization for better clarity, and live param filtering. It also supports the grouping of params into categories, for easy access. There's automatic keyboard shortcuts to do so.

It can also be set to store the current values when quitting the app (or whenever its convenient), so that you can carry on where you left off last time you used it. It does so by saving a file called "ofxRemoteUISettings.xml" in your data folder. It uses ofxXmlSettings to store everything.
It can also be set to store the current values when quitting the app (or whenever its convenient), so that you can carry on where you left off last time you used it. It does so by saving a file called "ofxRemoteUISettings.xml" in your data folder. It uses ofxXmlSettings to store everything.

You can also create and delete presets, which are parameter states for your app. Presets are stored with your OF app, inside an "ofxRemoteUIPresets" folder, in your data folder. This makes it easy to check in your presets with your source code. Whenever you like the current config, you can make a preset to keep it around. You can also delete presets.

Expand All @@ -91,21 +92,21 @@ the most basic setup only requires a few calls.
int y;
ofColor color;

void setup(){
void setup(){

RUI_SETUP(); //start server

//Expose x and y vars to the server, providing a valid slider range
RUI_SHARE_PARAM(x, 0, ofGetWidth());
RUI_SHARE_PARAM(x, 0, ofGetWidth());
RUI_SHARE_PARAM(y, 0, ofGetHeight());

//share the color param
RUI_SHARE_COLOR_PARAM(color);

//load values from XML, as they were last saved (if they were)
RUI_LOAD_FROM_XML();
RUI_LOAD_FROM_XML();
}

Then, use any of the client options to view and edit your shared parameters.
Look into the server example to see more features. It is fairly documented.

Expand All @@ -117,14 +118,26 @@ The ofxRemoteUI OSX client allows to bind any midi control / joystick axis / but
2. Rotate/Slide/Press your external device control (joystick, gamepad button, midi slider, knob, etc).
3. Done! You can now control that param from your external controller

You can Save/Load/Edit/Clear your midi bindings from the "MIDI Bindings" window.
You can Save/Load/Edit/Clear your midi bindings from the "MIDI Bindings" window.

MIDI Sliders/Knobs/etc can be bound to floats, ints, enums, bools and colors. For ints, floats and enums, the mapping is obvious; for bools, the lower half of a slider/knob sets the param to false, the upper half to true. For colors, the slider shifts the hue of the color parameter.

Bools can also be bound to "piano keys"; params being set to true for as long as a key is held down.

Bindings are saved when the app is quit. You can also save any particular device binding configuration into a ".midiBind" file. You can also double-click any .midiBind file form the finder to load your previously saved bindings. There is a "bindings" window that allows you to delete particular bindings. You can see what parameters are currently bound by choosing "File->Blink Bound Midi Controls".

## Web Client

The web client allows you to control the parameters of your OpenFrameworks app from a web browser. It does so by connecting your web browser to your OF app through websockets; and it uses [ofxLibwebsockets](https://github.com/robotconscience/ofxLibwebsockets) to handle the connection.

ofxRemoteUIServer creates a minimal webserver that will serve a single-file HTML + JS + CSS gzipped package that your browser will interpret.

Because the use of the web client requires [ofxLibwebsockets](https://github.com/robotconscience/ofxLibwebsockets), the features is optional and can be turned off. ofxRemoteUI by default will try to use and include ofxLibwebsockets. On Mac OS X, if it's not available, it will automatically disable the web client support, but on Windows you will have to define a Pre-processor Macro to avoid compilation errors if you dont want to include ofxLibwebsockets; just define "NO_RUI_WEBSOCKETS" in your Pre-processor Macros to disable the web client.

The web interface is developed in a separate repository [ofxRemoteUI-Web](https://github.com/jackosx/ofxRemoteUI-Web). The whole interface is embedded into the [RUIWebBinary.cpp](https://github.com/armadillu/ofxRemoteUI/blob/master/src/RUIWebBinary.cpp) file, so if you want to modify / tweak the interface, go to the [ofxRemoteUI-Web](https://github.com/jackosx/ofxRemoteUI-Web) repo and create a new build of that file and drop it into ofxRemoteUI (replacing the old one).

The web client has completely been developed by [@jackosx](http://github.com/jackosx).

## Random Notes

**"Restore to initial XML Values"** sets alls params to whatever values they had at server app launch.
Expand Down Expand Up @@ -152,6 +165,9 @@ You can set the built-in UI to be drawn using [ofxFontStash](https://github.com/
RUI_GET_INSTANCE()->drawUiWithFontStash("myFont.ttf");
```

The same thing applies to [ofxFontStash2](https://github.com/armadillu/ofxFontStash2).


## XML FILE FORMAT

Commits before the Git Tag "LastCommitWithXMLv1" use the original file format for XML files. Commits after that tag, will automatically save in the new format (v2), but will also parse files with the old format. You can also save files in the old format by pressing "E" (for export) from the built in client, either globally or on a per-group basis.
Expand All @@ -164,8 +180,10 @@ The new file format is proper XML with a root node, it's more human readable, it

ofxRemoteUI is made available under the [MIT](http://opensource.org/licenses/MIT) license.

The OSX Client uses the [vvMidi](https://github.com/mrRay/vvopensource) frameworks to handle MIDI devices more easily. VVMidi uses a [LGPL](https://github.com/mrRay/vvopensource/blob/master/lgpl-3.0.txt) license.
The OSX Client uses the [vvMidi](https://github.com/mrRay/vvopensource) frameworks to handle MIDI devices more easily. VVMidi uses a [LGPL](https://github.com/mrRay/vvopensource/blob/master/lgpl-3.0.txt) license.

The OSX Client's HID capabilities come mostly from [@jotapeh](https://github.com/jotapeh/MacJoystickHIDTest).

ofxRemoteUI bundles ofxXmlSettings and ofxOSC from [OpenFrameworks](http://openframeworks.cc) to allow non-OF C++ projects to use ofxRemoteUI.

To use the web client, [ofxLibwebsockets](https://github.com/robotconscience/ofxLibwebsockets) is required (MIT license). The web client uses [dat.GUI](https://github.com/dataarts/dat.gui) (Apache 2.0 License).
17 changes: 0 additions & 17 deletions multiplatformClient/Project.xcconfig

This file was deleted.

3 changes: 0 additions & 3 deletions multiplatformClient/addons.make

This file was deleted.

Empty file.
Binary file removed multiplatformClient/bin/data/CPMono_v07 Plain.otf
Binary file not shown.

0 comments on commit 49e10c9

Please sign in to comment.