Push2: Implement special "sequential" mode for in-key note grids
This makes "sequential" more or less mean an octave vertical interval, but only for in-key mode. For chromatic mode, "sequential" is still just a naive wrap-around layout for every note.
This commit is contained in:
parent
a6cd0a3f6e
commit
7883695ba9
@ -79,7 +79,7 @@ using namespace Gtkmm2ext;
|
||||
#define PUSH2 0x1967
|
||||
|
||||
static int
|
||||
row_interval_semitones (const Push2::RowInterval row_interval)
|
||||
row_interval_semitones (const Push2::RowInterval row_interval, const bool inkey)
|
||||
{
|
||||
switch (row_interval) {
|
||||
case Push2::Third:
|
||||
@ -89,7 +89,7 @@ row_interval_semitones (const Push2::RowInterval row_interval)
|
||||
case Push2::Fifth:
|
||||
return 7;
|
||||
case Push2::Sequential:
|
||||
return 8;
|
||||
return inkey ? 12 : 8;
|
||||
}
|
||||
|
||||
return 5;
|
||||
@ -1531,7 +1531,7 @@ Push2::set_pad_scale (const int scale_root,
|
||||
|
||||
// Call the appropriate method to set up active pads
|
||||
|
||||
const int vertical_semitones = row_interval_semitones(row_interval);
|
||||
const int vertical_semitones = row_interval_semitones(row_interval, inkey);
|
||||
if (inkey) {
|
||||
set_pad_scale_in_key(scale_root, octave, mode, origin, vertical_semitones);
|
||||
} else {
|
||||
|
@ -43,7 +43,7 @@ using namespace ArdourCanvas;
|
||||
static double unselected_root_alpha = 0.5;
|
||||
|
||||
static const char*
|
||||
row_interval_string (const Push2::RowInterval row_interval)
|
||||
row_interval_string (const Push2::RowInterval row_interval, const bool inkey)
|
||||
{
|
||||
switch (row_interval) {
|
||||
case Push2::Third:
|
||||
@ -53,7 +53,7 @@ row_interval_string (const Push2::RowInterval row_interval)
|
||||
case Push2::Fifth:
|
||||
return _("5th \u2191");
|
||||
case Push2::Sequential:
|
||||
return _("Sequential \u2191");
|
||||
return inkey ? _("Octave \u2191") : _("Sequential \u2191");
|
||||
}
|
||||
|
||||
return "";
|
||||
@ -123,7 +123,7 @@ ScaleLayout::ScaleLayout (Push2& p, Session & s, std::string const & name)
|
||||
_row_interval_text->set_font_description (fd);
|
||||
_row_interval_text->set_position (Duple (10, 60));
|
||||
_row_interval_text->set_color (_p2.get_color (Push2::LightBackground));
|
||||
_row_interval_text->set (row_interval_string (_p2.row_interval ()));
|
||||
_row_interval_text->set (row_interval_string (_p2.row_interval (), _p2.in_key ()));
|
||||
|
||||
_column_interval_text = new Text (this);
|
||||
_column_interval_text->set_font_description (fd);
|
||||
@ -443,7 +443,7 @@ ScaleLayout::strip_vpot (int n, int delta)
|
||||
row_interval,
|
||||
_p2.in_key ());
|
||||
|
||||
_row_interval_text->set(row_interval_string(row_interval));
|
||||
_row_interval_text->set(row_interval_string(row_interval, _p2.in_key ()));
|
||||
} else {
|
||||
if (_vpot_delta_cnt < 0) {
|
||||
_scale_menu->scroll (Push2Menu::DirectionUp);
|
||||
@ -529,14 +529,17 @@ ScaleLayout::show_root_state ()
|
||||
return;
|
||||
}
|
||||
|
||||
_row_interval_text->set (
|
||||
row_interval_string (_p2.row_interval (), _p2.in_key ()));
|
||||
|
||||
_column_interval_text->set (column_interval_string (_p2.in_key ()));
|
||||
|
||||
if (_p2.in_key()) {
|
||||
_chromatic_text->set_color (change_alpha (_chromatic_text->color(), unselected_root_alpha));
|
||||
_inkey_text->set_color (change_alpha (_inkey_text->color(), 1.0));
|
||||
_column_interval_text->set(column_interval_string(true));
|
||||
} else {
|
||||
_inkey_text->set_color (change_alpha (_chromatic_text->color(), unselected_root_alpha));
|
||||
_chromatic_text->set_color (change_alpha (_inkey_text->color(), 1.0));
|
||||
_column_interval_text->set(column_interval_string(false));
|
||||
}
|
||||
|
||||
Pango::FontDescription fd_bold ("Sans Bold 10");
|
||||
|
Loading…
Reference in New Issue
Block a user