README.md 4.59 KB
Newer Older
Gargaj's avatar
Gargaj committed
1
2
# Bonzomatic

Gargaj's avatar
Gargaj committed
3
[![Build status](https://ci.appveyor.com/api/projects/status/ix6fwi6nym1tu4e7?svg=true)](https://ci.appveyor.com/project/Gargaj/bonzomatic)
Gargaj's avatar
Gargaj committed
4
[![Build Status](https://travis-ci.org/Gargaj/Bonzomatic.svg)](https://travis-ci.org/Gargaj/Bonzomatic)
Gargaj's avatar
Gargaj committed
5

Gargaj's avatar
Gargaj committed
6
7
8
## 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.

Gargaj's avatar
Gargaj committed
9
![Screenshot](http://i.imgur.com/8K8IztLl.jpg)
Gargaj's avatar
Gargaj committed
10

Gargaj's avatar
Gargaj committed
11
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
Gargaj's avatar
Gargaj committed
12
13

## Keys
Gargaj's avatar
Gargaj committed
14
- F2: toggle texture preview
Gargaj's avatar
Gargaj committed
15
- F5 or Ctrl-R: recompile shader
16
- F11 or Ctrl/Cmd-f: hide shader overlay
Gargaj's avatar
Gargaj committed
17
18
- Alt-F4: exbobolate your planet

Gargaj's avatar
Gargaj committed
19
20
21
22
## Configuration
Create a ```config.json``` with e.g. the following contents: (all fields are optional)
``` javascript
{
23
24
25
26
27
  "window":{ /* default window size / state, if there's a setup dialog, it will override it */
    "width":1920,
    "height":1080,
    "fullscreen":true,
  },
Gargaj's avatar
Gargaj committed
28
29
30
31
  "font":{
    "file":"Input-Regular_(InputMono-Medium).ttf",
    "size":16,
  },
Gargaj's avatar
Gargaj committed
32
33
34
  "rendering":{
    "fftSmoothFactor": 0.9, // 0.0 means there's no smoothing at all, 1.0 means the FFT is completely smoothed flat
  },
Gargaj's avatar
Gargaj committed
35
36
37
38
  "textures":{ /* the keys below will become the shader variable names */
    "texChecker":"textures/checker.png",
    "texNoise":"textures/noise.png",
    "texTex1":"textures/tex1.jpg",
Gargaj's avatar
opos    
Gargaj committed
39
  },
Gargaj's avatar
Gargaj committed
40
41
  "gui":{
    "outputHeight": 200,
Gargaj's avatar
Gargaj committed
42
    "opacity": 192, // 255 means the editor occludes the effect completely, 0 means the editor is fully transparent
Gargaj's avatar
option    
Gargaj committed
43
    "texturePreviewWidth": 64,
44
45
46
    "spacesForTabs": false,
    "tabSize": 8,
    "visibleWhitespace": true,
Gargaj's avatar
Gargaj committed
47
48
49
  },
  "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 */
Gargaj's avatar
Gargaj committed
50
51
52
53
54
55
56
57
  },
  /* 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? */
58
59
  },
  "postExitCmd":"copy_to_dropbox.bat" /* this command gets ran when you quit Bonzomatic, and the shader filename gets passed to it as first parameter. Use this to take regular backups. */
Gargaj's avatar
Gargaj committed
60
61
62
}
```

Gargaj's avatar
Gargaj committed
63
## Building
Gargaj's avatar
Gargaj committed
64
65
As you can see you're gonna need [CMAKE](https://cmake.org/) 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.
Gargaj's avatar
Gargaj committed
66
67
* On Linux, you'll need ```xorg-dev```; after that ```cmake``` should take care of the rest.
* On OSX, ```cmake``` should take care of everything.
Gargaj's avatar
Gargaj committed
68

Gargaj's avatar
Gargaj committed
69
70
71
72
## Organizing a competition
If you want to organize a competition using Bonzomatic at your party, here's a handy-dandy guide on how to get started:
https://github.com/Gargaj/Bonzomatic/wiki/How-to-set-up-a-Live-Coding-compo

Gargaj's avatar
Gargaj committed
73
74
75
## Credits and acknowledgements
### Original / parent project authors
- "ScintillaGL" project by Mykhailo Parfeniuk (https://github.com/sopyer/ScintillaGL)
Gargaj's avatar
Gargaj committed
76
- Riverwash LiveCoding Tool by Michał Staniszewski and Michal Szymczyk (http://www.plastic-demo.org/)
Gargaj's avatar
Gargaj committed
77
78
79

### Libraries and other included software
- Scintilla editing component by the Scintilla Dev Team (http://www.scintilla.org/)
Gargaj's avatar
Gargaj committed
80
- OpenGL Extension Wrangler Library by Nigel Stewart (http://glew.sourceforge.net/)
Gargaj's avatar
Gargaj committed
81
82
- BASS.DLL by Ian Luck (http://www.un4seen.com/)
- STB Image and Truetype libraries by Sean Barrett (http://nothings.org/)
Gargaj's avatar
Gargaj committed
83
- GLFW by whoever made GLFW (http://www.glfw.org/faq.html)
Gargaj's avatar
Gargaj committed
84
- JSON++ by Hong Jiang (https://github.com/hjiang/jsonxx)
85
86
- NDI(tm) SDK by NewTek(tm) (http://www.newtek.com/ndi.html)

Gargaj's avatar
Gargaj committed
87
These software are available under their respective licenses.
Gargaj's avatar
Gargaj committed
88

89
The remainder of this project code was (mostly, I guess) written by Gargaj / Conspiracy and is public domain.
Gargaj's avatar
Gargaj committed
90
91

## Contact / discussion forum
Gargaj's avatar
Gargaj committed
92
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](https://badges.gitter.im/Gargaj/Bonzomatic.svg)](https://gitter.im/Gargaj/Bonzomatic?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)