From 42ab16309c281e15af4f2f2507a949f0855a863f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petri=20J=C3=A4rvisalo?= Date: Sat, 25 May 2024 13:50:45 +0300 Subject: [PATCH] fix --- 4kdemo.compofiller | 2 +- 4klang.h | 6 +- 4klang.inc | 227 ++++---- 4klang_old.h | 22 + 4klang_old.inc | 770 ++++++++++++++++++++++++++++ base.config | 8 +- minified.config | 7 +- music/4k_ver2.xrns | Bin 0 -> 13293 bytes music/{sounds.4kp => sounds_v1.4kp} | Bin music/sounds_v2.4kp | Bin 0 -> 18440 bytes shader.glsl | 4 +- shader_minified.h | 162 +++--- 12 files changed, 997 insertions(+), 211 deletions(-) create mode 100644 4klang_old.h create mode 100644 4klang_old.inc create mode 100644 music/4k_ver2.xrns rename music/{sounds.4kp => sounds_v1.4kp} (100%) create mode 100644 music/sounds_v2.4kp diff --git a/4kdemo.compofiller b/4kdemo.compofiller index a1db361..baa5bd0 100644 --- a/4kdemo.compofiller +++ b/4kdemo.compofiller @@ -6,7 +6,7 @@ PROJECT_INFO_FILE=prod.nfo PROJECT_SCREENSHOT= # Currently active config file name -ACTIVE_CONFIG=base.config +ACTIVE_CONFIG=minified.config # ------- GUI options/preferences -------- # Automatically rebuild DLLs when things have changed? diff --git a/4klang.h b/4klang.h index 668b979..4c42b23 100644 --- a/4klang.h +++ b/4klang.h @@ -1,12 +1,12 @@ // some useful song defines for 4klang #define SAMPLE_RATE 44100 -#define BPM 133.000000 +#define BPM 145.000000 #define MAX_INSTRUMENTS 5 -#define MAX_PATTERNS 52 +#define MAX_PATTERNS 72 #define PATTERN_SIZE_SHIFT 4 #define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT) #define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE) -#define SAMPLES_PER_TICK 4973 +#define SAMPLES_PER_TICK 4562 #define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS) #define POLYPHONY 1 #define INTEGER_16BIT diff --git a/4klang.inc b/4klang.inc index 955645b..c5c7337 100644 --- a/4klang.inc +++ b/4klang.inc @@ -7,22 +7,21 @@ %define MAX_INSTRUMENTS 5 %define MAX_VOICES 1 %define HLD 1 -%define BPM 133.000000 -%define MAX_PATTERNS 52 +%define BPM 145.000000 +%define MAX_PATTERNS 72 %define PATTERN_SIZE_SHIFT 4 %define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT) %define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE) -%define SAMPLES_PER_TICK 4973 -%define DEF_LFO_NORMALIZE 0.0000502645 +%define SAMPLES_PER_TICK 4562 +%define DEF_LFO_NORMALIZE 0.0000547997 %define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS) %define GO4K_USE_16BIT_OUTPUT ;%define GO4K_USE_GROOVE_PATTERN ;%define GO4K_USE_ENVELOPE_RECORDINGS -%define GO4K_USE_NOTE_RECORDINGS +;%define GO4K_USE_NOTE_RECORDINGS %define GO4K_CLIP_OUTPUT %define GO4K_USE_DST %define GO4K_USE_DLL -%define GO4K_USE_PAN %define GO4K_USE_GLOBAL_DLL %define GO4K_USE_ENV_CHECK %define GO4K_USE_ENV_MOD_GM @@ -452,51 +451,55 @@ section .data align=1 %endif go4k_patterns db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - db 38, HLD, 0, 0, 38, HLD, HLD, HLD, 0, 0, 38, 0, 48, 50, HLD, HLD, - db 0, 0, 50, 0, 38, HLD, HLD, HLD, 50, 0, 50, 0, 38, HLD, HLD, HLD, - db 0, 0, 38, 0, 38, HLD, 38, 38, 48, HLD, 50, HLD, 53, HLD, 52, HLD, - db 38, 0, 38, 0, 38, HLD, HLD, HLD, HLD, HLD, 0, 0, 38, HLD, 50, HLD, - db 0, 0, 50, 0, 38, 0, 38, 38, 46, HLD, 48, HLD, 57, HLD, 48, HLD, - db 46, HLD, 0, 0, 46, HLD, HLD, HLD, 0, 0, 46, 0, 47, HLD, 48, HLD, - db 0, 0, 48, 0, 36, HLD, HLD, HLD, 36, 0, 48, 0, 48, HLD, HLD, HLD, - db 38, HLD, 0, 0, 38, HLD, HLD, HLD, 0, 0, 38, 0, 48, HLD, 50, HLD, - db HLD, 0, 50, 0, 38, HLD, HLD, HLD, 38, HLD, 50, HLD, 48, HLD, 36, HLD, - db 43, HLD, 0, 0, 43, HLD, HLD, HLD, 55, HLD, 43, HLD, HLD, HLD, 55, HLD, - db 41, 0, 41, 0, 41, HLD, HLD, HLD, 53, HLD, 41, HLD, 41, HLD, HLD, HLD, - db 40, HLD, 0, 0, 40, HLD, HLD, HLD, 52, HLD, 40, HLD, HLD, HLD, 52, HLD, - db 45, 0, 45, 0, 45, HLD, HLD, HLD, 57, HLD, 45, HLD, 45, HLD, HLD, HLD, - db 50, HLD, 0, 0, 50, HLD, HLD, HLD, 62, HLD, 50, HLD, HLD, HLD, 62, HLD, - db 43, 0, 43, 0, 43, HLD, HLD, HLD, 55, HLD, 43, HLD, 43, HLD, HLD, HLD, - db 48, HLD, 0, 0, 48, HLD, HLD, HLD, 60, HLD, 48, HLD, HLD, HLD, 60, HLD, - db 48, 0, 48, 0, 48, HLD, HLD, HLD, 60, HLD, 48, HLD, 48, HLD, HLD, HLD, - db 48, HLD, HLD, 48, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, - db HLD, HLD, 48, HLD, HLD, HLD, 48, 48, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, - db 48, HLD, HLD, 48, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, - db HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, - db 48, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db 48, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 48, HLD, - db 48, HLD, HLD, HLD, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, + db 39, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 46, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 44, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 39, HLD, 0, 0, 39, HLD, HLD, HLD, HLD, HLD, HLD, 0, 39, 0, 39, HLD, + db 0, 0, 39, 0, 39, HLD, HLD, HLD, 39, 0, 39, 0, 50, HLD, 51, HLD, + db 48, HLD, 0, 0, 48, HLD, HLD, HLD, HLD, HLD, 0, 0, 48, 0, 48, HLD, + db 0, 0, 46, 0, 46, HLD, HLD, HLD, HLD, 0, 46, 0, 58, 0, 46, HLD, + db 44, HLD, 0, 0, 44, HLD, HLD, HLD, HLD, HLD, 0, 0, 44, 0, 44, HLD, + db 0, 0, 44, 0, 44, HLD, HLD, HLD, 0, 0, 44, 0, 44, HLD, HLD, HLD, + db 0, 0, 46, 0, 46, HLD, HLD, HLD, 0, 0, 46, 0, 46, HLD, HLD, HLD, + db 48, HLD, 0, 0, 48, HLD, HLD, HLD, HLD, HLD, 0, 0, 48, 0, 46, HLD, + db 0, 0, 43, 0, 43, HLD, HLD, HLD, 0, 0, 43, 0, 43, HLD, HLD, HLD, + db 51, HLD, 0, 0, 51, HLD, HLD, HLD, HLD, HLD, 0, 0, 51, 0, 51, HLD, + db 0, 0, 51, 0, 51, HLD, HLD, HLD, 0, 0, 51, 0, 51, HLD, HLD, HLD, + db 39, HLD, 0, 0, 39, HLD, HLD, HLD, HLD, HLD, 0, 0, 39, 0, 39, HLD, + db 0, 0, 39, 0, 39, HLD, HLD, HLD, 0, 0, 39, 0, 39, HLD, HLD, HLD, + db 63, HLD, 70, HLD, 79, HLD, 63, HLD, 70, HLD, 77, HLD, 63, HLD, 70, HLD, + db 80, HLD, 63, HLD, 70, HLD, 79, HLD, 63, HLD, 70, HLD, 77, HLD, 79, HLD, + db 80, HLD, 63, HLD, 70, HLD, 79, HLD, 63, HLD, 70, HLD, 79, HLD, 77, HLD, + db 80, HLD, 63, HLD, 70, HLD, 75, HLD, 63, HLD, 70, HLD, 75, HLD, 79, HLD, + db 82, HLD, 62, HLD, 70, HLD, 77, HLD, 62, HLD, 70, HLD, 77, HLD, 82, HLD, + db 79, HLD, 63, HLD, 70, HLD, 75, HLD, 63, HLD, 70, HLD, 75, HLD, 79, HLD, + db 74, HLD, 62, HLD, 70, HLD, 74, HLD, 62, HLD, 70, HLD, 74, HLD, 79, HLD, + db 75, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 55, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 55, HLD, 55, HLD, HLD, HLD, 55, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 60, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD, HLD, HLD, 60, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db 74, HLD, HLD, HLD, HLD, HLD, 69, HLD, HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, - db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 74, HLD, HLD, HLD, 76, HLD, HLD, HLD, - db 77, HLD, HLD, HLD, 76, HLD, 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, + db 79, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 70, HLD, HLD, HLD, + db 80, HLD, HLD, HLD, 79, HLD, 77, HLD, HLD, HLD, 79, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 70, HLD, HLD, HLD, + db 80, HLD, 79, HLD, HLD, HLD, 77, HLD, HLD, HLD, 77, HLD, 75, HLD, HLD, HLD, db 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, - db 70, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, + db 80, HLD, 79, HLD, HLD, HLD, 77, HLD, HLD, HLD, 79, 77, 75, HLD, HLD, HLD, db 77, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db 79, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db 81, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db 67, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db 69, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db 73, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, - db 71, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 75, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 77, HLD, 79, HLD, + db 77, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 79, HLD, 80, HLD, + db 79, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 77, HLD, 75, HLD, 74, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 70, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 74, HLD, 75, HLD, 77, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 79, HLD, 80, HLD, + db 82, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 79, HLD, 77, HLD, 77, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 79, HLD, 77, HLD, go4k_patterns_end %ifdef USE_SECTIONS section .g4kmuc2 data align=1 @@ -504,11 +507,11 @@ section .g4kmuc2 data align=1 section .data %endif go4k_pattern_lists -Instrument0List db 1, 2, 1, 3, 1, 2, 1, 3, 1, 2, 4, 5, 1, 3, 1, 2, 6, 7, 8, 9, 6, 7, 1, 2, 10, 11, 12, 13, 14, 15, 16, 17, 10, 11, 12, 13, 14, 15, 16, 17, 1, 2, 1, 3, 1, 2, 1, 3, 1, 2, 1, 3, -Instrument2List db 18, 19, 18, 19, 18, 19, 18, 19, 20, 21, 20, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 22, 21, 23, 19, 24, 21, 18, 19, 24, 21, 18, 19, -Instrument3List db 25, 26, 27, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, -Instrument4List db 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 29, 30, 33, 32, 29, 30, 31, 32, 29, 30, 33, 34, 35, 36, 33, 37, 38, 39, 38, 37, 35, 36, 33, 37, 38, 39, 40, 39, 38, 41, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, -Instrument5List db 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 29, 30, 33, 32, 29, 30, 31, 32, 29, 30, 33, 34, 42, 43, 35, 44, 36, 33, 36, 36, 42, 43, 35, 44, 36, 45, 43, 42, 38, 41, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, +Instrument0List db 1, 2, 1, 2, 3, 4, 5, 2, 6, 7, 6, 7, 8, 9, 10, 11, 6, 7, 6, 7, 8, 9, 10, 11, 10, 12, 13, 14, 10, 12, 15, 16, 10, 12, 13, 14, 10, 12, 15, 16, 17, 18, 17, 18, 6, 7, 6, 7, 8, 9, 10, 11, 6, 7, 6, 7, 8, 9, 10, 11, 17, 18, 17, 18, 17, 18, 17, 18, 1, 0, 0, 0, +Instrument1List db 19, 20, 19, 21, 19, 21, 19, 20, 19, 20, 19, 21, 19, 21, 19, 20, 19, 20, 19, 21, 19, 21, 19, 20, 22, 23, 24, 25, 22, 23, 24, 24, 22, 23, 24, 25, 22, 23, 24, 24, 19, 20, 19, 21, 19, 20, 19, 21, 19, 21, 19, 20, 19, 20, 19, 21, 19, 21, 19, 20, 19, 20, 19, 21, 19, 20, 19, 21, 26, 0, 0, 0, +Instrument2List db 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 2, 2, 2, 29, +Instrument3List db 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 2, 2, 2, 29, +Instrument5List db 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 34, 35, 26, 36, 37, 38, 32, 33, 34, 39, 26, 40, 26, 38, 41, 42, 43, 44, 45, 46, 47, 38, 48, 46, 43, 44, 45, 49, 26, 38, 0, 0, 0, 0, 32, 33, 34, 35, 26, 36, 37, 38, 32, 33, 34, 35, 26, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, go4k_pattern_lists_end %ifdef USE_SECTIONS section .g4kmuc3 data align=1 @@ -538,6 +541,27 @@ GO4K_BEGIN_CMDDEF(Instrument0) db GO4K_PAN_ID db GO4K_OUT_ID GO4K_END_CMDDEF +GO4K_BEGIN_CMDDEF(Instrument1) + db GO4K_ENV_ID + db GO4K_FST_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_FST_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_FOP_ID + db GO4K_FOP_ID + db GO4K_VCF_ID + db GO4K_VCF_ID + db GO4K_DST_ID + db GO4K_PAN_ID + db GO4K_DLL_ID + db GO4K_FOP_ID + db GO4K_DLL_ID + db GO4K_FOP_ID + db GO4K_OUT_ID +GO4K_END_CMDDEF GO4K_BEGIN_CMDDEF(Instrument2) db GO4K_ENV_ID db GO4K_FST_ID @@ -568,27 +592,6 @@ GO4K_BEGIN_CMDDEF(Instrument3) db GO4K_PAN_ID db GO4K_OUT_ID GO4K_END_CMDDEF -GO4K_BEGIN_CMDDEF(Instrument4) - db GO4K_ENV_ID - db GO4K_FST_ID - db GO4K_VCO_ID - db GO4K_VCO_ID - db GO4K_VCO_ID - db GO4K_FST_ID - db GO4K_FST_ID - db GO4K_FOP_ID - db GO4K_FOP_ID - db GO4K_FOP_ID - db GO4K_VCF_ID - db GO4K_VCF_ID - db GO4K_DST_ID - db GO4K_PAN_ID - db GO4K_DLL_ID - db GO4K_FOP_ID - db GO4K_DLL_ID - db GO4K_FOP_ID - db GO4K_OUT_ID -GO4K_END_CMDDEF GO4K_BEGIN_CMDDEF(Instrument5) db GO4K_ENV_ID db GO4K_VCO_ID @@ -631,7 +634,7 @@ section .data %endif go4k_synth_parameter_values GO4K_BEGIN_PARAMDEF(Instrument0) - GO4K_ENV ATTAC(9),DECAY(85),SUSTAIN(113),RELEASE(38),GAIN(119) + GO4K_ENV ATTAC(9),DECAY(85),SUSTAIN(113),RELEASE(38),GAIN(106) GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW|LFO) GO4K_FST AMOUNT(52),DEST(11*MAX_UNIT_SLOTS+2+FST_SET) GO4K_FOP OP(FOP_POP) @@ -649,41 +652,11 @@ GO4K_BEGIN_PARAMDEF(Instrument0) GO4K_FOP OP(FOP_ADDP) GO4K_VCF FREQUENCY(128),RESONANCE(89),VCFTYPE(LOWPASS|STEREO) GO4K_FOP OP(FOP_MULP) - GO4K_PAN PANNING(63) - GO4K_OUT GAIN(128), AUXSEND(55) -GO4K_END_PARAMDEF -GO4K_BEGIN_PARAMDEF(Instrument2) - GO4K_ENV ATTAC(0),DECAY(83),SUSTAIN(0),RELEASE(0),GAIN(100) - GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2+FST_SET) - GO4K_ENV ATTAC(0),DECAY(73),SUSTAIN(0),RELEASE(0),GAIN(128) - GO4K_DST DRIVE(27), SNHFREQ(128), FLAGS(0) - GO4K_FST AMOUNT(86),DEST(6*MAX_UNIT_SLOTS+1+FST_SET) - GO4K_FOP OP(FOP_MULP) - GO4K_VCO TRANSPOSE(38),DETUNE(128),PHASE(20),GATES(85),COLOR(64),SHAPE(88),GAIN(90),FLAGS(TRISAW) - GO4K_FOP OP(FOP_MULP) GO4K_PAN PANNING(64) - GO4K_OUT GAIN(128), AUXSEND(0) + GO4K_OUT GAIN(120), AUXSEND(80) GO4K_END_PARAMDEF -GO4K_BEGIN_PARAMDEF(Instrument3) - GO4K_ENV ATTAC(0),DECAY(74),SUSTAIN(0),RELEASE(0),GAIN(93) - GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2+FST_SET) - GO4K_ENV ATTAC(0),DECAY(57),SUSTAIN(64),RELEASE(0),GAIN(128) - GO4K_FST AMOUNT(66),DEST(6*MAX_UNIT_SLOTS+1+FST_SET) - GO4K_FST AMOUNT(58),DEST(7*MAX_UNIT_SLOTS+1+FST_SET) - GO4K_FOP OP(FOP_POP) - GO4K_VCO TRANSPOSE(63),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(127),GAIN(83),FLAGS(NOISE) - GO4K_VCO TRANSPOSE(62),DETUNE(59),PHASE(14),GATES(85),COLOR(64),SHAPE(89),GAIN(67),FLAGS(SINE) - GO4K_VCO TRANSPOSE(68),DETUNE(64),PHASE(0),GATES(85),COLOR(42),SHAPE(65),GAIN(14),FLAGS(TRISAW) - GO4K_VCF FREQUENCY(98),RESONANCE(128),VCFTYPE(LOWPASS) - GO4K_FOP OP(FOP_ADDP) - GO4K_FOP OP(FOP_ADDP) - GO4K_FOP OP(FOP_MULP) - GO4K_VCF FREQUENCY(22),RESONANCE(11),VCFTYPE(HIGHPASS) - GO4K_PAN PANNING(64) - GO4K_OUT GAIN(45), AUXSEND(28) -GO4K_END_PARAMDEF -GO4K_BEGIN_PARAMDEF(Instrument4) - GO4K_ENV ATTAC(79),DECAY(96),SUSTAIN(95),RELEASE(82),GAIN(128) +GO4K_BEGIN_PARAMDEF(Instrument1) + GO4K_ENV ATTAC(0),DECAY(128),SUSTAIN(128),RELEASE(38),GAIN(78) GO4K_FST AMOUNT(68),DEST(0*MAX_UNIT_SLOTS+2+FST_SET) GO4K_VCO TRANSPOSE(64),DETUNE(59),PHASE(0),GATES(85),COLOR(52),SHAPE(64),GAIN(128),FLAGS(PULSE) GO4K_VCO TRANSPOSE(76),DETUNE(64),PHASE(64),GATES(85),COLOR(101),SHAPE(127),GAIN(111),FLAGS(TRISAW) @@ -701,10 +674,40 @@ GO4K_BEGIN_PARAMDEF(Instrument4) GO4K_FOP OP(FOP_XCH) GO4K_DLL PREGAIN(98),DRY(112),FEEDBACK(62),DAMP(45),FREQUENCY(0),DEPTH(0),DELAY(18),COUNT(1) GO4K_FOP OP(FOP_XCH) - GO4K_OUT GAIN(59), AUXSEND(59) + GO4K_OUT GAIN(72), AUXSEND(97) +GO4K_END_PARAMDEF +GO4K_BEGIN_PARAMDEF(Instrument2) + GO4K_ENV ATTAC(0),DECAY(83),SUSTAIN(0),RELEASE(0),GAIN(42) + GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_ENV ATTAC(0),DECAY(75),SUSTAIN(0),RELEASE(0),GAIN(128) + GO4K_DST DRIVE(13), SNHFREQ(128), FLAGS(0) + GO4K_FST AMOUNT(86),DEST(6*MAX_UNIT_SLOTS+1+FST_SET) + GO4K_FOP OP(FOP_MULP) + GO4K_VCO TRANSPOSE(38),DETUNE(109),PHASE(16),GATES(85),COLOR(64),SHAPE(97),GAIN(93),FLAGS(TRISAW) + GO4K_FOP OP(FOP_MULP) + GO4K_PAN PANNING(64) + GO4K_OUT GAIN(128), AUXSEND(0) +GO4K_END_PARAMDEF +GO4K_BEGIN_PARAMDEF(Instrument3) + GO4K_ENV ATTAC(0),DECAY(74),SUSTAIN(0),RELEASE(0),GAIN(80) + GO4K_FST AMOUNT(125),DEST(0*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_ENV ATTAC(0),DECAY(57),SUSTAIN(64),RELEASE(0),GAIN(128) + GO4K_FST AMOUNT(66),DEST(6*MAX_UNIT_SLOTS+1+FST_SET) + GO4K_FST AMOUNT(58),DEST(7*MAX_UNIT_SLOTS+1+FST_SET) + GO4K_FOP OP(FOP_POP) + GO4K_VCO TRANSPOSE(63),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(127),GAIN(83),FLAGS(NOISE) + GO4K_VCO TRANSPOSE(62),DETUNE(59),PHASE(14),GATES(85),COLOR(64),SHAPE(89),GAIN(67),FLAGS(SINE) + GO4K_VCO TRANSPOSE(68),DETUNE(64),PHASE(0),GATES(85),COLOR(42),SHAPE(65),GAIN(14),FLAGS(TRISAW) + GO4K_VCF FREQUENCY(98),RESONANCE(128),VCFTYPE(LOWPASS) + GO4K_FOP OP(FOP_ADDP) + GO4K_FOP OP(FOP_ADDP) + GO4K_FOP OP(FOP_MULP) + GO4K_VCF FREQUENCY(22),RESONANCE(11),VCFTYPE(HIGHPASS) + GO4K_PAN PANNING(64) + GO4K_OUT GAIN(45), AUXSEND(28) GO4K_END_PARAMDEF GO4K_BEGIN_PARAMDEF(Instrument5) - GO4K_ENV ATTAC(64),DECAY(70),SUSTAIN(70),RELEASE(88),GAIN(128) + GO4K_ENV ATTAC(53),DECAY(82),SUSTAIN(128),RELEASE(88),GAIN(128) GO4K_VCO TRANSPOSE(69),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO) GO4K_FST AMOUNT(72),DEST(11*MAX_UNIT_SLOTS+2+FST_SET) GO4K_FOP OP(FOP_POP) @@ -725,7 +728,7 @@ GO4K_BEGIN_PARAMDEF(Instrument5) GO4K_DLL PREGAIN(64),DRY(64),FEEDBACK(64),DAMP(0),FREQUENCY(0),DEPTH(0),DELAY(19),COUNT(1) GO4K_PAN PANNING(64) GO4K_DLL PREGAIN(128),DRY(0),FEEDBACK(0),DAMP(0),FREQUENCY(0),DEPTH(0),DELAY(20),COUNT(1) - GO4K_OUT GAIN(128), AUXSEND(47) + GO4K_OUT GAIN(128), AUXSEND(54) GO4K_END_PARAMDEF GO4K_BEGIN_PARAMDEF(Global) GO4K_ACC ACCTYPE(AUX) @@ -763,8 +766,8 @@ _go4k_delay_times dw 1516 dw 1580 dw 1642 - dw 19894 - dw 13263 - dw 29842 + dw 18248 + dw 12165 + dw 27372 dw 512 %endif diff --git a/4klang_old.h b/4klang_old.h new file mode 100644 index 0000000..668b979 --- /dev/null +++ b/4klang_old.h @@ -0,0 +1,22 @@ +// some useful song defines for 4klang +#define SAMPLE_RATE 44100 +#define BPM 133.000000 +#define MAX_INSTRUMENTS 5 +#define MAX_PATTERNS 52 +#define PATTERN_SIZE_SHIFT 4 +#define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT) +#define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE) +#define SAMPLES_PER_TICK 4973 +#define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS) +#define POLYPHONY 1 +#define INTEGER_16BIT +#define SAMPLE_TYPE short + +#define WINDOWS_OBJECT + +// declaration of the external synth render function, you'll always need that +extern "C" void __stdcall _4klang_render(void*); +// declaration of the external envelope buffer. access only if you're song was exported with that option +extern "C" float _4klang_envelope_buffer; +// declaration of the external note buffer. access only if you're song was exported with that option +extern "C" int _4klang_note_buffer; diff --git a/4klang_old.inc b/4klang_old.inc new file mode 100644 index 0000000..955645b --- /dev/null +++ b/4klang_old.inc @@ -0,0 +1,770 @@ +%macro export_func 1 + global _%1 + _%1: +%endmacro +%define USE_SECTIONS +%define SAMPLE_RATE 44100 +%define MAX_INSTRUMENTS 5 +%define MAX_VOICES 1 +%define HLD 1 +%define BPM 133.000000 +%define MAX_PATTERNS 52 +%define PATTERN_SIZE_SHIFT 4 +%define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT) +%define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE) +%define SAMPLES_PER_TICK 4973 +%define DEF_LFO_NORMALIZE 0.0000502645 +%define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS) +%define GO4K_USE_16BIT_OUTPUT +;%define GO4K_USE_GROOVE_PATTERN +;%define GO4K_USE_ENVELOPE_RECORDINGS +%define GO4K_USE_NOTE_RECORDINGS +%define GO4K_CLIP_OUTPUT +%define GO4K_USE_DST +%define GO4K_USE_DLL +%define GO4K_USE_PAN +%define GO4K_USE_GLOBAL_DLL +%define GO4K_USE_ENV_CHECK +%define GO4K_USE_ENV_MOD_GM +%define GO4K_USE_VCO_CHECK +%define GO4K_USE_VCO_PHASE_OFFSET +%define GO4K_USE_VCO_SHAPE +%define GO4K_USE_VCO_MOD_TM +%define GO4K_USE_VCO_MOD_DM +%define GO4K_USE_VCO_MOD_CM +%define GO4K_USE_VCF_CHECK +%define GO4K_USE_VCF_HIGH +%define GO4K_USE_VCF_BAND +%define GO4K_USE_VCF_PEAK +%define GO4K_USE_VCF_STEREO +%define GO4K_USE_DST_CHECK +%define GO4K_USE_DST_SH +%define GO4K_USE_DLL_CHORUS_CLAMP +%define GO4K_USE_DLL_DAMP +%define GO4K_USE_DLL_DC_FILTER +%define GO4K_USE_FSTG_CHECK +%define GO4K_USE_WAVESHAPER_CLIP +%define MAX_DELAY 65536 +%define MAX_UNITS 64 +%define MAX_UNIT_SLOTS 16 +%define GO4K_BEGIN_CMDDEF(def_name) +%define GO4K_END_CMDDEF db 0 +%define GO4K_BEGIN_PARAMDEF(def_name) +%define GO4K_END_PARAMDEF +GO4K_ENV_ID equ 1 +%macro GO4K_ENV 5 + db %1 + db %2 + db %3 + db %4 + db %5 +%endmacro +%define ATTAC(val) val +%define DECAY(val) val +%define SUSTAIN(val) val +%define RELEASE(val) val +%define GAIN(val) val +struc go4kENV_val + .attac resd 1 + .decay resd 1 + .sustain resd 1 + .release resd 1 + .gain resd 1 + .size +endstruc +struc go4kENV_wrk + .state resd 1 + .level resd 1 + .gm resd 1 + .am resd 1 + .dm resd 1 + .sm resd 1 + .rm resd 1 + .size +endstruc +%define ENV_STATE_ATTAC 0 +%define ENV_STATE_DECAY 1 +%define ENV_STATE_SUSTAIN 2 +%define ENV_STATE_RELEASE 3 +%define ENV_STATE_OFF 4 +GO4K_VCO_ID equ 2 +%macro GO4K_VCO 8 + db %1 + db %2 +%ifdef GO4K_USE_VCO_PHASE_OFFSET + db %3 +%endif +%ifdef GO4K_USE_VCO_GATE + db %4 +%endif + db %5 +%ifdef GO4K_USE_VCO_SHAPE + db %6 +%endif + db %7 + db %8 +%endmacro +%define TRANSPOSE(val) val +%define DETUNE(val) val +%define PHASE(val) val +%define GATES(val) val +%define COLOR(val) val +%define SHAPE(val) val +%define FLAGS(val) val +%define SINE 0x01 +%define TRISAW 0x02 +%define PULSE 0x04 +%define NOISE 0x08 +%define LFO 0x10 +%define GATE 0x20 +%define VCO_STEREO 0x40 +struc go4kVCO_val + .transpose resd 1 + .detune resd 1 +%ifdef GO4K_USE_VCO_PHASE_OFFSET + .phaseofs resd 1 +%endif +%ifdef GO4K_USE_VCO_GATE + .gate resd 1 +%endif + .color resd 1 +%ifdef GO4K_USE_VCO_SHAPE + .shape resd 1 +%endif + .gain resd 1 + .flags resd 1 + .size +endstruc +struc go4kVCO_wrk + .phase resd 1 + .tm resd 1 + .dm resd 1 + .fm resd 1 + .pm resd 1 + .cm resd 1 + .sm resd 1 + .gm resd 1 + .phase2 resd 1 + .size +endstruc +GO4K_VCF_ID equ 3 +%macro GO4K_VCF 3 + db %1 + db %2 + db %3 +%endmacro +%define LOWPASS 0x1 +%define HIGHPASS 0x2 +%define BANDPASS 0x4 +%define BANDSTOP 0x3 +%define ALLPASS 0x7 +%define PEAK 0x8 +%define STEREO 0x10 +%define FREQUENCY(val) val +%define RESONANCE(val) val +%define VCFTYPE(val) val +struc go4kVCF_val + .freq resd 1 + .res resd 1 + .type resd 1 + .size +endstruc +struc go4kVCF_wrk + .low resd 1 + .high resd 1 + .band resd 1 + .freq resd 1 + .fm resd 1 + .rm resd 1 + .low2 resd 1 + .high2 resd 1 + .band2 resd 1 + .size +endstruc +GO4K_DST_ID equ 4 +%macro GO4K_DST 3 + db %1 +%ifdef GO4K_USE_DST_SH + db %2 +%ifdef GO4K_USE_DST_STEREO + db %3 +%endif +%else +%ifdef GO4K_USE_DST_STEREO + db %3 +%endif +%endif +%endmacro +%define DRIVE(val) val +%define SNHFREQ(val) val +%define FLAGS(val) val +struc go4kDST_val + .drive resd 1 +%ifdef GO4K_USE_DST_SH + .snhfreq resd 1 +%endif + .flags resd 1 + .size +endstruc +struc go4kDST_wrk + .out resd 1 + .snhphase resd 1 + .dm resd 1 + .sm resd 1 + .out2 resd 1 + .size +endstruc +GO4K_DLL_ID equ 5 +%macro GO4K_DLL 8 + db %1 + db %2 + db %3 +%ifdef GO4K_USE_DLL_DAMP + db %4 +%endif +%ifdef GO4K_USE_DLL_CHORUS + db %5 + db %6 +%endif + db %7 + db %8 +%endmacro +%define PREGAIN(val) val +%define DRY(val) val +%define FEEDBACK(val) val +%define DEPTH(val) val +%define DAMP(val) val +%define DELAY(val) val +%define COUNT(val) val +struc go4kDLL_val + .pregain resd 1 + .dry resd 1 + .feedback resd 1 +%ifdef GO4K_USE_DLL_DAMP + .damp resd 1 +%endif +%ifdef GO4K_USE_DLL_CHORUS + .freq resd 1 + .depth +%endif + .delay resd 1 + .count resd 1 + .size +endstruc +struc go4kDLL_wrk + .index resd 1 + .store resd 1 + .dcin resd 1 + .dcout resd 1 +%ifdef GO4K_USE_DLL_CHORUS + .phase resd 1 +%endif + .buffer resd MAX_DELAY + .size +endstruc +struc go4kDLL_wrk2 + .pm resd 1 + .fm resd 1 + .im resd 1 + .dm resd 1 + .sm resd 1 + .am resd 1 + .size +endstruc +GO4K_FOP_ID equ 6 +%macro GO4K_FOP 1 + db %1 +%endmacro +%define OP(val) val +%define FOP_POP 0x1 +%define FOP_ADDP 0x2 +%define FOP_MULP 0x3 +%define FOP_PUSH 0x4 +%define FOP_XCH 0x5 +%define FOP_ADD 0x6 +%define FOP_MUL 0x7 +%define FOP_ADDP2 0x8 +%define FOP_LOADNOTE 0x9 +%define FOP_MULP2 0xa +struc go4kFOP_val + .flags resd 1 + .size +endstruc +struc go4kFOP_wrk + .size +endstruc +GO4K_FST_ID equ 7 +%macro GO4K_FST 2 + db %1 + dw %2 +%endmacro +%define AMOUNT(val) val +%define DEST(val) val +%define FST_SET 0x0000 +%define FST_ADD 0x4000 +%define FST_POP 0x8000 +struc go4kFST_val + .amount resd 1 + .op1 resd 1 + .size +endstruc +struc go4kFST_wrk + .size +endstruc +GO4K_PAN_ID equ 8 +%macro GO4K_PAN 1 +%ifdef GO4K_USE_PAN + db %1 +%endif +%endmacro +%define PANNING(val) val +struc go4kPAN_val +%ifdef GO4K_USE_PAN + .panning resd 1 +%endif + .size +endstruc +struc go4kPAN_wrk + .pm resd 1 + .size +endstruc +GO4K_OUT_ID equ 9 +%macro GO4K_OUT 2 + db %1 +%ifdef GO4K_USE_GLOBAL_DLL + db %2 +%endif +%endmacro +%define AUXSEND(val) val +struc go4kOUT_val + .gain resd 1 +%ifdef GO4K_USE_GLOBAL_DLL + .auxsend resd 1 +%endif + .size +endstruc +struc go4kOUT_wrk + .am resd 1 + .gm resd 1 + .size +endstruc +GO4K_ACC_ID equ 10 +%macro GO4K_ACC 1 + db %1 +%endmacro +%define OUTPUT 0 +%define AUX 8 +%define ACCTYPE(val) val +struc go4kACC_val + .acctype resd 1 + .size +endstruc +struc go4kACC_wrk + .size +endstruc +%ifdef GO4K_USE_FLD +GO4K_FLD_ID equ 11 +%macro GO4K_FLD 1 + db %1 +%endmacro +%define VALUE(val) val +struc go4kFLD_val + .value resd 1 + .size +endstruc +struc go4kFLD_wrk + .vm resd 1 + .size +endstruc +%endif +%ifdef GO4K_USE_GLITCH +GO4K_GLITCH_ID equ 12 +%macro GO4K_GLITCH 5 + db %1 + db %2 + db %3 + db %4 + db %5 +%endmacro +%define ACTIVE(val) val +%define SLICEFACTOR(val)val +%define PITCHFACTOR(val)val +%define SLICESIZE(val) val +struc go4kGLITCH_val + .active resd 1 + .dry resd 1 + .dsize resd 1 + .dpitch resd 1 + .slicesize resd 1 + .size +endstruc +struc go4kGLITCH_wrk + .index resd 1 + .store resd 1 + .slizesize resd 1 + .slicepitch resd 1 + .unused resd 1 + .buffer resd MAX_DELAY + .size +endstruc +struc go4kGLITCH_wrk2 + .am resd 1 + .dm resd 1 + .sm resd 1 + .pm resd 1 + .size +endstruc +%endif +%ifdef GO4K_USE_FSTG +GO4K_FSTG_ID equ 13 +%macro GO4K_FSTG 2 + db %1 + dw %2 +%endmacro +struc go4kFSTG_val + .amount resd 1 + .op1 resd 1 + .size +endstruc +struc go4kFSTG_wrk + .size +endstruc +%endif +struc go4k_instrument + .release resd 1 + .note resd 1 + .workspace resd MAX_UNITS*MAX_UNIT_SLOTS + .dlloutl resd 1 + .dlloutr resd 1 + .outl resd 1 + .outr resd 1 + .size +endstruc +struc go4k_synth + .instruments resb go4k_instrument.size * MAX_INSTRUMENTS * MAX_VOICES + .global resb go4k_instrument.size * MAX_VOICES + .size +endstruc +%ifdef USE_SECTIONS +section .g4kmuc1 data align=1 +%else +section .data align=1 +%endif +go4k_patterns + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + db 38, HLD, 0, 0, 38, HLD, HLD, HLD, 0, 0, 38, 0, 48, 50, HLD, HLD, + db 0, 0, 50, 0, 38, HLD, HLD, HLD, 50, 0, 50, 0, 38, HLD, HLD, HLD, + db 0, 0, 38, 0, 38, HLD, 38, 38, 48, HLD, 50, HLD, 53, HLD, 52, HLD, + db 38, 0, 38, 0, 38, HLD, HLD, HLD, HLD, HLD, 0, 0, 38, HLD, 50, HLD, + db 0, 0, 50, 0, 38, 0, 38, 38, 46, HLD, 48, HLD, 57, HLD, 48, HLD, + db 46, HLD, 0, 0, 46, HLD, HLD, HLD, 0, 0, 46, 0, 47, HLD, 48, HLD, + db 0, 0, 48, 0, 36, HLD, HLD, HLD, 36, 0, 48, 0, 48, HLD, HLD, HLD, + db 38, HLD, 0, 0, 38, HLD, HLD, HLD, 0, 0, 38, 0, 48, HLD, 50, HLD, + db HLD, 0, 50, 0, 38, HLD, HLD, HLD, 38, HLD, 50, HLD, 48, HLD, 36, HLD, + db 43, HLD, 0, 0, 43, HLD, HLD, HLD, 55, HLD, 43, HLD, HLD, HLD, 55, HLD, + db 41, 0, 41, 0, 41, HLD, HLD, HLD, 53, HLD, 41, HLD, 41, HLD, HLD, HLD, + db 40, HLD, 0, 0, 40, HLD, HLD, HLD, 52, HLD, 40, HLD, HLD, HLD, 52, HLD, + db 45, 0, 45, 0, 45, HLD, HLD, HLD, 57, HLD, 45, HLD, 45, HLD, HLD, HLD, + db 50, HLD, 0, 0, 50, HLD, HLD, HLD, 62, HLD, 50, HLD, HLD, HLD, 62, HLD, + db 43, 0, 43, 0, 43, HLD, HLD, HLD, 55, HLD, 43, HLD, 43, HLD, HLD, HLD, + db 48, HLD, 0, 0, 48, HLD, HLD, HLD, 60, HLD, 48, HLD, HLD, HLD, 60, HLD, + db 48, 0, 48, 0, 48, HLD, HLD, HLD, 60, HLD, 48, HLD, 48, HLD, HLD, HLD, + db 48, HLD, HLD, 48, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, + db HLD, HLD, 48, HLD, HLD, HLD, 48, 48, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, + db 48, HLD, HLD, 48, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, + db 48, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 48, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 48, HLD, + db 48, HLD, HLD, HLD, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, + db 0, 0, 0, 0, 0, 0, 0, 0, 60, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD, HLD, HLD, 60, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 74, HLD, HLD, HLD, HLD, HLD, 69, HLD, HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 74, HLD, HLD, HLD, 76, HLD, HLD, HLD, + db 77, HLD, HLD, HLD, 76, HLD, 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, + db 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, + db 70, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 77, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 79, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 81, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 67, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 69, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 73, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, + db 71, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, +go4k_patterns_end +%ifdef USE_SECTIONS +section .g4kmuc2 data align=1 +%else +section .data +%endif +go4k_pattern_lists +Instrument0List db 1, 2, 1, 3, 1, 2, 1, 3, 1, 2, 4, 5, 1, 3, 1, 2, 6, 7, 8, 9, 6, 7, 1, 2, 10, 11, 12, 13, 14, 15, 16, 17, 10, 11, 12, 13, 14, 15, 16, 17, 1, 2, 1, 3, 1, 2, 1, 3, 1, 2, 1, 3, +Instrument2List db 18, 19, 18, 19, 18, 19, 18, 19, 20, 21, 20, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 22, 21, 23, 19, 24, 21, 18, 19, 24, 21, 18, 19, +Instrument3List db 25, 26, 27, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, +Instrument4List db 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 29, 30, 33, 32, 29, 30, 31, 32, 29, 30, 33, 34, 35, 36, 33, 37, 38, 39, 38, 37, 35, 36, 33, 37, 38, 39, 40, 39, 38, 41, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, +Instrument5List db 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 29, 30, 33, 32, 29, 30, 31, 32, 29, 30, 33, 34, 42, 43, 35, 44, 36, 33, 36, 36, 42, 43, 35, 44, 36, 45, 43, 42, 38, 41, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, +go4k_pattern_lists_end +%ifdef USE_SECTIONS +section .g4kmuc3 data align=1 +%else +section .data +%endif +go4k_synth_instructions +GO4K_BEGIN_CMDDEF(Instrument0) + db GO4K_ENV_ID + db GO4K_VCO_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_VCO_ID + db GO4K_FST_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_VCO_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_FOP_ID + db GO4K_FOP_ID + db GO4K_VCF_ID + db GO4K_FOP_ID + db GO4K_PAN_ID + db GO4K_OUT_ID +GO4K_END_CMDDEF +GO4K_BEGIN_CMDDEF(Instrument2) + db GO4K_ENV_ID + db GO4K_FST_ID + db GO4K_ENV_ID + db GO4K_DST_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_VCO_ID + db GO4K_FOP_ID + db GO4K_PAN_ID + db GO4K_OUT_ID +GO4K_END_CMDDEF +GO4K_BEGIN_CMDDEF(Instrument3) + db GO4K_ENV_ID + db GO4K_FST_ID + db GO4K_ENV_ID + db GO4K_FST_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_VCF_ID + db GO4K_FOP_ID + db GO4K_FOP_ID + db GO4K_FOP_ID + db GO4K_VCF_ID + db GO4K_PAN_ID + db GO4K_OUT_ID +GO4K_END_CMDDEF +GO4K_BEGIN_CMDDEF(Instrument4) + db GO4K_ENV_ID + db GO4K_FST_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_FST_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_FOP_ID + db GO4K_FOP_ID + db GO4K_VCF_ID + db GO4K_VCF_ID + db GO4K_DST_ID + db GO4K_PAN_ID + db GO4K_DLL_ID + db GO4K_FOP_ID + db GO4K_DLL_ID + db GO4K_FOP_ID + db GO4K_OUT_ID +GO4K_END_CMDDEF +GO4K_BEGIN_CMDDEF(Instrument5) + db GO4K_ENV_ID + db GO4K_VCO_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_VCO_ID + db GO4K_FST_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_VCO_ID + db GO4K_FST_ID + db GO4K_FOP_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_VCO_ID + db GO4K_FOP_ID + db GO4K_FOP_ID + db GO4K_VCF_ID + db GO4K_FOP_ID + db GO4K_DLL_ID + db GO4K_PAN_ID + db GO4K_DLL_ID + db GO4K_OUT_ID +GO4K_END_CMDDEF +GO4K_BEGIN_CMDDEF(Global) + db GO4K_ACC_ID + db GO4K_DLL_ID + db GO4K_FOP_ID + db GO4K_DLL_ID + db GO4K_FOP_ID + db GO4K_ACC_ID + db GO4K_FOP_ID + db GO4K_OUT_ID +GO4K_END_CMDDEF +go4k_synth_instructions_end +%ifdef USE_SECTIONS +section .g4kmuc4 data align=1 +%else +section .data +%endif +go4k_synth_parameter_values +GO4K_BEGIN_PARAMDEF(Instrument0) + GO4K_ENV ATTAC(9),DECAY(85),SUSTAIN(113),RELEASE(38),GAIN(119) + GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW|LFO) + GO4K_FST AMOUNT(52),DEST(11*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_FOP OP(FOP_POP) + GO4K_VCO TRANSPOSE(41),DETUNE(42),PHASE(55),GATES(85),COLOR(54),SHAPE(63),GAIN(128),FLAGS(SINE|LFO) + GO4K_FST AMOUNT(75),DEST(12*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_FST AMOUNT(59),DEST(12*MAX_UNIT_SLOTS+5+FST_SET) + GO4K_FOP OP(FOP_POP) + GO4K_VCO TRANSPOSE(74),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO) + GO4K_FST AMOUNT(69),DEST(13*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_FOP OP(FOP_POP) + GO4K_VCO TRANSPOSE(64),DETUNE(76),PHASE(22),GATES(85),COLOR(0),SHAPE(64),GAIN(128),FLAGS(TRISAW) + GO4K_VCO TRANSPOSE(64),DETUNE(60),PHASE(87),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW) + GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(106),GAIN(128),FLAGS(SINE) + GO4K_FOP OP(FOP_ADDP) + GO4K_FOP OP(FOP_ADDP) + GO4K_VCF FREQUENCY(128),RESONANCE(89),VCFTYPE(LOWPASS|STEREO) + GO4K_FOP OP(FOP_MULP) + GO4K_PAN PANNING(63) + GO4K_OUT GAIN(128), AUXSEND(55) +GO4K_END_PARAMDEF +GO4K_BEGIN_PARAMDEF(Instrument2) + GO4K_ENV ATTAC(0),DECAY(83),SUSTAIN(0),RELEASE(0),GAIN(100) + GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_ENV ATTAC(0),DECAY(73),SUSTAIN(0),RELEASE(0),GAIN(128) + GO4K_DST DRIVE(27), SNHFREQ(128), FLAGS(0) + GO4K_FST AMOUNT(86),DEST(6*MAX_UNIT_SLOTS+1+FST_SET) + GO4K_FOP OP(FOP_MULP) + GO4K_VCO TRANSPOSE(38),DETUNE(128),PHASE(20),GATES(85),COLOR(64),SHAPE(88),GAIN(90),FLAGS(TRISAW) + GO4K_FOP OP(FOP_MULP) + GO4K_PAN PANNING(64) + GO4K_OUT GAIN(128), AUXSEND(0) +GO4K_END_PARAMDEF +GO4K_BEGIN_PARAMDEF(Instrument3) + GO4K_ENV ATTAC(0),DECAY(74),SUSTAIN(0),RELEASE(0),GAIN(93) + GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_ENV ATTAC(0),DECAY(57),SUSTAIN(64),RELEASE(0),GAIN(128) + GO4K_FST AMOUNT(66),DEST(6*MAX_UNIT_SLOTS+1+FST_SET) + GO4K_FST AMOUNT(58),DEST(7*MAX_UNIT_SLOTS+1+FST_SET) + GO4K_FOP OP(FOP_POP) + GO4K_VCO TRANSPOSE(63),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(127),GAIN(83),FLAGS(NOISE) + GO4K_VCO TRANSPOSE(62),DETUNE(59),PHASE(14),GATES(85),COLOR(64),SHAPE(89),GAIN(67),FLAGS(SINE) + GO4K_VCO TRANSPOSE(68),DETUNE(64),PHASE(0),GATES(85),COLOR(42),SHAPE(65),GAIN(14),FLAGS(TRISAW) + GO4K_VCF FREQUENCY(98),RESONANCE(128),VCFTYPE(LOWPASS) + GO4K_FOP OP(FOP_ADDP) + GO4K_FOP OP(FOP_ADDP) + GO4K_FOP OP(FOP_MULP) + GO4K_VCF FREQUENCY(22),RESONANCE(11),VCFTYPE(HIGHPASS) + GO4K_PAN PANNING(64) + GO4K_OUT GAIN(45), AUXSEND(28) +GO4K_END_PARAMDEF +GO4K_BEGIN_PARAMDEF(Instrument4) + GO4K_ENV ATTAC(79),DECAY(96),SUSTAIN(95),RELEASE(82),GAIN(128) + GO4K_FST AMOUNT(68),DEST(0*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_VCO TRANSPOSE(64),DETUNE(59),PHASE(0),GATES(85),COLOR(52),SHAPE(64),GAIN(128),FLAGS(PULSE) + GO4K_VCO TRANSPOSE(76),DETUNE(64),PHASE(64),GATES(85),COLOR(101),SHAPE(127),GAIN(111),FLAGS(TRISAW) + GO4K_VCO TRANSPOSE(32),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW|LFO) + GO4K_FST AMOUNT(61),DEST(2*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_FST AMOUNT(63),DEST(3*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_FOP OP(FOP_POP) + GO4K_FOP OP(FOP_ADDP) + GO4K_FOP OP(FOP_MULP) + GO4K_VCF FREQUENCY(26),RESONANCE(36),VCFTYPE(PEAK) + GO4K_VCF FREQUENCY(80),RESONANCE(44),VCFTYPE(LOWPASS) + GO4K_DST DRIVE(109), SNHFREQ(85), FLAGS(0) + GO4K_PAN PANNING(64) + GO4K_DLL PREGAIN(72),DRY(123),FEEDBACK(90),DAMP(49),FREQUENCY(0),DEPTH(0),DELAY(17),COUNT(1) + GO4K_FOP OP(FOP_XCH) + GO4K_DLL PREGAIN(98),DRY(112),FEEDBACK(62),DAMP(45),FREQUENCY(0),DEPTH(0),DELAY(18),COUNT(1) + GO4K_FOP OP(FOP_XCH) + GO4K_OUT GAIN(59), AUXSEND(59) +GO4K_END_PARAMDEF +GO4K_BEGIN_PARAMDEF(Instrument5) + GO4K_ENV ATTAC(64),DECAY(70),SUSTAIN(70),RELEASE(88),GAIN(128) + GO4K_VCO TRANSPOSE(69),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO) + GO4K_FST AMOUNT(72),DEST(11*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_FOP OP(FOP_POP) + GO4K_VCO TRANSPOSE(73),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO) + GO4K_FST AMOUNT(56),DEST(12*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_FST AMOUNT(56),DEST(12*MAX_UNIT_SLOTS+5+FST_SET) + GO4K_FOP OP(FOP_POP) + GO4K_VCO TRANSPOSE(77),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO) + GO4K_FST AMOUNT(72),DEST(13*MAX_UNIT_SLOTS+2+FST_SET) + GO4K_FOP OP(FOP_POP) + GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(0),SHAPE(64),GAIN(128),FLAGS(TRISAW) + GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(0),SHAPE(64),GAIN(128),FLAGS(TRISAW) + GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(0),SHAPE(64),GAIN(128),FLAGS(TRISAW) + GO4K_FOP OP(FOP_ADDP) + GO4K_FOP OP(FOP_ADDP) + GO4K_VCF FREQUENCY(104),RESONANCE(96),VCFTYPE(LOWPASS) + GO4K_FOP OP(FOP_MULP) + GO4K_DLL PREGAIN(64),DRY(64),FEEDBACK(64),DAMP(0),FREQUENCY(0),DEPTH(0),DELAY(19),COUNT(1) + GO4K_PAN PANNING(64) + GO4K_DLL PREGAIN(128),DRY(0),FEEDBACK(0),DAMP(0),FREQUENCY(0),DEPTH(0),DELAY(20),COUNT(1) + GO4K_OUT GAIN(128), AUXSEND(47) +GO4K_END_PARAMDEF +GO4K_BEGIN_PARAMDEF(Global) + GO4K_ACC ACCTYPE(AUX) + GO4K_DLL PREGAIN(39),DRY(90),FEEDBACK(93),DAMP(62),FREQUENCY(0),DEPTH(0),DELAY(1),COUNT(8) + GO4K_FOP OP(FOP_XCH) + GO4K_DLL PREGAIN(41),DRY(128),FEEDBACK(93),DAMP(74),FREQUENCY(0),DEPTH(0),DELAY(9),COUNT(8) + GO4K_FOP OP(FOP_XCH) + GO4K_ACC ACCTYPE(OUTPUT) + GO4K_FOP OP(FOP_ADDP2) + GO4K_OUT GAIN(67), AUXSEND(0) +GO4K_END_PARAMDEF +go4k_synth_parameter_values_end +%ifdef USE_SECTIONS +section .g4kmuc5 data align=1 +%else +section .data +%endif +%ifdef GO4K_USE_DLL +global _go4k_delay_times +_go4k_delay_times + dw 0 + dw 1116 + dw 1188 + dw 1276 + dw 1356 + dw 1422 + dw 1492 + dw 1556 + dw 1618 + dw 1140 + dw 1212 + dw 1300 + dw 1380 + dw 1446 + dw 1516 + dw 1580 + dw 1642 + dw 19894 + dw 13263 + dw 29842 + dw 512 +%endif diff --git a/base.config b/base.config index 91ee170..3fa7725 100644 --- a/base.config +++ b/base.config @@ -43,11 +43,11 @@ USE_WIDECHAR_TEXTS=1 ########### Time base ########### USE_TIME_DIVIDER_IN_X86_CODE=1 -TIME_DIVIDER=79578.945 +TIME_DIVIDER=72993.102 TIME_BASE=bars AUDIO_DELAY=2048 -PROD_END_TIME=4139584 +PROD_END_TIME=5257472 ########### Final product ########### @@ -61,9 +61,9 @@ QUOTE=\" CRINKLER_ORDERTRIES=4000 -AUDIO_BUFFER_ALLOCATED_LENGTH=4139584 +AUDIO_BUFFER_ALLOCATED_LENGTH=5257472 AUDIO_SAMPLING_RATE=44100 LOOP_END=5.0 LOOP_START=3.0 LOOP_ENABLED=0 -TIME_DIVIDER_INT=79578 +TIME_DIVIDER_INT=72993 diff --git a/minified.config b/minified.config index ef407b2..74976ed 100644 --- a/minified.config +++ b/minified.config @@ -10,7 +10,8 @@ include $(PARENT_CONFIG) EXE_LINKER_PROGRAM=Crinkler CRINKLER_ORDERTRIES=4000 SHADER_FILE=shader_minified.h -TIME_UNIFORM_NAME='v' -RESOLUTION_UNIFORM_NAME='s' -TEXTS_UNIFORM_NAME='f' +TIME_UNIFORM_NAME='y' +RESOLUTION_UNIFORM_NAME='v' +TEXTS_UNIFORM_NAME='s' USE_WIDECHAR_TEXTS=1 +TIME_DIVIDER=72993.102 diff --git a/music/4k_ver2.xrns b/music/4k_ver2.xrns new file mode 100644 index 0000000000000000000000000000000000000000..cba77096b6c47029f7fa7ad8ca8437c57de21c45 GIT binary patch literal 13293 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.&&g!=a)" + "a=y,g=a;" + "return vec4(m.xyz,1);" "}" - "vec2 p(vec2 s)" + "void c(out vec4 f,vec2 m)" "{" - "s.y=clamp(sin(s.x*7.+v)/10.+s.y,0.,1.)+.4;" - "s.x+=sin(v);" - "return s;" - "}" - "void p(out vec4 y,vec2 m)" - "{" - "vec2 c=(m*2.-s)/s;" - "vec3 i=vec3(0,.3,.6);" - "i+=texture2D(f,p(m/s));" - "i+=n(c,0.,1.,1.,sin(v+.3)*360.);" - "i+=n(c,sin(v),0.,-1.,sin(v-1.2)*120.);" - "i+=n(c,-3.,0.,1.,sin(v+.5)*90.);" - "i+=r(c*2.);" - "y=vec4(i,1);" + "vec2 s=(m.xy*2.-v.xy)/min(v.x,v.y);" + "vec3 a=vec3(0,.4,.6);" + "a+=c(s,0.,1.,1.,sin(y+.3)*90.);" + "a+=c(s,sin(y),0.,-1.,sin(y-1.2)*120.);" + "a+=c(s,-3.,0.,1.,sin(y+.5)*90.);" + "vec4 g=e(s*.1);" + "f=max(c(gl_FragCoord.xy)*.2,vec4(a*g.xyz,1));" "}" "void main()" "{" - "if(floor(abs(v)/(60./133))<=32)" - "p(gl_FragColor,gl_FragCoord.xy);" - "else" - "{" - "r(gl_FragColor,gl_FragCoord.xy);" - "vec3 m;" - "vec2 y=gl_FragCoord.xy/s-vec2(0,-.35);" - "if(y.y>0.)" - "m=gl_FragColor+texture2D(f,y);" - "gl_FragColor=vec4(m,1);" - "}" + "c(gl_FragColor,gl_FragCoord.xy);" "}"; #endif // SHADER_MINIFIED_H_