MTek-GDL 0.100.4-muffintrap
Loading...
Searching...
No Matches
mgdl-rocket.h
1#pragma once
2
3// This class makes using rocket
4// easier but a project using it still needs
5// to include and compile the rocket source
6
7#include <mgdl/mgdl-types.h>
8
9// Include these only once in your project
10#define MGDL_ROCKET_FILE_H "rocket_tracks.h"
11#define MGDL_ROCKET_FILE_CPP "rocket_tracks.cpp"
12#define MGDL_ROCKET_FILE_JSON "rocket_tracks.json"
13
14// Forward defines of Rocket types
15struct sync_device;
16struct sync_track;
17
18typedef const struct sync_track* ROCKET_TRACK;
19
20// For CTOY interface
21#define ROCKET_TRACK_AMOUNT 512
22#define ROCKET_NAME_LENGTH 64
24{
25 char name[ROCKET_NAME_LENGTH];
26 float value;
27};
28typedef struct RocketVariable RocketVariable;
29// End CTOY
30
31
32struct Music; // Forward declare of mgdl Music
33
34enum SyncState
35{
36 SyncPlay,
37 SyncPause,
38 SyncStop
39};
40typedef enum SyncState SyncState;
41
42// Where do the tracks and values come from and where they are saved
43enum RocketTrackFormat
44{
45 TrackEditor,
46 TrackCPP,
47 TrackJSON
48};
49typedef enum RocketTrackFormat RocketTrackFormat;
50
51struct Rocket
52{
53 struct sync_device *rocket_device;
54 struct Music* music;
55 double bpm;
56 int rowsPerBeat;
57 double row;
58 double rowRate;
59 SyncState syncState;
60 float musicElapsedSeconds;
61
62 ROCKET_TRACK* _tracks;
63 unsigned short _trackCount;
64
65 // Reading from json file?
66 RocketTrackFormat trackSource;
67 RocketTrackFormat trackDestination;
68 const char *jsonFilename;
69};
70typedef struct Rocket Rocket;
71
72#ifdef __cplusplus
73extern "C" {
74#endif
75
76 // Give these functions to the rocket as callbacks
77 void Rocket_Pause_CB(int paused);
78 void Rocket_SetRow_CB(int row);
79 int Rocket_IsPlaying_CB(void);
80
81 // Supply the rocket connection you created and the music
82 Rocket* _Rocket_GetSingleton(void);
83 bool Rocket_Connect(RocketTrackFormat trackSource, RocketTrackFormat trackDestination, struct Music* music, float bpm, int beatsPerRow);
84 void Rocket_SetJsonFile(const char* filename);
85 void Rocket_SetBeatsPerMinute(float bpm);
86 void Rocket_SetRowsPerBeat(int rowsPerBeat);
87 void Rocket_PlayTracks(void);
88 void Rocket_UpdateRow(void);
89 void Rocket_Disconnect(void); // Disconnects
90
91 ROCKET_TRACK Rocket_AddTrack(const char* trackName);
92
93 ROCKET_TRACK Rocket_GetTrack(unsigned short index);
94 unsigned short Rocket_GetTrackIndex(ROCKET_TRACK track);
95
96 void Rocket_StartSaveToHeader(void);
97 void Rocket_SaveTrack(ROCKET_TRACK track);
98 void Rocket_EndSaveToHeader(void);
99
100 void Rocket_SetToBeSaved(ROCKET_TRACK track);
101 void Rocket_SaveAllTracks(void);
102
103 void Rocket_SetRow(int row);
104 double Rocket_GetRow(void);
105 int Rocket_GetRowInt(void);
106 float Rocket_GetTime(void);
107
108 void Rocket_Play(void);
109 void Rocket_Pause(bool setPaused);
110 SyncState Rocket_GetState(void);
111
112 float Rocket_Float(ROCKET_TRACK track);
113 double Rocket_Double(ROCKET_TRACK track);
114 int Rocket_Int(ROCKET_TRACK track);
115 bool Rocket_Bool(ROCKET_TRACK track);
116#ifdef __cplusplus
117}
118#endif
119
Library types, macros, defines and enums header.
Definition mgdl-music.h:17
Definition mgdl-rocket.h:24
Definition mgdl-rocket.h:52
Definition device.h:69
Definition track.h:26