1 /*  B.SEQuencer
2  * MIDI Step Sequencer LV2 Plugin
3  *
4  * Copyright (C) 2018, 2019 by Sven Jähnichen
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 3, or (at your option)
9  * any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19  */
20 
21 #ifndef DEFINITIONS_H_
22 #define DEFINITIONS_H_
23 
24 #define NR_SYSTEM_SCALES 16
25 #define NR_USER_SCALES 4
26 #define MAXSTEPS 32
27 #define ROWS 16
28 #define NR_SEQUENCER_CHS 4
29 #define NR_CTRL_BUTTONS 9
30 #define NR_EDIT_BUTTONS 7
31 #define NR_MIDI_KEYS 128
32 #define AUTOPLAY_KEY 128
33 #define ALL_CH 0xFF
34 #define HALT_STEP 1000
35 #define BSEQUENCER_URI "https://www.jahnichen.de/plugins/lv2/BSEQuencer"
36 #define BSEQUENCER_GUI_URI "https://www.jahnichen.de/plugins/lv2/BSEQuencer#gui"
37 
38 #ifndef LIMIT
39 #define LIMIT(val, min, max) ((val) > (max) ? (max) : ((val) < (min) ? (min) : (val)))
40 #endif /* LIMIT */
41 
42 typedef enum {
43 	PER_BEAT	= 1,
44 	PER_BAR		= 2
45 } Steps;
46 
47 typedef enum {
48 	AUTOPLAY	= 1,
49 	HOST_CONTROLLED	= 2,
50 	HOST_PLAYBACK	= 3
51 } ModeIndex;
52 
53 typedef enum {
54 	ON_KEY_RESTART	= 0,
55 	ON_KEY_SYNC	= 2,
56 	ON_KEY_CONTINUE	= 1
57 } OnKeyIndex;
58 
59 typedef enum {
60 	Chromatic	= 1,
61 	Major		= 2,
62 	Minor		= 3
63 } ScaleIndex;
64 
65 typedef enum {
66 	NO_CTRL		= 0x00,
67 	CTRL_PLAY_FWD	= 0x10,
68 	CTRL_PLAY_REW	= 0x20,
69 	CTRL_ALL_MARK	= 0x30,
70 	CTRL_MARK	= 0x40,
71 	CTRL_JUMP_FWD	= 0x50,
72 	CTRL_JUMP_BACK	= 0x60,
73 	CTRL_SKIP	= 0x70,
74 	CTRL_STOP	= 0x80
75 } CtrlButtons;
76 
77 typedef enum {
78 	EDIT_PICK	= 0x100,
79 	EDIT_MERGE	= 0x200,
80 	EDIT_CUT	= 0x300,
81 	EDIT_COPY	= 0x400,
82 	EDIT_FLIPX	= 0x500,
83 	EDIT_FLIPY	= 0x600,
84 	EDIT_PASTE	= 0x700
85 } EditButtons;
86 
87 
88 #endif /* DEFINITIONS_H_ */
89