Code Monkey home page Code Monkey logo

bonzomatic's Introduction

Bonzomatic

Build status Build Status

What's this?

This is a live-coding tool, where you can write a 2D fragment/pixel shader while it is running in the background.

Screenshot

The tool was originally conceived and implemented after the Revision 2014 demoscene party's live coding competition where two contestants improv-code an effect in 25 minutes head-to-head: https://www.youtube.com/watch?v=-5P9rRUXaR0

Keys

  • F2: toggle texture preview
  • F5 or Ctrl-R: recompile shader
  • F11: hide shader overlay
  • Alt-F4: exbobolate your planet

Configuration

Create a config.json with e.g. the following contents: (all fields are optional)

{
  "font":{
    "file":"Input-Regular_(InputMono-Medium).ttf",
    "size":16,
  },
  "rendering":{
    "fftSmoothFactor": 0.9, // 0.0 means there's no smoothing at all, 1.0 means the FFT is completely smoothed flat
  },
  "textures":{ /* the keys below will become the shader variable names */
    "texChecker":"textures/checker.png",
    "texNoise":"textures/noise.png",
    "texTex1":"textures/tex1.jpg",
  },
  "gui":{
    "outputHeight": 200,
    "opacity": 192, // 255 means the editor occludes the effect completely, 0 means the editor is fully transparent
    "texturePreviewWidth": 64,
    "spacesForTabs": false,
    "tabSize": 8,
    "visibleWhitespace": true,
  },
  "midi":{ /* the keys below will become the shader variable names, the values are the CC numbers */
    "fMidiKnob": 16, /* e.g. this would be CC#16, i.e. by default the leftmost knob on a nanoKONTROL 2 */
  },
  /* this section is if you want to enable NDI streaming; otherwise just ignore it */
  "ndi":{
    "enabled": true,
    "connectionString": "<ndi_product something=\"123\"/>", /* metadata sent to the receiver; completely optional */
    "identifier": "hello!", /* additional string to the device name; helps source discovery/identification in the receiver if there are multiple sources on the network */
    "frameRate": 60.0, /* frames per second */
    "progressive": true, /* progressive or interleaved? */
  }
}

Building

As you can see you're gonna need CMAKE for this, but don't worry, a lot of it is automated at this point.

  • On Windows, use at least Visual C++ 2010, or 2013 if your 2010 install doesn't have MFC. For the DX9/DX11 builds, obviously you'll be needing a DirectX SDK, though a lot of it is already in the Windows 8.1 SDK as well.
  • On Linux, you'll need xorg-dev; after that cmake should take care of the rest.
  • On OSX, cmake should take care of everything.

Credits and acknowledgements

Original / parent project authors

Libraries and other included software

These software are available under their respective licenses.

The remainder of this project code was (mostly, I guess) written by Gargaj / Conspiracy and is public domain.

Contact / discussion forum

If you have anything to say, do it at http://www.pouet.net/topic.php?which=9881 or Join the chat at https://gitter.im/Gargaj/Bonzomatic

bonzomatic's People

Contributors

gargaj avatar alkama avatar w23 avatar twinshadow avatar wilhelmy avatar gitter-badger avatar ursg avatar cupe avatar skomp avatar

Watchers

James Cloos avatar Andy Kole avatar

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.