Coder Social home page Coder Social logo

d3cod3 / ofxvisualprogramming Goto Github PK

View Code? Open in Web Editor NEW
151.0 13.0 18.0 43.29 MB

A visual programming patching environment for OF

License: MIT License

Makefile 0.70% QML 0.27% C++ 90.48% C 2.82% Shell 0.08% Python 0.09% Lua 0.10% GLSL 5.47%
mosaic ofxvisualprogramming openframeworks openframeworks-addon linux macos windows creative-coding live-coding cyber-coding

ofxvisualprogramming's Introduction

ofxVisualProgramming - A visual-programming patching addon for OF

A collection of visual interactive objects to create/develop in a dataflow+live-coding patching environment. Embedded with Lua scripting interpreter, plus live compile of GLSL Shaders from version 150 to 410, and live editing/execute Bash scripts(macOS & linux) capabilities.

Mosaic 0.4.0 Screenshot from project Mosaic, embedding ofxVisualProgramming

Table of Contents

OF COMPATIBLE RELEASE

0.11.2 STABLE (official download from OF site)

Compiled/tested with QTCreator on osx/linux/windows Working on native VisualStudio Windows compiling...

If you want to build ofxVisualProgramming, just download OF0.11.2 for your OS (osx, linux, windows) and follow the setup guide for qtcreator IDE.

REFERENCE

ofxVisualProgramming came directly from the idea behind the ofxComposer addon by patriciogonzalezvivo and James George, and obviously from the various commercial and no-commercial existing visual programming softwares, the open source option Pure Data, the commercial options Max/Msp and TouchDesigner, etc..., to talk of the latest ones, and without forgetting probably the first one from 1968,

GRAIL

GRAIL RM-599-ARPA from the RAND Corporation.

So special thanks to all the precursors of this ideas, and more thanks to the ofxComposer developers for their code, it has been a great reference for start working on this ofxaddon.

DESCRIPTION

This addon is the core code of the project MosaicMosaic logo, maintained isolated in order to obtain a better modularized code structure, encourage contributions, simplify bug fixing and enhance code quality.

This project deals with the idea of integrate/amplify man-machine communication, offering a real-time flowchart based visual interface for high level creative coding. As live-coding scripting languages offer a high level coding environment, ofxVisualProgramming and the Mosaic Project as his parent layer container, aim at a high level visual-programming environment, with embedded multi scripting languages availability (Lua, GLSL, and BASH(macOS & linux) ).

As this project is based on openFrameworks, one of the goals is to offer as more objects as possible, using the pre-defined OF classes for trans-media manipulation (audio, text, image, video, electronics, computer vision), plus all the gigantic ofxaddons ecosystem actually available (machine learning, protocols, web, hardware interface, among a lot more).

While the described characteristics could potentially offer an extremely high complex result (OF and OFXADDONS ecosystem is really huge, and the possibility of multiple scripting languages could lead every unexperienced user to confusion), the idea behind the interface design aim at avoiding the "high complex" situation, embodying a direct and natural drag&drop connect/disconnect interface (mouse/trackpad) on the most basic level of interaction, adding text editing (keyboard) on a intermediate level of interaction (script editing), following most advanced level of interaction for experienced users (external devices communication, automated interaction, etc...)

KEYWORDS

mosaic, ofxVisualProgramming, openframeworks, linux, macOS, windows, creative-coding, live-coding, cyber-coding, physical-computing, visual-computing, scripting, transmedia, programming, visual-programming, cyber-programming

DEPENDENCIES

In order to build ofxVisualProgramming, you'll need this addons:

Some addons are forks of the original, due to some mods, compatibility with OF0.10.1 and the intention of cross-platform compiling (osx,linux,win)

COMPILING

MACOS/LINUX/WINDOWS compiling with qtcreator 4.6.1

INSTALLING

Clone this addon repository into your <your_openframeworks_release_folder>/addons together with all the others addons listed:

cd <your_openframeworks_release_folder>/addons

git clone https://github.com/npisanti/ofxAudioFile
git clone https://github.com/d3cod3/ofxBTrack
git clone https://github.com/d3cod3/ofxChromaKeyShader
git clone https://github.com/kylemcdonald/ofxCv
git clone https://github.com/arturoc/ofxEasing
git clone https://github.com/d3cod3/ofxFFmpegRecorder
git clone https://github.com/kylemcdonald/ofxFft
git clone https://github.com/jeffcrouse/ofxJSON
git clone https://github.com/d3cod3/ofxImGui
git clone https://github.com/d3cod3/ofxInfiniteCanvas
git clone https://github.com/danomatika/ofxLua
git clone https://github.com/danomatika/ofxMidi
git clone https://github.com/d3cod3/ofxMtlMapping2D
git clone https://github.com/d3cod3/ofxNDI
git clone https://github.com/danomatika/ofxPd
git clone https://github.com/d3cod3/ofxPDSP
git clone https://github.com/d3cod3/ofxSyphon
git clone https://github.com/d3cod3/ofxTimeline
git clone https://github.com/d3cod3/ofxWarp
git clone https://github.com/d3cod3/ofxVisualProgramming

USAGE

In ofApp.h include the ofxVisualProgramming addon:

#include "ofMain.h"

#include "ofxVisualProgramming.h"

class ofApp : public ofBaseApp{

public:
    void setup();
    void update();
    void draw();
    // ....
    // ....

    ofxVisualProgramming    *visualProgramming; /**/

};

then in ofApp.cpp:

#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
    ofSetWindowTitle("ofxVisualProgramming Example");

    visualProgramming = new ofxVisualProgramming();
    visualProgramming->setup();
}

//--------------------------------------------------------------
void ofApp::update(){
    visualProgramming->update();
}

//--------------------------------------------------------------
void ofApp::draw(){
    ofBackground(20);
    visualProgramming->draw();
}

CONTRIBUTING

Contributing to the project adding new objects is relatively easy, as ofxVisualProgramming is at the core of Mosaic software, i've implemented a plugin mechanism based on Pugg, in order to facilitate the extension and the creation of new objects/nodes to add at the ofxVisualProgramming/Mosaic default objects/nodes library. (see objects/nodes list below)

You can find the repo of the plugin template here: ofxMosaicPlugin, with some generic objects templates and more detailed info in the readme.

OBJECTS LIST

Audio Analysis Ready
audio analyzer X
bpm extractor X
centroid extractor X
dissonance extractor X
fft extractor X
hfc extractor X
hpcp extractor X
inharmonicity extractor X
mel bands extractor X
mfcc extractor X
onset extractor X
pitch extractor X
power extractor X
rms extractor X
rolloff extractor X
tristimulus extractor X
Communications Ready
arduino serial X
key pressed X
key released X
midi key X
midi knob X
midi pad X
midi receiver X
midi sender X
osc receiver X
osc sender X
Computer Vision Ready
background subtraction X
chroma key X
color tracking X
contour tracking X
haar tracking X
motion detection X
optical flow X
Data Ready
bang multiplexer X
bang to float X
color palette X
data to texture X
file to data X
float multiplexer X
floats to vector X
texture to data X
vector at X
vector concat X
vector extract X
vector gate X
vector operator X
GUI Ready
2D pad X
bang X
comment X
data viewer X
message X
player controls X
signal viewer X
slider X
sonogram X
timeline X
trigger X
value plotter X
video viewer X
vu meter X
Logic Ready
boolean operator X
conditional operator X
counter X
delay bang X
delay float X
gate X
inverter X
loadbang X
spigot X
timed semaphore X
Math Ready
1D noise X
clamp X
constant X
cosine generator X
map X
metronome X
operator X
simple random X
sine generator X
smooth X
Scripting Ready
bash script X
glsl shader X
lua script X
python script X
scheme script
Sound Ready
ADSR envelope X
AHR envelope X
amplifier X
audio exporter X
bit cruncher X
bit noise X
comb filter X
compressor X
crossfader X
data oscillator X
decimator X
delay X
dimension chorus X
high pass X
kick X
lfo X
low pass X
mixer X
note to frequency X
oscillator X
panner X
pd patch X
quad panner X
resonant filter X
reverb X
sample and hold
saturator
sequencer X
sidechain compressor X
signal gate X
signal operator X
signal trigger X
soundfile player X
Texture Ready
image exporter X
image loader X
kinect grabber X
pixels to texture X
texture crop X
texture information X
texture mixer X
texture to pixels X
texture transform X
to grayscale texture X
syphon sender X
syphon receiver X
video exporter X
video feedback X
video gate X
video grabber X
video player X
video receiver X
video sender X
video streaming X
video timedelay X
Windowing Ready
live patching X
output window X
projection mapping X

LICENSE

license

All contributions are made under the MIT License. See LICENSE.

CREDITS

ofxAudioFile, ofxPDSP original addons by Nicola Pisanti

ofxBTrack original addon by Nao Tokui

ofxChromaKeyShader original addon by Eric Koo

ofxCv, ofxFft original addons by Kyle McDonald

ofxEasing original addon by Arturo Castro

ofxFFmpegRecorder original addon by Furkan Üzümcü

ofxJSON original addon by Jeff Crouse

ofxImGui original addon by Jason Van Cleave

ofxInfiniteCanvas original addon by Roy Macdonald

ofxLua, ofxMidi, ofxPd original addons by Dan Wilcox

ofxMtlMapping2D original addon by morethanlogic

ofxNDI original addon by Thomas Geissl

ofxSyphon original addon by Anthony Stellato

ofxTimeline original addon by James George and YCAM Interlab

ofxWarp original addon by Elie Zananiri

ofxvisualprogramming's People

Contributors

d3cod3 avatar daandelange avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ofxvisualprogramming's Issues

Failure to compile examples

OFx: of_v0.11.2_linux64gcc6_release
Ubuntu: 20.04

Making either example yields:
myhomedir/of/addons/ofxVisualProgramming/example_ofxVisualProgramming/src/main.cpp:36:10: fatal error: ofxTimeMeasurements.h: No such file or directory
36 | #include "ofxTimeMeasurements.h"
| ^~~~~~~~~~~~~~~~~~~~~~~

The file does not exist in the OFx directory.

How best should I correct the problem?
Thanks!

not an issue, not much related but...

What are you using or what can you recommends me to use to very simple node wire patching variables/to/targets?
Something like 4 gui sliders that I what to choice as control/input for another 4 sliders.
The tiny object I can use to this...
1---...........1
2.....\ ....... 2
3.......---- 3
4............. 4
Not searched too much yet, so I am sorry If it's a lazy question...

Segmentation fault on launch

OS: Arch Linux
OF version: 0.10
GCC version: 8.2.1
After following all the compilation steps the visual programming sketch display "segmentation fault" on launch

Feature request: pointcloud kinectgrabber

Hi!
I was wondering if it would be to extend the functionality of the kinectgrabber. In the default openframeworks examples there is an example of kinect, where you can see and navigate in a point cloud, I think this is visually interesting and would like to have this inside of mosaic, maybe with the possibility of modifying the axis of the cam, zoom tilt etc. Maybe this is already possible using the objects in mosaic, but I haven't figured it out.
I have some experience in programming but am very new to mosaic, I thought maybe this could be something relatively easy to implement?
If you could give me some pointers on how to implement this I surely will try ;)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.