Compare commits

...

270 Commits
v0.6.0 ... main

Author SHA1 Message Date
65eeade32d update to latest tibia changes 2024-12-13 17:15:41 +01:00
83e101cf8e added extra makefile rules for web-demo 2024-12-13 14:33:29 +01:00
Stefano D'Angelo
c779481486 update to latest tibia again 2024-12-12 12:13:11 +01:00
Stefano D'Angelo
a605293801 hopefully updated to latest tibia 2024-12-12 11:34:17 +01:00
67756cf502 updating to latest tibia (many examples likely broken now) 2024-12-12 08:18:32 +01:00
02e628e5b0 bw_one_pole: fix doc typo 2024-12-08 21:24:15 +01:00
ff459dece1 bw_gain: fix doc typo 2024-12-08 19:01:58 +01:00
defabafb45 bw_gain: fix changelog 2024-12-08 18:06:02 +01:00
578bec397f cosmetics 2024-12-08 15:44:43 +01:00
5c91a48e42 fix doc typo 2024-12-04 12:40:54 +01:00
abc65d292a fix tibia tag link 2024-12-04 11:27:03 +01:00
d2b15d9155 not including tibia in releases anymore 2024-12-04 10:46:29 +01:00
90f03881fd change ios deployment target to 14.0 in examples 2024-12-04 10:26:34 +01:00
Stefano D'Angelo
5015dd6bbd bw_common: remove Brickworks references in doc 2024-11-29 14:18:51 +01:00
724d7c6b8a bw_math doc cosmetic fix 2024-11-19 08:53:55 +01:00
da22954810 bw_buf doc cosmetics 2024-11-18 17:52:29 +01:00
f3a12e8e0a bw_mm{1,2}: clarified implemented transfer function 2024-11-11 08:03:10 +01:00
ff99bda751 bw_{delay,env_gen}: fix BW_DEBUG_DEEP 2024-11-10 10:53:07 +01:00
b214bc896e bw_math: add bw_log2_1p2xf, bw_log_1pexpxf, bw_log10_1p10xf 2024-11-01 12:24:15 +01:00
Stefano D'Angelo
6431749bf8 bw_reverb: add missing BW_RESTRICT and fix doc 2024-10-23 08:21:35 +02:00
3a8e279fde cosmetics 2024-10-14 11:27:47 +02:00
Stefano D'Angelo
2ba329f5ea cosmetics 2024-10-11 15:59:22 +02:00
Stefano D'Angelo
f1e471e9bf fix bug in bw_note_queue_is_valid() 2024-10-11 11:02:59 +02:00
340d527ffa add bw_note_queue_all_notes_off 2024-10-11 07:09:02 +02:00
dd6f6adb2c fix typo in bw_note_queue + cosmetics 2024-10-02 11:30:32 +02:00
c7f930673f add sticky thresh to bw_gain and needed related api to bw_one_pole 2024-09-24 07:28:39 +02:00
98e5ef65c4 bw_reverb: cosmetics 2024-09-21 15:38:05 +02:00
daf0cb3e1c introduce BW_{INCLUDE_WITH_QUOTES,NO_CXX,CXX_NO_EXTERN_C} 2024-09-21 12:45:00 +02:00
324aa911fd bw_voice_alloc: added static inline 2024-09-18 17:03:31 +02:00
Stefano D'Angelo
f530db5c45 bw_buf cosmetics 2024-08-30 14:27:58 +02:00
Stefano D'Angelo
eaaeebb8ff bw_buf: add bw_buf_copy() and bw_buf_copy_multi() 2024-08-30 12:11:28 +02:00
adbd1ab61c bw_env_gen: reintroduce BW_ENV_GEN_V_MAX 2024-08-29 18:16:59 +02:00
750c807db3 oops, removed generated files 2024-08-26 17:31:07 +02:00
f6b4e1b7ec adjusted to latest tibia updated 2024-08-26 17:30:25 +02:00
b517c83cb5 bw_env_gen added process output bound debugging check 2024-08-24 17:31:25 +02:00
9cb3bb00fa bw_math int64 routines 2024-08-24 17:20:46 +02:00
099fb7507b bw_env_gen fix reset w/ skip sustain and strengthened implementation 2024-08-23 17:28:09 +02:00
Paolo Marrone
091b677663 better instructions for android example 2024-07-09 11:45:24 +02:00
862e56840f bw_phase_gen: fix doc 2024-07-07 18:11:28 +02:00
Stefano D'Angelo
6f856ec04c bw_src_int cosmetics 2024-07-05 11:51:56 +02:00
Stefano D'Angelo
07387edcc6 fixed fx(pp)_bitcrush on daisy seed and adapted to latest tibia 2024-07-02 19:12:01 +02:00
Stefano D'Angelo
eef7f35dc5 enforcing combined parameter limits also in *reset_state 2024-07-02 12:08:55 +02:00
Stefano D'Angelo
7b53b045a9 fix missing #endif in bw_bd_reduce 2024-07-02 11:37:08 +02:00
Stefano D'Angelo
99b6ec2996 this should be it 2024-07-02 11:28:45 +02:00
Stefano D'Angelo
e5cc92c72f more of the same 2024-07-02 10:27:05 +02:00
f04fcac4ea more of the same 2024-07-02 07:17:12 +02:00
c2c1979cc3 more of the same + fix new checks in bw_osc_{pulse,tri}_coeffs_is_valid 2024-07-02 06:46:45 +02:00
1e34773da8 adding extra debug checks to process_multi functions (wip) 2024-07-02 06:15:27 +02:00
f623002c27 bw_phase_gen: bw_phase_get_set_phase_inc_{min,max} doc 2024-07-01 19:30:42 +02:00
Stefano D'Angelo
2860ddc141 bw_phase_gen: add phase_inc_{min,max} comparison checks 2024-07-01 17:45:56 +02:00
Stefano D'Angelo
06fc92a2e0 bw_phase_gen: add phase_inc_{min,max} parameters 2024-07-01 17:33:45 +02:00
Stefano D'Angelo
af6ce9ba5e bw_osc_tri cosmetics 2024-06-27 17:12:16 +02:00
93ddf112bb bw_osc_{saw,pulse,tri}: extra validation checks and cosmetics 2024-06-22 18:49:12 +02:00
Stefano D'Angelo
5d3fbdbb0a more freq-related fixes in bw_phase_gen 2024-06-20 09:52:13 +02:00
Stefano D'Angelo
861cdc427e fix rounding bug and extra debug checks for bw_phase_gen 2024-06-18 15:22:13 +02:00
Stefano D'Angelo
5bd685ed7b updated to latest tibia 2024-06-17 10:48:09 +02:00
10a2d1ff45 revised process_multi buffer assumptions 2024-06-15 13:16:08 +02:00
Stefano D'Angelo
1d731eaafb accomodate msvc reporting wrong C++ standard support 2024-04-15 12:15:54 +02:00
Stefano D'Angelo
4dfbded165 fix process() invokation in fxpp_pan 2024-03-19 13:54:26 +01:00
Stefano D'Angelo
5f2a413b4d add gate param to bw_bd_reduce and examples + fix fxpp_bitcrush 2024-03-13 12:28:35 +01:00
Stefano D'Angelo
a4a8ba96ca add bw_dry_wet_get_wet(_cur)() 2024-03-07 18:45:52 +01:00
Stefano D'Angelo
93f571af18 avoid bw_minf() to compute samples in synth* 2024-03-07 16:57:50 +01:00
Stefano D'Angelo
5a4b9dc9b3 fix a few bugs in synth(pp)_{mono,poly} 2024-02-24 19:23:25 +01:00
Stefano D'Angelo
ba9fdc710c some synth(pp)_poly optimization + synth_mono cosmetics 2024-02-24 13:48:50 +01:00
Stefano D'Angelo
e9d80f55ac synth(pp)_mono, some optimization 2024-02-24 11:04:41 +01:00
Stefano D'Angelo
e0bfcdbdd7 damn underlines 2024-02-23 15:09:13 +01:00
Stefano D'Angelo
0b64fcbb61 readme cosmetics 2024-02-23 15:08:29 +01:00
Stefano D'Angelo
5fcbe57ad0 update README 2024-02-23 15:07:34 +01:00
Stefano D'Angelo
7a8ef7ae25 updated changelog 2024-02-23 15:04:45 +01:00
Stefano D'Angelo
4b10a04b3c copyright notices in examples 2024-02-23 14:17:01 +01:00
Stefano D'Angelo
590dbb8177 example instructions remove leftovers 2024-02-23 12:05:01 +01:00
Stefano D'Angelo
442d5ac283 cmd line examples instructions 2024-02-23 12:04:08 +01:00
Stefano D'Angelo
cedcbce960 oops, fix examples readme typo 2024-02-23 11:55:58 +01:00
Stefano D'Angelo
c39e1df4a5 tibia instructions 2024-02-23 11:54:03 +01:00
Stefano D'Angelo
ed80795731 test new examples README 2024-02-23 10:35:13 +01:00
Stefano D'Angelo
d3ec90a16e changed lv2 versions and vst3 guids 2024-02-21 18:26:02 +01:00
Stefano D'Angelo
e6cb568b04 remove useless label 2024-02-21 14:44:45 +01:00
Stefano D'Angelo
3e26125eb4 exagerate some example parameter ranges 2024-02-21 12:26:04 +01:00
Stefano D'Angelo
43d20f5c52 add silence_dc param to bw_bd_reduce, use it in examples 2024-02-21 10:37:20 +01:00
Stefano D'Angelo
61d3459b95 synthpp_poly 2024-02-21 09:03:09 +01:00
Stefano D'Angelo
4f7eb0a82f synth_poly + small fixes synth(pp)_mono 2024-02-20 18:24:49 +01:00
Stefano D'Angelo
cbfae97e42 synthpp_mono + synth_mono adjustments 2024-02-20 14:47:23 +01:00
Stefano D'Angelo
a5e56e2dd1 synth_mono + portamento in ms also in synth(pp)_simple 2024-02-20 11:33:50 +01:00
Stefano D'Angelo
a80aa87b27 fx(pp)_wah 2024-02-16 11:44:29 +01:00
Stefano D'Angelo
2bb3d1c9f5 fx(pp)_vibrato 2024-02-16 11:27:13 +01:00
Stefano D'Angelo
da25dcde75 fx(pp)_trem + fixed some product.json 2024-02-16 10:09:35 +01:00
Stefano D'Angelo
1226e9797d fx(pp)_svf + no more tibia_{clean,gen}.sh juggling 2024-02-16 09:43:18 +01:00
Stefano D'Angelo
3982f14211 fx(pp)_slew_lim 2024-02-16 09:26:10 +01:00
Stefano D'Angelo
3dcfeaf9fa fx(pp)_satur + fixed bw_satur_process_multi gain compensation 2024-02-15 20:49:31 +01:00
Stefano D'Angelo
c9c425e30e fx(pp)_ring_mod 2024-02-15 17:16:46 +01:00
Stefano D'Angelo
ef299091ff fx(pp)_reverb 2024-02-15 16:36:49 +01:00
Stefano D'Angelo
5e5a2f0032 fxpp_phaser for real 2024-02-15 15:48:21 +01:00
Stefano D'Angelo
b9f49672d1 fx(pp)_phaser 2024-02-15 15:42:27 +01:00
Stefano D'Angelo
eff4dab968 fx(pp)_pan 2024-02-15 15:20:26 +01:00
93d960e3b8 DEBUG preprocessor flag 2024-02-14 06:20:00 +01:00
a4924ff832 fx(pp)_{notch,one_pole} 2024-02-14 05:44:11 +01:00
d17387f377 fx(pp)_noise_gate 2024-02-14 05:18:42 +01:00
Stefano D'Angelo
763a024f07 fx(pp)_mm2 2024-02-12 17:54:06 +01:00
Stefano D'Angelo
4769d090c4 fx(pp)_mm1 2024-02-12 17:26:38 +01:00
Stefano D'Angelo
da1a3ef91b fx(pp)_ls1 2024-02-12 13:58:44 +01:00
Stefano D'Angelo
14650e8495 fx(pp)_lp1 2024-02-12 13:48:37 +01:00
Stefano D'Angelo
65e0e13b55 fx(pp)_hs1 2024-02-12 13:40:27 +01:00
Stefano D'Angelo
a4a979ad1d fx(pp)_hp1 2024-02-12 12:21:03 +01:00
Stefano D'Angelo
56f98d6d89 fx(pp)_fuzz 2024-02-12 12:02:02 +01:00
Stefano D'Angelo
2dca881f03 fx(pp)_flanger 2024-02-12 11:21:25 +01:00
Stefano D'Angelo
e828804d35 fx(pp)_eq_3band 2024-02-12 10:54:27 +01:00
397c36a7a0 fx(pp)_drive + fix bw_drive #endif in wrong place 2024-02-11 10:58:11 +01:00
76343595d8 fx(pp)_dist + cleaning 2024-02-11 10:34:23 +01:00
9af1146e48 fx(pp)_delay + cosmetics 2024-02-11 10:09:15 +01:00
93df684ac8 fx(pp)_comb + homogenize c++ examples a bit 2024-02-10 12:27:53 +01:00
9685ac9b4b fx(pp)_clip 2024-02-10 11:45:04 +01:00
Stefano D'Angelo
74737a8787 fx(pp)_chorus + clean some examples + improve tibia_gen.sh 2024-02-10 10:34:07 +01:00
Stefano D'Angelo
17ec290ae6 fixed synthpp_simple on web 2024-02-10 09:25:18 +01:00
Stefano D'Angelo
129d44db76 non-working synthpp_simple/wasm attempt 2024-02-09 18:20:20 +01:00
Stefano D'Angelo
404530cbbe differentiate and fix c++ fx and synth, beginning of synthpp_simple 2024-02-09 17:21:29 +01:00
Stefano D'Angelo
a9a690bc69 fix android-make.json 2024-02-09 15:54:31 +01:00
Stefano D'Angelo
f9e1f5eb73 new synth_simple + cosmetics in fx_balance 2024-02-09 11:35:27 +01:00
Stefano D'Angelo
df5f3837ea fixed bw_{comp,noise_gate}_process_multi 2024-02-08 15:54:42 +01:00
Stefano D'Angelo
0b7da2dda9 added fxpp_comp, fixed/cleaned fx_comp 2024-02-08 15:54:05 +01:00
Stefano D'Angelo
1c74f053db relax sidechain input api in bw_{comp,noise_gate} 2024-02-07 14:09:50 +01:00
Stefano D'Angelo
745ba9c2dd fxpp_cab mostly 2024-02-06 11:56:23 +01:00
Stefano D'Angelo
9b0496474b lots of example-related improvements + fx(pp)_bitcrush 2024-02-06 11:19:39 +01:00
Stefano D'Angelo
684f021476 tibia/ios 2024-02-05 16:34:22 +01:00
4ff4ceed70 add fxpp_{ap2,balance}, fix fx_balance daisy seed, c++ array in non-wasm 2024-02-03 08:09:18 +01:00
Stefano D'Angelo
e4e9643509 finally we can use C++ in web examples 2024-02-02 17:48:53 +01:00
Stefano D'Angelo
1d2f9dda39 introuced BW_CXX_NO_ARRAY 2024-02-02 17:42:12 +01:00
Stefano D'Angelo
2a62abe93b beginning of new c++ examples (fxpp_ap1) 2024-02-02 11:26:00 +01:00
1b4035b5ac removed c++ examples, updated fx_balance and more 2024-02-01 16:32:40 +01:00
156374aca4 just comments 2024-02-01 15:15:47 +01:00
0605204593 replace pragmas with dumb code in bw_{env_gen,hs2,ls2,one_pole,peak} 2024-02-01 15:12:51 +01:00
4b2f07852b updated fx_ap2 and tibia-related scripts 2024-02-01 10:08:32 +01:00
233c9d7303 integrating tibia, fx_ap1 works 2024-02-01 09:56:12 +01:00
37055e65ad added changelog entries for bw_common and bw_math 2024-01-31 10:08:25 +01:00
Stefano D'Angelo
ef8b5626a3 remove useless bw_config.h 2024-01-13 10:54:15 +01:00
2ba9b443c1 introduced BW_NULL 2024-01-02 11:20:52 +01:00
Stefano D'Angelo
4ee0c0d0cc fix two more warnings in bw_math (thx again kevin molcard) 2023-12-08 00:24:04 +01:00
Stefano D'Angelo
2b104fc7f2 fix some sign-related warnings (thx kevin molcard) 2023-12-06 14:40:16 +01:00
Stefano D'Angelo
e6903eef7f fix building examples requiring memory on ios 2023-11-03 13:08:48 +01:00
Stefano D'Angelo
0cb5a29a8b fixed documentation typos in bw_ls2 2023-10-27 15:48:32 +02:00
891fa64c9b new bw_cab modules, fx(pp)_cab examples 2023-10-25 15:35:33 +02:00
92e312766b fixed rounding bug when frequency is tiny and negative in bw_phase_gen 2023-10-17 16:36:27 +02:00
Stefano D'Angelo
df05bf1740 add skip_sustain and always_reach_sustain parameters to bw_env_gen 2023-10-16 15:34:25 +02:00
3ae4947855 cosmetics 2023-10-03 10:39:32 +02:00
cb37f4f977 cosmetics 2023-10-03 10:08:06 +02:00
d1e4e0f7c3 bw_{mm1,mm2,reverb}: fix reset_state 2023-10-03 09:13:38 +02:00
928b0752ff cosmetics 2023-10-03 08:59:09 +02:00
dad7485016 fix bw_env_gen_reset_state (gate_0) + fix doc 2023-09-28 13:31:20 +02:00
e49cae6c8b updated ChangeLog 2023-09-28 07:01:53 +02:00
16d17cb5f4 big cleanup 2023-09-27 20:36:11 +02:00
7b968161ec TODO now lives in a better place + fix typos 2023-09-27 17:44:59 +02:00
dbee544059 remove #include <stdio.h> 2023-09-27 16:51:15 +02:00
Stefano D'Angelo
c1cb51ad84 update doc 2023-09-27 13:46:36 +02:00
Stefano D'Angelo
ff7a768c05 update publications doc 2023-09-27 13:33:54 +02:00
Stefano D'Angelo
34bf3bfeb9 fix build on win32 2023-09-26 08:59:15 +02:00
Stefano D'Angelo
2cef5cd584 update TODO 2023-09-26 08:30:26 +02:00
Stefano D'Angelo
9d4d5759a0 fix bw_phase_gen and build on mac 2023-09-26 08:28:20 +02:00
Stefano D'Angelo
313ec711fe change config.h version to 1.0.0 2023-09-25 17:42:39 +02:00
Stefano D'Angelo
9162c57cb1 more debug 2023-09-25 17:16:42 +02:00
Stefano D'Angelo
8ee4150889 more debug + cosmetics 2023-09-25 16:47:17 +02:00
eb8b057492 fix fxpp_bitcrush 2023-09-24 23:55:51 +02:00
Stefano D'Angelo
68df6bee86 removed sse2neon code from repo 2023-09-23 13:40:38 +02:00
cd0b867d88 update TODO 2023-09-23 07:45:49 +02:00
2bad45aabb updated synth examples 2023-09-23 07:21:55 +02:00
Stefano D'Angelo
d890510d0f finalized bw_reverb + examples + fix bw_dry_wet + cosmetics 2023-09-22 18:34:16 +02:00
Stefano D'Angelo
d5751c0c4c finalized bw_comb + examples + better doc bw_chorus 2023-09-22 16:10:42 +02:00
Stefano D'Angelo
07ff65597f finalized bw_comb + examples + better debug in bw_delay 2023-09-22 14:52:45 +02:00
Stefano D'Angelo
49a06b52eb what happened to README? 2023-09-22 11:23:05 +02:00
Stefano D'Angelo
58a50b3ba1 finalized bw_delay + examples 2023-09-22 11:21:08 +02:00
f267a015b7 update TODO 2023-09-22 07:52:58 +02:00
Stefano D'Angelo
4bc7eda8f3 change C++ process() using std::array in bw_src 2023-09-21 17:05:37 +02:00
Stefano D'Angelo
fc91d59f57 finalized bw_src + extra touches to bw_src_int 2023-09-21 14:32:17 +02:00
Stefano D'Angelo
9b123a28f2 finalized bw_src_int 2023-09-21 12:10:21 +02:00
Stefano D'Angelo
40adc296a2 reverted noise scaling in synth(pp)_mono 2023-09-21 10:37:59 +02:00
Stefano D'Angelo
e3cd1d4e21 finalized bw_pink_filt + updated synth_mono 2023-09-21 10:22:02 +02:00
52d33fa3c5 finalized bw_noise_gen + updated synth(pp)_mono + better bw_gain debug 2023-09-21 07:59:41 +02:00
aefd36aac1 finalized bw_osc_tri + fixed bw_osc_pulse 2023-09-20 16:52:06 +02:00
6d94c36677 finalized bw_osc_pulse 2023-09-20 16:03:13 +02:00
b4898a60b3 finalized bw_osc_saw + updated synth(pp)_mono + better doc/debug 2023-09-20 14:58:33 +02:00
f1d4de6457 improve vst3 makefiles (untested on mac/win) 2023-09-20 11:32:30 +02:00
ac0ffd632a finalized bw_osc_filt + updated synth(pp)_mono 2023-09-20 09:28:36 +02:00
398e051f93 finalized bw_env_gen + updated synth_simple 2023-09-20 08:26:17 +02:00
cb91af4576 finalized bw_{sr_reduce,bd_reduce} + examples 2023-09-19 14:35:38 +02:00
f470af1a92 finalized bw_phaser + examples + improved docs 2023-09-19 10:22:36 +02:00
3e1400922f finalized bw_trem + examples 2023-09-19 08:49:56 +02:00
Stefano D'Angelo
dc93bd675b finalized bw_{ring_mod,osc_sin}, bw_dry_wet (untested) + new fx(pp)_ring_mod + cosmetics 2023-09-18 17:04:11 +02:00
Stefano D'Angelo
baf440a171 finalized bw_phase_gen + updated synth(pp)_simple + better bw_svf doc 2023-09-18 13:41:15 +02:00
31b0afb83e finalized bw_balance + examples 2023-09-16 18:32:56 +02:00
05c6f58997 fix bw_*_state_is_valid in finalized modules 2023-09-15 21:21:51 +02:00
99fc95a693 finalize bw_{pan,ppm} + examples + fix bw_env_follow debug, bw_wah reset 2023-09-15 21:05:50 +02:00
Stefano D'Angelo
7b65b75d92 finalized bw_noise_gate + examples + fix bw_{comp,one_pole,slew_lim} + better bw_rcpf() doc 2023-09-15 16:27:04 +02:00
Stefano D'Angelo
19e37fd6e8 finalized bw_comp + fixed missing smooth init + examples 2023-09-15 11:01:58 +02:00
69b74c4ccb finalized bw_env_follow, untested + wip bw_comp 2023-09-15 08:30:01 +02:00
0ef455722f finalized bw_fuzz + examples 2023-09-14 11:07:33 +02:00
77db1a3cdb finalized bw_drive + examples + fix reset in bw_{cilp,satur} 2023-09-14 10:43:55 +02:00
8793af1864 finalized bw_dist + examples + better doc bw_wah 2023-09-14 09:36:34 +02:00
7d6409772f fixed and improved bw_src_int implementation 2023-09-13 16:55:06 +02:00
a3f42c8c57 finalized bw_satur + examples + fix reset in bw_clip 2023-09-13 13:23:15 +02:00
dae41a3831 finalized bw_clip + examples + stronger debug + uncheck coeffs in
process1
2023-09-13 11:36:26 +02:00
13987673f5 proper computing of initial values in finalized modules 2023-09-12 17:05:51 +02:00
1d763ef31e finalized bw_wah + examples 2023-09-12 16:49:33 +02:00
Stefano D'Angelo
524ce724bc set harder limits for gains in bw_{gain,hs1,hs2,ls1,ls2,peak} 2023-09-11 14:40:33 +02:00
Stefano D'Angelo
34402d720e now reset_state deals explicitly with initial values 2023-09-11 13:29:36 +02:00
Stefano D'Angelo
d9e021aca3 finalized bw_{notch,peak} + examples 2023-09-11 10:52:41 +02:00
Stefano D'Angelo
213bac4209 finalized bw_ls2 + fixed bw_hs2 prewarp cutoff + examples 2023-09-08 23:19:03 +02:00
Stefano D'Angelo
d50e7536d5 finalized bw_mm2 + examples 2023-09-08 22:21:08 +02:00
Stefano D'Angelo
04b027f564 finalize bw_hs2 (untested) + more debug in bw_{ls1,hs1} + fix doc 2023-09-08 07:42:53 +02:00
Stefano D'Angelo
b36a56ab70 fix bw_ap1 output polarity + finalize bw_ap2 + examples + cosmetics 2023-09-05 11:35:30 +02:00
Stefano D'Angelo
e12db3795a change bp polarity + limit prewarp in bw_svf + cosmetics 2023-09-05 09:46:09 +02:00
Stefano D'Angelo
a16cdd9c73 changed valid cutoff/prewarping range everywhere 2023-09-05 07:16:21 +02:00
Stefano D'Angelo
a7b3f5ce16 fix, finalize bw_svf + examples + more restrict + better debug 2023-09-03 20:22:52 +02:00
Stefano D'Angelo
72ba53385c finalize all 1st order filter modules and examples + bw_*_reset_state_multi() and init values + bw_gain get gain improv + use bw_gain_process1() in bw_dry_wet 2023-09-01 19:43:50 +02:00
Stefano D'Angelo
2d653f471f finalized bw_ls1 + examples + fix bw_hs1 changelog 2023-08-31 12:06:34 +02:00
Stefano D'Angelo
e4aef951f2 finalized bw_hs1 + examples 2023-08-31 10:47:20 +02:00
Stefano D'Angelo
003c3b62d7 fix bw_gain + finalize bw_mm1 + examples 2023-08-31 07:23:26 +02:00
Stefano D'Angelo
d5dda7f26b add coeffs to *state_is_valid everywhere it's implemented 2023-08-30 20:11:02 +02:00
Stefano D'Angelo
99afa41b8d almost finalized bw_gain + cosmetics 2023-08-30 19:42:06 +02:00
Stefano D'Angelo
537cd5d17b fix debug in bw_{one_pole,slew_lim,lp1,hp1} + force min out in bw_ppm + cosmetics 2023-08-30 17:54:09 +02:00
Stefano D'Angelo
d15e7951f7 finalize bw_hp1 + examples + fix bw_slew_lim + ChangeLogs/cosmetics 2023-08-30 17:12:27 +02:00
Stefano D'Angelo
637cefb636 added pragmas to calm gcc in bw_{env_gen,hs2,ls2,one_pole,peak} 2023-08-30 11:44:59 +02:00
Stefano D'Angelo
d2994b0e12 finalized bw_lp1, examples + more debug for bw_slew_lim + cosmetic changes 2023-08-30 11:00:11 +02:00
Stefano D'Angelo
e9a935a964 fix bw_one_pole + finalize and fix bw_slew_lim + update fx*slew_lim 2023-08-29 13:11:12 +02:00
Stefano D'Angelo
af2d21e45c finalize bw_one_pole + adjust example Makefiles + fix stupid bug in bw_dist 2023-08-29 10:49:08 +02:00
Stefano D'Angelo
26f98b3ec7 some code formatting and bug fix in bw_{note_queue,one_pole} 2023-08-28 19:42:35 +02:00
Stefano D'Angelo
2792602e2f some code formatting in bw_{buf,common,math,note_queue,rand,voice_alloc} 2023-08-28 17:19:19 +02:00
6c29b1f0cd wip on many modules, all is broken, all is good 2023-08-20 15:49:04 +02:00
fe02a79329 changed default gain compensation value in bw_{clip,satur} 2023-08-15 06:48:19 +02:00
da30569d61 changed bw_drive input gain to be more like other distortions 2023-08-15 06:37:51 +02:00
3d63665df2 adjusted peak cutoff in bw_dist 2023-08-15 06:26:27 +02:00
c9ca239a0b improved bw_fuzz algorithm + more bw_drive improvements 2023-08-15 05:28:55 +02:00
52233a9d63 improved bw_drive algorithm + added notes to bw_osc_{pulse,tri} 2023-08-14 17:34:22 +02:00
b50e429aad more TODO 2023-08-14 15:06:09 +02:00
82f66009f7 cite scientific articles 2023-08-14 15:05:30 +02:00
c3d8546e75 ensure buffers are not NULL in bw_buf + remove useless array of nullptr
in synthpp_poly
2023-08-14 12:51:53 +02:00
4313cea18c renamed bw_env_gen_update_state_ctrl as bw_env_gen_process_ctrl 2023-08-14 12:22:56 +02:00
ee94fba57b now using backward Euler method in bw_one_pole 2023-08-14 12:11:11 +02:00
262d4f9a5d clarified buffer rules in bw_src* 2023-08-14 11:49:29 +02:00
12a574c07d restrict qualified everything 2023-08-14 09:57:06 +02:00
399325359d renamed bw_{drywet,ringmod} -> bw_{dry_wet,ring_mod} 2023-08-14 06:05:21 +02:00
6b38be600e updated init value name in bw_{slew_lim,one_pole} + updated TODO 2023-08-13 16:00:19 +02:00
ec1a70835c added const everywhere + fixed bw_buf + fixed c++ api in bw_src +
improved bw_src + using new buf api in synthpp_poly
2023-08-13 15:37:15 +02:00
61c2b48817 polished bw_{svf,wah} + removed bwpps + fixed examples 2023-08-13 11:55:25 +02:00
eb49fedd5e polished bw_src{,_int} + removed bwpps + fixed examples 2023-08-13 11:42:06 +02:00
a5e4fa0c76 polished bw_{reverb,ringmod,satur,slew_lim,sr_reduce,trem} + removed
bwpps + fixed examples
2023-08-13 11:18:45 +02:00
ccc94c1b0f polished + bw_{phaser,pink_filt,ppm} + removed bwpps + fixed examples 2023-08-13 06:57:50 +02:00
f55a9a146b polished bw_{pan,peak,phase_gen} + removed corresponding bwpp + fixed
examples
2023-08-13 06:36:35 +02:00
40503b7cb1 polished bw_osc* + removed bwpp_osc* + fixed examples 2023-08-13 05:28:45 +02:00
2a5d1721f8 polished bw_{mm1,mm2,noise_gate,noise_gen,notch} + removed corresponding bwpp and bwpp_note_queue + fixed examples 2023-08-13 04:55:29 +02:00
22030272d9 polished bw_{hp1,hs1,hs2,lp1,ls2,ls2} + removed corresponding bwpp_ +
fixed examples + fixed doc in bw_clip
2023-08-13 04:18:10 +02:00
7e32e18d66 polished bw_{env_follow,env_gen,fuzz,gain} + removed
bwpp_{env_follow,env_gen,fuzz,gain} + fix examples
2023-08-12 19:46:14 +02:00
f89188f790 polished bw_{delay,dist,drive,drywet} + removed
bwpp_{delay,dist,drive,drywet} + fixed doc in bw_{clip,comb,comp} + fixed examples
2023-08-12 18:45:19 +02:00
425aa020e1 polished bw_{comb,comp} + removed bwpp_{comb,comp} + fix examples 2023-08-12 18:00:12 +02:00
ac7d49028b polished bw_{chorus,clip} + removed bwpp_{chorus,clip} + fixed doc typos
in bw_{balance,bd_reduce} + fixed examples
2023-08-12 17:38:55 +02:00
7a2630951f polished bw_{balance,bd_reduce,one_pole} + removed
bwpp_{balance,bd_reduce} + fixed fxpp_bitcrush
2023-08-12 17:20:34 +02:00
5ec809bc4f polished bw_{ap1,ap2,one_pole} + removed bwpp_{ap1,ap2} + fixed examples 2023-08-12 16:51:19 +02:00
48275d077d improved bw_one_pole + removed bwpp_one_pole + c++ reshuffling 2023-08-12 10:15:04 +02:00
225ef9108c add overloaded C++ API w/ C-style arrays in bw_buf + update examples 2023-08-12 08:04:51 +02:00
3a948b1c99 improve arguments in bw_buf + remove BW_SIZE_T and use C++ buf api in examples 2023-08-11 16:54:01 +02:00
55a78a5ab4 done bw_{buf,common,math,note_queue,rand,voice_alloc} + related changes 2023-08-11 12:49:05 +02:00
41f56ec91c update doc and TODO 2023-08-11 10:25:41 +02:00
7616c590a0 fixed input validity ranges in bw_sinhf and bw_acoshf + doc and tests 2023-08-11 10:15:43 +02:00
Stefano D'Angelo
39bad57099 more of the same 2023-08-10 17:06:45 +02:00
Stefano D'Angelo
84d82d039b forgot to remove precision suffix to bw_sqrtf() in bw_peak 2023-08-10 16:19:20 +02:00
Stefano D'Angelo
0da7b31504 more bw_math doc improvements + more tests 2023-08-10 16:17:45 +02:00
Stefano D'Angelo
6e2f5b1bce now everything should work ok again 2023-08-10 10:17:22 +02:00
08c8656259 removing precision suffixes from bw_math functions (now all is broken) 2023-08-10 08:00:44 +02:00
ffe1db7749 updated bw_math ChangeLog + more math tests 2023-08-10 07:48:14 +02:00
88fad66dd6 bw_math: more improvements, more tests (prev commit: also fixes) 2023-08-09 19:17:54 +02:00
c25bd5bc78 bw_math wip + settling on c++11 + some tests 2023-08-09 13:11:09 +02:00
da517ed4bc using size_t and improved bw_common 2023-08-08 10:46:05 +02:00
Stefano D'Angelo
c1e16c4338 better ios instructions 2023-08-07 13:26:04 +02:00
1425 changed files with 55785 additions and 42713 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
build
node_modules
package-lock.json
.DS_Store

121
ChangeLog
View File

@ -1,3 +1,124 @@
1.1.0
-----
* Added new bw_cab module.
* Added new fx_cab and fxpp_cab examples.
* Added skip_sustain and always_reach_sustain parameters to bw_env_gen.
* Added silence_dc parameter to bw_bd_reduce.
* Added BW_NULL definition in bw_common and used it throughout the entire
codebase.
* Added BW_CXX_NO_ARRAY to control the inclusion of features depending on
C++ <array>.
* Relaxed sidechain APIs in bw_comp and bw_noise_gate to accept BW_NULL to
represent null sidechain inputs.
* Added setThreshLin() and setThreshDb() methods to the C++ APIs of bw_comp
and bw_noise_gate to fix naming typos without breaking the API.
* Reworked all example code and added LV2, command line application, and
C++/WebAssembly targets.
* Fixed gain compensation in bw_satur_process_multi().
* Fixed rounding bug in bw_phase_gen when frequency is tiny and negative.
* Fixed smoothing of decay parameter in bw_reverb.
* Fixed computation of initial states in bw_mm1 and bw_mm2.
* Fixed sign-related issues in bw_hash_sdbm(), bw_truncf(), bw_roundf(), and
bw_sqrtf() (thanks Kevin Molcard).
* Replace GCC pragmas to suppress uninitalized variable warnings with
useless harmless statements in bw_env_gen, bw_hs2, bw_ls2, bw_one_pole, and
bw_peak.
* Fixed documentation typos in bw_ls2.
* Updated examples' documentation.
1.0.0
-----
* Removed C++ headers and moved C++ code to now-unique C/C++ headers.
* Added extern "C" linkage specifier to C functions declarations and
definitions.
* Added bw_*_reset_state_multi() and updated C++ APIs in this regard.
* Now bw_*_reset_state() take initial input values and return initial output
values.
* Added more const and BW_RESTRICT specifiers to input arguments.
* Added overloaded C++ functions taking C-style arrays as arguments.
* Added debugging code to all modules and improved existing debugging code.
* Removed usage of reserved identifiers and designated initializers.
* Now using size_t rather than BW_SIZE_T and for counting items.
* Improved documentation w.r.t. validity of input values and approximation
errors.
* Added pragmas to silence bogus GCC uninitialized variable warnings.
* Made control over inclusion of standard library headers more explicit via
specific preprocessor definitions.
* Introduced BW_NO_DEBUG and prevented useless inclusion of assert.h.
* Changed order of arguments to improve consistency in bw_buf.
* Renamed bw_min0xf() as bw_min0f() and bw_max0xf() as bw_max0f().
* Removed precision suffixes from function names in bw_math.
* New implementations for bw_min0f(), bw_max0f(), bw_minf(), bw_maxf(), and
bw_clipf().
* Fixed rounding bug in bw_roundf() when absolute value of input was in [0.5f,
1.f].
* Fixed bw_ceilf() for negative input values.
* Fixed bw_sqrtf() for very large input values and improved implementation.
* Fixed input validity ranges in bw_asinhf() and bw_acoshf().
* Removed redundant status member from bw_note_queue_event.
* Possibly improved memeory layout of bw_note_queue.
* Clarified ambiguity in the documentation of bw_note_queue_status.
* Specified that velocity can be negative in bw_voice_alloc_opts.
* Fixed output polarity in bw_ap1.
* Added bw_bd_reduce_set_sample_rate().
* Changed default value for gain compensation to off in bw_clip.
* Fixed missing smoothing filter initialization in bw_comp.
* Fixed missing forced coefficients' update in bw_comp_reset_coeffs().
* Improved and strengthened algorithm in bw_comp.
* Removed read() and write() from C++ API in bw_delay.
* Adjusted internal peak cutoff to more sensible value in bw_dist.
* Improved algorithm to be a bit more faithful to the original in bw_drive.
* bw_drywet renamed as bw_dry_wet.
* Renamed bw_env_gen_update_state_ctrl() as bw_env_gen_process_ctrl().
* Faster and more robust implementation in bw_env_gen.
* Improved algorithm to be a bit more faithful to the original in bw_fuzz.
* Added bw_gain_get_gain_lin().
* Renamed bw_gain_get_gain() as bw_gain_get_gain_cur().
* Simplified implementation to use less memory in bw_gain.
* Added prewarp_at_cutoff and prewarp_freq parameters in bw_ap1, bw_ap2,
bw_hp1, bw_hs1, bw_ls1, bw_ls2, bw_notch, and bw_peak.
* Fixed documentation to indicate correct default parameter values in bw_hs1,
bw_hs2, bw_ls1, bw_ls2, bw_notch, and bw_peak.
* Fixed bug when setting default parameter values in bw_hs1_init().
* Limited actual prewarping frequency to prevent instability in bw_lp1.
* Fixed missing smoothing filter initialization in bw_noise_gate.
* Fixed missing forced coefficients' update in bw_noise_gate_reset_coeffs().
* Added bw_noise_gen_reset_coeffs(), bw_noise_gen_update_coeffs_ctrl(), and
bw_noise_gen_update_coeffs_audio().
* Improved and strengthened algorithm in bw_noise_gate.
* Now using backward Euler rather than impulse invariant method in
bw_one_pole.
* Added coeffs argument to bw_one_pole_state_is_valid().
* Changed implementation topology to use less memory in bw_osc_filt.
* Now antialiasing should work also with negative input increments in
bw_osc_pulse, bw_osc_saw, and bw_osc_tri.
* Clearly specified validity ranges for audio-rate signals in bw_osc_pulse,
bw_osc_saw, bw_osc_sin, and bw_osc_tri.
* Added bw_osc_saw_set_sample_rate(), bw_osc_saw_reset_coeffs(),
bw_osc_saw_update_coeffs_ctrl(), and bw_osc_saw_update_coeffs_audio().
* Now using parabolic curves instead of trigonometric ones in bw_pan.
* Fixed smoothing coefficients update in bw_phase_gen_reset_coeffs().
* Removed internal limits on cutoff frequency in bw_phaser.
* Added bw_pink_filt_reset_coeffs(), bw_pink_filt_update_coeffs_ctrl(), and
bw_pink_filt_update_coeffs_audio().
* Fixed type of coefficient in bw_pink_filt_process1().
* Enforced minimum output value -600.f in bw_ppm.
* bw_ringmod renamed as bw_ring_mod.
* Fixed inverted-polarity modulation (for real this time) in bw_ring_mod.
* Changed default value for gain compensation to off in bw_satur.
* Added bw_slew_lim_process1_none().
* Fixed setting of default parameter values in bw_slew_lim_init().
* Fixed documentation of bw_slew_lim_update_coeffs_audio().
* Added bw_sr_reduce_set_sample_rate(), bw_sr_reduce_reset_coeffs(),
bw_sr_reduce_update_coeffs_ctrl(), and bw_sr_reduce_update_coeffs_audio().
* Removed useless computation when upsampling in bw_src.
* Clarified when the same buffers cannot be used for both input and output in
bw_src and bw_src_int.
* Fixed frequency response and improved speed in bw_src_int.
* Changed model to get positive polarity at the bandpass output in bw_svf.
* Limited actual prewarping frequency to prevent instability in bw_svf.
* Adjusted examples accordingly to changes.
0.6.0
-----
* Added support and examples for Android and iOS.

View File

@ -6,20 +6,18 @@ You can find information and documentation [on the official web page](https://ww
## Subfolders
* examples: synth and an effect examples in VST3, Web Audio, and Daisy Seed formats;
* include: header files.
* `examples`: synth and an effect examples in VST3, LV2, Web Audio, Daisy Seed, Android app, iOS app, and command line program formats;
* `include`: header files.
## Legal
Copyright (C) 2021-2023 Orastron Srl unipersonale.
Copyright (C) 2021-2024 Orastron Srl unipersonale.
Authors: Stefano D'Angelo, Paolo Marrone.
All the code in the repo is released under GPLv3. See the LICENSE file. Alternatively, we offer a commercial license that doesn't restrict usage with respect to time, projects, or developers involved. More details [on the official web page](https://www.orastron.com/brickworks#license-pricing).
All the code in the repo is released under GPLv3. See the `LICENSE` file. Alternatively, we offer a commercial license that doesn't restrict usage with respect to time, projects, or developers involved. More details [on the official web page](https://www.orastron.com/brickworks#license-pricing).
The file examples/common/vst3/plugin.cpp contains code from sse2neon (https://github.com/DLTcollab/sse2neon/), which was released under the MIT license. Details in said file.
The file include/bw\_rand.h contains code from https://nullprogram.com/blog/2017/09/21/, which was released into the public domain by its author.
The `include/bw_rand.h` file contains code from https://nullprogram.com/blog/2017/09/21/, which was released into the public domain by its author.
VST is a registered trademark of Steinberg Media Technologies GmbH.

17
THANKS.md Normal file
View File

@ -0,0 +1,17 @@
We wish to thank and give credit to:
- the adopters of this software, of which at the moment we can publicly mention, in alphabetical order:
- [Elk Audio](https://www.elk.audio/);
- [Faselunare](http://faselunare.com/);
- Kevin Molcard for finding compilation warnings that needed fixing in Brickworks 1.0.0;
- users participating to [this thread on the KVR Audio forum](https://www.kvraudio.com/forum/viewtopic.php?f=33&t=589519) for providing useful feedback;
- [Mads Kjeldgaard](https://madskjeldgaard.dk/) for publishing [instructions to build for the Daisy Seed and uploading the firmware](https://madskjeldgaard.dk/posts/daisy-setup/);
- [Hereket](https://hereket.github.io/) for providing instructions on [how to build an Android app without Android Studio or Gradle](https://hereket.github.io/posts/android_from_command_line/);
- the authors of the following publications, which some algorithms in this software are based on:
- J. Dattorro, "Effect Design, Part 1: Reverberator and Other Filters", J. Audio Eng. Soc., vol. 45, no. 9, pp. 660-684, September 1997;
- J. Dattorro, "Effect Design, Part 2: Delay-Line Modulation and Chorus", J. Audio Eng. Soc., vol. 45, no. 10, pp. 764-788, October 1997;
- V. Valimaki and A. Huovilainen, "Antialiasing Oscillators in Subtractive Synthesis", IEEE Signal Processing Magazine, vol. 24, no. 2, pp. 116-125, March 2007;
- M. E. O'Neill, "PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation", September 2014, available at <https://www.cs.hmc.edu/tr/hmc-cs-2014-0905.pdf>;
- J. D. Parker, V. Zavalishin, and E. Le Bivic, "Reducing the Aliasing of Nonlinear Waveshaping Using Continuous-Time Convolution", Proc. 19th Intl. Conf. Digital Audio Effects (DAFx-16), pp. 137-144, Brno, Czech Republic, September 2016.
- C. Wellons, "Finding the Best 64-bit Simulation PRNG", September 2017, available at <https://nullprogram.com/blog/2017/09/21/>;
- M. Holters and J. D. Parker, "A Combined Model for a Bucket Brigade Device and its Input and Output Filters", 21st Intl. Conf. Digital Audio Effects (DAFx-18), Aveiro, Portugal, September 2018;
- P. P. La Pastina and S. D'Angelo, "Optimal Integer Order Approximation of Fractional Order Filters", Proc. 24th Intl. Conf. Digital Audio Effects (DAFx20in21), pp. 89-96, Vienna, Austria, September 2021.

104
TODO
View File

@ -1,104 +0,0 @@
1.0.0
-----
code:
* debugging
* check all examples again
* osc post filter (and one pole init, slew rate, etc.) val from input? set state instead?
* audio rate optional pulse width/slope inputs?
* should rather use backward Euler in bw_onepole?
* one pole process const input? (return also if const out)
* check const restrict etc.
* define BW_RESTRICT to __restrict or similar when the compiler supports it
* empty functions etc. to keep consistency and forward compatibility?
* float in [-1,1] for velocity, pitch bend, mod wheel
* should clip slope in triangle?
* common smoothing policy (as control rate as possible?) - smoothing control?
* svf bandpass out polarity too confusing (inverted in mm2)?
* better common config.h (less stuff maybe, or more stuff - decide)
* pan process with no out: should just reset coeffs?
* get_y_z1, common strategy?
* sqrt(0) and corner cases, common strategy?
* use BW_SIZE_T, check constant types
* bw_satur gain compensation to divide by actual gain (derivative) rather than gain parameter?
* cite papers, thank authors
* add initial state (x0) to reset state of lp1, ap1, mm1, hs1, ls1, others? all?
* bw_comb: should also modulate feedback?
* bw_comb: integer target delay values?
* bw_svf/lp1 automatically limited (max) prewarp frequency to avoid instability?
* prewarp control in all derived filtering modules
* bw_math: review types
* src inside distortions? w/ control from outside?
* bw_fuzz gain compensation?
* remove union value = {.f = v};? (std c++ latest) - C++ compound literals...
* make gain of distortions homogeneous?
* max_delay -> set sample rate? see reverb
* revise typedef style (see https://stackoverflow.com/questions/54752861/using-an-anonymous-struct-vs-a-named-struct-with-typedef)
* x_y vs xy var names
* don't use reserved identifiers (https://devblogs.microsoft.com/oldnewthing/20230109-00/?p=107685)
* update state ctrl -> process ctrl?
* mem req -> return value of set sample rate?
* peak gain + Q ???
* bwpp -> bwxx
* sr_reduce reset_coeffs? update_coeffs? process_multi?
* fix definitions leading to X ** -> const X ** error https://isocpp.org/wiki/faq/const-correctness#constptrptr-conversion, fix fx_balance, fx_pan, synth_poly
* drywet -> dry_wet, ringmod -> ring_mod, etc?
* allow nullptr in C++ wrappers where process_multi arg can be NULL
* better src filter
* bw_env_gen process_multi gate const?
* c++ get coeffs/state? or public? src nIn/OutSamples case (array vs single value), delay read/write, process1? process single?
* bw_buf invert src dest order?
* check unititialized warnings
* voice alloc mode -> voice alloc priority
* should remove bw_config?
* use custom NDEBUG?
* NULL (C) vs BW_SIZE_T (non-C)...?
* clearly specify that state is tied to a particular set of coeffs (1:N)
* modulation vs process (multi) no update (post 1.0.0)???
build system:
* single header generation (vs modules in bwp... to think about)
post 1.0.0
----------
code:
* blep etc in a module?
* optimize triangle generation for constant pulse width
* compute bit depth reduction only when input changes? (state, option?)
* avoid "force" in coeffs update by using inline functions?
* csch for bw_peak bandwidth -> Q, inv sqrt ls2 hs2
* separate tests and examples?
* define common midi CCs for examples
* MEM_REQ_ROUGH() macro?
* web examples: need to export memset?
* check unused param warning visual studio
* float -> double, etc. ?
* bw_buf_copy (to be used in bw_slew_lim)?
* src post filt?
* web examples construction/destruction
* web effect mono->stereo and stereo->mono inputs? or display "input needs to be n channels"?
* fix vst3 mapped values (visible in Ableton Live) and short names
* polish examples (ranges, etc.)
* dump data structures (see note queue) and indicate error precisely
* process (multi) no update
* examples cpu usage
build system:
* make makefiles handle paths with spaces etc
* can run su on windows? (system-wide install)
* make autodependencies (.d?) - https://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
* make from... directories
* recursive make?
* make hashdeps (https://github.com/olipratt/hashdeps)?
* VC, XCode, etc project files?
* single header(s)
* cross compile (rpi etc.)
* better use of xcodegen (see xcode warnings) and/or consider tuist (https://tuist.io/), bazel (https://bazel.build/), pants (https://www.pantsbuild.org/), buck (https://buck2.build/), please (https://please.build/index.html) for mobile apps
* homogenize android and ios common code (e.g., same index)
--
code:
* sample rate-constant coeffs? (pan case)
* sr-dependent vs cr-dependent coeffs? see synth poly example

View File

@ -1,34 +1,61 @@
# Examples
Each subfolder contains an example application, except the `common` folder, which contains common code for all examples.
## Premise
In order to build an example just `cd` to `*example*/*platofrm*` and use the following platform-specific instructions.
Each of these examples consists of a common part of code, shared by all examples, which contains all necessary boilerplate code and is not Brickworks-related, and a specific part which actually implements the audio engine. The common code is copied/generated by an external tool called [Tibia](https://git.orastron.com/orastron/tibia), which you first need to [run as outlined below](#tibia).
Building for any platform requires a recent enough version of [GNU Make](https://www.gnu.org/software/make/) installed.
Each subfolder contains an example, except the `common` folder, which contains a good deal of common code and common Tibia-related metadata. In order to build an example just `cd` to <code>*example*/*platform*</code> and use the following platform-specific instructions. Building for any platform requires a recent enough version of [GNU Make](https://www.gnu.org/software/make/) installed.
## Tibia
### Prerequisites
You need [Node.js](https://nodejs.org/en) and [npm](https://www.npmjs.com/) to be installed.
### Usage
Get [Tibia 0.0.4](https://git.orastron.com/orastron/tibia/releases/tag/v0.0.4), place it in the same directory as the Brickworks folder, and rename it as `tibia`. Then either `cd` to the Tibia folder and `npm install dot`, or install the [dot npm package](https://www.npmjs.com/package/dot) globally and make sure that the `NODE_PATH` environment variable is corretly set to find it.
Now you can `cd` to the `examples` folder and run `./tibia_gen.sh` to copy/generate files for all examples, or otherwise run `./tibia_gen.sh common` to only copy/generate files in `examples/common` or <code>./tibia\_gen.sh *example*</code> to do the same for files in <code>examples/*example*</code>.
If you want to remove all files copied/generated by Tibia, and thus restore the `examples` directory as it would appear in the official repository, run `./tibia_clean.sh` from the `examples` directory.
## VST3
### Prerequisites
Windows (via [MSYS2/Mingw-w64](https://www.msys2.org/)), macOS, and Linux OSes are supported. Building tested with [GCC](https://gcc.gnu.org/), probably also works with [Clang](https://clang.llvm.org/).
You also need to download the [VST3 SDK](https://www.steinberg.net/developers/) and place it in the same folder as the Brickworks folder, or otherwise edit `common/vst3/vst3.mk` and change the `VST3_SDK_DIR` variable to point to the correct directory.
You also need to download or clone the [VST3 C API](https://github.com/steinbergmedia/vst3_c_api) and place it in the same folder as the Brickworks folder, or otherwise edit `common/src/vst3-make.json` and change `cflags` to point to the correct directory then finally [run Tibia](#tibia), or invoke `make` with appropriate `CFLAGS` straight from the command line.
### Build
In order to build just type `make`. You'll find the resulting VST3 directory in `build/example.vst3`.
In order to build just type `make`. You'll find the resulting VST3 directory in <code>build/bw\_example\_*example*.vst3</code>.
### Installation