dennisppaul / umgebung

GNU General Public License v3.0
1 stars 0 forks source link

Umgebung is a light-weight C++ environment for small audio and graphics based applications. it is somewhat inspired by Processing.org and the like.

well, Umgebung is actually imitating the Processing.org quite bluntly ( e.g the main application class is called PApplet ).

this project tries to supply a framework that allow to write applications that more or less look like original Processing.org sketches. note the character of this project is that features will be added as they are needed. it might partlu replicate but not fully emulate the original Processing.org environment.

Umgebung may also function as a statement on what is good and valueable about the Processing.org idiom while at the same time suggesting to disconnecting it from one specific group, application or project … maybe a bit like markdown in that sense.

see DOCUMENTATION for usage information and examples for applications.

Prerequisite

this project relies on the following packages:

macOS

in order to compile and run applications install the following packages with Homebrew:

either manually with:

$ brew install cmake pkgconfig sdl2 ftgl glew ffmpeg rtmidi

or run installer script ./install-macOS.sh ( i.e checking for Homebrew and running the bundler with brew bundle ).

Linux

on linux ( including Raspberry Pi OS ) install the required packages with APT:

$ sudo apt-get update -y
$ sudo apt-get upgrade -y
$ sudo apt-get install git clang mesa-utils # optional -y
$ sudo apt-get install cmake pkg-config libsdl2-dev libftgl-dev libglew-dev ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavdevice-dev librtmidi-dev -y

alternatively, run installer script ./install-linux.sh to install packages with Linuxbrew ( linux version of Homebrew ).

Windows

$ pacman -Syu --noconfirm
$ pacman -S --noconfirm mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-cmake git
$ pacman -S --noconfirm mingw-w64-ucrt-x86_64-glew mingw-w64-ucrt-x86_64-mesa mingw-w64-ucrt-x86_64-ftgl mingw-w64-ucrt-x86_64-SDL2 mingw-w64-ucrt-x86_64-ffmpeg mingw-w64-ucrt-x86_64-rtmidi

the setup is exclusively for the MSYS2 UCRT64 branch ( and not for MSYS2 MINGW64 etcetera ). also it uses ninja as a build system instead of make ( which is the defaul ton linux + macOS ).

Build Applications with Umgebung

example applications can be found in the example folder. to run example umgebung-app do the following:

$ cd ./umgebung/examples/umgebung-app/
$ cmake -B build .
$ cmake --build build
$ ./build/umgebung-app

if changes are made to umgebung-app.cpp ( or any other file in that folder ) it is enough to just run:

$ $ make -C build ; ./build/umgebung-app

Known Issues

Setting up Homebrew on macOS

on some clean homebrew installations on macOS the environment variable $LIBRARY_PATH is not set or at least does not include the homebrew libraries. if so you may add the line export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib to your profile e.g in ~/.zshrc in zsh shell. note, that other shell environments use other profile files and mechanisms e.g bash uses ~/.bashrc. find out which shell you are using by typing echo $0.

if you have NO idea what this all means you might just try the following lines ( as always without the $ ;) ) for zsh:

$ { echo -e "\n# set library path\n"; [ -n "$LIBRARY_PATH" ] && echo "export LIBRARY_PATH=/usr/local/lib:\"\$LIBRARY_PATH\"" || echo "export LIBRARY_PATH=/usr/local/lib"; } >> "$HOME/.zshrc"
$ source "$HOME/.zshrc"

this will set the $LIBRARY_PATH in your zsh profile file.