LMMS
Loading...
Searching...
No Matches
PianoRoll.h
Go to the documentation of this file.
1/*
2 * PianoRoll.h - declaration of class PianoRoll which is a window where you
3 * can set and edit notes in an easy way
4 *
5 * Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
6 * Copyright (c) 2008 Andrew Kelley <superjoe30/at/gmail/dot/com>
7 *
8 * This file is part of LMMS - https://lmms.io
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public
12 * License as published by the Free Software Foundation; either
13 * version 2 of the License, or (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public
21 * License along with this program (see COPYING); if not, write to the
22 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
23 * Boston, MA 02110-1301 USA.
24 *
25 */
26
27#ifndef LMMS_GUI_PIANO_ROLL_H
28#define LMMS_GUI_PIANO_ROLL_H
29
30#include <QWidget>
31
32#include <vector>
33
34#include "Editor.h"
35#include "ComboBoxModel.h"
36#include "SerializingObject.h"
37#include "Note.h"
38#include "LmmsTypes.h"
39#include "Song.h"
40#include "StepRecorder.h"
41#include "StepRecorderWidget.h"
42
43class QPushButton;
44class QScrollBar;
45class QMenu;
46class QToolButton;
47
48namespace lmms
49{
50
51
52class MidiClip;
53
54
55namespace gui
56{
57
58class ComboBox;
59class PositionLine;
60class SimpleTextFloat;
61class TimeLineWidget;
62
63
64class PianoRoll : public QWidget
65{
66 Q_OBJECT
67 Q_PROPERTY(QColor barLineColor MEMBER m_barLineColor)
68 Q_PROPERTY(QColor beatLineColor MEMBER m_beatLineColor)
69 Q_PROPERTY(QColor lineColor MEMBER m_lineColor)
70 Q_PROPERTY(QColor noteModeColor MEMBER m_noteModeColor)
71 Q_PROPERTY(QColor noteColor MEMBER m_noteColor)
72 Q_PROPERTY(QColor stepNoteColor MEMBER m_stepNoteColor)
74 Q_PROPERTY(QColor ghostNoteColor MEMBER m_ghostNoteColor)
75 Q_PROPERTY(QColor noteTextColor MEMBER m_noteTextColor)
76 Q_PROPERTY(QColor ghostNoteTextColor MEMBER m_ghostNoteTextColor)
77 Q_PROPERTY(QColor barColor MEMBER m_barColor)
78 Q_PROPERTY(QColor selectedNoteColor MEMBER m_selectedNoteColor)
79 Q_PROPERTY(QColor textColor MEMBER m_textColor)
80 Q_PROPERTY(QColor textColorLight MEMBER m_textColorLight)
81 Q_PROPERTY(QColor textShadow MEMBER m_textShadow)
83 Q_PROPERTY(QColor knifeCutLine MEMBER m_knifeCutLineColor)
84 Q_PROPERTY(int noteOpacity MEMBER m_noteOpacity)
85 Q_PROPERTY(bool noteBorders MEMBER m_noteBorders)
86 Q_PROPERTY(int ghostNoteOpacity MEMBER m_ghostNoteOpacity)
87 Q_PROPERTY(bool ghostNoteBorders MEMBER m_ghostNoteBorders)
88 Q_PROPERTY(QColor backgroundShade MEMBER m_backgroundShade)
89 Q_PROPERTY(QColor outOfBoundsShade MEMBER m_outOfBoundsShade)
90
91 /* white key properties */
92 Q_PROPERTY(int whiteKeyWidth MEMBER m_whiteKeyWidth)
100 /* black key properties */
101 Q_PROPERTY(int blackKeyWidth MEMBER m_blackKeyWidth)
105public:
115
117 void reset();
118
119 // functions to display the hover-text labeling a note's volume/panning
120 void showTextFloat(const QString &text, const QPoint &pos, int timeout=-1);
121 void showVolTextFloat(volume_t vol, const QPoint &pos, int timeout=-1);
122 void showPanTextFloat(panning_t pan, const QPoint &pos, int timeout=-1);
123
124 void setCurrentMidiClip( MidiClip* newMidiClip );
125 void setGhostMidiClip( MidiClip* newMidiClip );
126 void loadGhostNotes( const QDomElement & de );
127 void loadMarkedSemiTones(const QDomElement & de);
128
129 inline void stopRecording()
130 {
131 m_recording = false;
132 }
133
134 inline bool isRecording() const
135 {
136 return m_recording;
137 }
138
139 inline bool isStepRecording() const
140 {
141 return m_stepRecorder.isRecording();
142 }
143
145 {
146 return m_midiClip;
147 }
148
149 bool hasValidMidiClip() const
150 {
151 return m_midiClip != nullptr;
152 }
153
154 int trackOctaveSize() const;
155
157
158 int quantization() const;
159
160protected:
161 enum class QuantizeAction
162 {
166 };
167
177
178 void keyPressEvent( QKeyEvent * ke ) override;
179 void keyReleaseEvent( QKeyEvent * ke ) override;
180 void leaveEvent( QEvent * e ) override;
181 void mousePressEvent( QMouseEvent * me ) override;
182 void mouseDoubleClickEvent( QMouseEvent * me ) override;
183 void mouseReleaseEvent( QMouseEvent * me ) override;
184 void mouseMoveEvent( QMouseEvent * me ) override;
185 void paintEvent( QPaintEvent * pe ) override;
186 void resizeEvent( QResizeEvent * re ) override;
187 void wheelEvent( QWheelEvent * we ) override;
188 void focusOutEvent( QFocusEvent * ) override;
189 void focusInEvent( QFocusEvent * ) override;
190
191 void drawNoteRect( QPainter & p, int x, int y,
192 int width, const Note * n, const QColor & noteCol, const QColor & noteTextColor,
193 const QColor & selCol, const int noteOpc, const bool borderless, bool drawNoteName );
194 void removeSelection();
195 void selectAll();
197 void selectNotesOnKey();
198
199 // for entering values with dblclick in the vol/pan bars
200 void enterValue( NoteVector* nv );
201
202 void updateYScroll();
203
204protected slots:
205 void play();
206 void record();
207 void recordAccompany();
208 bool toggleStepRecording();
209 void stop();
210
211 void startRecordNote( const lmms::Note & n );
212 void finishRecordNote( const lmms::Note & n );
213
214 void horScrolled( int new_pos );
215 void verScrolled( int new_pos );
216
217 void setEditMode(int mode);
218
219 void copySelectedNotes();
220 void cutSelectedNotes();
221 void pasteNotes();
222 bool deleteSelectedNotes();
223
224 void updatePosition();
227
228 void zoomingChanged();
229 void zoomingYChanged();
230 void quantizeChanged();
231 void noteLengthChanged();
232 void keyChanged();
234
236
237 void changeNoteEditMode( int i );
238 void markSemiTone(SemiToneMarkerAction i, bool fromMenu = true);
239
240 void hideMidiClip( lmms::MidiClip* clip );
241
242 void selectRegionFromPixels( int xStart, int xEnd );
243
244 void clearGhostClip();
245 void glueNotes();
246 void fitNoteLengths(bool fill);
247 void reverseNotes();
248 void constrainNoteLengths(bool constrainMax);
249
250 void changeSnapMode();
251
252
253signals:
255 void ghostClipSet(bool);
258
259
260private:
272
273 enum class NoteEditMode
274 {
277 Count // make sure this one is always last
278 };
279
280 enum class KeyType
281 {
285 };
286
287 enum class GridMode
288 {
291 // Free
292 };
293
295
296 std::vector<QString> m_nemStr; // gui names of each edit mode
297 QMenu * m_noteEditMenu; // when you right click below the key area
298
300 QMenu * m_semiToneMarkerMenu; // when you right click on the key area
302
303 PianoRoll();
305 ~PianoRoll() override = default;
306
307 void autoScroll(const TimePos & t );
308
309 TimePos newNoteLen() const;
310
311 void shiftPos(int amount);
312 void shiftPos(const NoteVector& notes, int amount);
313 void shiftSemiTone(int amount);
314 void shiftSemiTone(const NoteVector& notes, int amount);
315 bool isSelection() const;
316 int selectionCount() const;
317 void testPlayNote( Note * n );
318 void testPlayKey( int _key, int _vol, int _pan );
319 void pauseTestNotes(bool pause = true );
320 void playChordNotes(int key, int velocity=-1);
321 void pauseChordNotes(int key);
322
323 void setKnifeAction();
324 void cancelKnifeAction();
325
326 void setStrumAction();
327 void cancelStrumAction();
328
329 void updateScrollbars();
332
333 QList<int> getAllOctavesForKey( int keyToMirror ) const;
334
335 int noteEditTop() const;
336 int keyAreaBottom() const;
337 int noteEditBottom() const;
338 int keyAreaTop() const;
339 int noteEditRight() const;
340 int noteEditLeft() const;
341
342 int getKey(int y) const;
343 int yCoordOfKey(int key) const;
344
345 void dragNotes(int x, int y, bool alt, bool shift, bool ctrl);
346
347 static const int cm_scrollAmtHoriz = 10;
348 static const int cm_scrollAmtVert = 1;
349
350 QPixmap m_toolDraw = embed::getIconPixmap("edit_draw");
351 QPixmap m_toolErase = embed::getIconPixmap("edit_erase");
352 QPixmap m_toolSelect = embed::getIconPixmap("edit_select");
353 QPixmap m_toolMove = embed::getIconPixmap("edit_move");
354 QPixmap m_toolOpen = embed::getIconPixmap("automation");
355 QPixmap m_toolKnife = embed::getIconPixmap("edit_knife");
356 QPixmap m_toolStrum = embed::getIconPixmap("arp_free");
357
358 static std::array<KeyType, 12> prKeyOrder;
359
361
370
371 static const std::vector<float> m_zoomLevels;
372 static const std::vector<float> m_zoomYLevels;
373
376
377 inline const NoteVector & ghostNotes() const
378 {
379 return m_ghostNotes;
380 }
381
382 QScrollBar * m_leftRightScroll;
383 QScrollBar * m_topBottomScroll;
384
385 void adjustLeftRightScoll(int value);
386
390 QList<Note> m_recordingNotes;
391
396
401
402 // boundary box around all selected notes when dragging
407
408 // remember where the scrolling started when dragging so that
409 // we can handle dragging while scrolling with arrow keys
412
413 // remember the last x and y of a mouse movement
416
417 // x,y of when the user starts a drag
420
423 int m_ppb; // pixels per bar
426
431
432 // remember these values to use them
433 // for the next note that is set
437
438 //When resizing several notes, we want to calculate a common minimum length
440
441 int m_startKey; // first key when drawing
443
445 EditMode m_ctrlMode; // mode they were in before they hit ctrl
446 EditMode m_knifeMode; // mode they where in before entering knife mode
447 EditMode m_strumMode; //< mode they where in before entering strum mode
448
449 bool m_mouseDownRight; //true if right click is being held down
450
453
454 void copyToClipboard(const NoteVector & notes ) const;
455
456 void drawDetuningInfo( QPainter & _p, const Note * _n, int _x, int _y ) const;
457 bool mouseOverNote();
461
462 // turn a selection rectangle into selected notes
463 void computeSelectedNotes( bool shift );
464 void clearSelectedNotes();
465
466 // did we start a mouseclick with shift pressed
468
469 // Variables that hold the start and end position for the knife line
475
476 void updateKnifePos(QMouseEvent* me, bool initial);
477
483 std::optional<int> m_lastParameterEditTick = std::nullopt;
486
488 void updateParameterEditPos(QMouseEvent* me, Note::ParameterType paramType);
491
493 std::vector<NoteVector> m_selectedChords;
495 void setupSelectedChords();
496
501 float m_strumHeightRatio = 0.0f;
502 bool m_strumEnabled = false;
504 void updateStrumPos(QMouseEvent* me, bool initial, bool warp);
505
506
507 friend class PianoRollWindow;
508
511
512 // qproperty fields
536 /* white key properties */
545 /* black key properties */
550} ;
551
552
553
554
556{
557 Q_OBJECT
558public:
560
561 const MidiClip* currentMidiClip() const;
562 void setCurrentMidiClip( MidiClip* clip );
563 void setGhostMidiClip( MidiClip* clip );
564
565 int quantization() const;
566
567 void play() override;
568 void stop() override;
569 void record() override;
570 void recordAccompany() override;
571 void toggleStepRecording() override;
572 void stopRecording();
573
574 bool isRecording() const;
575
577 void reset();
578
581 void saveSettings(QDomDocument & doc, QDomElement & de ) override;
582 void loadSettings( const QDomElement & de ) override;
583
584 inline QString nodeName() const override
585 {
586 return "pianoroll";
587 }
588
589 QSize sizeHint() const override;
590 bool hasFocus() const;
591
592signals:
594
595
596private slots:
598 void ghostClipSet( bool state );
599 void exportMidiClip();
600 void importMidiClip();
601
602private:
603 void clipRenamed();
604 void focusInEvent(QFocusEvent * event) override;
605 void showEvent(QShowEvent* se) override;
606
607 void stopStepRecording();
609
611
612 QToolButton* m_fileToolsButton;
621 QPushButton * m_clearGhostButton;
622
623};
624
625
626} // namespace gui
627
628} // namespace lmms
629
630#endif // LMMS_GUI_PIANO_ROLL_H
Definition ComboBoxModel.h:39
Definition MidiClip.h:46
Definition Note.h:101
ParameterType
Types of per-note automation. Currently only detuning/pitch bending is supported.
Definition Note.h:129
virtual QDomElement saveState(QDomDocument &_doc, QDomElement &_parent)
Definition SerializingObject.cpp:51
SerializingObject()
Definition SerializingObject.cpp:32
virtual void restoreState(const QDomElement &_this)
Definition SerializingObject.cpp:69
PlayMode
Definition Song.h:72
Definition StepRecorder.h:45
Definition TimePos.h:68
Definition ComboBox.h:38
Editor(bool record=false, bool record_step=false)
Constructor.
Definition Editor.cpp:91
Definition PianoRoll.h:65
std::vector< NoteVector > m_selectedChords
Stores the chords for the strum tool.
Definition PianoRoll.h:493
bool m_recording
Definition PianoRoll.h:388
void setCurrentMidiClip(MidiClip *newMidiClip)
Definition PianoRoll.cpp:824
void constrainNoteLengths(bool constrainMax)
Definition PianoRoll.cpp:761
void zoomingChanged()
Definition PianoRoll.cpp:4915
QPixmap m_toolStrum
Definition PianoRoll.h:356
int m_selectStartKey
Definition PianoRoll.h:399
void quantizeNotes(QuantizeAction mode=QuantizeAction::Both)
Definition PianoRoll.cpp:4976
void clearGhostClip()
Definition PianoRoll.cpp:636
QColor m_outOfBoundsShade
Definition PianoRoll.h:535
TimePos newNoteLen() const
Definition PianoRoll.cpp:5039
int m_ghostNoteOpacity
Definition PianoRoll.h:531
QColor barLineColor
Definition PianoRoll.h:67
ComboBoxModel m_snapModel
Definition PianoRoll.h:369
int m_pianoKeySelected
Definition PianoRoll.h:301
QBrush whiteKeyDisabledBackground
Definition PianoRoll.h:99
void showVolTextFloat(volume_t vol, const QPoint &pos, int timeout=-1)
Definition PianoRoll.cpp:462
void mouseMoveEvent(QMouseEvent *me) override
Definition PianoRoll.cpp:2460
QMenu * m_semiToneMarkerMenu
Definition PianoRoll.h:300
ComboBoxModel m_keyModel
Definition PianoRoll.h:366
float m_strumHeightRatio
Definition PianoRoll.h:501
int m_totalKeysToScroll
Definition PianoRoll.h:424
QColor m_textShadow
Definition PianoRoll.h:527
void mouseDoubleClickEvent(QMouseEvent *me) override
Definition PianoRoll.cpp:2056
PianoRoll(const PianoRoll &)
friend class PianoRollWindow
Definition PianoRoll.h:507
void updatePositionAccompany()
Definition PianoRoll.cpp:4882
PositionLine * m_positionLine
Definition PianoRoll.h:294
static const std::vector< float > m_zoomYLevels
Definition PianoRoll.h:372
TimeLineWidget * m_timeLine
Definition PianoRoll.h:451
int m_noteOpacity
Definition PianoRoll.h:530
ComboBoxModel m_scaleModel
Definition PianoRoll.h:367
int m_whiteKeyWidth
Definition PianoRoll.h:537
void cancelStrumAction()
Definition PianoRoll.cpp:2250
bool deleteSelectedNotes()
Definition PianoRoll.cpp:4796
int m_startKey
Definition PianoRoll.h:441
QColor markedSemitoneColor
Definition PianoRoll.h:82
void autoScroll(const TimePos &t)
Definition PianoRoll.cpp:4816
QColor m_whiteKeyActiveTextColor
Definition PianoRoll.h:538
int m_knifeStartKey
Definition PianoRoll.h:471
void horScrolled(int new_pos)
Definition PianoRoll.cpp:4491
QColor m_textColorLight
Definition PianoRoll.h:526
void pauseTestNotes(bool pause=true)
Definition PianoRoll.cpp:2155
EditMode m_editMode
Definition PianoRoll.h:444
QBrush m_blackKeyActiveBackground
Definition PianoRoll.h:547
TimePos m_strumCurrentTime
Definition PianoRoll.h:498
int noteEditLeft() const
Definition PianoRoll.cpp:1622
QColor stepNoteColor
Definition PianoRoll.h:72
QColor m_ghostNoteTextColor
Definition PianoRoll.h:522
void focusOutEvent(QFocusEvent *) override
Definition PianoRoll.cpp:4207
void drawNoteRect(QPainter &p, int x, int y, int width, const Note *n, const QColor &noteCol, const QColor &noteTextColor, const QColor &selCol, const int noteOpc, const bool borderless, bool drawNoteName)
Definition PianoRoll.cpp:974
QColor m_barColor
Definition PianoRoll.h:523
int m_moveBoundaryLeft
Definition PianoRoll.h:403
QBrush blackKeyInactiveBackground
Definition PianoRoll.h:102
QColor m_whiteKeyInactiveTextColor
Definition PianoRoll.h:541
Song::PlayMode desiredPlayModeForAccompany() const
Definition PianoRoll.cpp:4284
ComboBoxModel m_chordModel
Definition PianoRoll.h:368
bool m_mouseDownRight
Definition PianoRoll.h:449
int keyAreaTop() const
Definition PianoRoll.cpp:1630
QColor selectedNoteColor
Definition PianoRoll.h:78
QColor m_beatLineColor
Definition PianoRoll.h:514
QPixmap m_toolSelect
Definition PianoRoll.h:352
void updatePosition()
Definition PianoRoll.cpp:4841
KeyType
Definition PianoRoll.h:281
@ WhiteSmall
Definition PianoRoll.h:282
@ WhiteBig
Definition PianoRoll.h:283
@ Black
Definition PianoRoll.h:284
Action m_action
Definition PianoRoll.h:393
int m_userSetNotesEditHeight
Definition PianoRoll.h:422
void updatePositionLineHeight()
Definition PianoRoll.cpp:4874
QColor knifeCutLine
Definition PianoRoll.h:83
int keyAreaBottom() const
Definition PianoRoll.cpp:1638
void setGhostMidiClip(MidiClip *newMidiClip)
Definition PianoRoll.cpp:601
int m_mouseDownTick
Definition PianoRoll.h:411
void updatePositionStepRecording(const lmms::TimePos &t)
Definition PianoRoll.cpp:4906
void testPlayNote(Note *n)
Definition PianoRoll.cpp:2129
QColor ghostNoteTextColor
Definition PianoRoll.h:76
void adjustLeftRightScoll(int value)
Definition PianoRoll.cpp:4034
QBrush whiteKeyInactiveBackground
Definition PianoRoll.h:95
void updatePositionLinePos()
Definition PianoRoll.cpp:4854
void pasteNotes()
Definition PianoRoll.cpp:4744
int m_strumCurrentVertical
Definition PianoRoll.h:500
QColor m_stepNoteColor
Definition PianoRoll.h:518
Note * noteUnderMouse()
Definition PianoRoll.cpp:5061
QColor m_knifeCutLineColor
Definition PianoRoll.h:529
QScrollBar * m_leftRightScroll
Definition PianoRoll.h:382
void fitNoteLengths(bool fill)
Definition PianoRoll.cpp:706
int m_blackKeyHeight
Definition PianoRoll.h:430
NoteVector getSelectedNotes() const
Definition PianoRoll.cpp:4582
QColor ghostNoteColor
Definition PianoRoll.h:74
int m_keyLineHeight
Definition PianoRoll.h:427
void pauseChordNotes(int key)
Definition PianoRoll.cpp:2195
void copySelectedNotes()
Definition PianoRoll.cpp:4699
int trackOctaveSize() const
Definition PianoRoll.cpp:927
EditMode m_ctrlMode
Definition PianoRoll.h:445
QColor outOfBoundsShade
Definition PianoRoll.h:89
const MidiClip * currentMidiClip() const
Definition PianoRoll.h:144
void setEditMode(int mode)
Definition PianoRoll.cpp:4514
int m_lastMouseX
Definition PianoRoll.h:414
bool m_knifeDown
Definition PianoRoll.h:474
EditMode
Definition PianoRoll.h:107
@ Draw
Definition PianoRoll.h:108
@ Detuning
Definition PianoRoll.h:111
@ Knife
Definition PianoRoll.h:112
@ Strum
Definition PianoRoll.h:113
@ Select
Definition PianoRoll.h:110
@ Erase
Definition PianoRoll.h:109
QColor m_markedSemitoneColor
Definition PianoRoll.h:528
Note * parameterEditNoteUnderMouse(Note::ParameterType paramType)
Calculates the closest note to the mouse given their parameter automation curve.
Definition PianoRoll.cpp:5095
NoteEditMode
Definition PianoRoll.h:274
@ Volume
Definition PianoRoll.h:275
@ Panning
Definition PianoRoll.h:276
@ Count
Definition PianoRoll.h:277
void testPlayKey(int _key, int _vol, int _pan)
Definition PianoRoll.cpp:2258
int quantization() const
Definition PianoRoll.cpp:4958
void dragNotes(int x, int y, bool alt, bool shift, bool ctrl)
Definition PianoRoll.cpp:3060
bool toggleStepRecording()
Definition PianoRoll.cpp:4371
ComboBoxModel m_noteLenModel
Definition PianoRoll.h:365
int m_moveBoundaryBottom
Definition PianoRoll.h:406
void copyToClipboard(const NoteVector &notes) const
Definition PianoRoll.cpp:4676
void ghostClipSet(bool)
bool m_scrollBack
Definition PianoRoll.h:452
QColor m_barLineColor
Definition PianoRoll.h:513
Note * m_currentNote
Definition PianoRoll.h:392
int m_ppb
Definition PianoRoll.h:423
int m_selectStartTick
Definition PianoRoll.h:397
void zoomingYChanged()
Definition PianoRoll.cpp:4930
int m_strumStartVertical
Definition PianoRoll.h:499
int m_moveBoundaryTop
Definition PianoRoll.h:404
void clearSelectedNotes()
Definition PianoRoll.cpp:1197
void reset()
Resets settings to default when e.g. creating a new project.
Definition PianoRoll.cpp:446
void reverseNotes()
Definition PianoRoll.cpp:783
volume_t m_lastNoteVolume
Definition PianoRoll.h:435
QColor beatLineColor
Definition PianoRoll.h:68
void loadGhostNotes(const QDomElement &de)
Definition PianoRoll.cpp:617
bool m_ghostNoteBorders
Definition PianoRoll.h:533
QBrush m_whiteKeyActiveBackground
Definition PianoRoll.h:540
void cancelKnifeAction()
Definition PianoRoll.cpp:2228
void keyChanged()
Definition PianoRoll.cpp:4953
NoteVector m_ghostNotes
Definition PianoRoll.h:375
int blackKeyWidth
Definition PianoRoll.h:101
QBrush m_whiteKeyDisabledBackground
Definition PianoRoll.h:544
QPixmap m_toolDraw
Definition PianoRoll.h:350
TimePos m_strumStartTime
Definition PianoRoll.h:497
void markSemiTone(SemiToneMarkerAction i, bool fromMenu=true)
Definition PianoRoll.cpp:497
QBrush m_blackKeyInactiveBackground
Definition PianoRoll.h:548
bool noteBorders
Definition PianoRoll.h:85
void mouseReleaseEvent(QMouseEvent *me) override
Definition PianoRoll.cpp:2350
void quantizeChanged()
Definition PianoRoll.cpp:4942
void applyParameterEditPos(Note::ParameterType paramType)
Finishes the dragging of the current node of the detuning/parameter curves.
Definition PianoRoll.cpp:2897
QColor whiteKeyInactiveTextShadow
Definition PianoRoll.h:94
void leaveEvent(QEvent *e) override
Definition PianoRoll.cpp:1588
void computeSelectedNotes(bool shift)
Definition PianoRoll.cpp:2278
QColor currentStepNoteColor
Definition PianoRoll.h:73
QColor m_whiteKeyInactiveTextShadow
Definition PianoRoll.h:542
QColor m_whiteKeyActiveTextShadow
Definition PianoRoll.h:539
int m_knifeEndKey
Definition PianoRoll.h:473
QColor m_ghostNoteColor
Definition PianoRoll.h:521
SemiToneMarkerAction
Definition PianoRoll.h:169
@ CopyAllNotesOnKey
Definition PianoRoll.h:175
@ MarkCurrentSemiTone
Definition PianoRoll.h:171
@ MarkAllOctaveSemiTones
Definition PianoRoll.h:172
@ UnmarkAll
Definition PianoRoll.h:170
@ MarkCurrentScale
Definition PianoRoll.h:173
@ MarkCurrentChord
Definition PianoRoll.h:174
QBrush whiteKeyActiveBackground
Definition PianoRoll.h:98
std::vector< QString > m_nemStr
Definition PianoRoll.h:296
void keyPressEvent(QKeyEvent *ke) override
Definition PianoRoll.cpp:1293
int ghostNoteOpacity
Definition PianoRoll.h:86
bool ghostNoteBorders
Definition PianoRoll.h:87
int m_selectedKeys
Definition PianoRoll.h:400
void enterValue(NoteVector *nv)
Definition PianoRoll.cpp:4611
NoteEditMode m_noteEditMode
Definition PianoRoll.h:394
int m_lastMouseY
Definition PianoRoll.h:415
void noteLengthChanged()
Definition PianoRoll.cpp:4947
QBrush m_blackKeyDisabledBackground
Definition PianoRoll.h:549
static const int cm_scrollAmtVert
Definition PianoRoll.h:348
QuantizeAction
Definition PianoRoll.h:162
@ Both
Definition PianoRoll.h:163
@ Length
Definition PianoRoll.h:165
QBrush blackKeyActiveBackground
Definition PianoRoll.h:103
void keyReleaseEvent(QKeyEvent *ke) override
Definition PianoRoll.cpp:1541
QList< Note > m_recordingNotes
Definition PianoRoll.h:390
QColor m_backgroundShade
Definition PianoRoll.h:534
int m_selectedTick
Definition PianoRoll.h:398
int noteEditTop() const
Definition PianoRoll.cpp:1598
QMenu * m_noteEditMenu
Definition PianoRoll.h:297
QPixmap m_toolOpen
Definition PianoRoll.h:354
QPixmap m_toolErase
Definition PianoRoll.h:351
bool isStepRecording() const
Definition PianoRoll.h:139
bool hasValidMidiClip() const
Definition PianoRoll.h:149
void removeSelection()
Definition PianoRoll.cpp:1186
void record()
Definition PianoRoll.cpp:4316
void stop()
Definition PianoRoll.cpp:4400
QList< int > getAllOctavesForKey(int keyToMirror) const
Definition PianoRoll.cpp:4271
bool m_parameterEditDownRight
Definition PianoRoll.h:480
void paintEvent(QPaintEvent *pe) override
Definition PianoRoll.cpp:3283
void drawDetuningInfo(QPainter &_p, const Note *_n, int _x, int _y) const
Definition PianoRoll.cpp:1084
TimePos m_minResizeLen
Definition PianoRoll.h:439
int m_whiteKeyBigHeight
Definition PianoRoll.h:429
static SimpleTextFloat * s_textFloat
Definition PianoRoll.h:360
~PianoRoll() override=default
void resizeEvent(QResizeEvent *re) override
Definition PianoRoll.cpp:4025
QColor m_currentStepNoteColor
Definition PianoRoll.h:519
void updateYScroll()
Definition PianoRoll.cpp:4656
QColor m_noteColor
Definition PianoRoll.h:517
void finishRecordNote(const lmms::Note &n)
Definition PianoRoll.cpp:4449
int getKey(int y) const
Definition PianoRoll.cpp:4245
QColor noteColor
Definition PianoRoll.h:71
MidiClip * m_midiClip
Definition PianoRoll.h:374
void selectRegionFromPixels(int xStart, int xEnd)
Definition PianoRoll.cpp:935
TimePos m_lenOfNewNotes
Definition PianoRoll.h:434
QColor m_textColor
Definition PianoRoll.h:525
void hideMidiClip(lmms::MidiClip *clip)
Definition PianoRoll.cpp:918
GridMode
Definition PianoRoll.h:288
@ Snap
Definition PianoRoll.h:290
@ Nudge
Definition PianoRoll.h:289
bool isRecording() const
Definition PianoRoll.h:134
void setStrumAction()
Definition PianoRoll.cpp:2236
void focusInEvent(QFocusEvent *) override
Definition PianoRoll.cpp:4233
void updateStrumPos(QMouseEvent *me, bool initial, bool warp)
Handles updating all of the note positions when performing a strum.
Definition PianoRoll.cpp:2984
int m_moveStartY
Definition PianoRoll.h:419
QColor lineColor
Definition PianoRoll.h:69
int noteEditBottom() const
Definition PianoRoll.cpp:1606
void startRecordNote(const lmms::Note &n)
Definition PianoRoll.cpp:4417
bool m_parameterEditDownLeft
Varaibles which hold which mouse buttons are being held while editing the detuning/parameter of notes...
Definition PianoRoll.h:479
QBrush blackKeyDisabledBackground
Definition PianoRoll.h:104
QColor backgroundShade
Definition PianoRoll.h:88
void updateScrollbars()
Definition PianoRoll.cpp:3999
bool m_doAutoQuantization
Definition PianoRoll.h:389
int m_moveStartX
Definition PianoRoll.h:418
void setupSelectedChords()
Computes which notes belong to which chords from the selection.
Definition PianoRoll.cpp:2948
bool m_noteBorders
Definition PianoRoll.h:532
QPixmap m_toolKnife
Definition PianoRoll.h:355
void wheelEvent(QWheelEvent *we) override
Definition PianoRoll.cpp:4042
void recordAccompany()
Definition PianoRoll.cpp:4339
QColor barColor
Definition PianoRoll.h:77
void mousePressEvent(QMouseEvent *me) override
Definition PianoRoll.cpp:1646
StepRecorder m_stepRecorder
Definition PianoRoll.h:510
panning_t m_lastNotePanning
Definition PianoRoll.h:436
int m_whiteKeySmallHeight
Definition PianoRoll.h:428
bool mouseOverNote()
Definition PianoRoll.cpp:5053
void verScrolled(int new_pos)
Definition PianoRoll.cpp:4503
TimePos m_knifeEndTickPos
Definition PianoRoll.h:472
int m_notesEditHeight
Definition PianoRoll.h:421
Note * m_parameterEditClickedNote
The current note whose detuning/parameter curve is being edited.
Definition PianoRoll.h:485
QBrush m_whiteKeyInactiveBackground
Definition PianoRoll.h:543
QColor noteModeColor
Definition PianoRoll.h:70
void updateSemiToneMarkerMenu()
Definition PianoRoll.cpp:5023
bool isSelection() const
Definition PianoRoll.cpp:1271
static const std::vector< float > m_zoomLevels
Definition PianoRoll.h:371
GridMode m_gridMode
Definition PianoRoll.h:395
QColor m_selectedNoteColor
Definition PianoRoll.h:524
TimePos m_knifeStartTickPos
Definition PianoRoll.h:470
EditMode m_knifeMode
Definition PianoRoll.h:446
QColor textColor
Definition PianoRoll.h:79
int m_lastKey
Definition PianoRoll.h:442
void showPanTextFloat(panning_t pan, const QPoint &pos, int timeout=-1)
Definition PianoRoll.cpp:470
int m_pianoKeysVisible
Definition PianoRoll.h:425
EditMode m_strumMode
Definition PianoRoll.h:447
void changeNoteEditMode(int i)
Definition PianoRoll.cpp:490
int whiteKeyWidth
Definition PianoRoll.h:92
void shiftSemiTone(int amount)
Definition PianoRoll.cpp:1210
int selectionCount() const
Definition PianoRoll.cpp:1286
void loadMarkedSemiTones(const QDomElement &de)
Definition PianoRoll.cpp:798
void stopRecording()
Definition PianoRoll.h:129
QColor m_noteModeColor
Definition PianoRoll.h:516
int noteOpacity
Definition PianoRoll.h:84
QScrollBar * m_topBottomScroll
Definition PianoRoll.h:383
int m_mouseDownKey
Definition PianoRoll.h:410
QList< int > m_markedSemiTones
Definition PianoRoll.h:299
void cutSelectedNotes()
Definition PianoRoll.cpp:4712
ComboBoxModel m_quantizeModel
Definition PianoRoll.h:364
int m_moveBoundaryRight
Definition PianoRoll.h:405
QColor whiteKeyActiveTextColor
Definition PianoRoll.h:96
QColor noteTextColor
Definition PianoRoll.h:75
bool m_strumEnabled
Definition PianoRoll.h:502
Action
Definition PianoRoll.h:262
@ MoveNote
Definition PianoRoll.h:264
@ ChangeNoteProperty
Definition PianoRoll.h:267
@ ResizeNote
Definition PianoRoll.h:265
@ SelectNotes
Definition PianoRoll.h:266
@ ResizeNoteEditArea
Definition PianoRoll.h:268
static std::array< KeyType, 12 > prKeyOrder
Definition PianoRoll.h:358
int noteEditRight() const
Definition PianoRoll.cpp:1614
PianoRoll()
Definition PianoRoll.cpp:154
void selectAll()
Definition PianoRoll.cpp:4528
void selectNotesOnKey()
Definition PianoRoll.cpp:4600
std::optional< int > m_lastParameterEditTick
Definition PianoRoll.h:483
QColor textShadow
Definition PianoRoll.h:81
QColor m_lineColor
Definition PianoRoll.h:515
QColor m_noteTextColor
Definition PianoRoll.h:520
void semiToneMarkerMenuChordSetEnabled(bool)
QColor textColorLight
Definition PianoRoll.h:80
QColor whiteKeyActiveTextShadow
Definition PianoRoll.h:97
void shiftPos(int amount)
Definition PianoRoll.cpp:1235
void semiToneMarkerMenuScaleSetEnabled(bool)
ComboBoxModel m_zoomingModel
Definition PianoRoll.h:362
void playChordNotes(int key, int velocity=-1)
Definition PianoRoll.cpp:2179
ComboBoxModel m_zoomingYModel
Definition PianoRoll.h:363
static const int cm_scrollAmtHoriz
Definition PianoRoll.h:347
QColor whiteKeyInactiveTextColor
Definition PianoRoll.h:93
TimePos m_currentPosition
Definition PianoRoll.h:387
StepRecorderWidget m_stepRecorderWidget
Definition PianoRoll.h:509
void changeSnapMode()
Definition PianoRoll.cpp:5143
bool m_startedWithShift
Definition PianoRoll.h:467
const NoteVector & ghostNotes() const
Definition PianoRoll.h:377
void setKnifeAction()
Definition PianoRoll.cpp:2211
void updateParameterEditPos(QMouseEvent *me, Note::ParameterType paramType)
Updates the currently dragged node position in the detuning/parameter curves of the selected notes.
Definition PianoRoll.cpp:2816
int yCoordOfKey(int key) const
Definition PianoRoll.cpp:4261
void showTextFloat(const QString &text, const QPoint &pos, int timeout=-1)
Definition PianoRoll.cpp:453
int m_blackKeyWidth
Definition PianoRoll.h:546
QPixmap m_toolMove
Definition PianoRoll.h:353
void glueNotes()
Definition PianoRoll.cpp:644
void updateKnifePos(QMouseEvent *me, bool initial)
Definition PianoRoll.cpp:2917
void play()
Definition PianoRoll.cpp:4296
void ghostClipSet(bool state)
Definition PianoRoll.cpp:5732
ComboBox * m_zoomingYComboBox
Definition PianoRoll.h:614
QSize sizeHint() const override
Definition PianoRoll.cpp:5638
void loadSettings(const QDomElement &de) override
Definition PianoRoll.cpp:5616
void stopRecording()
Definition PianoRoll.cpp:5562
void setCurrentMidiClip(MidiClip *clip)
Definition PianoRoll.cpp:5477
PianoRollWindow()
Definition PianoRoll.cpp:5152
void saveSettings(QDomDocument &doc, QDomElement &de) override
Definition PianoRoll.cpp:5578
void reset()
Resets settings to default when e.g. creating a new project.
Definition PianoRoll.cpp:5570
ComboBox * m_chordComboBox
Definition PianoRoll.h:619
void stop() override
Definition PianoRoll.cpp:5522
ComboBox * m_quantizeComboBox
Definition PianoRoll.h:615
ComboBox * m_snapComboBox
Definition PianoRoll.h:620
void updateStepRecordingIcon()
Definition PianoRoll.cpp:5847
int quantization() const
Definition PianoRoll.cpp:5506
const MidiClip * currentMidiClip() const
Definition PianoRoll.cpp:5461
ComboBox * m_scaleComboBox
Definition PianoRoll.h:618
bool isRecording() const
Definition PianoRoll.cpp:5498
void showEvent(QShowEvent *se) override
Definition PianoRoll.cpp:5652
void setGhostMidiClip(MidiClip *clip)
Definition PianoRoll.cpp:5469
void record() override
Definition PianoRoll.cpp:5530
ComboBox * m_keyComboBox
Definition PianoRoll.h:617
void exportMidiClip()
Definition PianoRoll.cpp:5740
void recordAccompany() override
Definition PianoRoll.cpp:5540
void stopStepRecording()
Definition PianoRoll.cpp:5838
void updateAfterMidiClipChange()
Definition PianoRoll.cpp:5706
void importMidiClip()
Definition PianoRoll.cpp:5787
QString nodeName() const override
Definition PianoRoll.h:584
void clipRenamed()
Definition PianoRoll.cpp:5715
bool hasFocus() const
Definition PianoRoll.cpp:5645
void toggleStepRecording() override
Definition PianoRoll.cpp:5548
ComboBox * m_noteLenComboBox
Definition PianoRoll.h:616
QPushButton * m_clearGhostButton
Definition PianoRoll.h:621
void focusInEvent(QFocusEvent *event) override
Definition PianoRoll.cpp:5832
void play() override
Definition PianoRoll.cpp:5514
QToolButton * m_fileToolsButton
Definition PianoRoll.h:612
ComboBox * m_zoomingComboBox
Definition PianoRoll.h:613
PianoRoll * m_editor
Definition PianoRoll.h:610
Definition PositionLine.h:37
Definition SimpleTextFloat.h:40
Definition StepRecorderWidget.h:35
Definition TimeLineWidget.h:54
* e
Definition inflate.c:1404
struct huft * t
Definition inflate.c:943
int y
Definition inflate.c:1588
register unsigned i
Definition inflate.c:1575
unsigned x[BMAX+1]
Definition inflate.c:1586
ush Pos
Definition deflate.h:88
static PuglViewHint int value
Definition pugl.h:1708
static double timeout
Definition pugl.h:1799
static int width
Definition pugl.h:1593
auto getIconPixmap(std::string_view name, int width, int height, const char *const *xpm) -> QPixmap
Definition embed.cpp:107
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35
std::vector< Note * > NoteVector
Definition Note.h:282
std::int8_t panning_t
Definition LmmsTypes.h:37
std::uint8_t volume_t
Definition LmmsTypes.h:36
png_structrp int mode
Definition png.h:1139
const char * text
Definition swell-functions.h:167
int n
Definition crypt.c:458
uch * p
Definition crypt.c:594
ZCONST char * key
Definition crypt.c:587
static ZCONST char Far None[]
Definition unzip.c:380