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;
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
379 int resizeGripWidth(const Note& note) const;
380
383
384 inline const NoteVector & ghostNotes() const
385 {
386 return m_ghostNotes;
387 }
388
389 QScrollBar * m_leftRightScroll;
390 QScrollBar * m_topBottomScroll;
391
392 void adjustLeftRightScoll(int value);
393
397 QList<Note> m_recordingNotes;
398
403
408
409 // boundary box around all selected notes when dragging
414
415 // remember where the scrolling started when dragging so that
416 // we can handle dragging while scrolling with arrow keys
419
420 // remember the last x and y of a mouse movement
423
424 // x,y of when the user starts a drag
427
430 int m_ppb; // pixels per bar
433
438
439 // remember these values to use them
440 // for the next note that is set
444
445 //When resizing several notes, we want to calculate a common minimum length
447
448 int m_startKey; // first key when drawing
450
452 EditMode m_ctrlMode; // mode they were in before they hit ctrl
453 EditMode m_knifeMode; // mode they where in before entering knife mode
454 EditMode m_strumMode; //< mode they where in before entering strum mode
455
456 bool m_mouseDownRight; //true if right click is being held down
457
460
461 void copyToClipboard(const NoteVector & notes ) const;
462
463 void drawDetuningInfo( QPainter & _p, const Note * _n, int _x, int _y ) const;
464 bool mouseOverNote();
468
469 // turn a selection rectangle into selected notes
470 void computeSelectedNotes( bool shift );
471 void clearSelectedNotes();
472
473 // did we start a mouseclick with shift pressed
475
476 // Variables that hold the start and end position for the knife line
482
483 void updateKnifePos(QMouseEvent* me, bool initial);
484
490 std::optional<int> m_lastParameterEditTick = std::nullopt;
493
495 void updateParameterEditPos(QMouseEvent* me, Note::ParameterType paramType);
498
500 std::vector<NoteVector> m_selectedChords;
502 void setupSelectedChords();
503
508 float m_strumHeightRatio = 0.0f;
509 bool m_strumEnabled = false;
511 void updateStrumPos(QMouseEvent* me, bool initial, bool warp);
512
513
514 friend class PianoRollWindow;
515
518
519 // qproperty fields
543 /* white key properties */
552 /* black key properties */
557} ;
558
559
560
561
563{
564 Q_OBJECT
565public:
567
568 const MidiClip* currentMidiClip() const;
569 void setCurrentMidiClip( MidiClip* clip );
570 void setGhostMidiClip( MidiClip* clip );
571
572 int quantization() const;
573
574 void play() override;
575 void stop() override;
576 void record() override;
577 void recordAccompany() override;
578 void toggleStepRecording() override;
579 void stopRecording();
580
581 bool isRecording() const;
582
584 void reset();
585
588 void saveSettings(QDomDocument & doc, QDomElement & de ) override;
589 void loadSettings( const QDomElement & de ) override;
590
591 inline QString nodeName() const override
592 {
593 return "pianoroll";
594 }
595
596 QSize sizeHint() const override;
597 bool hasFocus() const;
598
599signals:
601
602
603private slots:
605 void ghostClipSet( bool state );
606 void exportMidiClip();
607 void importMidiClip();
608
609private:
610 void clipRenamed();
611 void focusInEvent(QFocusEvent * event) override;
612 void showEvent(QShowEvent* se) override;
613
614 void stopStepRecording();
616
618
619 QToolButton* m_fileToolsButton;
628 QPushButton * m_clearGhostButton;
629
630};
631
632
633} // namespace gui
634
635} // namespace lmms
636
637#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:500
bool m_recording
Definition PianoRoll.h:395
void setCurrentMidiClip(MidiClip *newMidiClip)
Definition PianoRoll.cpp:838
void constrainNoteLengths(bool constrainMax)
Definition PianoRoll.cpp:775
void zoomingChanged()
Definition PianoRoll.cpp:4938
QPixmap m_toolStrum
Definition PianoRoll.h:356
int m_selectStartKey
Definition PianoRoll.h:406
void quantizeNotes(QuantizeAction mode=QuantizeAction::Both)
Definition PianoRoll.cpp:4999
void clearGhostClip()
Definition PianoRoll.cpp:650
QColor m_outOfBoundsShade
Definition PianoRoll.h:542
TimePos newNoteLen() const
Definition PianoRoll.cpp:5062
int m_ghostNoteOpacity
Definition PianoRoll.h:538
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:476
void mouseMoveEvent(QMouseEvent *me) override
Definition PianoRoll.cpp:2475
QMenu * m_semiToneMarkerMenu
Definition PianoRoll.h:300
ComboBoxModel m_keyModel
Definition PianoRoll.h:366
float m_strumHeightRatio
Definition PianoRoll.h:508
int m_totalKeysToScroll
Definition PianoRoll.h:431
QColor m_textShadow
Definition PianoRoll.h:534
void mouseDoubleClickEvent(QMouseEvent *me) override
Definition PianoRoll.cpp:2071
PianoRoll(const PianoRoll &)
friend class PianoRollWindow
Definition PianoRoll.h:514
void updatePositionAccompany()
Definition PianoRoll.cpp:4905
PositionLine * m_positionLine
Definition PianoRoll.h:294
static const std::vector< float > m_zoomYLevels
Definition PianoRoll.h:372
TimeLineWidget * m_timeLine
Definition PianoRoll.h:458
int m_noteOpacity
Definition PianoRoll.h:537
ComboBoxModel m_scaleModel
Definition PianoRoll.h:367
int m_whiteKeyWidth
Definition PianoRoll.h:544
void cancelStrumAction()
Definition PianoRoll.cpp:2265
bool deleteSelectedNotes()
Definition PianoRoll.cpp:4819
int m_startKey
Definition PianoRoll.h:448
QColor markedSemitoneColor
Definition PianoRoll.h:82
void autoScroll(const TimePos &t)
Definition PianoRoll.cpp:4839
QColor m_whiteKeyActiveTextColor
Definition PianoRoll.h:545
int m_knifeStartKey
Definition PianoRoll.h:478
void horScrolled(int new_pos)
Definition PianoRoll.cpp:4514
QColor m_textColorLight
Definition PianoRoll.h:533
void pauseTestNotes(bool pause=true)
Definition PianoRoll.cpp:2170
EditMode m_editMode
Definition PianoRoll.h:451
QBrush m_blackKeyActiveBackground
Definition PianoRoll.h:554
TimePos m_strumCurrentTime
Definition PianoRoll.h:505
int noteEditLeft() const
Definition PianoRoll.cpp:1637
QColor stepNoteColor
Definition PianoRoll.h:72
QColor m_ghostNoteTextColor
Definition PianoRoll.h:529
void focusOutEvent(QFocusEvent *) override
Definition PianoRoll.cpp:4229
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:988
QColor m_barColor
Definition PianoRoll.h:530
int m_moveBoundaryLeft
Definition PianoRoll.h:410
QBrush blackKeyInactiveBackground
Definition PianoRoll.h:102
QColor m_whiteKeyInactiveTextColor
Definition PianoRoll.h:548
Song::PlayMode desiredPlayModeForAccompany() const
Definition PianoRoll.cpp:4306
ComboBoxModel m_chordModel
Definition PianoRoll.h:368
bool m_mouseDownRight
Definition PianoRoll.h:456
int keyAreaTop() const
Definition PianoRoll.cpp:1645
QColor selectedNoteColor
Definition PianoRoll.h:78
QColor m_beatLineColor
Definition PianoRoll.h:521
QPixmap m_toolSelect
Definition PianoRoll.h:352
void updatePosition()
Definition PianoRoll.cpp:4864
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:400
int m_userSetNotesEditHeight
Definition PianoRoll.h:429
void updatePositionLineHeight()
Definition PianoRoll.cpp:4897
QColor knifeCutLine
Definition PianoRoll.h:83
int keyAreaBottom() const
Definition PianoRoll.cpp:1653
void setGhostMidiClip(MidiClip *newMidiClip)
Definition PianoRoll.cpp:615
int m_mouseDownTick
Definition PianoRoll.h:418
void updatePositionStepRecording(const lmms::TimePos &t)
Definition PianoRoll.cpp:4929
void testPlayNote(Note *n)
Definition PianoRoll.cpp:2144
QColor ghostNoteTextColor
Definition PianoRoll.h:76
void adjustLeftRightScoll(int value)
Definition PianoRoll.cpp:4056
QBrush whiteKeyInactiveBackground
Definition PianoRoll.h:95
void updatePositionLinePos()
Definition PianoRoll.cpp:4877
void pasteNotes()
Definition PianoRoll.cpp:4767
int m_strumCurrentVertical
Definition PianoRoll.h:507
QColor m_stepNoteColor
Definition PianoRoll.h:525
Note * noteUnderMouse()
Definition PianoRoll.cpp:5084
QColor m_knifeCutLineColor
Definition PianoRoll.h:536
QScrollBar * m_leftRightScroll
Definition PianoRoll.h:389
void fitNoteLengths(bool fill)
Definition PianoRoll.cpp:720
int m_blackKeyHeight
Definition PianoRoll.h:437
NoteVector getSelectedNotes() const
Definition PianoRoll.cpp:4605
QColor ghostNoteColor
Definition PianoRoll.h:74
int m_keyLineHeight
Definition PianoRoll.h:434
void pauseChordNotes(int key)
Definition PianoRoll.cpp:2210
void copySelectedNotes()
Definition PianoRoll.cpp:4722
int trackOctaveSize() const
Definition PianoRoll.cpp:941
EditMode m_ctrlMode
Definition PianoRoll.h:452
QColor outOfBoundsShade
Definition PianoRoll.h:89
const MidiClip * currentMidiClip() const
Definition PianoRoll.h:144
void setEditMode(int mode)
Definition PianoRoll.cpp:4537
int m_lastMouseX
Definition PianoRoll.h:421
bool m_knifeDown
Definition PianoRoll.h:481
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:535
Note * parameterEditNoteUnderMouse(Note::ParameterType paramType)
Calculates the closest note to the mouse given their parameter automation curve.
Definition PianoRoll.cpp:5118
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:2273
int quantization() const
Definition PianoRoll.cpp:4981
void dragNotes(int x, int y, bool alt, bool shift, bool ctrl)
Definition PianoRoll.cpp:3077
bool toggleStepRecording()
Definition PianoRoll.cpp:4393
ComboBoxModel m_noteLenModel
Definition PianoRoll.h:365
int m_moveBoundaryBottom
Definition PianoRoll.h:413
void copyToClipboard(const NoteVector &notes) const
Definition PianoRoll.cpp:4699
void ghostClipSet(bool)
bool m_scrollBack
Definition PianoRoll.h:459
QColor m_barLineColor
Definition PianoRoll.h:520
Note * m_currentNote
Definition PianoRoll.h:399
int m_ppb
Definition PianoRoll.h:430
int m_selectStartTick
Definition PianoRoll.h:404
void zoomingYChanged()
Definition PianoRoll.cpp:4953
int m_strumStartVertical
Definition PianoRoll.h:506
int m_moveBoundaryTop
Definition PianoRoll.h:411
void clearSelectedNotes()
Definition PianoRoll.cpp:1211
void reset()
Resets settings to default when e.g. creating a new project.
Definition PianoRoll.cpp:460
void reverseNotes()
Definition PianoRoll.cpp:797
volume_t m_lastNoteVolume
Definition PianoRoll.h:442
QColor beatLineColor
Definition PianoRoll.h:68
void loadGhostNotes(const QDomElement &de)
Definition PianoRoll.cpp:631
bool m_ghostNoteBorders
Definition PianoRoll.h:540
QBrush m_whiteKeyActiveBackground
Definition PianoRoll.h:547
void cancelKnifeAction()
Definition PianoRoll.cpp:2243
void keyChanged()
Definition PianoRoll.cpp:4976
NoteVector m_ghostNotes
Definition PianoRoll.h:382
int blackKeyWidth
Definition PianoRoll.h:101
QBrush m_whiteKeyDisabledBackground
Definition PianoRoll.h:551
QPixmap m_toolDraw
Definition PianoRoll.h:350
TimePos m_strumStartTime
Definition PianoRoll.h:504
void markSemiTone(SemiToneMarkerAction i, bool fromMenu=true)
Definition PianoRoll.cpp:511
QBrush m_blackKeyInactiveBackground
Definition PianoRoll.h:555
bool noteBorders
Definition PianoRoll.h:85
void mouseReleaseEvent(QMouseEvent *me) override
Definition PianoRoll.cpp:2365
void quantizeChanged()
Definition PianoRoll.cpp:4965
void applyParameterEditPos(Note::ParameterType paramType)
Finishes the dragging of the current node of the detuning/parameter curves.
Definition PianoRoll.cpp:2914
QColor whiteKeyInactiveTextShadow
Definition PianoRoll.h:94
void leaveEvent(QEvent *e) override
Definition PianoRoll.cpp:1603
void computeSelectedNotes(bool shift)
Definition PianoRoll.cpp:2293
QColor currentStepNoteColor
Definition PianoRoll.h:73
QColor m_whiteKeyInactiveTextShadow
Definition PianoRoll.h:549
QColor m_whiteKeyActiveTextShadow
Definition PianoRoll.h:546
int m_knifeEndKey
Definition PianoRoll.h:480
QColor m_ghostNoteColor
Definition PianoRoll.h:528
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:1307
int ghostNoteOpacity
Definition PianoRoll.h:86
bool ghostNoteBorders
Definition PianoRoll.h:87
int m_selectedKeys
Definition PianoRoll.h:407
void enterValue(NoteVector *nv)
Definition PianoRoll.cpp:4634
NoteEditMode m_noteEditMode
Definition PianoRoll.h:401
int m_lastMouseY
Definition PianoRoll.h:422
void noteLengthChanged()
Definition PianoRoll.cpp:4970
QBrush m_blackKeyDisabledBackground
Definition PianoRoll.h:556
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:1556
QList< Note > m_recordingNotes
Definition PianoRoll.h:397
QColor m_backgroundShade
Definition PianoRoll.h:541
int m_selectedTick
Definition PianoRoll.h:405
int noteEditTop() const
Definition PianoRoll.cpp:1613
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:1200
void record()
Definition PianoRoll.cpp:4338
void stop()
Definition PianoRoll.cpp:4422
QList< int > getAllOctavesForKey(int keyToMirror) const
Definition PianoRoll.cpp:4293
bool m_parameterEditDownRight
Definition PianoRoll.h:487
void paintEvent(QPaintEvent *pe) override
Definition PianoRoll.cpp:3305
void drawDetuningInfo(QPainter &_p, const Note *_n, int _x, int _y) const
Definition PianoRoll.cpp:1098
TimePos m_minResizeLen
Definition PianoRoll.h:446
int m_whiteKeyBigHeight
Definition PianoRoll.h:436
static SimpleTextFloat * s_textFloat
Definition PianoRoll.h:360
void resizeEvent(QResizeEvent *re) override
Definition PianoRoll.cpp:4047
QColor m_currentStepNoteColor
Definition PianoRoll.h:526
void updateYScroll()
Definition PianoRoll.cpp:4679
QColor m_noteColor
Definition PianoRoll.h:524
void finishRecordNote(const lmms::Note &n)
Definition PianoRoll.cpp:4471
int getKey(int y) const
Definition PianoRoll.cpp:4267
QColor noteColor
Definition PianoRoll.h:71
MidiClip * m_midiClip
Definition PianoRoll.h:381
void selectRegionFromPixels(int xStart, int xEnd)
Definition PianoRoll.cpp:949
TimePos m_lenOfNewNotes
Definition PianoRoll.h:441
QColor m_textColor
Definition PianoRoll.h:532
void hideMidiClip(lmms::MidiClip *clip)
Definition PianoRoll.cpp:932
GridMode
Definition PianoRoll.h:288
@ Snap
Definition PianoRoll.h:290
@ Nudge
Definition PianoRoll.h:289
int resizeGripWidth(const Note &note) const
Definition PianoRoll.cpp:3298
bool isRecording() const
Definition PianoRoll.h:134
void setStrumAction()
Definition PianoRoll.cpp:2251
void focusInEvent(QFocusEvent *) override
Definition PianoRoll.cpp:4255
void updateStrumPos(QMouseEvent *me, bool initial, bool warp)
Handles updating all of the note positions when performing a strum.
Definition PianoRoll.cpp:3001
int m_moveStartY
Definition PianoRoll.h:426
QColor lineColor
Definition PianoRoll.h:69
int noteEditBottom() const
Definition PianoRoll.cpp:1621
void startRecordNote(const lmms::Note &n)
Definition PianoRoll.cpp:4439
bool m_parameterEditDownLeft
Varaibles which hold which mouse buttons are being held while editing the detuning/parameter of notes...
Definition PianoRoll.h:486
QBrush blackKeyDisabledBackground
Definition PianoRoll.h:104
QColor backgroundShade
Definition PianoRoll.h:88
void updateScrollbars()
Definition PianoRoll.cpp:4021
bool m_doAutoQuantization
Definition PianoRoll.h:396
int m_moveStartX
Definition PianoRoll.h:425
void setupSelectedChords()
Computes which notes belong to which chords from the selection.
Definition PianoRoll.cpp:2965
bool m_noteBorders
Definition PianoRoll.h:539
QPixmap m_toolKnife
Definition PianoRoll.h:355
void wheelEvent(QWheelEvent *we) override
Definition PianoRoll.cpp:4064
void recordAccompany()
Definition PianoRoll.cpp:4361
QColor barColor
Definition PianoRoll.h:77
void mousePressEvent(QMouseEvent *me) override
Definition PianoRoll.cpp:1661
StepRecorder m_stepRecorder
Definition PianoRoll.h:517
panning_t m_lastNotePanning
Definition PianoRoll.h:443
int m_whiteKeySmallHeight
Definition PianoRoll.h:435
bool mouseOverNote()
Definition PianoRoll.cpp:5076
void verScrolled(int new_pos)
Definition PianoRoll.cpp:4526
TimePos m_knifeEndTickPos
Definition PianoRoll.h:479
int m_notesEditHeight
Definition PianoRoll.h:428
Note * m_parameterEditClickedNote
The current note whose detuning/parameter curve is being edited.
Definition PianoRoll.h:492
QBrush m_whiteKeyInactiveBackground
Definition PianoRoll.h:550
QColor noteModeColor
Definition PianoRoll.h:70
void updateSemiToneMarkerMenu()
Definition PianoRoll.cpp:5046
bool isSelection() const
Definition PianoRoll.cpp:1285
~PianoRoll() override
Definition PianoRoll.cpp:450
static const std::vector< float > m_zoomLevels
Definition PianoRoll.h:371
GridMode m_gridMode
Definition PianoRoll.h:402
QColor m_selectedNoteColor
Definition PianoRoll.h:531
TimePos m_knifeStartTickPos
Definition PianoRoll.h:477
EditMode m_knifeMode
Definition PianoRoll.h:453
QColor textColor
Definition PianoRoll.h:79
int m_lastKey
Definition PianoRoll.h:449
void showPanTextFloat(panning_t pan, const QPoint &pos, int timeout=-1)
Definition PianoRoll.cpp:484
int m_pianoKeysVisible
Definition PianoRoll.h:432
EditMode m_strumMode
Definition PianoRoll.h:454
void changeNoteEditMode(int i)
Definition PianoRoll.cpp:504
int whiteKeyWidth
Definition PianoRoll.h:92
void shiftSemiTone(int amount)
Definition PianoRoll.cpp:1224
int selectionCount() const
Definition PianoRoll.cpp:1300
void loadMarkedSemiTones(const QDomElement &de)
Definition PianoRoll.cpp:812
void stopRecording()
Definition PianoRoll.h:129
QColor m_noteModeColor
Definition PianoRoll.h:523
int noteOpacity
Definition PianoRoll.h:84
QScrollBar * m_topBottomScroll
Definition PianoRoll.h:390
int m_mouseDownKey
Definition PianoRoll.h:417
QList< int > m_markedSemiTones
Definition PianoRoll.h:299
void cutSelectedNotes()
Definition PianoRoll.cpp:4735
ComboBoxModel m_quantizeModel
Definition PianoRoll.h:364
int m_moveBoundaryRight
Definition PianoRoll.h:412
QColor whiteKeyActiveTextColor
Definition PianoRoll.h:96
QColor noteTextColor
Definition PianoRoll.h:75
bool m_strumEnabled
Definition PianoRoll.h:509
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:1629
PianoRoll()
Definition PianoRoll.cpp:157
void selectAll()
Definition PianoRoll.cpp:4551
void selectNotesOnKey()
Definition PianoRoll.cpp:4623
std::optional< int > m_lastParameterEditTick
Definition PianoRoll.h:490
QColor textShadow
Definition PianoRoll.h:81
QColor m_lineColor
Definition PianoRoll.h:522
QColor m_noteTextColor
Definition PianoRoll.h:527
void semiToneMarkerMenuChordSetEnabled(bool)
QColor textColorLight
Definition PianoRoll.h:80
QColor whiteKeyActiveTextShadow
Definition PianoRoll.h:97
void shiftPos(int amount)
Definition PianoRoll.cpp:1249
void semiToneMarkerMenuScaleSetEnabled(bool)
ComboBoxModel m_zoomingModel
Definition PianoRoll.h:362
void playChordNotes(int key, int velocity=-1)
Definition PianoRoll.cpp:2194
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:394
StepRecorderWidget m_stepRecorderWidget
Definition PianoRoll.h:516
void changeSnapMode()
Definition PianoRoll.cpp:5166
bool m_startedWithShift
Definition PianoRoll.h:474
const NoteVector & ghostNotes() const
Definition PianoRoll.h:384
void setKnifeAction()
Definition PianoRoll.cpp:2226
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:2833
int yCoordOfKey(int key) const
Definition PianoRoll.cpp:4283
void showTextFloat(const QString &text, const QPoint &pos, int timeout=-1)
Definition PianoRoll.cpp:467
int m_blackKeyWidth
Definition PianoRoll.h:553
QPixmap m_toolMove
Definition PianoRoll.h:353
void glueNotes()
Definition PianoRoll.cpp:658
void updateKnifePos(QMouseEvent *me, bool initial)
Definition PianoRoll.cpp:2934
void play()
Definition PianoRoll.cpp:4318
void ghostClipSet(bool state)
Definition PianoRoll.cpp:5763
ComboBox * m_zoomingYComboBox
Definition PianoRoll.h:621
QSize sizeHint() const override
Definition PianoRoll.cpp:5669
void loadSettings(const QDomElement &de) override
Definition PianoRoll.cpp:5643
void stopRecording()
Definition PianoRoll.cpp:5585
void setCurrentMidiClip(MidiClip *clip)
Definition PianoRoll.cpp:5500
PianoRollWindow()
Definition PianoRoll.cpp:5175
void saveSettings(QDomDocument &doc, QDomElement &de) override
Definition PianoRoll.cpp:5601
void reset()
Resets settings to default when e.g. creating a new project.
Definition PianoRoll.cpp:5593
ComboBox * m_chordComboBox
Definition PianoRoll.h:626
void stop() override
Definition PianoRoll.cpp:5545
ComboBox * m_quantizeComboBox
Definition PianoRoll.h:622
ComboBox * m_snapComboBox
Definition PianoRoll.h:627
void updateStepRecordingIcon()
Definition PianoRoll.cpp:5878
int quantization() const
Definition PianoRoll.cpp:5529
const MidiClip * currentMidiClip() const
Definition PianoRoll.cpp:5484
ComboBox * m_scaleComboBox
Definition PianoRoll.h:625
bool isRecording() const
Definition PianoRoll.cpp:5521
void showEvent(QShowEvent *se) override
Definition PianoRoll.cpp:5683
void setGhostMidiClip(MidiClip *clip)
Definition PianoRoll.cpp:5492
void record() override
Definition PianoRoll.cpp:5553
ComboBox * m_keyComboBox
Definition PianoRoll.h:624
void exportMidiClip()
Definition PianoRoll.cpp:5771
void recordAccompany() override
Definition PianoRoll.cpp:5563
void stopStepRecording()
Definition PianoRoll.cpp:5869
void updateAfterMidiClipChange()
Definition PianoRoll.cpp:5737
void importMidiClip()
Definition PianoRoll.cpp:5818
QString nodeName() const override
Definition PianoRoll.h:591
void clipRenamed()
Definition PianoRoll.cpp:5746
bool hasFocus() const
Definition PianoRoll.cpp:5676
void toggleStepRecording() override
Definition PianoRoll.cpp:5571
ComboBox * m_noteLenComboBox
Definition PianoRoll.h:623
QPushButton * m_clearGhostButton
Definition PianoRoll.h:628
void focusInEvent(QFocusEvent *event) override
Definition PianoRoll.cpp:5863
void play() override
Definition PianoRoll.cpp:5537
QToolButton * m_fileToolsButton
Definition PianoRoll.h:619
ComboBox * m_zoomingComboBox
Definition PianoRoll.h:620
PianoRoll * m_editor
Definition PianoRoll.h:617
Definition PositionLine.h:37
Definition SimpleTextFloat.h:39
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:209
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