diff options
| author | Florian Jung <flo@windfisch.org> | 2011-05-22 14:11:41 +0000 | 
|---|---|---|
| committer | Florian Jung <flo@windfisch.org> | 2011-05-22 14:11:41 +0000 | 
| commit | c3d2b8170870d7c0025d902b675fac417019aa7b (patch) | |
| tree | 54df193cb5103e5960d118cf1f2bdf725fc811cf /muse2/muse | |
| parent | 0ec95d49a1cdf886fc44f98f68adc703ca65b3ee (diff) | |
"don't quantize len" is now respected
quantize in the drum editor automatically doesn't quantize len
Diffstat (limited to 'muse2/muse')
| -rw-r--r-- | muse2/muse/functions.cpp | 7 | ||||
| -rw-r--r-- | muse2/muse/functions.h | 2 | ||||
| -rw-r--r-- | muse2/muse/midiedit/drumedit.cpp | 8 | 
3 files changed, 12 insertions, 5 deletions
| diff --git a/muse2/muse/functions.cpp b/muse2/muse/functions.cpp index 3c6bbc89..ba5f33c4 100644 --- a/muse2/muse/functions.cpp +++ b/muse2/muse/functions.cpp @@ -108,7 +108,8 @@ bool quantize_notes(const set<Part*>& parts)  		return false;  	quantize_notes(parts, quantize_dialog->range, (config.division*4)/(1<<quantize_dialog->raster_power2), -	               quantize_dialog->strength, quantize_dialog->swing, quantize_dialog->threshold); +	               quantize_dialog->quant_len, quantize_dialog->strength, quantize_dialog->swing, +	               quantize_dialog->threshold);  	return true;  } @@ -314,7 +315,7 @@ unsigned quantize_tick(unsigned tick, unsigned raster, int swing)  		return tick_dest3;  } -void quantize_notes(const set<Part*>& parts, int range, int raster, int strength, int swing, int threshold) +void quantize_notes(const set<Part*>& parts, int range, int raster, bool quant_len, int strength, int swing, int threshold)  {  	map<Event*, Part*> events = get_events(parts, range);  	bool undo_started=false; @@ -338,7 +339,7 @@ void quantize_notes(const set<Part*>& parts, int range, int raster, int strength  			unsigned end_tick = begin_tick + len;  			int len_diff = quantize_tick(end_tick, raster, swing) - end_tick; -			if (abs(len_diff) > threshold) +			if ((abs(len_diff) > threshold) && quant_len)  				len = len + len_diff*strength/100;  			if (len <= 0) diff --git a/muse2/muse/functions.h b/muse2/muse/functions.h index 2b6dc711..4d7be6e2 100644 --- a/muse2/muse/functions.h +++ b/muse2/muse/functions.h @@ -42,7 +42,7 @@ std::map<Event*, Part*> get_events(const std::set<Part*>& parts, int range);  void modify_velocity(const std::set<Part*>& parts, int range, int rate, int offset=0);  void modify_off_velocity(const std::set<Part*>& parts, int range, int rate, int offset=0);  void modify_notelen(const std::set<Part*>& parts, int range, int rate, int offset=0); -void quantize_notes(const std::set<Part*>& parts, int range, int raster, int strength=100, int swing=0, int threshold=0); +void quantize_notes(const std::set<Part*>& parts, int range, int raster, bool len=false, int strength=100, int swing=0, int threshold=0);  void erase_notes(const std::set<Part*>& parts, int range);  void delete_overlaps(const std::set<Part*>& parts, int range);  void set_notelen(const std::set<Part*>& parts, int range, int len); diff --git a/muse2/muse/midiedit/drumedit.cpp b/muse2/muse/midiedit/drumedit.cpp index 9e64d7a7..97ab092e 100644 --- a/muse2/muse/midiedit/drumedit.cpp +++ b/muse2/muse/midiedit/drumedit.cpp @@ -908,7 +908,13 @@ void DrumEdit::cmd(int cmd)              case DrumCanvas::CMD_RESET: reset(); break;              case DrumCanvas::CMD_MODIFY_VELOCITY: modify_velocity(partlist_to_set(parts())); break;              case DrumCanvas::CMD_CRESCENDO: crescendo(partlist_to_set(parts())); break; -            case DrumCanvas::CMD_QUANTIZE: quantize_notes(partlist_to_set(parts())); break; +            case DrumCanvas::CMD_QUANTIZE: +                  if (quantize_dialog->exec()) +                        quantize_notes(partlist_to_set(parts()), quantize_dialog->range,  +                                       (config.division*4)/(1<<quantize_dialog->raster_power2), +                                       /* quant_len= */false, quantize_dialog->strength,  +                                       quantize_dialog->swing, quantize_dialog->threshold); +                  break;              case DrumCanvas::CMD_ERASE_EVENT: erase_notes(partlist_to_set(parts())); break;              case DrumCanvas::CMD_DEL: erase_notes(partlist_to_set(parts()),1); break; //delete selected events              case DrumCanvas::CMD_DELETE_OVERLAPS: delete_overlaps(partlist_to_set(parts())); break; | 
