################################# ## FORGE SAMPLE 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://git.klemek.fr/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 # 0/1 if demo UNIFORM_DEMO=iDemo # Seed for shader X UNIFORM_SEED_PREFIX=iSeed # --- uniform vec2 --- # Output resolution UNIFORM_RESOLUTION=iResolution # --- uniform vec3 --- # Midi group X layer Y (beware of group size) # Injected as "iGroupX_Y[Z]" UNIFORM_GROUP_PREFIX=iGroup # --- uniform sampler2D --- # Internal texture X UNIFORM_TEX_PREFIX=iTex # =========== # TEXTURE I/O # =========== # Total number of internal textures TEX_COUNT=1 # === FRAGMENT SHADERS # Fragment shaders will be read from the CLI directory as "fragX.glsl" # Special shader "frag0.glsl" will be prepend to each one # Prefix of fragment shaders to detect FRAG_FILE_PREFIX=frag # Total number of fragment shaders (excluding frag0.glsl) FRAG_COUNT=2 # To which texture will the shader fragX.glsl will render to FRAG_1_OUT=0 # Which fragment shader renders to output window FRAG_OUTPUT=2 # Which fragment shader renders to monitor window FRAG_MONITOR=2 # ========== # I/O Inputs # ========== # Each code either maps to a midi event or a key code # 0 - 999 -> midi event # Keyboard modifiers are encoded like this: # 1000 -> keyboard event # 10000 -> shift # 100000 -> control # 1000000 -> alt # This means 111082 is control+alt+R # 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 # === GROUP INPUT STATES # 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 GROUP_COUNT=1 # Size of group 1 GROUP_1_COUNT=20 # Every code of active layer manipulation of group 1 GROUP_1_1_X=32 GROUP_1_1_Y=48 GROUP_1_1_Z=64 GROUP_1_2_X=0 GROUP_1_2_Y=16 GROUP_1_2_Z= GROUP_1_3_X=33 GROUP_1_3_Y=49 GROUP_1_3_Z=65 GROUP_1_4_X=1 GROUP_1_4_Y=17 GROUP_1_4_Z= GROUP_1_5_X=34 GROUP_1_5_Y=50 GROUP_1_5_Z=66 GROUP_1_6_X=2 GROUP_1_6_Y=18 GROUP_1_6_Z= GROUP_1_7_X=35 GROUP_1_7_Y=51 GROUP_1_7_Z=67 GROUP_1_8_X=3 GROUP_1_8_Y=19 GROUP_1_8_Z= GROUP_1_9_X=36 GROUP_1_9_Y=52 GROUP_1_9_Z=68 GROUP_1_10_X=4 GROUP_1_10_Y=20 GROUP_1_10_Z= GROUP_1_11_X=37 GROUP_1_11_Y=53 GROUP_1_11_Z=69 GROUP_1_12_X=5 GROUP_1_12_Y=21 GROUP_1_12_Z= GROUP_1_13_X=38 GROUP_1_13_Y=54 GROUP_1_13_Z=70 GROUP_1_14_X=6 GROUP_1_14_Y=22 GROUP_1_14_Z= GROUP_1_15_X=39 GROUP_1_15_Y=55 GROUP_1_15_Z=71 GROUP_1_16_X=7 GROUP_1_16_Y=23 GROUP_1_16_Z= GROUP_1_17_X=58 GROUP_1_17_Y=59 GROUP_1_17_Z= GROUP_1_18_X=60 GROUP_1_18_Y=61 GROUP_1_18_Z=62 GROUP_1_19_X=43 GROUP_1_19_Y=44 GROUP_1_19_Z=42 GROUP_1_20_X=41 GROUP_1_20_Y=45 GROUP_1_20_Z=