From d84da6cdfb9027a67b8ab50fe2c23374acc3b245 Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Sat, 8 Jan 2011 18:27:40 +0100 Subject: Added some of the bugfixes to the note_compiler and removed use_pfactor --- note_compiler/main.cpp | 133 +++++++++++++++++-------------------------------- 1 file changed, 47 insertions(+), 86 deletions(-) (limited to 'note_compiler/main.cpp') diff --git a/note_compiler/main.cpp b/note_compiler/main.cpp index 38302ef..47ed685 100644 --- a/note_compiler/main.cpp +++ b/note_compiler/main.cpp @@ -92,20 +92,15 @@ void write_filter_decs() void write_pfactor_decs() { - if (prog.use_pfactor) - { - out << "\t\tpfactor_value_t pfactor;\n" - "\t\tstruct\n" - "\t\t{\n"; - write_osc_decs2(); - if ((prog.filter.enabled==true) || (prog.filter.enabled_const==false)) - out << "\t\t\tfilter_params_t filter_params;\n"; - else - comment << "\t\t\t//filter is disabled\n"; - out << "\t\t} orig;\n"; - } + out << "\t\tpfactor_value_t pfactor;\n" + "\t\tstruct\n" + "\t\t{\n"; + write_osc_decs2(); + if ((prog.filter.enabled==true) || (prog.filter.enabled_const==false)) + out << "\t\t\tfilter_params_t filter_params;\n"; else - comment << "\t\t//pfactors/velocity influence are disabled\n"; + comment << "\t\t\t//filter is disabled\n"; + out << "\t\t} orig;\n"; } @@ -139,9 +134,8 @@ void write_ctor() for (i=0;ipfactor.filter_env, vel);\n" - "\tpfactor.filter_res=calc_pfactor(curr_prg->pfactor.filter_res, vel);\n" - "\tpfactor.filter_offset=calc_pfactor(curr_prg->pfactor.filter_offset, vel);\n" - "\t\n"; - } - - out << "\tfor (int i=0;i<"<pfactor.out[i], vel);\n" - "\t\t\n" - "\t\tfor (int j=0;j<"<pfactor.fm[i][j], vel);\n" - "\t}\n"; + out << "\tpfactor.filter_env=calc_pfactor(curr_prg->pfactor.filter_env, vel);\n" + "\tpfactor.filter_res=calc_pfactor(curr_prg->pfactor.filter_res, vel);\n" + "\tpfactor.filter_offset=calc_pfactor(curr_prg->pfactor.filter_offset, vel);\n" + "\t\n"; } + out << "\tfor (int i=0;i<"<pfactor.out[i], vel);\n" + "\t\t\n" + "\t\tfor (int j=0;j<"<pfactor.fm[i][j], vel);\n" + "\t}\n"; + out << "}\n"; } @@ -263,20 +248,17 @@ void write_apply_pfactor() out << "void Note::apply_pfactor()\n" "{\n"; - if (prog.use_pfactor) + if ((prog.filter.enabled==true) || (prog.filter.enabled_const==false)) + out << "\tfilter_params.env_amount=orig.filter_params.env_amount*pfactor.filter_env /ONE;\n" + "\tfilter_params.freqfactor_offset=orig.filter_params.freqfactor_offset*pfactor.filter_offset /ONE;\n" + "\tfilter_params.resonance=orig.filter_params.resonance*pfactor.filter_res /ONE;\n" + "\t\n"; + + for (int i=0;i>SCALE;\n" - "\tfor (int i=0;i<"<>SCALE;\n"; - } + out << "\tosc"<>SCALE;\n" + "\tfor (int i=0;i<"<>SCALE;\n"; } out << "}\n"; @@ -661,15 +643,16 @@ void write_set_param() { out << "void Note::set_param(const parameter_t &p, fixed_t v)\n" "{\n" - "\toscillator_t *sel_osc=NULL;\n" - "\tEnvelope *sel_env=NULL;\n" + "\toscillator_t* sel_osc=NULL;\n" + "\toscillator_t* sel_orig_osc=NULL;\n" + "\tEnvelope* sel_env=NULL;\n" "\t\n" "\tswitch (p.osc)\n" "\t{\n"; for (int i=0;ifm_strength[p.index]=v*pfactor.fm[p.osc][p.index] >>SCALE; break;\n" - "\t\tcase OUTPUT: sel_osc->output=v*pfactor.out[p.osc] >>SCALE; break;\n"; - else - out << "\t\tcase MODULATION: sel_osc->fm_strength[p.index]=v; break;\n" - "\t\tcase OUTPUT: sel_osc->output=v; break;\n"; - if ((prog.filter.enabled==true) || (prog.filter.enabled_const==false)) { - out << "\t\t\n" - "\t\tcase FILTER_ENABLED: output_note(\"NOTE: cannot enable filter in playing notes\"); break;\n" - "\t\t\n"; - + include_file("set_param.filter"); if (prog.filter.env_settings.enabled) - include_file("set_param.2"); + include_file("set_param.filterenv"); else include_file("set_param.nofilterenv"); - - if (prog.use_pfactor) - out << "\t\tcase FILTER_ENV_AMOUNT: filter_params.env_amount=float(v*pfactor.filter_env)/ONE/ONE; break;\n" - "\t\tcase FILTER_OFFSET: filter_params.freqfactor_offset=float(v*pfactor.filter_offset)/ONE/ONE; break;\n" - "\t\tcase FILTER_RESONANCE: filter_params.resonance=float(v*pfactor.filter_res)/ONE/ONE; break;\n"; - else - out << "\t\tcase FILTER_ENV_AMOUNT: filter_params.env_amount=float(v)/ONE; break;\n" - "\t\tcase FILTER_OFFSET: filter_params.freqfactor_offset=float(v)/ONE; break;\n" - "\t\tcase FILTER_RESONANCE: filter_params.resonance=float(v)/ONE; break;\n"; - - out << "\t\tcase FILTER_TREMOLO: filter_params.trem_strength=v; break;\n" - "\t\tcase FILTER_TREM_LFO: filter_params.trem_lfo=v; break;\n"; } else include_file("set_param.nofilter"); -- cgit v1.2.3