################################## ## FORGE DEFAULT PROJECT CONFIG ## ################################## # Your reading a FORGE configuration file, don't panic # Everything here is designed to link elements between them # (shaders, video devices, textures, midi inputs, etc.) # Every number based constant will be "one-based" (1,2,3,etc.) # To read more, go to # https://github.com/klemek/forge-steel # ================ # FRAGMENT SHADERS # ================ # === UNIFORMS === # GLSL uniform names or prefixes # Prefixed uniforms are "iVariableX" with a number # --- uniform float --- # Elapsed time UNIFORM_TIME=iTime # Current tempo UNIFORM_TEMPO=iTempo # Current total beats UNIFORM_BEATS=iBeats # --- uniform int --- # Output frame per second UNIFORM_FPS=iFPS # Input X frame per second UNIFORM_IN_FPS_PREFIX=iInputFPS # 0/1 if demo UNIFORM_DEMO=iDemo # 0/1 if auto random UNIFORM_AUTORAND=iAutoRand # auto random cycle length UNIFORM_AUTORANDCYCLE=iAutoRandCycle # Current page UNIFORM_PAGE=iPage # Current selected shader UNIFORM_SELECTED=iSelected # Seed for shader X UNIFORM_SEED_PREFIX=iSeed # State for shader X UNIFORM_STATE_PREFIX=iState # Midi group X active layer number UNIFORM_ACTIVE_PREFIX=iActive # Input X format raw integer value UNIFORM_IN_FORMAT_PREFIX=iInputFormat # Input X should use swap texture or not (0/1) UNIFORM_IN_SWAP_PREFIX=iInputSwap # --- uniform vec2 --- # Output resolution UNIFORM_RESOLUTION=iResolution # Internal textures resolution UNIFORM_TEX_RESOLUTION=iTexResolution # Input X resolution UNIFORM_IN_RESOLUTION_PREFIX=iInputResolution # --- uniform vec3 --- # Midi group X layer Y (beware of group size) # Injected as "iMidiX_Y[Z]" UNIFORM_MIDI_PREFIX=iMidi # --- uniform sampler2D --- # Internal texture X UNIFORM_TEX_PREFIX=iTex # === SUBROUTINES === # GLSL subroutines prefixes # You can then use them as: # subroutine() () {} # (see: https://wikis.khronos.org/opengl/Shader_Subroutine) # Numbers go from 1 to SELECT_PAGE_COUNT * SELECT_ITEM_COUNT # Each fragment shader is injected its current state subroutine # Total subroutine variants SUB_TYPE_COUNT=2 # Each subroutine variant prefix SUB_1_PREFIX=src_ SUB_2_PREFIX=fx_ # =========== # TEXTURE I/O # =========== # Total number of internal textures TEX_COUNT=12 # === VIDEO DEVICES # Video devices will be read from CLI arguments # and used in the same order inside FORGE # Number of video devices IN_COUNT=2 # To which texture will be bound video device X IN_1_OUT=1 IN_2_OUT=2 # To which texture will be bound swap buffers (for double-buffering) IN_1_SWAP_OUT=3 IN_2_SWAP_OUT=4 # === FRAGMENT SHADERS # Fragment shaders will be read from the CLI directory as "fragX.glsl" # Prefix of fragment shaders to detect FRAG_FILE_PREFIX=frag # Total number of fragment shaders (excluding frag0.glsl) FRAG_COUNT=10 # To which texture will the shader fragX.glsl will render to FRAG_1_OUT=5 FRAG_2_OUT=6 FRAG_3_OUT=7 FRAG_4_OUT=8 FRAG_5_OUT=9 FRAG_6_OUT=10 FRAG_7_OUT=11 FRAG_8_OUT=0 # Which fragment shader renders to output window FRAG_OUTPUT=9 # Which fragment shader renders to monitor window FRAG_MONITOR=10 # ======== # MIDI I/O # ======== # The recognized ALSA name of the midi device MIDI_HW=hw:CARD=nanoKONTROL2 # === TYPES OF EVENTS # FORGE needs to differentiate between fader and buttons # In the next configurations, when an event is not configured, # it will be skipped # Total number of faders FADER_COUNT=16 # Midi codes of faders FADER_1=0 FADER_2=1 FADER_3=2 FADER_4=3 FADER_5=4 FADER_6=5 FADER_7=6 FADER_8=7 FADER_9=16 FADER_10=17 FADER_11=18 FADER_12=19 FADER_13=20 FADER_14=21 FADER_15=22 FADER_16=23 # Midi code for tap tempo TAP_TEMPO=46 # === FRAGMENT SUBROUTINE SELECT # You can manipulate which subroutine is sent to which fragment shader # Midi codes to select fragment X SELECT_FRAG_3=32 SELECT_FRAG_4=64 SELECT_FRAG_5=36 SELECT_FRAG_6=68 SELECT_FRAG_8=52 # Total number of pages (can be 1) SELECT_PAGE_COUNT=3 # Midi codes to select page X SELECT_PAGE_1=60 SELECT_PAGE_2=61 SELECT_PAGE_3=62 # Total number of items per page SELECT_ITEM_COUNT=5 # Midi codes to select item Y on page X SELECT_ITEM_1=43 SELECT_ITEM_2=44 SELECT_ITEM_3=42 SELECT_ITEM_4=41 SELECT_ITEM_5=45 # === MIDI INPUT STATES # Midi inputs will control FORGE's state as follows # X groups of Y layers sized Z # You can manipulate only 1 layer at a time # Every layer of every groups will be send as uniforms # Each active layer will be sent back to the device # with the same codes for nice display # Total number of groups MIDI_COUNT=3 # Total number of layers of group 1 MIDI_1_ACTIVE_COUNT=2 # Midi codes to change layer of group 1 MIDI_1_ACTIVE_1=32 MIDI_1_ACTIVE_2=64 # Size of group 1 MIDI_1_COUNT=6 # Every code of active layer manipulation of group 1 MIDI_1_1_X=33 MIDI_1_1_Y=49 MIDI_1_1_Z=65 MIDI_1_2_X=1 MIDI_1_2_Y=17 MIDI_1_2_Z= MIDI_1_3_X=34 MIDI_1_3_Y=50 MIDI_1_3_Z=66 MIDI_1_4_X=2 MIDI_1_4_Y=18 MIDI_1_4_Z= MIDI_1_5_X=35 MIDI_1_5_Y=51 MIDI_1_5_Z=67 MIDI_1_6_X=3 MIDI_1_6_Y=19 MIDI_1_6_Z= # Same for group 2 MIDI_2_ACTIVE_COUNT=3 MIDI_2_ACTIVE_1=36 MIDI_2_ACTIVE_2=68 MIDI_2_ACTIVE_3=52 MIDI_2_COUNT=7 MIDI_2_1_X=37 MIDI_2_1_Y=53 MIDI_2_1_Z=69 MIDI_2_2_X=5 MIDI_2_2_Y=21 MIDI_2_2_Z= MIDI_2_3_X=38 MIDI_2_3_Y=54 MIDI_2_3_Z=70 MIDI_2_4_X=6 MIDI_2_4_Y=22 MIDI_2_4_Z= MIDI_2_5_X=39 MIDI_2_5_Y=55 MIDI_2_5_Z=71 MIDI_2_6_X=7 MIDI_2_6_Y=23 MIDI_2_6_Z= MIDI_2_7_X=4 MIDI_2_7_Y=20 MIDI_2_7_Z=59 # Same for group 3 MIDI_3_COUNT=2 MIDI_3_1_X=48 MIDI_3_1_Y=58 MIDI_3_1_Z= MIDI_3_2_X=0 MIDI_3_2_Y=16 MIDI_3_2_Z= # ===== # OTHER # ===== # === SAVE FILES # When loading/saving from last run or using save states SAVE_FILE_PREFIX=forge_default_save # === HOTKEYS # You can change the default keycodes used on runtime # Modifiers are encoded like this: # 1000 -> shift # 10000 -> control # 100000 -> alt # This means 110082 is control+alt+R # R on (qwerty) HOTKEY_RANDOMIZE=82 # SHIFT+R (qwerty) HOTKEY_RESET=1082 # D (qwerty) HOTKEY_DEMO=68 # A (qwerty) HOTKEY_AUTORAND=65 # Left arrow HOTKEY_AUTORAND_DOWN=263 # Right arrow HOTKEY_AUTORAND_UP=262 # Down arrow HOTKEY_TEMPO_DOWN=264 # Up arrow HOTKEY_TEMPO_UP=265 # Number of load states keys HOTKEY_LOAD_COUNT=10 # 1 to 9 then 0 keys HOTKEY_LOAD_1=49 HOTKEY_LOAD_2=50 HOTKEY_LOAD_3=51 HOTKEY_LOAD_4=52 HOTKEY_LOAD_5=53 HOTKEY_LOAD_6=54 HOTKEY_LOAD_7=55 HOTKEY_LOAD_8=56 HOTKEY_LOAD_9=57 HOTKEY_LOAD_10=48 # Number of save states keys HOTKEY_SAVE_COUNT=10 # 1 to 9 then 0 keys with shift HOTKEY_SAVE_1=1049 HOTKEY_SAVE_2=1050 HOTKEY_SAVE_3=1051 HOTKEY_SAVE_4=1052 HOTKEY_SAVE_5=1053 HOTKEY_SAVE_6=1054 HOTKEY_SAVE_7=1055 HOTKEY_SAVE_8=1056 HOTKEY_SAVE_9=1057 HOTKEY_SAVE_10=1048