summaryrefslogtreecommitdiff
path: root/noncore/multimedia
Unidiff
Diffstat (limited to 'noncore/multimedia') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/powerchord/powerchordbase.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/noncore/multimedia/powerchord/powerchordbase.cpp b/noncore/multimedia/powerchord/powerchordbase.cpp
index 0694ba3..92198bf 100644
--- a/noncore/multimedia/powerchord/powerchordbase.cpp
+++ b/noncore/multimedia/powerchord/powerchordbase.cpp
@@ -375,92 +375,94 @@ PowerchordBase::PowerchordBase( QWidget* parent, const char* name, WFlags fl )
375 connect( play_sound, SIGNAL( clicked() ), this, SLOT( play_chord_cb() )); 375 connect( play_sound, SIGNAL( clicked() ), this, SLOT( play_chord_cb() ));
376 connect( tuner_start, SIGNAL( clicked() ), this, SLOT( tuner_start_cb() )); 376 connect( tuner_start, SIGNAL( clicked() ), this, SLOT( tuner_start_cb() ));
377 connect( tuner_note, SIGNAL( textChanged(const QString&) ), vu, SLOT( AnnotL(const QString&) )); 377 connect( tuner_note, SIGNAL( textChanged(const QString&) ), vu, SLOT( AnnotL(const QString&) ));
378 connect( this, SIGNAL( frequency_change(int) ), vu, SLOT( Value(int) )); 378 connect( this, SIGNAL( frequency_change(int) ), vu, SLOT( Value(int) ));
379 379
380 connect( chordnote, SIGNAL( activated(int) ), frets, SLOT( Base(int) ) ); 380 connect( chordnote, SIGNAL( activated(int) ), frets, SLOT( Base(int) ) );
381 connect( chordkey, SIGNAL( activated(int) ), frets, SLOT( Chord(int) ) ); 381 connect( chordkey, SIGNAL( activated(int) ), frets, SLOT( Chord(int) ) );
382 connect( chordfret, SIGNAL( activated(int) ), frets, SLOT( Fret(int) ) ); 382 connect( chordfret, SIGNAL( activated(int) ), frets, SLOT( Fret(int) ) );
383 connect( list_remove_btn, SIGNAL( clicked() ), this, SLOT( list_remove_cb() ) ); 383 connect( list_remove_btn, SIGNAL( clicked() ), this, SLOT( list_remove_cb() ) );
384 connect( frets, SIGNAL( s1nameChanged(const QString&) ), s1_1, SLOT( setText(const QString&) ) ); 384 connect( frets, SIGNAL( s1nameChanged(const QString&) ), s1_1, SLOT( setText(const QString&) ) );
385 connect( frets, SIGNAL( s2nameChanged(const QString&) ), s1_2, SLOT( setText(const QString&) ) ); 385 connect( frets, SIGNAL( s2nameChanged(const QString&) ), s1_2, SLOT( setText(const QString&) ) );
386 connect( frets, SIGNAL( s3nameChanged(const QString&) ), s1_3, SLOT( setText(const QString&) ) ); 386 connect( frets, SIGNAL( s3nameChanged(const QString&) ), s1_3, SLOT( setText(const QString&) ) );
387 connect( frets, SIGNAL( s4nameChanged(const QString&) ), s1_4, SLOT( setText(const QString&) ) ); 387 connect( frets, SIGNAL( s4nameChanged(const QString&) ), s1_4, SLOT( setText(const QString&) ) );
388 connect( frets, SIGNAL( s5nameChanged(const QString&) ), s1_5, SLOT( setText(const QString&) ) ); 388 connect( frets, SIGNAL( s5nameChanged(const QString&) ), s1_5, SLOT( setText(const QString&) ) );
389 connect( frets, SIGNAL( s6nameChanged(const QString&) ), s1_6, SLOT( setText(const QString&) ) ); 389 connect( frets, SIGNAL( s6nameChanged(const QString&) ), s1_6, SLOT( setText(const QString&) ) );
390 connect( frets, SIGNAL( nameChanged(const QString&) ), chordname, SLOT( setText(const QString&) ) ); 390 connect( frets, SIGNAL( nameChanged(const QString&) ), chordname, SLOT( setText(const QString&) ) );
391} 391}
392 392
393 393
394static int known=0; 394static int known=0;
395#include <qmessagebox.h> 395#include <qmessagebox.h>
396void PowerchordBase::transport_rec_cb(){ 396void PowerchordBase::transport_rec_cb(){
397 chordlist->insertItem(chordname->text(),-1); 397 chordlist->insertItem(chordname->text(),-1);
398 if (!known){ 398 if (!known){
399 QMessageBox::information(this, "Powerchord", "This chord has been saved\ninto the list of chords,\nfor later playback."); 399 QMessageBox::information(this, tr("Powerchord"),
400 tr("<P>This chord has been saved into the list of chords, for later playback.<P>");
400 known = 1; 401 known = 1;
401 } 402 }
402} 403}
403void PowerchordBase::list_remove_cb(){ 404void PowerchordBase::list_remove_cb(){
404 if (chordlist->count() > 0){ 405 if (chordlist->count() > 0){
405 chordlist->removeItem(0); 406 chordlist->removeItem(0);
406 } 407 }
407} 408}
408void PowerchordBase::play_chord_cb(){ 409void PowerchordBase::play_chord_cb(){
409 // QMessageBox::information(this, "Coming soon!", "This button plays\nthe chord by synthesizing\nthe sound of the notes."); 410 // QMessageBox::information(this, "Coming soon!", "This button plays\nthe chord by synthesizing\nthe sound of the notes.");
410 411
411 412
412 if (audio_timer){ 413 if (audio_timer){
413 audio_timer->stop(); 414 audio_timer->stop();
414 // set pixmap? 415 // set pixmap?
415 synth->Stop(); 416 synth->Stop();
416 delete(audio_timer); 417 delete(audio_timer);
417 audio_timer = 0; 418 audio_timer = 0;
418 }else{ 419 }else{
419 // get notes from chord engine 420 // get notes from chord engine
420 421
421 int note; 422 int note;
422 int base; 423 int base;
423 int octave; 424 int octave;
424 note = frets->ce.noteindex(0); 425 note = frets->ce.noteindex(0);
425 if (note >= 0){ 426 if (note >= 0){
426 //fprintf(stderr, "Note was %d\n", note); 427 //fprintf(stderr, "Note was %d\n", note);
427 base = note % 12; 428 base = note % 12;
428 octave = note / 12; 429 octave = note / 12;
429 synth->note_start(0, base, octave); 430 synth->note_start(0, base, octave);
430 }else{ 431 }else{
431 // subtle bug here - replay second note if 1st one muted 432 // subtle bug here - replay second note if 1st one muted
432 note = frets->ce.noteindex(1); 433 note = frets->ce.noteindex(1);
433 base = note % 12; 434 base = note % 12;
434 octave = note / 12; 435 octave = note / 12;
435 synth->note_start(1, base, octave); 436 synth->note_start(1, base, octave);
436 437
437 } 438 }
438 439
439 // init synth 440 // init synth
440 if (synth->Play()){ 441 if (synth->Play()){
441 // error 442 // error
442 QMessageBox::information(this, "Powerchord", "Unable to open device for sound playback - check that no other application is using it."); 443 QMessageBox::information(this, tr("Powerchord"),
444 tr("<P>Unable to open device for sound playback - check that no other application is using it.</P>"));
443 return; 445 return;
444 } 446 }
445 synth->fill_buffer(); 447 synth->fill_buffer();
446 448
447 // start timer 449 // start timer
448 audio_timer = new QTimer(); 450 audio_timer = new QTimer();
449 connect(audio_timer, SIGNAL( timeout() ), this, SLOT( audio_cb() )); 451 connect(audio_timer, SIGNAL( timeout() ), this, SLOT( audio_cb() ));
450 // set pixmap on player? 452 // set pixmap on player?
451 audio_timer->start(19); // 19 msec (fudge factor!!) 453 audio_timer->start(19); // 19 msec (fudge factor!!)
452 } 454 }
453} 455}
454 456
455 457
456 458
457void PowerchordBase::audio_cb(){ 459void PowerchordBase::audio_cb(){
458 // play the next bit of audio until quiet 460 // play the next bit of audio until quiet
459 461
460 // strum timing 462 // strum timing
461#define INTERVAL 2 463#define INTERVAL 2
462 464
463 if ((synth->Frames() % INTERVAL) == 0){ 465 if ((synth->Frames() % INTERVAL) == 0){
464 int string = synth->Frames() / INTERVAL; 466 int string = synth->Frames() / INTERVAL;
465 if (string <= 5){ 467 if (string <= 5){
466 int note; 468 int note;
@@ -509,49 +511,51 @@ void PowerchordBase::audio_cb(){
509// simulation_timer->start(50); 511// simulation_timer->start(50);
510// tuner->Listen(); 512// tuner->Listen();
511 513
512// } 514// }
513// } 515// }
514 516
515void PowerchordBase::tuner_cb(){ 517void PowerchordBase::tuner_cb(){
516 if (tuner->Listening()){ 518 if (tuner->Listening()){
517 tuner->read_buffer(); 519 tuner->read_buffer();
518 tuner->process_buffer(); 520 tuner->process_buffer();
519 521
520 // update gui 522 // update gui
521 // do something with the note: tuner->Note() 523 // do something with the note: tuner->Note()
522 emit frequency_change(tuner->Tuning()); 524 emit frequency_change(tuner->Tuning());
523 525
524 }else{ 526 }else{
525 simulation_timer->stop(); 527 simulation_timer->stop();
526 tuner->Stop(); 528 tuner->Stop();
527 tuner_pic1->setPixmap( image6 ); 529 tuner_pic1->setPixmap( image6 );
528 } 530 }
529} 531}
530 532
531 533
532void PowerchordBase::tuner_start_cb(){ 534void PowerchordBase::tuner_start_cb(){
533 if (0 == QMessageBox::information(this, "Powerchord", "Using the microphone,\nthe note's frequency\nis analysed. This\nis a simulation.", "OK", "Cancel", 0, 1)){ 535 if (0 == QMessageBox::information(this, tr("Powerchord"),
536 tr("<P>Using the microphone, the note's frequency is analysed. This is a simulation.</P>"),
537 tr("OK"), tr("Cancel"), 0, 1)){
534 if (simulation_timer){ 538 if (simulation_timer){
535 simulation_timer->stop(); 539 simulation_timer->stop();
536 }else{ 540 }else{
537 simulation_timer = new QTimer(); 541 simulation_timer = new QTimer();
538 connect(simulation_timer, SIGNAL( timeout() ), this, SLOT( tuner_simulation_cb() )); 542 connect(simulation_timer, SIGNAL( timeout() ), this, SLOT( tuner_simulation_cb() ));
539 543
540 } 544 }
541 simulation_x = -45; 545 simulation_x = -45;
542 simulation_v = 0; 546 simulation_v = 0;
543 simulation_iter = 0; 547 simulation_iter = 0;
544 548
545 tuner_pic1->setPixmap( image_open ); 549 tuner_pic1->setPixmap( image_open );
546 simulation_timer->start(100); 550 simulation_timer->start(100);
547 } 551 }
548} 552}
549 553
550#include <stdio.h> 554#include <stdio.h>
551 555
552void PowerchordBase::tuner_simulation_cb(){ 556void PowerchordBase::tuner_simulation_cb(){
553 if (simulation_x < -10 || simulation_x > 10){ 557 if (simulation_x < -10 || simulation_x > 10){
554 simulation_v = (simulation_v/2)-(simulation_x/5); 558 simulation_v = (simulation_v/2)-(simulation_x/5);
555 } 559 }
556 560
557 simulation_x += simulation_v; 561 simulation_x += simulation_v;