source: buchla-68k/ram/pix2mid.c@ 411371e

Last change on this file since 411371e was 411371e, checked in by Thomas Lopatic <thomas@…>, 7 years ago

Removed redundant declarations.

  • Property mode set to 100644
File size: 3.5 KB
Line 
1/*
2 =============================================================================
3 pix2mid.c -- convert cursor position to MIDI note number and score time
4 Version 9 -- 1988-10-27 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#include "stddefs.h"
9#include "graphdef.h"
10#include "vsdd.h"
11#include "score.h"
12
13#include "midas.h"
14#include "scfns.h"
15#include "scdsp.h"
16
17#define PCENTER 256 /* pixel offset of 0 time line */
18
19extern int16_t cflag; /* accidental flag */
20extern int16_t cnote; /* note value at cursor */
21extern int16_t cyval; /* cursor y value */
22extern int16_t cxval; /* cursor x value */
23
24extern int32_t ctime; /* time at cursor */
25
26/*
27
28*/
29
30int16_t mpixtab[52][4] = { /* pixel to MIDI note for the white keys */
31
32/* [0] = center pixel, [1] = MIDI note, [2] = sharp tag, [3] = flat tag */
33
34 { 1, 108, 0, 0}, /* 8C 00 -- 0 */
35
36
37 { 5, 107, 0, 1}, /* 7B 00 -- 1 */
38 { 9, 105, 1, 1}, /* 7A 00 -- 2 */
39 { 13, 103, 1, 1}, /* 7G 00 -- 3 */
40 { 17, 101, 1, 0}, /* 7F 00 -- 4 */
41
42 { 21, 100, 0, 1}, /* 7E 00 -- 5 */
43 { 25, 98, 1, 1}, /* 7D 00 -- 6 */
44 { 29, 96, 1, 0}, /* 7C 00 -- 7 */
45
46
47 { 33, 95, 0, 1}, /* 6B 00 -- 8 */
48 { 37, 93, 1, 1}, /* 6A 00 -- 9 */
49 { 41, 91, 1, 1}, /* 6G 00 -- 10 */
50 { 45, 89, 1, 0}, /* 6F 00 -- 11 */
51
52 { 49, 88, 0, 1}, /* 6E 00 -- 12 */
53 { 53, 86, 1, 1}, /* 6D 00 -- 13 */
54 { 57, 84, 1, 0}, /* 6C 00 -- 14 */
55
56
57 { 61, 83, 0, 1}, /* 5B 00 -- 15 */
58 { 65, 81, 1, 1}, /* 5A 00 -- 16 */
59 { 69, 79, 1, 1}, /* 5G 00 -- 17 */
60 { 73, 77, 1, 0}, /* 5F 00 -- 18 */
61
62 { 77, 76, 0, 1}, /* 5E 00 -- 19 */
63 { 81, 74, 1, 1}, /* 5D 00 -- 20 */
64 { 85, 72, 1, 0}, /* 5C 00 -- 21 */
65
66 { 89, 71, 0, 1}, /* 4B 00 -- 22 */
67 { 93, 69, 1, 1}, /* 4A 00 -- 23 */
68 { 97, 67, 1, 1}, /* 4G 00 -- 24 */
69 {101, 65, 1, 0}, /* 4F 00 -- 25 */
70
71 {105, 64, 0, 1}, /* 4E 00 -- 26 */
72 {109, 62, 1, 1}, /* 4D 00 -- 27 */
73 {113, 60, 1, 0}, /* 4C 00 -- 28 -- Middle C */
74
75/*
76
77*/
78
79 {117, 59, 0, 1}, /* 3B 00 -- 29 */
80 {121, 57, 1, 1}, /* 3A 00 -- 30 */
81 {125, 55, 1, 1}, /* 3G 00 -- 31 */
82 {129, 53, 1, 0}, /* 3F 00 -- 32 */
83
84 {133, 52, 0, 1}, /* 3E 00 -- 33 */
85 {137, 50, 1, 1}, /* 3D 00 -- 34 */
86 {141, 48, 1, 0}, /* 3C 00 -- 35 */
87
88
89 {145, 47, 0, 1}, /* 2B 00 -- 36 */
90 {149, 45, 1, 1}, /* 2A 00 -- 37 */
91 {153, 43, 1, 1}, /* 2G 00 -- 38 */
92 {157, 41, 1, 0}, /* 2F 00 -- 39 */
93
94 {161, 40, 0, 1}, /* 2E 00 -- 40 */
95 {165, 38, 1, 1}, /* 2D 00 -- 41 */
96 {169, 36, 1, 0}, /* 2C 00 -- 42 */
97
98
99 {173, 35, 0, 1}, /* 1B 00 -- 43 */
100 {177, 33, 1, 1}, /* 1A 00 -- 44 */
101 {181, 31, 1, 1}, /* 1G 00 -- 45 */
102 {185, 29, 1, 0}, /* 1F 00 -- 46 */
103
104 {189, 28, 0, 1}, /* 1E 00 -- 47 */
105 {193, 26, 1, 1}, /* 1D 00 -- 48 */
106 {197, 24, 1, 0}, /* 1C 00 -- 49 */
107
108
109 {201, 23, 0, 1}, /* 0B 00 -- 50 */
110 {205, 21, 1, 0} /* 0A 00 -- 51 */
111};
112
113/*
114
115*/
116
117/*
118 =============================================================================
119 pix2mid() -- convert (px, py) to MIDI note and score time
120 =============================================================================
121*/
122
123int16_t pix2mid(void)
124{
125 register int16_t i, cy, mpc;
126 register int32_t ct;
127
128 cnote = -1;
129 ctime = -1L;
130 cflag = -1;
131 mpc = ac_code EQ N_SHARP ? 2 : 3;
132
133 ct = t_cur + ((int32_t)cxval - (int32_t)PCENTER);
134
135 if (ct < 0L)
136 return(FAILURE);
137
138 ctime = ct;
139 cy = cyval - 14;
140
141 for (i = 0; i < 52; i++) {
142
143 if ((cy GE mpixtab[i][0]) AND
144 (cy LE mpixtab[i][0] + 2)) {
145
146 cnote = mpixtab[i][1];
147 cflag = mpixtab[i][mpc];
148 break;
149 }
150 }
151
152 return((cnote EQ -1L) ? FAILURE : SUCCESS);
153}
Note: See TracBrowser for help on using the repository browser.