00001 /*************************************************************************** 00002 * Copyright (C) 2010 by Luigi Negretti Lanner * 00003 * luigi.negrettilanner@gmail.com * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU General Public License as published by * 00007 * the Free Software Foundation; either version 2 of the License, or * 00008 * (at your option) any later version. * 00009 * * 00010 * This program is distributed in the hope that it will be useful, * 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00013 * GNU General Public License for more details. * 00014 * * 00015 * You should have received a copy of the GNU General Public License * 00016 * along with this program; if not, write to the * 00017 * Free Software Foundation, Inc., * 00018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 00019 ***************************************************************************/ 00020 void ini_instr() 00021 { 00022 init_instr[0] = instr_1->value(); 00023 init_instr[1] = instr_2->value(); 00024 init_instr[2] = instr_3->value(); 00025 init_instr[3] = instr_4->value(); 00026 init_instr[4] = instr_5->value(); 00027 init_instr[5] = instr_6->value(); 00028 init_instr[6] = instr_7->value(); 00029 init_instr[7] = instr_8->value(); 00030 init_instr[8] = instr_9->value(); 00031 init_instr[9] = instr_10->value(); 00032 init_instr[10] = instr_11->value(); 00033 init_instr[11] = instr_12->value(); 00034 } 00035 00036 void contrappunto::instr_lim_input() 00037 { 00038 instr_min_ = (int)min_instr->value(); 00039 instr_max_ = (int)max_instr->value(); 00040 } 00041 00042 void contrappunto::subset_instr() 00043 { 00044 formula formula; 00045 instr_lim_input(); 00046 //////////INITIALIZE INSTR SUBSET///// 00047 int sub_tInstr_size = (int)instr_max_ - (int)instr_min_; 00048 float *sub_tInstr = new float[sub_tInstr_size]; 00049 00050 init_params(); 00051 int indice = (int)instr_min_; 00052 int i; 00053 for (i = 0; i < sub_tInstr_size; i++) 00054 { 00055 sub_tInstr[i] = tInstr[indice]; 00056 indice++; 00057 } 00058 /////////////////////////////////////////////////////////// 00059 00060 if (logic_a->value() == 1) 00061 { 00062 formula.trp_seq_tinstr(); 00063 init_params(); 00064 instr_1->value(sub_tInstr[formula.j_i1]); 00065 } 00066 00067 else if (logic_a->value() == 2) 00068 { 00069 formula.trp_seq_tinstr(); 00070 init_params(); 00071 00072 instr_1->value(sub_tInstr[formula.j_i1]); 00073 instr_2->value(sub_tInstr[formula.j_i2]); 00074 } 00075 00076 else if (logic_a->value() == 3) 00077 { 00078 formula.trp_seq_tinstr(); 00079 init_params(); 00080 00081 instr_1->value(sub_tInstr[formula.j_i1]); 00082 instr_2->value(sub_tInstr[formula.j_i2]); 00083 instr_3->value(sub_tInstr[formula.j_i3]); 00084 } 00085 00086 else if (logic_a->value() == 4) 00087 { 00088 formula.trp_seq_tinstr(); 00089 init_params(); 00090 00091 instr_1->value(sub_tInstr[formula.j_i1]); 00092 instr_2->value(sub_tInstr[formula.j_i2]); 00093 instr_3->value(sub_tInstr[formula.j_i3]); 00094 instr_4->value(sub_tInstr[formula.j_i4]); 00095 } 00096 00097 else if (logic_a->value() == 5) 00098 { 00099 formula.trp_seq_tinstr(); 00100 init_params(); 00101 00102 instr_1->value(sub_tInstr[formula.j_i1]); 00103 instr_2->value(sub_tInstr[formula.j_i2]); 00104 instr_3->value(sub_tInstr[formula.j_i3]); 00105 instr_4->value(sub_tInstr[formula.j_i4]); 00106 instr_5->value(sub_tInstr[formula.j_i5]); 00107 } 00108 00109 else if (logic_a->value() == 6) 00110 { 00111 formula.trp_seq_tinstr(); 00112 init_params(); 00113 00114 instr_1->value(sub_tInstr[formula.j_i1]); 00115 instr_2->value(sub_tInstr[formula.j_i2]); 00116 instr_3->value(sub_tInstr[formula.j_i3]); 00117 instr_4->value(sub_tInstr[formula.j_i4]); 00118 instr_5->value(sub_tInstr[formula.j_i5]); 00119 instr_6->value(sub_tInstr[formula.j_i6]); 00120 } 00121 00122 else if (logic_a->value() == 7) 00123 { 00124 formula.trp_seq_tinstr(); 00125 init_params(); 00126 00127 instr_1->value(sub_tInstr[formula.j_i1]); 00128 instr_2->value(sub_tInstr[formula.j_i2]); 00129 instr_3->value(sub_tInstr[formula.j_i3]); 00130 instr_4->value(sub_tInstr[formula.j_i4]); 00131 instr_5->value(sub_tInstr[formula.j_i5]); 00132 instr_6->value(sub_tInstr[formula.j_i6]); 00133 instr_7->value(sub_tInstr[formula.j_i7]); 00134 } 00135 00136 else if (logic_a->value() == 8) 00137 { 00138 formula.trp_seq_tinstr(); 00139 init_params(); 00140 00141 instr_1->value(sub_tInstr[formula.j_i1]); 00142 instr_2->value(sub_tInstr[formula.j_i2]); 00143 instr_3->value(sub_tInstr[formula.j_i3]); 00144 instr_4->value(sub_tInstr[formula.j_i4]); 00145 instr_5->value(sub_tInstr[formula.j_i5]); 00146 instr_6->value(sub_tInstr[formula.j_i6]); 00147 instr_7->value(sub_tInstr[formula.j_i7]); 00148 instr_8->value(sub_tInstr[formula.j_i8]); 00149 } 00150 00151 else if (logic_a->value() == 9) 00152 { 00153 formula.trp_seq_tinstr(); 00154 init_params(); 00155 00156 instr_1->value(sub_tInstr[formula.j_i1]); 00157 instr_2->value(sub_tInstr[formula.j_i2]); 00158 instr_3->value(sub_tInstr[formula.j_i3]); 00159 instr_4->value(sub_tInstr[formula.j_i4]); 00160 instr_5->value(sub_tInstr[formula.j_i5]); 00161 instr_6->value(sub_tInstr[formula.j_i6]); 00162 instr_7->value(sub_tInstr[formula.j_i7]); 00163 instr_8->value(sub_tInstr[formula.j_i8]); 00164 instr_9->value(sub_tInstr[formula.j_i9]); 00165 } 00166 00167 else if (logic_a->value() == 10) 00168 { 00169 formula.trp_seq_tinstr(); 00170 init_params(); 00171 00172 instr_1->value(sub_tInstr[formula.j_i1]); 00173 instr_2->value(sub_tInstr[formula.j_i2]); 00174 instr_3->value(sub_tInstr[formula.j_i3]); 00175 instr_4->value(sub_tInstr[formula.j_i4]); 00176 instr_5->value(sub_tInstr[formula.j_i5]); 00177 instr_6->value(sub_tInstr[formula.j_i6]); 00178 instr_7->value(sub_tInstr[formula.j_i7]); 00179 instr_8->value(sub_tInstr[formula.j_i8]); 00180 instr_9->value(sub_tInstr[formula.j_i9]); 00181 instr_10->value(sub_tInstr[formula.j_i10]); 00182 } 00183 00184 else if (logic_a->value() == 11) 00185 { 00186 formula.trp_seq_tinstr(); 00187 init_params(); 00188 00189 instr_1->value(sub_tInstr[formula.j_i1]); 00190 instr_2->value(sub_tInstr[formula.j_i2]); 00191 instr_3->value(sub_tInstr[formula.j_i3]); 00192 instr_4->value(sub_tInstr[formula.j_i4]); 00193 instr_5->value(sub_tInstr[formula.j_i5]); 00194 instr_6->value(sub_tInstr[formula.j_i6]); 00195 instr_7->value(sub_tInstr[formula.j_i7]); 00196 instr_8->value(sub_tInstr[formula.j_i8]); 00197 instr_9->value(sub_tInstr[formula.j_i9]); 00198 instr_10->value(sub_tInstr[formula.j_i10]); 00199 instr_11->value(sub_tInstr[formula.j_i11]); 00200 } 00201 00202 else if (logic_a->value() == 12) 00203 { 00204 formula.trp_seq_tinstr(); 00205 init_params(); 00206 00207 instr_1->value(tInstr[formula.j_i1]); 00208 instr_2->value(tInstr[formula.j_i2]); 00209 instr_3->value(tInstr[formula.j_i3]); 00210 instr_4->value(tInstr[formula.j_i4]); 00211 instr_5->value(tInstr[formula.j_i5]); 00212 instr_6->value(tInstr[formula.j_i6]); 00213 instr_7->value(tInstr[formula.j_i7]); 00214 instr_8->value(tInstr[formula.j_i8]); 00215 instr_9->value(tInstr[formula.j_i9]); 00216 instr_10->value(tInstr[formula.j_i10]); 00217 instr_11->value(tInstr[formula.j_i11]); 00218 instr_12->value(tInstr[formula.j_i12]); 00219 } 00220 delete [] sub_tInstr; 00221 } 00222 00223 void contrappunto::init_instr_serie() 00224 { 00225 int i; 00226 if (bt_enable_instr->value() == 1) 00227 { 00228 subset_instr(); 00229 } 00230 ini_instr(); 00231 for (i = 0; i < 12; i++) 00232 { 00233 serie_instr[i] = init_instr[i]; 00234 } 00235 } 00236 00237 void contrappunto::retroInstr() 00238 { 00239 init_instr_serie(); 00240 00241 int i; 00242 int s = 11; 00243 00244 for (i=0;i<12;i++) 00245 { 00246 serie_manip[i] = serie_instr[s]; 00247 s--; 00248 } 00249 } 00250 00251 void retro_instr() 00252 { 00253 contrappunto ob; 00254 ob.retroInstr(); 00255 instr_1->value(ob.serie_manip[0]); 00256 instr_2->value(ob.serie_manip[1]); 00257 instr_3->value(ob.serie_manip[2]); 00258 instr_4->value(ob.serie_manip[3]); 00259 instr_5->value(ob.serie_manip[4]); 00260 instr_6->value(ob.serie_manip[5]); 00261 instr_7->value(ob.serie_manip[6]); 00262 instr_8->value(ob.serie_manip[7]); 00263 instr_9->value(ob.serie_manip[8]); 00264 instr_10->value(ob.serie_manip[9]); 00265 instr_11->value(ob.serie_manip[10]); 00266 instr_12->value(ob.serie_manip[11]); 00267 } 00268 00269 void retroInstr_cb(Fl_Widget*,void*) 00270 { 00271 retro_instr(); 00272 counterpointPitch->value(0); 00273 } 00274 00275 void contrappunto::croceInstr() 00276 { 00277 init_instr_serie(); 00278 serie_manip[0] = serie_instr[11]; 00279 serie_manip[1] = serie_instr[0]; 00280 serie_manip[2] = serie_instr[10]; 00281 serie_manip[3] = serie_instr[1]; 00282 serie_manip[4] = serie_instr[9]; 00283 serie_manip[5] = serie_instr[2]; 00284 serie_manip[6] = serie_instr[8]; 00285 serie_manip[7] = serie_instr[3]; 00286 serie_manip[8] = serie_instr[7]; 00287 serie_manip[9] = serie_instr[4]; 00288 serie_manip[10] = serie_instr[6]; 00289 serie_manip[11] = serie_instr[5]; 00290 } 00291 00292 void croce_instr() 00293 { 00294 contrappunto ob; 00295 ob.croceInstr(); 00296 instr_1->value(ob.serie_manip[0]); 00297 instr_2->value(ob.serie_manip[1]); 00298 instr_3->value(ob.serie_manip[2]); 00299 instr_4->value(ob.serie_manip[3]); 00300 instr_5->value(ob.serie_manip[4]); 00301 instr_6->value(ob.serie_manip[5]); 00302 instr_7->value(ob.serie_manip[6]); 00303 instr_8->value(ob.serie_manip[7]); 00304 instr_9->value(ob.serie_manip[8]); 00305 instr_10->value(ob.serie_manip[9]); 00306 instr_11->value(ob.serie_manip[10]); 00307 instr_12->value(ob.serie_manip[11]); 00308 } 00309 00310 void croceInstr_cb(Fl_Widget*,void*) 00311 { 00312 croce_instr(); 00313 } 00314 00315 void contrappunto::slideInstr() 00316 { 00317 init_instr_serie(); 00318 int i, s; 00319 i = 0; 00320 s = 1; 00321 for (i=0;i<11;i++) 00322 { 00323 serie_manip[i] = serie_instr[s]; 00324 s++; 00325 } 00326 serie_manip[11] = serie_instr[0]; 00327 } 00328 00329 void slide_instr() 00330 { 00331 contrappunto ob; 00332 ob.slideInstr(); 00333 instr_1->value(ob.serie_manip[0]); 00334 instr_2->value(ob.serie_manip[1]); 00335 instr_3->value(ob.serie_manip[2]); 00336 instr_4->value(ob.serie_manip[3]); 00337 instr_5->value(ob.serie_manip[4]); 00338 instr_6->value(ob.serie_manip[5]); 00339 instr_7->value(ob.serie_manip[6]); 00340 instr_8->value(ob.serie_manip[7]); 00341 instr_9->value(ob.serie_manip[8]); 00342 instr_10->value(ob.serie_manip[9]); 00343 instr_11->value(ob.serie_manip[10]); 00344 instr_12->value(ob.serie_manip[11]); 00345 } 00346 00347 void slideInstr_cb(Fl_Widget*,void*) 00348 { 00349 slide_instr(); 00350 } 00351 00352 void contrappunto::jump_oneInstr() 00353 { 00354 init_instr_serie(); 00355 serie_manip[0] = serie_instr[1]; 00356 serie_manip[1] = serie_instr[3]; 00357 serie_manip[2] = serie_instr[5]; 00358 serie_manip[3] = serie_instr[7]; 00359 serie_manip[4] = serie_instr[9]; 00360 serie_manip[5] = serie_instr[11]; 00361 serie_manip[6] = serie_instr[0]; 00362 serie_manip[7] = serie_instr[2]; 00363 serie_manip[8] = serie_instr[4]; 00364 serie_manip[9] = serie_instr[6]; 00365 serie_manip[10] = serie_instr[8]; 00366 serie_manip[11] = serie_instr[10]; 00367 } 00368 00369 void jumpone_instr() 00370 { 00371 contrappunto ob; 00372 ob.jump_oneInstr(); 00373 instr_1->value(ob.serie_manip[0]); 00374 instr_2->value(ob.serie_manip[1]); 00375 instr_3->value(ob.serie_manip[2]); 00376 instr_4->value(ob.serie_manip[3]); 00377 instr_5->value(ob.serie_manip[4]); 00378 instr_6->value(ob.serie_manip[5]); 00379 instr_7->value(ob.serie_manip[6]); 00380 instr_8->value(ob.serie_manip[7]); 00381 instr_9->value(ob.serie_manip[8]); 00382 instr_10->value(ob.serie_manip[9]); 00383 instr_11->value(ob.serie_manip[10]); 00384 instr_12->value(ob.serie_manip[11]); 00385 00386 } 00387 00388 void jumpOneInstr_cb(Fl_Widget*,void*) 00389 { 00390 jumpone_instr(); 00391 } 00392