summaryrefslogtreecommitdiff
path: root/apps/plugins/vu_meter.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/vu_meter.c')
-rw-r--r--apps/plugins/vu_meter.c62
1 files changed, 33 insertions, 29 deletions
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 308ff74d83..ba64932d84 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -188,16 +188,16 @@ struct saved_settings {
188 bool digital_minimeters; 188 bool digital_minimeters;
189 int analog_decay; 189 int analog_decay;
190 int digital_decay; 190 int digital_decay;
191} settings; 191} vumeter_settings;
192 192
193void reset_settings(void) { 193void reset_settings(void) {
194 settings.meter_type=ANALOG; 194 vumeter_settings.meter_type=ANALOG;
195 settings.analog_use_db_scale=true; 195 vumeter_settings.analog_use_db_scale=true;
196 settings.digital_use_db_scale=true; 196 vumeter_settings.digital_use_db_scale=true;
197 settings.analog_minimeters=true; 197 vumeter_settings.analog_minimeters=true;
198 settings.digital_minimeters=false; 198 vumeter_settings.digital_minimeters=false;
199 settings.analog_decay=3; 199 vumeter_settings.analog_decay=3;
200 settings.digital_decay=0; 200 vumeter_settings.digital_decay=0;
201} 201}
202 202
203/* taken from http://www.quinapalus.com/efunc.html */ 203/* taken from http://www.quinapalus.com/efunc.html */
@@ -305,7 +305,7 @@ void calc_scales(void)
305void load_settings(void) { 305void load_settings(void) {
306 int fp = rb->open("/.rockbox/rocks/.vu_meter", O_RDONLY); 306 int fp = rb->open("/.rockbox/rocks/.vu_meter", O_RDONLY);
307 if(fp>=0) { 307 if(fp>=0) {
308 rb->read(fp, &settings, sizeof(struct saved_settings)); 308 rb->read(fp, &vumeter_settings, sizeof(struct saved_settings));
309 rb->close(fp); 309 rb->close(fp);
310 } 310 }
311 else { 311 else {
@@ -321,7 +321,7 @@ void load_settings(void) {
321void save_settings(void) { 321void save_settings(void) {
322 int fp = rb->creat("/.rockbox/rocks/.vu_meter"); 322 int fp = rb->creat("/.rockbox/rocks/.vu_meter");
323 if(fp >= 0) { 323 if(fp >= 0) {
324 rb->write (fp, &settings, sizeof(struct saved_settings)); 324 rb->write (fp, &vumeter_settings, sizeof(struct saved_settings));
325 rb->close(fp); 325 rb->close(fp);
326 } 326 }
327} 327}
@@ -372,45 +372,45 @@ static bool vu_meter_menu(void)
372 switch(rb->do_menu(&menu, &selection)) 372 switch(rb->do_menu(&menu, &selection))
373 { 373 {
374 case 0: 374 case 0:
375 rb->set_option("Meter Type", &settings.meter_type, INT, 375 rb->set_option("Meter Type", &vumeter_settings.meter_type, INT,
376 meter_type_option, 2, NULL); 376 meter_type_option, 2, NULL);
377 break; 377 break;
378 378
379 case 1: 379 case 1:
380 if(settings.meter_type==ANALOG) 380 if(vumeter_settings.meter_type==ANALOG)
381 { 381 {
382 rb->set_bool_options("Scale", &settings.analog_use_db_scale, 382 rb->set_bool_options("Scale", &vumeter_settings.analog_use_db_scale,
383 "dBfs", -1, "Linear", -1, NULL); 383 "dBfs", -1, "Linear", -1, NULL);
384 } 384 }
385 else 385 else
386 { 386 {
387 rb->set_bool_options("Scale", &settings.digital_use_db_scale, 387 rb->set_bool_options("Scale", &vumeter_settings.digital_use_db_scale,
388 "dBfs", -1, "Linear", -1, NULL); 388 "dBfs", -1, "Linear", -1, NULL);
389 } 389 }
390 break; 390 break;
391 391
392 case 2: 392 case 2:
393 if(settings.meter_type==ANALOG) 393 if(vumeter_settings.meter_type==ANALOG)
394 { 394 {
395 rb->set_bool("Enable Minimeters", 395 rb->set_bool("Enable Minimeters",
396 &settings.analog_minimeters); 396 &vumeter_settings.analog_minimeters);
397 } 397 }
398 else 398 else
399 { 399 {
400 rb->set_bool("Enable Minimeters", 400 rb->set_bool("Enable Minimeters",
401 &settings.digital_minimeters); 401 &vumeter_settings.digital_minimeters);
402 } 402 }
403 break; 403 break;
404 404
405 case 3: 405 case 3:
406 if(settings.meter_type==ANALOG) 406 if(vumeter_settings.meter_type==ANALOG)
407 { 407 {
408 rb->set_option("Decay Speed", &settings.analog_decay, INT, 408 rb->set_option("Decay Speed", &vumeter_settings.analog_decay, INT,
409 decay_speed_option, 7, NULL); 409 decay_speed_option, 7, NULL);
410 } 410 }
411 else 411 else
412 { 412 {
413 rb->set_option("Decay Speed", &settings.digital_decay, INT, 413 rb->set_option("Decay Speed", &vumeter_settings.digital_decay, INT,
414 decay_speed_option, 7, NULL); 414 decay_speed_option, 7, NULL);
415 } 415 }
416 break; 416 break;
@@ -490,7 +490,7 @@ void analog_meter(void) {
490 rb->pcm_calculate_peaks(&left_peak, &right_peak); 490 rb->pcm_calculate_peaks(&left_peak, &right_peak);
491#endif 491#endif
492 492
493 if(settings.analog_use_db_scale) { 493 if(vumeter_settings.analog_use_db_scale) {
494 left_needle_top_x = analog_db_scale[left_peak * half_width / MAX_PEAK]; 494 left_needle_top_x = analog_db_scale[left_peak * half_width / MAX_PEAK];
495 right_needle_top_x = analog_db_scale[right_peak * half_width / MAX_PEAK] + half_width; 495 right_needle_top_x = analog_db_scale[right_peak * half_width / MAX_PEAK] + half_width;
496 } 496 }
@@ -500,8 +500,10 @@ void analog_meter(void) {
500 } 500 }
501 501
502 /* Makes a decay on the needle */ 502 /* Makes a decay on the needle */
503 left_needle_top_x = (left_needle_top_x+last_left_needle_top_x*settings.analog_decay)/(settings.analog_decay+1); 503 left_needle_top_x = (left_needle_top_x+last_left_needle_top_x*vumeter_settings.analog_decay)
504 right_needle_top_x = (right_needle_top_x+last_right_needle_top_x*settings.analog_decay)/(settings.analog_decay+1); 504 /(vumeter_settings.analog_decay+1);
505 right_needle_top_x = (right_needle_top_x+last_right_needle_top_x*vumeter_settings.analog_decay)
506 /(vumeter_settings.analog_decay+1);
505 507
506 last_left_needle_top_x = left_needle_top_x; 508 last_left_needle_top_x = left_needle_top_x;
507 last_right_needle_top_x = right_needle_top_x; 509 last_right_needle_top_x = right_needle_top_x;
@@ -513,7 +515,7 @@ void analog_meter(void) {
513 rb->lcd_drawline(quarter_width, LCD_HEIGHT-1, left_needle_top_x, left_needle_top_y); 515 rb->lcd_drawline(quarter_width, LCD_HEIGHT-1, left_needle_top_x, left_needle_top_y);
514 rb->lcd_drawline((quarter_width+half_width), LCD_HEIGHT-1, right_needle_top_x, right_needle_top_y); 516 rb->lcd_drawline((quarter_width+half_width), LCD_HEIGHT-1, right_needle_top_x, right_needle_top_y);
515 517
516 if(settings.analog_minimeters) 518 if(vumeter_settings.analog_minimeters)
517 draw_analog_minimeters(); 519 draw_analog_minimeters();
518 520
519 /* Needle covers */ 521 /* Needle covers */
@@ -545,7 +547,7 @@ void digital_meter(void) {
545 rb->pcm_calculate_peaks(&left_peak, &right_peak); 547 rb->pcm_calculate_peaks(&left_peak, &right_peak);
546#endif 548#endif
547 549
548 if(settings.digital_use_db_scale) { 550 if(vumeter_settings.digital_use_db_scale) {
549 num_left_leds = digital_db_scale[left_peak * 44 / MAX_PEAK]; 551 num_left_leds = digital_db_scale[left_peak * 44 / MAX_PEAK];
550 num_right_leds = digital_db_scale[right_peak * 44 / MAX_PEAK]; 552 num_right_leds = digital_db_scale[right_peak * 44 / MAX_PEAK];
551 } 553 }
@@ -554,8 +556,10 @@ void digital_meter(void) {
554 num_right_leds = right_peak * 11 / MAX_PEAK; 556 num_right_leds = right_peak * 11 / MAX_PEAK;
555 } 557 }
556 558
557 num_left_leds = (num_left_leds+last_num_left_leds*settings.digital_decay)/(settings.digital_decay+1); 559 num_left_leds = (num_left_leds+last_num_left_leds*vumeter_settings.digital_decay)
558 num_right_leds = (num_right_leds+last_num_right_leds*settings.digital_decay)/(settings.digital_decay+1); 560 /(vumeter_settings.digital_decay+1);
561 num_right_leds = (num_right_leds+last_num_right_leds*vumeter_settings.digital_decay)
562 /(vumeter_settings.digital_decay+1);
559 563
560 last_num_left_leds = num_left_leds; 564 last_num_left_leds = num_left_leds;
561 last_num_right_leds = num_right_leds; 565 last_num_right_leds = num_right_leds;
@@ -573,7 +577,7 @@ void digital_meter(void) {
573 577
574 rb->lcd_set_drawmode(DRMODE_SOLID); 578 rb->lcd_set_drawmode(DRMODE_SOLID);
575 579
576 if(settings.digital_minimeters) 580 if(vumeter_settings.digital_minimeters)
577 draw_digital_minimeters(); 581 draw_digital_minimeters();
578 582
579 /* Lines above/below where the LEDS are */ 583 /* Lines above/below where the LEDS are */
@@ -609,7 +613,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) {
609 613
610 rb->lcd_putsxy(half_width-23, 0, "VU Meter"); 614 rb->lcd_putsxy(half_width-23, 0, "VU Meter");
611 615
612 if(settings.meter_type==ANALOG) 616 if(vumeter_settings.meter_type==ANALOG)
613 analog_meter(); 617 analog_meter();
614 else 618 else
615 digital_meter(); 619 digital_meter();