reimplement quantization without (much) floating point (GUI edition)
This commit is contained in:
parent
b276254551
commit
6effcc7723
@ -29,6 +29,7 @@
|
||||
#include "public_editor.h"
|
||||
|
||||
#include "pbd/i18n.h"
|
||||
#include "pbd/integer_division.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace Gtk;
|
||||
@ -135,42 +136,43 @@ QuantizeDialog::~QuantizeDialog()
|
||||
{
|
||||
}
|
||||
|
||||
double
|
||||
Temporal::Beats
|
||||
QuantizeDialog::start_grid_size () const
|
||||
{
|
||||
return grid_size_to_musical_time (start_grid_combo.get_active_text ());
|
||||
}
|
||||
|
||||
double
|
||||
Temporal::Beats
|
||||
QuantizeDialog::end_grid_size () const
|
||||
{
|
||||
return grid_size_to_musical_time (end_grid_combo.get_active_text ());
|
||||
}
|
||||
|
||||
double
|
||||
Temporal::Beats
|
||||
QuantizeDialog::grid_size_to_musical_time (const string& txt) const
|
||||
{
|
||||
if ( txt == _grid_strings[0] ) { //"Main Grid"
|
||||
bool success;
|
||||
|
||||
Temporal::DoubleableBeats b = editor.get_grid_type_as_beats (success, timepos_t (0));
|
||||
Temporal::Beats b = editor.get_grid_type_as_beats (success, timepos_t (0));
|
||||
if (!success) {
|
||||
return 1.0;
|
||||
return Temporal::Beats (1, 0);
|
||||
}
|
||||
return b.to_double();
|
||||
return b;
|
||||
}
|
||||
|
||||
|
||||
double divisor = 1.0;
|
||||
Temporal::Beats b (1, 0);
|
||||
|
||||
for (size_t i = 1; i < grid_strings.size(); ++i) {
|
||||
if (txt == grid_strings[i]) {
|
||||
assert (_grid_beats[i] != 0);
|
||||
divisor = 1.0 / _grid_beats[i];
|
||||
b = Temporal::Beats::ticks (int_div_round (Temporal::Beats::PPQN, (int32_t) i));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return divisor;
|
||||
return b;
|
||||
}
|
||||
|
||||
float
|
||||
|
@ -46,8 +46,8 @@ public:
|
||||
QuantizeDialog (PublicEditor&);
|
||||
~QuantizeDialog ();
|
||||
|
||||
double start_grid_size() const;
|
||||
double end_grid_size() const;
|
||||
Temporal::Beats start_grid_size() const;
|
||||
Temporal::Beats end_grid_size() const;
|
||||
bool snap_start() const { return snap_start_button.get_active(); }
|
||||
bool snap_end() const { return snap_end_button.get_active(); }
|
||||
float strength() const;
|
||||
@ -74,7 +74,7 @@ private:
|
||||
static std::vector<std::string> grid_strings;
|
||||
static std::vector<std::string> type_strings;
|
||||
|
||||
double grid_size_to_musical_time (const std::string&) const;
|
||||
Temporal::Beats grid_size_to_musical_time (const std::string&) const;
|
||||
};
|
||||
|
||||
#endif /* __ardour_gtk2_quantize_dialog_h_ */
|
||||
|
Loading…
Reference in New Issue
Block a user