-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmidimacs-globals.el
136 lines (116 loc) · 3.54 KB
/
midimacs-globals.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
(eval-when-compile
(require 'cl))
(defcustom midimacs-length 999
"number of beats"
:group 'midimacs
:type 'integer)
(defcustom midimacs-bpm 120
"beats per minute"
:group 'midimacs
:type 'number)
(defcustom midimacs-midi-output-port "DEBUG"
"Output port for amidicat; run midimacs-amidicat-init after changing"
:group 'midimacs
:type 'string)
(defcustom midimacs-midi-input-port "DEBUG"
"Input port for amidicat; run midimacs-amidicat-init after changing"
:group 'midimacs
:type 'string)
(defcustom midimacs-midi-input-channel "DEBUG"
"MIDI input channel"
:group 'midimacs
:type 'integer)
(defconst midimacs-ticks-per-beat 24)
(defconst midimacs-pitch-numbers '(("c" . 0)
("d" . 2)
("e" . 4)
("f" . 5)
("g" . 7)
("a" . 9)
("b" . 11)))
(defconst midimacs-accidental-numbers '((nil . 0)
("b" . -1)
("s" . +1)))
(defconst midimacs-pitch-names '((0 . C)
(1 . Cs)
(2 . D)
(3 . Ds)
(4 . E)
(5 . F)
(6 . Fs)
(7 . G)
(8 . Gs)
(9 . A)
(10 . As)
(11 . B)))
(defconst midimacs-left-bar-length 4)
(defconst midimacs-top-bar-height 1)
(defconst midimacs-track-char ?>)
(defconst midimacs-sustain-char ?.)
(defconst midimacs-space-char ? )
(defvar midimacs-tracks '())
(defvar midimacs-codes nil)
(defvar midimacs-repeat-start nil)
(defvar midimacs-repeat-end midimacs-length)
(defvar midimacs-repeat-end nil)
(defvar midimacs-abs-time nil)
(defvar midimacs-song-time nil)
(defvar midimacs-state 'stopped)
(defvar midimacs-is-capturing nil)
(defvar midimacs-start-time-seconds nil)
(defvar midimacs-last-tick-seconds nil) ; used for recording
(defvar midimacs-filename nil)
(defvar midimacs-scheduled-note-offs nil)
(defvar midimacs-repeat-start-overlay nil)
(defvar midimacs-repeat-end-overlay nil)
(defvar midimacs-play-overlay nil)
(defvar midimacs-midi-history nil)
(defvar midimacs-recording-score nil)
(defvar midimacs-global-init-func nil)
(defvar midimacs-channel-default-velocities nil)
(defvar midimacs-channel-started-notes nil)
(defvar midimacs-channel-sustained-notes nil)
(defvar midimacs-channel-stopped-notes nil)
(defface midimacs-top-bar-background-face
'((t (:foreground "dim gray")))
"Face for top bar number markers"
:group 'midimacs)
(defface midimacs-repeat-face
'((t (:foreground "gold")))
"Face for repeat markers"
:group 'midimacs)
(defface midimacs-play-face
'((t (:foreground "yellow")))
"Face for play symbols"
:group 'midimacs)
(defstruct midimacs-event
code-name
start-time
end-time
do-init)
(defstruct midimacs-code
name
text
init
run)
(defstruct midimacs-track
channel
events
mute
solo
(state nil)
(last-init-time (make-midimacs-time)))
(defstruct midimacs-midi-message
status
(data1 nil)
(data2 nil))
(defstruct midimacs-time
(beat 0)
(tick 0))
(defstruct midimacs-score
notes
buffer
channel
start-time)
(defconst midimacs-default-recording-duration (make-midimacs-time :tick (/ midimacs-ticks-per-beat 2)))
(provide 'midimacs-globals)