mirror of
https://codeberg.org/armin/monoslicer.git
synced 2026-09-01 04:10:45 +02:00
Initial commit
This commit is contained in:
commit
638cd05ea8
14 changed files with 2783 additions and 0 deletions
41
Source/PianoRollDisplay.h
Normal file
41
Source/PianoRollDisplay.h
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
#pragma once
|
||||
#include <juce_audio_processors/juce_audio_processors.h>
|
||||
#include "SliceManager.h"
|
||||
#include <functional>
|
||||
|
||||
class PianoRollDisplay : public juce::Component,
|
||||
public juce::Timer
|
||||
{
|
||||
public:
|
||||
static constexpr int numRows = 12;
|
||||
static constexpr int baseMidiNote = 60;
|
||||
static constexpr float keyWidth = 50.0f;
|
||||
|
||||
PianoRollDisplay(SliceManager& sm);
|
||||
~PianoRollDisplay() override;
|
||||
|
||||
void paint(juce::Graphics& g) override;
|
||||
void resized() override;
|
||||
void timerCallback() override;
|
||||
void mouseDown(const juce::MouseEvent& e) override;
|
||||
void mouseUp(const juce::MouseEvent& e) override;
|
||||
|
||||
void setActiveSlice(int index);
|
||||
void setSelectedSlice(int index);
|
||||
void setTotalSamples(int total);
|
||||
void setOnKeyClick(std::function<void(int sliceIndex)> callback);
|
||||
|
||||
private:
|
||||
SliceManager& sliceManager;
|
||||
int activeSlice = -1;
|
||||
int selectedSlice = -1;
|
||||
int totalSamples = 0;
|
||||
int pressedKey = -1;
|
||||
|
||||
std::function<void(int)> onKeyClick;
|
||||
|
||||
juce::Colour sliceColour(int sliceIndex) const;
|
||||
int rowToSliceIndex(int row) const;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PianoRollDisplay)
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue