Dateien hochladen nach „“
This commit is contained in:
parent
b574fcd537
commit
541c1f6fe0
70
MainWindow.h
Normal file
70
MainWindow.h
Normal file
@ -0,0 +1,70 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QGraphicsView>
|
||||
/* MAINWINDOW_H
|
||||
* CLASS DECLARATION
|
||||
*
|
||||
* CHANGLOG:
|
||||
* NAME: | CHANGES: | DATE: |
|
||||
* Mewes, Lars | Neuerstellung | 24.09.2021 |
|
||||
* Mewes, Lars | Änderung auf QTabWidget (statt QSplitter) + Midi-Versuche | 28.09.2021 |
|
||||
* | | |
|
||||
* | | |
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* Diese Klasse ist die "Hauptklasse" und besitzt die Farbtonskala "ColorScale", die QGraphicsViews sowie die Klaviatur und den Quintenzirkel
|
||||
*
|
||||
* TO-DOs:
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include <QGraphicsScene>
|
||||
#include <QTabWidget>
|
||||
#include <QPlainTextEdit>
|
||||
#include <QThread>
|
||||
|
||||
#include "RtMidi.h"
|
||||
|
||||
#include "MidiListener.h"
|
||||
#include "PianoKeyBoard.h"
|
||||
#include "Tone.h"
|
||||
#include "ColorScale.h"
|
||||
#include "CircleOfFifths.h"
|
||||
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
QTabWidget * tabWidget;
|
||||
|
||||
QGraphicsView * gV_Keyboard;
|
||||
QGraphicsView * gV_CircleOfFifths;
|
||||
QGraphicsView * gV_Demo;
|
||||
QPlainTextEdit * midiLog;
|
||||
|
||||
PianoKeyBoard * pianoKeyBoard;
|
||||
CircleOfFifths * circleOfFifths;
|
||||
QGraphicsScene * scene_Demo;
|
||||
|
||||
QThread midiThread;
|
||||
MidiListener * midiPiano;
|
||||
void lightShowDemonstration(int b1, int b2, int b3);
|
||||
public slots:
|
||||
|
||||
void handleMidiMessage(int b1, int b2, int b3);
|
||||
signals:
|
||||
void startMidiListener(int Port = 1);
|
||||
void nextMidiMessage();
|
||||
void stopMidi();
|
||||
public:
|
||||
|
||||
RtMidiIn * midiin = nullptr;
|
||||
MainWindow(QWidget *parent = nullptr);
|
||||
virtual ~MainWindow();
|
||||
|
||||
ColorScale colorScale;
|
||||
};
|
||||
#endif // MAINWINDOW_H
|
35
MidiListener.cpp
Normal file
35
MidiListener.cpp
Normal file
@ -0,0 +1,35 @@
|
||||
#include "MidiListener.h"
|
||||
#include <vector>
|
||||
#include <QString>
|
||||
void MidiListener::start(int Port){
|
||||
midiin = new RtMidiIn(RtMidi::Api::LINUX_ALSA, "Scrjabin");
|
||||
|
||||
try {
|
||||
midiin->openPort(Port);
|
||||
}
|
||||
catch ( RtMidiError &error ) {
|
||||
error.printMessage();
|
||||
}
|
||||
emit newMidiMessage(0,0,0);
|
||||
|
||||
};
|
||||
void MidiListener::listen(){
|
||||
std::vector<unsigned char> message;
|
||||
|
||||
// Don't ignore sysex, timing, or active sensing messages.
|
||||
midiin->ignoreTypes( false, false, false );
|
||||
|
||||
midiin->getMessage( &message );
|
||||
if ( message.size() == 3 )
|
||||
emit newMidiMessage(message[0], message[1], message[2]);
|
||||
else
|
||||
emit newMidiMessage(0,0,0);
|
||||
};
|
||||
void MidiListener::stop(){
|
||||
delete midiin;
|
||||
this->disconnect();
|
||||
this->~MidiListener();
|
||||
}
|
||||
MidiListener::~MidiListener(){
|
||||
|
||||
}
|
17
MidiListener.h
Normal file
17
MidiListener.h
Normal file
@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
#include "RtMidi.h"
|
||||
#include <iostream>
|
||||
#include <QObject>
|
||||
|
||||
class MidiListener: public QObject{
|
||||
Q_OBJECT
|
||||
RtMidiIn * midiin;
|
||||
public:
|
||||
~MidiListener();
|
||||
public slots:
|
||||
void start(int Port = 0);
|
||||
void listen();
|
||||
void stop();
|
||||
signals:
|
||||
void newMidiMessage(int b1, int b2, int b3);
|
||||
};
|
27
PianoKey.cpp
Normal file
27
PianoKey.cpp
Normal file
@ -0,0 +1,27 @@
|
||||
#include "PianoKey.h"
|
||||
#include <QBrush>
|
||||
|
||||
PianoKey::PianoKey(Tone *tone): tone(tone){
|
||||
if(tone->getFlatTone()){
|
||||
setRect(-350+tone->getKeyboardPosition()*100,0, 100, 700);
|
||||
|
||||
}
|
||||
else{
|
||||
setRect(-350+75+tone->getKeyboardPosition()*100,0, 50, 500);
|
||||
setZValue(1);
|
||||
}
|
||||
setBrush(QBrush(tone->getColor()));
|
||||
};
|
||||
PianoKey::~PianoKey(){};
|
||||
|
||||
Tone * PianoKey::getTone()const{
|
||||
return tone;
|
||||
};
|
||||
|
||||
//SLOTS:
|
||||
void PianoKey::redraw(){
|
||||
setBrush(QBrush(tone->getColor()));
|
||||
};
|
||||
|
||||
|
||||
|
39
PianoKey.h
Normal file
39
PianoKey.h
Normal file
@ -0,0 +1,39 @@
|
||||
/* PIANOKEY_H
|
||||
* CLASS DECLARATION
|
||||
*
|
||||
* CHANGLOG:
|
||||
* NAME: | CHANGES: | DATE: |
|
||||
* Mewes, Lars | Neuerstellung | 24.09.2021 |
|
||||
* | | |
|
||||
* | | |
|
||||
* | | |
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* Diese Klasse enthält analog zu "CircleElement" alle Bestandteile einer Klaviertaste.
|
||||
*
|
||||
* TO-DOs:
|
||||
* Beschriftung auf den Tasten ergänzen
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QGraphicsRectItem>
|
||||
#include <QString>
|
||||
|
||||
#include "Tone.h"
|
||||
|
||||
class PianoKey: public QObject, public QGraphicsRectItem{
|
||||
Q_OBJECT
|
||||
|
||||
Tone * tone;
|
||||
public:
|
||||
|
||||
PianoKey(QString _tone, int pos, QColor _col, bool flatTone = true);
|
||||
PianoKey(Tone * tone);
|
||||
virtual ~PianoKey();
|
||||
|
||||
Tone * getTone()const;
|
||||
|
||||
public slots:
|
||||
void redraw();
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user