Initial commit

This commit is contained in:
Armin 2026-07-21 02:06:45 +02:00
commit 638cd05ea8
14 changed files with 2783 additions and 0 deletions

41
Source/PianoRollDisplay.h Normal file
View 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)
};