Code Search for Developers
 
 
  

Keypad.h from marsyas at Krugle


Show Keypad.h syntax highlighted

#ifndef KEYPAD_H
#define KEYPAD_H

#include <ostream>

#include <QList>
#include <QPoint>
#include <QPainter>
#include <QPixmap>
#include <QMouseEvent>
#include <QWidget>
#include <QMessageBox>
#include <QDebug>

#include <ctime>
#include <cstdlib>

#include "../Interface/MyDisplay.h"
#include "../Interface/Classifier.h"
#include "../Interface/Extractor.h"

#include "../Music/MusicCollection.h"
//#include "../Marsyas/MarsyasECP.h"
#include "../Colormaps/Colormap.h"
#include "Tracklist.h"

class QDragEnterEvent;
class QDropEvent;
class QMouseEvent;
class QPainter;

class Classifier;
class Extractor;
class MarsyasECP;
class KeypadSquare;

const static int KEYPAD_SIZE = 9; 
enum KeypadEnum  { KEYPAD1, KEYPAD2, KEYPAD3,
                   KEYPAD4, KEYPAD5, KEYPAD6,
                   KEYPAD7, KEYPAD8, KEYPAD9, KEYPAD_INVALID };

class Keypad : public MyDisplay 
{
	Q_OBJECT

public:
	Keypad(int winSize, Tracklist *tracklist, QWidget *parent = 0);
	~Keypad();
	void clear();

	int getHeight() const { return _width; }
	int getWidth() const { return _width; }

public slots: 
	void extract() {}
	void predict() {}
	void train() {}
	void midiXYEvent(unsigned char xaxis, unsigned char yaxis);
	void midiPlaylistEvent(bool next);
	void keypadClicked(KeypadEnum button);

signals: 
	void playingTrack(MusicTrack *track);
  
protected:
	void dragEnterEvent(QDragEnterEvent *event);
	void dragMoveEvent(QDragMoveEvent *event);
	void dropEvent(QDropEvent *event);
	void startDrag(Qt::DropActions supportedActions);

	void mousePressEvent(QMouseEvent *event);
	void mouseMoveEvent(QMouseEvent *event);
 
	void updateXYPosition(int x, int y); 
	void paintEvent(QPaintEvent *event);
	void playNextTrack();

	void addTrack(int x, int y, MusicTrack* track);
	void resetGrid();

	void setGridX(int x);  
	void setGridY(int y); 
	KeypadSquare *getCurrentSquare();

	void setup();

private:
	int _winSize;
	int _cellSize;
	int _gridX;
	int _gridY;
	int _width;

	KeypadEnum _currentIndex;
	KeypadSquare *_current;
	KeypadSquare *_root;

	//MarsyasECP *_marsyas;
	//Classifier *_classifier;
	//Extractor *_extractor;

	MusicCollection *_collection; 
};

/*
Keypad Arrangement

PAD1	PAD2	PAD3

PAD4	PAD5	PAD6

PAD7	PAD8	PAD9
*/
class KeypadSquare
{
public:
	KeypadSquare(KeypadSquare *parent=NULL);
	~KeypadSquare();

	bool isEmpty() const;

	void addTrack(MusicTrack *track);
	void removeTrack(MusicTrack *track);

	void nextTrack();
	MusicTrack* getCurrent();
	MusicTrackIterator getTracks();

	int getCount() const;

	void clear();

	KeypadSquare *getParent();
	KeypadSquare *getChild(KeypadEnum child);
	KeypadSquare *createChild(KeypadEnum child);
	KeypadEnum getChildId(KeypadSquare *child);	

private:
	KeypadSquare *_children[KEYPAD_SIZE];
	KeypadSquare *_parent;

	MusicTrackVector _list;
	int _currentTrack;
};

#endif




See more files for this project here

marsyas

Marsyas (Music Analysis, Retrieval and Synthesis for Audio Signals) is a framework for developing systems for audio processing. It provides an general architecture for connecting audio, soundfiles, signal processing blocks and machine learning.

Project homepage: http://sourceforge.net/projects/marsyas
Programming language(s): C++
License: other

  Grid.cpp
  Grid.h
  Keypad.cpp
  Keypad.h
  PlayBox.cpp
  PlayBox.h
  Playlist.cpp
  Playlist.h
  PlaylistItem.cpp
  PlaylistItem.h
  PlaylistModel.cpp
  PlaylistModel.h
  Tracklist.cpp
  Tracklist.h