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 actTime(); 00021 00022 void ini_dur() 00023 { 00024 init_dur[0] = dur_1->value(); 00025 init_dur[1] = dur_2->value(); 00026 init_dur[2] = dur_3->value(); 00027 init_dur[3] = dur_4->value(); 00028 init_dur[4] = dur_5->value(); 00029 init_dur[5] = dur_6->value(); 00030 init_dur[6] = dur_7->value(); 00031 init_dur[7] = dur_8->value(); 00032 init_dur[8] = dur_9->value(); 00033 init_dur[9] = dur_10->value(); 00034 init_dur[10] = dur_11->value(); 00035 init_dur[11] = dur_12->value(); 00036 } 00037 00038 void contrappunto::dur_lim_input() 00039 { 00040 dur_min_ = (int)min_dur->value(); 00041 dur_max_ = (int)max_dur->value(); 00042 } 00043 00044 void contrappunto::subset_dur() 00045 { 00046 formula formula; 00047 dur_lim_input(); 00048 //////////INITIALIZE DUR SUBSET///// 00049 int sub_tdur_size = (int)dur_max_ - (int)dur_min_; 00050 float *sub_tdur = new float[sub_tdur_size]; 00051 00052 init_params(); 00053 int indice = (int)dur_min_; 00054 int i; 00055 for (i = 0; i < sub_tdur_size; i++) 00056 { 00057 sub_tdur[i] = tdur[indice]; 00058 indice++; 00059 } 00060 /////////////////////////////////////////////////////////// 00061 window->redraw(); 00062 if (logic_a->value() == 1) 00063 { 00064 formula.trp_seq_tdur(); 00065 dur_1->value(sub_tdur[formula.j_d1]); 00066 { 00067 select_val(); //questa funzione si trova nel file counterpointFunc.h 00068 dur_1->value(dur_1->value() + o); 00069 } 00070 } 00071 00072 00073 else if (logic_a->value() == 2) 00074 { 00075 formula.trp_seq_tdur(); 00076 dur_1->value(sub_tdur[formula.j_d1]); 00077 dur_2->value(sub_tdur[formula.j_d2]); 00078 { 00079 select_val(); 00080 dur_1->value(dur_1->value() + o); 00081 dur_2->value(dur_2->value() + o); 00082 } 00083 } 00084 00085 else if (logic_a->value() == 3) 00086 { 00087 formula.trp_seq_tdur(); 00088 dur_1->value(sub_tdur[formula.j_d1]); 00089 dur_2->value(sub_tdur[formula.j_d2]); 00090 dur_3->value(sub_tdur[formula.j_d3]); 00091 { 00092 select_val(); 00093 dur_1->value(dur_1->value() + o); 00094 dur_2->value(dur_2->value() + o); 00095 dur_3->value(dur_3->value() + o); 00096 } 00097 } 00098 00099 else if (logic_a->value() == 4) 00100 { 00101 formula.trp_seq_tdur(); 00102 dur_1->value(sub_tdur[formula.j_d1]); 00103 dur_2->value(sub_tdur[formula.j_d2]); 00104 dur_3->value(sub_tdur[formula.j_d3]); 00105 dur_4->value(sub_tdur[formula.j_d4]); 00106 { 00107 select_val(); 00108 dur_1->value(dur_1->value() + o); 00109 dur_2->value(dur_2->value() + o); 00110 dur_3->value(dur_3->value() + o); 00111 dur_4->value(dur_4->value() + o); 00112 } 00113 } 00114 00115 else if (logic_a->value() == 5) 00116 { 00117 formula.trp_seq_tdur(); 00118 dur_1->value(sub_tdur[formula.j_d1]); 00119 dur_2->value(sub_tdur[formula.j_d2]); 00120 dur_3->value(sub_tdur[formula.j_d3]); 00121 dur_4->value(sub_tdur[formula.j_d4]); 00122 dur_5->value(sub_tdur[formula.j_d5]); 00123 { 00124 select_val(); 00125 dur_1->value(dur_1->value() + o); 00126 dur_2->value(dur_2->value() + o); 00127 dur_3->value(dur_3->value() + o); 00128 dur_4->value(dur_4->value() + o); 00129 dur_5->value(dur_5->value() + o); 00130 } 00131 } 00132 00133 else if (logic_a->value() == 6) 00134 { 00135 formula.trp_seq_tdur(); 00136 dur_1->value(sub_tdur[formula.j_d1]); 00137 dur_2->value(sub_tdur[formula.j_d2]); 00138 dur_3->value(sub_tdur[formula.j_d3]); 00139 dur_4->value(sub_tdur[formula.j_d4]); 00140 dur_5->value(sub_tdur[formula.j_d5]); 00141 dur_6->value(sub_tdur[formula.j_d6]); 00142 { 00143 select_val(); 00144 dur_1->value(dur_1->value() + o); 00145 dur_2->value(dur_2->value() + o); 00146 dur_3->value(dur_3->value() + o); 00147 dur_4->value(dur_4->value() + o); 00148 dur_5->value(dur_5->value() + o); 00149 dur_6->value(dur_6->value() + o); 00150 } 00151 } 00152 00153 else if (logic_a->value() == 7) 00154 { 00155 formula.trp_seq_tdur(); 00156 dur_1->value(sub_tdur[formula.j_d1]); 00157 dur_2->value(sub_tdur[formula.j_d2]); 00158 dur_3->value(sub_tdur[formula.j_d3]); 00159 dur_4->value(sub_tdur[formula.j_d4]); 00160 dur_5->value(sub_tdur[formula.j_d5]); 00161 dur_6->value(sub_tdur[formula.j_d6]); 00162 dur_7->value(sub_tdur[formula.j_d7]); 00163 { 00164 select_val(); 00165 dur_1->value(dur_1->value() + o); 00166 dur_2->value(dur_2->value() + o); 00167 dur_3->value(dur_3->value() + o); 00168 dur_4->value(dur_4->value() + o); 00169 dur_5->value(dur_5->value() + o); 00170 dur_6->value(dur_6->value() + o); 00171 dur_7->value(dur_7->value() + o); 00172 } 00173 } 00174 00175 else if (logic_a->value() == 8) 00176 { 00177 formula.trp_seq_tdur(); 00178 dur_1->value(sub_tdur[formula.j_d1]); 00179 dur_2->value(sub_tdur[formula.j_d2]); 00180 dur_3->value(sub_tdur[formula.j_d3]); 00181 dur_4->value(sub_tdur[formula.j_d4]); 00182 dur_5->value(sub_tdur[formula.j_d5]); 00183 dur_6->value(sub_tdur[formula.j_d6]); 00184 dur_7->value(sub_tdur[formula.j_d7]); 00185 dur_8->value(sub_tdur[formula.j_d8]); 00186 { 00187 select_val(); 00188 dur_1->value(dur_1->value() + o); 00189 dur_2->value(dur_2->value() + o); 00190 dur_3->value(dur_3->value() + o); 00191 dur_4->value(dur_4->value() + o); 00192 dur_5->value(dur_5->value() + o); 00193 dur_6->value(dur_6->value() + o); 00194 dur_7->value(dur_7->value() + o); 00195 dur_8->value(dur_8->value() + o); 00196 } 00197 } 00198 00199 else if (logic_a->value() == 9) 00200 { 00201 formula.trp_seq_tdur(); 00202 dur_1->value(sub_tdur[formula.j_d1]); 00203 dur_2->value(sub_tdur[formula.j_d2]); 00204 dur_3->value(sub_tdur[formula.j_d3]); 00205 dur_4->value(sub_tdur[formula.j_d4]); 00206 dur_5->value(sub_tdur[formula.j_d5]); 00207 dur_6->value(sub_tdur[formula.j_d6]); 00208 dur_7->value(sub_tdur[formula.j_d7]); 00209 dur_8->value(sub_tdur[formula.j_d8]); 00210 dur_9->value(sub_tdur[formula.j_d9]); 00211 { 00212 select_val(); 00213 dur_1->value(dur_1->value() + o); 00214 dur_2->value(dur_2->value() + o); 00215 dur_3->value(dur_3->value() + o); 00216 dur_4->value(dur_4->value() + o); 00217 dur_5->value(dur_5->value() + o); 00218 dur_6->value(dur_6->value() + o); 00219 dur_7->value(dur_7->value() + o); 00220 dur_8->value(dur_8->value() + o); 00221 dur_9->value(dur_9->value() + o); 00222 } 00223 } 00224 00225 else if (logic_a->value() == 10) 00226 { 00227 formula.trp_seq_tdur(); 00228 dur_1->value(sub_tdur[formula.j_d1]); 00229 dur_2->value(sub_tdur[formula.j_d2]); 00230 dur_3->value(sub_tdur[formula.j_d3]); 00231 dur_4->value(sub_tdur[formula.j_d4]); 00232 dur_5->value(sub_tdur[formula.j_d5]); 00233 dur_6->value(sub_tdur[formula.j_d6]); 00234 dur_7->value(sub_tdur[formula.j_d7]); 00235 dur_8->value(sub_tdur[formula.j_d8]); 00236 dur_9->value(sub_tdur[formula.j_d9]); 00237 dur_10->value(sub_tdur[formula.j_d10]); 00238 { 00239 select_val(); 00240 dur_1->value(dur_1->value() + o); 00241 dur_2->value(dur_2->value() + o); 00242 dur_3->value(dur_3->value() + o); 00243 dur_4->value(dur_4->value() + o); 00244 dur_5->value(dur_5->value() + o); 00245 dur_6->value(dur_6->value() + o); 00246 dur_7->value(dur_7->value() + o); 00247 dur_8->value(dur_8->value() + o); 00248 dur_9->value(dur_9->value() + o); 00249 dur_10->value(dur_10->value() + o); 00250 } 00251 } 00252 00253 else if (logic_a->value() == 11) 00254 { 00255 formula.trp_seq_tdur(); 00256 dur_1->value(sub_tdur[formula.j_d1]); 00257 dur_2->value(sub_tdur[formula.j_d2]); 00258 dur_3->value(sub_tdur[formula.j_d3]); 00259 dur_4->value(sub_tdur[formula.j_d4]); 00260 dur_5->value(sub_tdur[formula.j_d5]); 00261 dur_6->value(sub_tdur[formula.j_d6]); 00262 dur_7->value(sub_tdur[formula.j_d7]); 00263 dur_8->value(sub_tdur[formula.j_d8]); 00264 dur_9->value(sub_tdur[formula.j_d9]); 00265 dur_10->value(sub_tdur[formula.j_d10]); 00266 dur_11->value(sub_tdur[formula.j_d11]); 00267 { 00268 select_val(); 00269 dur_1->value(dur_1->value() + o); 00270 dur_2->value(dur_2->value() + o); 00271 dur_3->value(dur_3->value() + o); 00272 dur_4->value(dur_4->value() + o); 00273 dur_5->value(dur_5->value() + o); 00274 dur_6->value(dur_6->value() + o); 00275 dur_7->value(dur_7->value() + o); 00276 dur_8->value(dur_8->value() + o); 00277 dur_9->value(dur_9->value() + o); 00278 dur_10->value(dur_10->value() + o); 00279 dur_11->value(dur_11->value() + o); 00280 } 00281 } 00282 00283 else if (logic_a->value() == 12) 00284 { 00285 formula.trp_seq_tdur(); 00286 dur_1->value(sub_tdur[formula.j_d1]); 00287 dur_2->value(sub_tdur[formula.j_d2]); 00288 dur_3->value(sub_tdur[formula.j_d3]); 00289 dur_4->value(sub_tdur[formula.j_d4]); 00290 dur_5->value(sub_tdur[formula.j_d5]); 00291 dur_6->value(sub_tdur[formula.j_d6]); 00292 dur_7->value(sub_tdur[formula.j_d7]); 00293 dur_8->value(sub_tdur[formula.j_d8]); 00294 dur_9->value(sub_tdur[formula.j_d9]); 00295 dur_10->value(sub_tdur[formula.j_d10]); 00296 dur_11->value(sub_tdur[formula.j_d11]); 00297 dur_12->value(sub_tdur[formula.j_d12]); 00298 { 00299 select_val(); 00300 dur_1->value(dur_1->value() + o); 00301 dur_2->value(dur_2->value() + o); 00302 dur_3->value(dur_3->value() + o); 00303 dur_4->value(dur_4->value() + o); 00304 dur_5->value(dur_5->value() + o); 00305 dur_6->value(dur_6->value() + o); 00306 dur_7->value(dur_7->value() + o); 00307 dur_8->value(dur_8->value() + o); 00308 dur_9->value(dur_9->value() + o); 00309 dur_10->value(dur_10->value() + o); 00310 dur_11->value(dur_11->value() + o); 00311 dur_12->value(dur_12->value() + o); 00312 } 00313 } 00314 delete [] sub_tdur; 00315 } 00316 00317 void contrappunto::init_dur_serie() 00318 { 00319 int i; 00320 if (bt_enable_dur->value() == 1) 00321 { 00322 subset_dur(); 00323 } 00324 ini_dur(); 00325 for (i = 0; i < 12; i++) 00326 { 00327 serie_dur[i] = init_dur[i]; 00328 } 00329 } 00330 00331 void contrappunto::retroDur() 00332 { 00333 init_dur_serie(); 00334 00335 int i; 00336 int s = 11; 00337 00338 for (i=0;i<12;i++) 00339 { 00340 serie_manip[i] = serie_dur[s]; 00341 s--; 00342 } 00343 } 00344 00345 void retro_dur() 00346 { 00347 contrappunto ob; 00348 ob.retroDur(); 00349 dur_1->value(ob.serie_manip[0]); 00350 dur_2->value(ob.serie_manip[1]); 00351 dur_3->value(ob.serie_manip[2]); 00352 dur_4->value(ob.serie_manip[3]); 00353 dur_5->value(ob.serie_manip[4]); 00354 dur_6->value(ob.serie_manip[5]); 00355 dur_7->value(ob.serie_manip[6]); 00356 dur_8->value(ob.serie_manip[7]); 00357 dur_9->value(ob.serie_manip[8]); 00358 dur_10->value(ob.serie_manip[9]); 00359 dur_11->value(ob.serie_manip[10]); 00360 dur_12->value(ob.serie_manip[11]); 00361 } 00362 00363 void retroDur_cb(Fl_Widget*,void*) 00364 { 00365 retro_dur(); 00366 actTime(); 00367 } 00368 00369 void contrappunto::croceDur() 00370 { 00371 init_dur_serie(); 00372 serie_manip[0] = serie_dur[11]; 00373 serie_manip[1] = serie_dur[0]; 00374 serie_manip[2] = serie_dur[10]; 00375 serie_manip[3] = serie_dur[1]; 00376 serie_manip[4] = serie_dur[9]; 00377 serie_manip[5] = serie_dur[2]; 00378 serie_manip[6] = serie_dur[8]; 00379 serie_manip[7] = serie_dur[3]; 00380 serie_manip[8] = serie_dur[7]; 00381 serie_manip[9] = serie_dur[4]; 00382 serie_manip[10] = serie_dur[6]; 00383 serie_manip[11] = serie_dur[5]; 00384 } 00385 00386 void croce_dur() 00387 { 00388 contrappunto ob; 00389 ob.croceDur(); 00390 dur_1->value(ob.serie_manip[0]); 00391 dur_2->value(ob.serie_manip[1]); 00392 dur_3->value(ob.serie_manip[2]); 00393 dur_4->value(ob.serie_manip[3]); 00394 dur_5->value(ob.serie_manip[4]); 00395 dur_6->value(ob.serie_manip[5]); 00396 dur_7->value(ob.serie_manip[6]); 00397 dur_8->value(ob.serie_manip[7]); 00398 dur_9->value(ob.serie_manip[8]); 00399 dur_10->value(ob.serie_manip[9]); 00400 dur_11->value(ob.serie_manip[10]); 00401 dur_12->value(ob.serie_manip[11]); 00402 00403 } 00404 00405 void croceDur_cb(Fl_Widget*,void*) 00406 { 00407 croce_dur(); 00408 actTime(); 00409 } 00410 00411 void contrappunto::slideDur() 00412 { 00413 init_dur_serie(); 00414 int i, s; 00415 i = 0; 00416 s = 1; 00417 for (i=0;i<11;i++) 00418 { 00419 serie_manip[i] = serie_dur[s]; 00420 s++; 00421 } 00422 serie_manip[11] = serie_dur[0]; 00423 } 00424 00425 void slide_dur() 00426 { 00427 contrappunto ob; 00428 ob.slideDur(); 00429 dur_1->value(ob.serie_manip[0]); 00430 dur_2->value(ob.serie_manip[1]); 00431 dur_3->value(ob.serie_manip[2]); 00432 dur_4->value(ob.serie_manip[3]); 00433 dur_5->value(ob.serie_manip[4]); 00434 dur_6->value(ob.serie_manip[5]); 00435 dur_7->value(ob.serie_manip[6]); 00436 dur_8->value(ob.serie_manip[7]); 00437 dur_9->value(ob.serie_manip[8]); 00438 dur_10->value(ob.serie_manip[9]); 00439 dur_11->value(ob.serie_manip[10]); 00440 dur_12->value(ob.serie_manip[11]); 00441 } 00442 00443 void slideDur_cb(Fl_Widget*,void*) 00444 { 00445 slide_dur(); 00446 actTime(); 00447 } 00448 00449 void contrappunto::jump_oneDur() 00450 { 00451 init_dur_serie(); 00452 serie_manip[0] = serie_dur[1]; 00453 serie_manip[1] = serie_dur[3]; 00454 serie_manip[2] = serie_dur[5]; 00455 serie_manip[3] = serie_dur[7]; 00456 serie_manip[4] = serie_dur[9]; 00457 serie_manip[5] = serie_dur[11]; 00458 serie_manip[6] = serie_dur[0]; 00459 serie_manip[7] = serie_dur[2]; 00460 serie_manip[8] = serie_dur[4]; 00461 serie_manip[9] = serie_dur[6]; 00462 serie_manip[10] = serie_dur[8]; 00463 serie_manip[11] = serie_dur[10]; 00464 } 00465 00466 void jumpone_dur() 00467 { 00468 contrappunto ob; 00469 ob.jump_oneDur(); 00470 dur_1->value(ob.serie_manip[0]); 00471 dur_2->value(ob.serie_manip[1]); 00472 dur_3->value(ob.serie_manip[2]); 00473 dur_4->value(ob.serie_manip[3]); 00474 dur_5->value(ob.serie_manip[4]); 00475 dur_6->value(ob.serie_manip[5]); 00476 dur_7->value(ob.serie_manip[6]); 00477 dur_8->value(ob.serie_manip[7]); 00478 dur_9->value(ob.serie_manip[8]); 00479 dur_10->value(ob.serie_manip[9]); 00480 dur_11->value(ob.serie_manip[10]); 00481 dur_12->value(ob.serie_manip[11]); 00482 00483 } 00484 00485 void jumpOneDur_cb(Fl_Widget*,void*) 00486 { 00487 jumpone_dur(); 00488 actTime(); 00489 } 00490