Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
7e55bfb
Extend LMMS note range to match MIDI specification (fixes #1857)
he29-net Dec 17, 2019
67fc3a6
Update src/core/midi/MidiClient.cpp
he29-net Dec 19, 2019
8319133
Apply suggestions from code review
he29-net Dec 19, 2019
3dea4b9
Formatting changes
he29-net Dec 19, 2019
9dc7985
Remove useless Note.h includes, fix basenote and octave offsets in Hy…
he29-net Dec 19, 2019
1e35331
Migrate all presets to new basenote; remove offset from OpulenZ
he29-net Dec 20, 2019
d5b94f8
Implement upgrade routine for affected instruments; replace c-style c…
he29-net Dec 20, 2019
a2aebb5
WIP, initial GUI mockup
he29-net Dec 21, 2019
8aea594
Basic Microtuner skeleton; implement note boundary settings and checks
he29-net Dec 23, 2019
f499328
Draw disabled PianoView keys with lower contrast; WIP the same for Pi…
he29-net Dec 23, 2019
4778b8e
Finish range grey-out for PianoRoll after rebase
he29-net Dec 24, 2019
0255e6d
Checkpoint before nuking the in-instrument scale setup widgets
he29-net Dec 25, 2019
bc61c89
Erradicate BaseFreq, get a basic frequency retuning working.
he29-net Dec 25, 2019
d979313
WIP, repo sync
he29-net Dec 28, 2019
36dcb3e
Checkpoint before nuking WIP interpolating note detune
he29-net Jan 4, 2020
3906d6d
Key to frequency translation working, native instruments can use pre-…
he29-net Jan 4, 2020
2c95fbe
Remove scale / keymap editor from instrument window; add a project-wi…
he29-net May 8, 2020
d692376
WIP before potentially nuking the LUT approach; working Scale→freq ta…
he29-net May 10, 2020
418174e
Moved from LUT approach to on-demand frequency calculation, added bas…
he29-net May 19, 2020
d668090
Keyboard mapping probably kinda working
he29-net May 24, 2020
233d37e
Validation of user entered scale and keymap data
he29-net May 24, 2020
52f066a
Draft of LcdFloatSpinBox; range spinboxes connected to dummy models
he29-net May 25, 2020
d5eb119
Finish LcdFloatSpinBox
he29-net May 26, 2020
f5a5d6b
Scale and keymap storage migrated to shared_ptr; changes from config …
he29-net May 28, 2020
39d12a3
Update scale and keymap lists in clients when an element is changed
he29-net May 29, 2020
ca96392
Mostly GUI tweaks
he29-net May 29, 2020
847ac55
Implement save / load functionality; various other small fixes and ch…
he29-net May 31, 2020
1fac892
Add a few scales and mappings to the default template; update drawing…
he29-net May 31, 2020
fa2483a
Add missing <memory> include
he29-net May 31, 2020
5217dcf
Implement .scl and .kbm save and load functionality
he29-net Jun 5, 2020
b55dbe5
Allow empty keymap, treat it as "all keys, 1:1"
he29-net Jun 6, 2020
2bfd2ed
Propagate keymap updates to PianoRoll and PianoView; fix segfault in …
he29-net Jun 6, 2020
2b51902
GUI tweaks (don't show microtuner options for MIDI-based instruments;…
he29-net Jun 6, 2020
afd06b3
Cleanup pass (code style, dead / debug code, old comments, ..)
he29-net Jun 6, 2020
ef13dc9
Apply suggestions from code review
he29-net Jun 7, 2020
0cbeec1
Change formatting of the Keymap constructor
he29-net Jun 14, 2020
e958de9
Add an explicit QPainterPath include since MacOS suddenly does not bu…
he29-net Jun 14, 2020
b931977
Merge remote-tracking branch 'upstream/master' into microtonal
he29-net Jul 25, 2020
4951321
Merge remote-tracking branch 'upstream/master' into microtonal
he29-net Oct 17, 2020
22e6ed6
Bug fixes after the merge
he29-net Oct 17, 2020
750a547
Fix font metric margin addition
he29-net Oct 19, 2020
a9f7930
Formatting and NULL → nullptr changes from suggestions
he29-net Oct 19, 2020
be82613
Update formatting in src/tracks/InstrumentTrack.cpp
he29-net Oct 19, 2020
7598334
Merge branch 'master' into microtonal
he29-net Oct 19, 2020
0176e99
Update formatting in src/gui/editors/PianoRoll.cpp
he29-net Oct 20, 2020
e714cee
Update formatting in PianoRoll.cpp
he29-net Oct 20, 2020
0009986
Fix octave wrapping for empty scale, remove dead code
he29-net Oct 24, 2020
8077547
Fix note descriptions in Xpressive; request change in model before re…
he29-net Nov 13, 2020
6e03859
Apply suggestions from code review
he29-net Nov 13, 2020
7a5375d
Batch of simple changes suggested in review
he29-net Nov 13, 2020
dd566f5
Batch of fixes and tweaks
he29-net Nov 15, 2020
68f36d7
Apply suggestions from code review
he29-net Nov 15, 2020
b0c5e70
PianoView tweaks
he29-net Nov 15, 2020
ff463a4
Fix Hydrogen import, rewrite upgrade routine
he29-net Nov 26, 2020
b504a6b
Merge branch 'master' into microtonal
he29-net Dec 1, 2020
b606900
Fix merge error
he29-net Dec 1, 2020
6af2964
Oopsie
he29-net Dec 5, 2020
89c2cd4
Merge branch 'master' into microtonal
he29-net Dec 5, 2020
d961a3e
Changes from review (comment update, range based loop, lv2instrument)
he29-net Dec 11, 2020
be245cc
Merge branch 'master' into microtonal
he29-net Dec 11, 2020
1d0b82c
Fix the upgrade routine
he29-net Dec 13, 2020
97470ce
Batch of implemented suggestions from review
he29-net Dec 25, 2020
49176ad
Refactor Scale class (constructors + ratio caching)
he29-net Dec 26, 2020
5f2ab6b
Pass QStrings and vectors in Keymap and Scale using references, remov…
he29-net Dec 28, 2020
c83281e
More accurate PianoView scrolling; fix velocity from height; move bla…
he29-net Dec 28, 2020
18d4a8d
Merge enabled() condition into keyRangeImport(); add missing update t…
he29-net Dec 28, 2020
58be1b6
Remove deprecated bitmaps
he29-net Dec 28, 2020
7d18486
Separate LcdFloatSpinBox to another PR (step 1)
he29-net Dec 28, 2020
9af416b
Separate LcdFloatSpinBox to another PR (step 2)
he29-net Dec 28, 2020
3fcf65b
Merge remote-tracking branch 'upstream/master' into microtonal
he29-net Mar 15, 2021
29c92d8
Replace the placeholder base frequency knob with LcdFloatSpinBox
he29-net Mar 16, 2021
4032005
Merge remote-tracking branch 'upstream/master' into microtonal
he29-net Apr 23, 2021
05f82cf
Cherry pick and modify "The Great Purge (and a modified preset upgrad…
he29-net Apr 23, 2021
2a42b83
Fix kicker basenote in default template; small formatting changes
he29-net Apr 24, 2021
9dcf2ad
Apply suggestions from code review
he29-net Jun 15, 2021
41650d7
Make Microtuner Config window resizable; do not save unnecessary inte…
Jun 15, 2021
8b4ca5b
Move some functions from Microtuner to InstrumentTrack, remove Instru…
he29-net Jun 18, 2021
c0f80f1
Fix forgotten microtuner calls in sfxr and AFP
he29-net Jun 19, 2021
c7024dc
Revert "Pass QStrings and vectors in Keymap and Scale using reference…
he29-net Jul 1, 2021
fe44d15
Revert reverted piece of Keymap.h formatting
he29-net Jul 1, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Mostly GUI tweaks
  • Loading branch information
he29-net committed May 29, 2020
commit ca96392c4f71db1ff2ab14717e54521e1c9c0b34
5 changes: 5 additions & 0 deletions include/InstrumentMiscView.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
class ComboBox;
class GroupBox;
class InstrumentTrack;
class LedCheckBox;


class InstrumentMiscView : public QWidget
Expand All @@ -48,12 +49,16 @@ class InstrumentMiscView : public QWidget
ComboBox *scaleCombo() {return m_scaleCombo;}
ComboBox *keymapCombo() {return m_keymapCombo;}

LedCheckBox *rangeImportCheckbox() {return m_rangeImportCheckbox;}

private:
GroupBox *m_pitchGroupBox;
GroupBox *m_microtunerGroupBox;

ComboBox *m_scaleCombo;
ComboBox *m_keymapCombo;

LedCheckBox *m_rangeImportCheckbox;
};

#endif
6 changes: 6 additions & 0 deletions include/InstrumentTrack.h
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,11 @@ class LMMS_EXPORT InstrumentTrack : public Track, public MidiEventProcessor
return &m_keymapModel;
}

BoolModel *keyRangeImportModel()
{
return &m_keyRangeImportModel;
}

bool isArpeggioEnabled() const
{
return m_arpeggio.m_arpEnabledModel.value();
Expand Down Expand Up @@ -319,6 +324,7 @@ protected slots:
Microtuner m_microtuner;
ComboBoxModel m_scaleModel;
ComboBoxModel m_keymapModel;
BoolModel m_keyRangeImportModel;


friend class InstrumentTrackView;
Expand Down
9 changes: 5 additions & 4 deletions src/gui/widgets/InstrumentMiscView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,11 @@ InstrumentMiscView::InstrumentMiscView(InstrumentTrack *it, QWidget *parent) :
m_keymapCombo->setFixedHeight(comboHeight);
microtunerLayout->addWidget(m_keymapCombo);

LedCheckBox *importCheckbox = new LedCheckBox(tr("Import first and last notes from keymap"), this);
importCheckbox->setToolTip(tr("When enabled, the first and last note of this instrument will be overwritten with values specified by the active keymap."));
importCheckbox->setCheckable(true);
microtunerLayout->addWidget(importCheckbox);
m_rangeImportCheckbox = new LedCheckBox(tr("Import note ranges from keymap"), this);
m_rangeImportCheckbox->setModel(it->keyRangeImportModel());
m_rangeImportCheckbox->setToolTip(tr("When enabled, the first, last and base notes of this instrument will be overwritten with values specified by the selected keymap."));
m_rangeImportCheckbox->setCheckable(true);
microtunerLayout->addWidget(m_rangeImportCheckbox);

// Fill remaining space
layout->addStretch();
Expand Down
14 changes: 8 additions & 6 deletions src/gui/widgets/MicrotunerConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ MicrotunerConfig::MicrotunerConfig() :

for (unsigned int i = 0; i < MaxScaleCount; i++)
{
m_scaleComboModel.addItem(Engine::getSong()->getScale(i)->getDescription());
m_scaleComboModel.addItem(QString::number(i) + ": " + Engine::getSong()->getScale(i)->getDescription());
}
ComboBox *scaleCombo = new ComboBox();
scaleCombo->setFixedHeight(comboHeight);
Expand All @@ -87,7 +87,7 @@ MicrotunerConfig::MicrotunerConfig() :
m_scaleTextEdit = new QTextEdit();
m_scaleTextEdit->setAcceptRichText(false);
m_scaleTextEdit->setPlainText("100.0\n200.0\n300.0\n400.0\n500.0\n600.0\n700.0\n800.0\n900.0\n1000.0\n1100.0\n1200.0");
m_scaleTextEdit->setToolTip(tr("Enter intervals on separate lines. Numbers containing a decimal point are treated as cents. Other input is treated as an integer ratio and must be in the form of \'a/b\' or \'a\'. Unity (0.0 cents or ratio 1/1) is always present as a hidden first value."));
m_scaleTextEdit->setToolTip(tr("Enter intervals on separate lines. Numbers containing a decimal point are treated as cents.\nOther inputs are treated as integer ratios and must be in the form of \'a/b\' or \'a\'.\nUnity (0.0 cents or ratio 1/1) is always present as a hidden first value; do not enter it manually."));
microtunerLayout->addWidget(m_scaleTextEdit, 4, 0, 5, 2, Qt::AlignLeft | Qt::AlignTop);

QPushButton *applyScaleButton = new QPushButton(tr("Apply scale"));
Expand All @@ -102,7 +102,7 @@ MicrotunerConfig::MicrotunerConfig() :

for (unsigned int i = 0; i < MaxKeymapCount; i++)
{
m_keymapComboModel.addItem(Engine::getSong()->getKeymap(i)->getDescription());
m_keymapComboModel.addItem(QString::number(i) + ": " + Engine::getSong()->getKeymap(i)->getDescription());
}
ComboBox *keymapCombo = new ComboBox();
keymapCombo->setFixedHeight(comboHeight);
Expand All @@ -122,7 +122,7 @@ MicrotunerConfig::MicrotunerConfig() :
m_keymapTextEdit = new QTextEdit();
m_keymapTextEdit->setAcceptRichText(false);
m_keymapTextEdit->setPlainText("0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11");
m_keymapTextEdit->setToolTip(tr("Enter key mappings on separate lines. Each line assigns a scale degree to a MIDI key, starting with the middle key and continuing in sequence. The pattern repeats for keys outside of the explicit keymap range. Multiple keys can be mapped to the same scale degree. Enter \'x\' if you wish to leave the key disabled / not mapped."));
m_keymapTextEdit->setToolTip(tr("Enter key mappings on separate lines. Each line assigns a scale degree to a MIDI key,\nstarting with the middle key and continuing in sequence.\nThe pattern repeats for keys outside of the explicit keymap range.\nMultiple keys can be mapped to the same scale degree.\nEnter \'x\' if you wish to leave the key disabled / not mapped."));
microtunerLayout->addWidget(m_keymapTextEdit, 4, 2, 1, 2, Qt::AlignRight | Qt::AlignTop);

// Mapping ranges
Expand Down Expand Up @@ -345,7 +345,8 @@ bool MicrotunerConfig::applyScale()

auto newScale = std::make_shared<Scale>(m_scaleNameEdit->text(), newIntervals);
Comment thread
he29-net marked this conversation as resolved.
Outdated
song->setScale(m_scaleComboModel.value(), newScale);
m_scaleComboModel.replaceItem(m_scaleComboModel.value(), m_scaleNameEdit->text());
m_scaleComboModel.replaceItem(m_scaleComboModel.value(),
QString::number(m_scaleComboModel.value()) + ": " + m_scaleNameEdit->text());

return true;
}
Expand Down Expand Up @@ -381,7 +382,8 @@ bool MicrotunerConfig::applyKeymap()
m_middleKeyModel.value(),
m_baseFreqModel.value());
song->setKeymap(m_keymapComboModel.value(), newKeymap);
m_keymapComboModel.replaceItem(m_keymapComboModel.value(), m_keymapNameEdit->text());
m_keymapComboModel.replaceItem(m_keymapComboModel.value(),
QString::number(m_keymapComboModel.value()) + ": " + m_keymapNameEdit->text());

return true;
}
Expand Down
20 changes: 13 additions & 7 deletions src/tracks/InstrumentTrack.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,8 @@ InstrumentTrack::InstrumentTrack( TrackContainer* tc ) :
m_piano( this ),
Comment thread
he29-net marked this conversation as resolved.
Outdated
m_microtuner(this),
m_scaleModel(this, tr("Selected scale")),
m_keymapModel(this, tr("Selected keyboard mapping"))
m_keymapModel(this, tr("Selected keyboard mapping")),
m_keyRangeImportModel(true)
{
m_pitchModel.setCenterValue( 0 );
m_panningModel.setCenterValue( DefaultPanning );
Expand All @@ -135,12 +136,12 @@ InstrumentTrack::InstrumentTrack( TrackContainer* tc ) :

for (unsigned int i = 0; i < MaxScaleCount; i++)
{
m_scaleModel.addItem(Engine::getSong()->getScale(i)->getDescription());
m_scaleModel.addItem(QString::number(i) + ": " + Engine::getSong()->getScale(i)->getDescription());
}

for (unsigned int i = 0; i < MaxKeymapCount; i++)
{
m_keymapModel.addItem(Engine::getSong()->getKeymap(i)->getDescription());
m_keymapModel.addItem(QString::number(i) + ": " + Engine::getSong()->getKeymap(i)->getDescription());
}

setName( tr( "Default preset" ) );
Expand Down Expand Up @@ -962,13 +963,15 @@ void InstrumentTrack::updateScaleList(int index)
{
if (index >= 0 && index < MaxScaleCount)
{
m_scaleModel.replaceItem(index, Engine::getSong()->getScale(index)->getDescription());
m_scaleModel.replaceItem(index,
QString::number(index) + ": " + Engine::getSong()->getScale(index)->getDescription());
}
else
{
for (int i = 0; i < MaxScaleCount; i++)
{
m_scaleModel.replaceItem(index, Engine::getSong()->getScale(i)->getDescription());
m_scaleModel.replaceItem(i,
QString::number(i) + ": " + Engine::getSong()->getScale(i)->getDescription());
}
}
}
Expand All @@ -981,13 +984,15 @@ void InstrumentTrack::updateKeymapList(int index)
{
if (index >= 0 && index < MaxKeymapCount)
{
m_keymapModel.replaceItem(index, Engine::getSong()->getKeymap(index)->getDescription());
m_keymapModel.replaceItem(index,
QString::number(index) + ": " + Engine::getSong()->getKeymap(index)->getDescription());
}
else
{
for (int i = 0; i < MaxKeymapCount; i++)
{
m_keymapModel.replaceItem(index, Engine::getSong()->getKeymap(i)->getDescription());
m_keymapModel.replaceItem(i,
QString::number(i) + ": " + Engine::getSong()->getKeymap(i)->getDescription());
}
}
}
Expand Down Expand Up @@ -1670,6 +1675,7 @@ void InstrumentTrackWindow::modelChanged()
m_miscView->microtunerGroupBox()->setModel(m_track->microtunerModel()->enabledModel());
m_miscView->scaleCombo()->setModel(m_track->scaleModel());
m_miscView->keymapCombo()->setModel(m_track->keymapModel());
m_miscView->rangeImportCheckbox()->setModel(m_track->keyRangeImportModel());
updateName();
}

Expand Down