/[svn]/gigedit/trunk/src/gigedit/dimregionedit.cpp
ViewVC logotype

Diff of /gigedit/trunk/src/gigedit/dimregionedit.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1460 by persson, Sat Oct 27 12:28:33 2007 UTC revision 1798 by persson, Thu Dec 4 20:35:33 2008 UTC
# Line 1  Line 1 
1  /*  /*
2   * Copyright (C) 2006, 2007 Andreas Persson   * Copyright (C) 2006-2008 Andreas Persson
3   *   *
4   * This program is free software; you can redistribute it and/or   * This program is free software; you can redistribute it and/or
5   * modify it under the terms of the GNU General Public License as   * modify it under the terms of the GNU General Public License as
# Line 410  DimRegionEdit::DimRegionEdit() : Line 410  DimRegionEdit::DimRegionEdit() :
410    
411      nextPage();      nextPage();
412    
413      addHeader(_("Filter Cutoff Envelope (EG2)"));      lEG2 = addHeader(_("Filter Cutoff Envelope (EG2)"));
414      addProp(eEG2PreAttack);      addProp(eEG2PreAttack);
415      addProp(eEG2Attack);      addProp(eEG2Attack);
416      addProp(eEG2Decay1);      addProp(eEG2Decay1);
# Line 423  DimRegionEdit::DimRegionEdit() : Line 423  DimRegionEdit::DimRegionEdit() :
423      addProp(eEG2ControllerAttackInfluence);      addProp(eEG2ControllerAttackInfluence);
424      addProp(eEG2ControllerDecayInfluence);      addProp(eEG2ControllerDecayInfluence);
425      addProp(eEG2ControllerReleaseInfluence);      addProp(eEG2ControllerReleaseInfluence);
426      addHeader(_("Filter Cutoff Oscillator (LFO2)"));      lLFO2 = addHeader(_("Filter Cutoff Oscillator (LFO2)"));
427      addProp(eLFO2Frequency);      addProp(eLFO2Frequency);
428      addProp(eLFO2InternalDepth);      addProp(eLFO2InternalDepth);
429      addProp(eLFO2ControlDepth);      addProp(eLFO2ControlDepth);
# Line 569  void DimRegionEdit::addString(const char Line 569  void DimRegionEdit::addString(const char
569      rowno++;      rowno++;
570  }  }
571    
572  void DimRegionEdit::addHeader(const char* text)  Gtk::Label* DimRegionEdit::addHeader(const char* text)
573  {  {
574      if (firstRowInBlock < rowno - 1)      if (firstRowInBlock < rowno - 1)
575      {      {
# Line 587  void DimRegionEdit::addHeader(const char Line 587  void DimRegionEdit::addHeader(const char
587                            Gtk::FILL, Gtk::SHRINK);                            Gtk::FILL, Gtk::SHRINK);
588      rowno++;      rowno++;
589      firstRowInBlock = rowno;      firstRowInBlock = rowno;
590        return label;
591  }  }
592    
593  void DimRegionEdit::nextPage()  void DimRegionEdit::nextPage()
# Line 633  void DimRegionEdit::set_dim_region(gig:: Line 634  void DimRegionEdit::set_dim_region(gig::
634      set_sensitive(d);      set_sensitive(d);
635      if (!d) return;      if (!d) return;
636    
     // TODO: Here is where we decide which dimregions that are going  
     // to be modified when the user changes a parameter. For now, just  
     // choose the shown dimregion.  
     dimregs.clear();  
     dimregs.insert(d);  
   
637      update_model++;      update_model++;
638      eEG1PreAttack.set_value(d->EG1PreAttack);      eEG1PreAttack.set_value(d->EG1PreAttack);
639      eEG1Attack.set_value(d->EG1Attack);      eEG1Attack.set_value(d->EG1Attack);
# Line 754  void DimRegionEdit::VCFEnabled_toggled() Line 749  void DimRegionEdit::VCFEnabled_toggled()
749      eVCFResonanceController.set_sensitive(sensitive);      eVCFResonanceController.set_sensitive(sensitive);
750      eVCFKeyboardTracking.set_sensitive(sensitive);      eVCFKeyboardTracking.set_sensitive(sensitive);
751      eVCFKeyboardTrackingBreakpoint.set_sensitive(sensitive);      eVCFKeyboardTrackingBreakpoint.set_sensitive(sensitive);
752        lEG2->set_sensitive(sensitive);
753      eEG2PreAttack.set_sensitive(sensitive);      eEG2PreAttack.set_sensitive(sensitive);
754      eEG2Attack.set_sensitive(sensitive);      eEG2Attack.set_sensitive(sensitive);
755      eEG2Decay1.set_sensitive(sensitive);      eEG2Decay1.set_sensitive(sensitive);
# Line 764  void DimRegionEdit::VCFEnabled_toggled() Line 760  void DimRegionEdit::VCFEnabled_toggled()
760      eEG2ControllerAttackInfluence.set_sensitive(sensitive);      eEG2ControllerAttackInfluence.set_sensitive(sensitive);
761      eEG2ControllerDecayInfluence.set_sensitive(sensitive);      eEG2ControllerDecayInfluence.set_sensitive(sensitive);
762      eEG2ControllerReleaseInfluence.set_sensitive(sensitive);      eEG2ControllerReleaseInfluence.set_sensitive(sensitive);
763        lLFO2->set_sensitive(sensitive);
764      eLFO2Frequency.set_sensitive(sensitive);      eLFO2Frequency.set_sensitive(sensitive);
765      eLFO2InternalDepth.set_sensitive(sensitive);      eLFO2InternalDepth.set_sensitive(sensitive);
766      eLFO2ControlDepth.set_sensitive(sensitive);      eLFO2ControlDepth.set_sensitive(sensitive);
# Line 961  bool DimRegionEdit::set_sample(gig::Samp Line 958  bool DimRegionEdit::set_sample(gig::Samp
958          // currently commented because we're sending a similar signal in MainWindow::on_sample_label_drop_drag_data_received()          // currently commented because we're sending a similar signal in MainWindow::on_sample_label_drop_drag_data_received()
959          //dimreg_to_be_changed_signal.emit(dimregion);          //dimreg_to_be_changed_signal.emit(dimregion);
960    
961            // make sure stereo samples always are the same in both
962            // dimregs in the samplechannel dimension
963            int nbDimregs = 1;
964            gig::DimensionRegion* d[2] = { dimregion, 0 };
965            if (sample->Channels == 2) {
966                gig::Region* region = dimregion->GetParent();
967    
968                int bitcount = 0;
969                int stereo_bit = 0;
970                for (int dim = 0 ; dim < region->Dimensions ; dim++) {
971                    if (region->pDimensionDefinitions[dim].dimension == gig::dimension_samplechannel) {
972                        stereo_bit = 1 << bitcount;
973                        break;
974                    }
975                    bitcount += region->pDimensionDefinitions[dim].bits;
976                }
977    
978                if (stereo_bit) {
979                    int dimregno;
980                    for (dimregno = 0 ; dimregno < region->DimensionRegions ; dimregno++) {
981                        if (region->pDimensionRegions[dimregno] == dimregion) {
982                            break;
983                        }
984                    }
985                    d[0] = region->pDimensionRegions[dimregno & ~stereo_bit];
986                    d[1] = region->pDimensionRegions[dimregno | stereo_bit];
987                    nbDimregs = 2;
988                }
989            }
990    
991          gig::Sample* oldref = dimregion->pSample;          gig::Sample* oldref = dimregion->pSample;
         dimregion->pSample = sample;  
992    
993          // copy sample information from Sample to DimensionRegion          for (int i = 0 ; i < nbDimregs ; i++) {
994                d[i]->pSample = sample;
995    
996          dimregion->UnityNote = sample->MIDIUnityNote;              // copy sample information from Sample to DimensionRegion
         dimregion->FineTune = sample->FineTune;  
997    
998          int loops = sample->Loops ? 1 : 0;              d[i]->UnityNote = sample->MIDIUnityNote;
999          while (dimregion->SampleLoops > loops) {              d[i]->FineTune = sample->FineTune;
1000              dimregion->DeleteSampleLoop(&dimregion->pSampleLoops[0]);  
1001          }              int loops = sample->Loops ? 1 : 0;
1002          while (dimregion->SampleLoops < sample->Loops) {              while (d[i]->SampleLoops > loops) {
1003              DLS::sample_loop_t loop;                  d[i]->DeleteSampleLoop(&d[i]->pSampleLoops[0]);
1004              dimregion->AddSampleLoop(&loop);              }
1005          }              while (d[i]->SampleLoops < sample->Loops) {
1006          if (loops) {                  DLS::sample_loop_t loop;
1007              dimregion->pSampleLoops[0].Size = sizeof(DLS::sample_loop_t);                  d[i]->AddSampleLoop(&loop);
1008              dimregion->pSampleLoops[0].LoopType = sample->LoopType;              }
1009              dimregion->pSampleLoops[0].LoopStart = sample->LoopStart;              if (loops) {
1010              dimregion->pSampleLoops[0].LoopLength = sample->LoopEnd - sample->LoopStart + 1;                  d[i]->pSampleLoops[0].Size = sizeof(DLS::sample_loop_t);
1011                    d[i]->pSampleLoops[0].LoopType = sample->LoopType;
1012                    d[i]->pSampleLoops[0].LoopStart = sample->LoopStart;
1013                    d[i]->pSampleLoops[0].LoopLength = sample->LoopEnd - sample->LoopStart + 1;
1014                }
1015          }          }
1016    
1017          // update ui          // update ui

Legend:
Removed from v.1460  
changed lines
  Added in v.1798

  ViewVC Help
Powered by ViewVC