~ubuntu-branches/ubuntu/vivid/oss4/vivid-proposed

« back to all changes in this revision

Viewing changes to .pc/libsalsa_fixes.patch/lib/libsalsa/seq_output.c

  • Committer: Package Import Robot
  • Author(s): Sebastien NOEL
  • Date: 2012-11-19 11:47:24 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20121119114724-svu8mq7x3pk64nez
Tags: 4.2-build2007-1
* New upstream release.
* Acknowledge NMU, thanks Michael Gilbert.
* Add debian/patches/110_ld-as-needed.patch: Rearrange order of linker
  arguments to fix building with "ld --as-needed" (closes: #630737).
* Add missing dependency on dpkg-dev to oss4-dkms and oss4-source
  (closes: #687086).
* Fix typo in the changelog (closes: #628876, #675933)
* Add debian/patches/002_fix-linux-oss_native_word.patch (closes: #693657).
  Thanks to Ben Hutchings.
* Add debian/patches/003_linux-error-logging-fixes.patch (closes: #693657).
  Thanks to Ben Hutchings.
* check for /lib/modules/${kernelver}/build in addition of
  /lib/modules/${kernelver}/source (closes: #587191).
* oss4-dkms.dkms.in: fix 'CLEAN' rules (closes: #653374).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 *  Copyright (c) 2004 by Hannu Savolainen < hannu@opensound.com>
3
 
 *
4
 
 *   This library is free software; you can redistribute it and/or modify
5
 
 *   it under the terms of the GNU Lesser General Public License version 2.1 as
6
 
 *   published by the Free Software Foundation.
7
 
 *
8
 
 *   This program is distributed in the hope that it will be useful,
9
 
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
 *   GNU Lesser General Public License for more details.
12
 
 *
13
 
 *   You should have received a copy of the GNU Lesser General Public
14
 
 *   License along with this library; if not, write to the Free Software
15
 
 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16
 
 *
17
 
 */
18
 
#include <stdio.h>
19
 
#include "local.h"
20
 
 
21
 
static int
22
 
midi_out3 (snd_seq_t * seq, int msg, int parm1, int parm2)
23
 
{
24
 
  unsigned char buf[3];
25
 
  int l;
26
 
 
27
 
  if (msg < 0 || msg >= 0xff)
28
 
    return -ERANGE;
29
 
  if (parm1 < 0 || parm1 > 0x7f)
30
 
    return -ERANGE;
31
 
  if (parm2 < 0 || parm2 > 0x7f)
32
 
    return -ERANGE;
33
 
 
34
 
  buf[0] = msg;
35
 
  buf[1] = parm1;
36
 
  buf[2] = parm2;
37
 
 
38
 
  if ((l = write (seq->fd, buf, 3)) != 3)
39
 
    {
40
 
      if (l == -1)
41
 
        return -errno;
42
 
 
43
 
      return -EBADE;            /* Randomly selected error */
44
 
    }
45
 
 
46
 
  return 0;
47
 
}
48
 
 
49
 
static int
50
 
midi_out2 (snd_seq_t * seq, int msg, int parm1)
51
 
{
52
 
  unsigned char buf[3];
53
 
  int l;
54
 
 
55
 
  if (msg < 0 || msg >= 0xff)
56
 
    return -ERANGE;
57
 
  if (parm1 < 0 || parm1 > 0x7f)
58
 
    return -ERANGE;
59
 
 
60
 
  buf[0] = msg;
61
 
  buf[1] = parm1;
62
 
 
63
 
  if ((l = write (seq->fd, buf, 2)) != 2)
64
 
    {
65
 
      if (l == -1)
66
 
        return -errno;
67
 
 
68
 
      return -EBADE;            /* Randomly selected error */
69
 
    }
70
 
 
71
 
  return 0;
72
 
}
73
 
 
74
 
int
75
 
convert_event (snd_seq_t * seq, snd_seq_event_t * ev)
76
 
{
77
 
  int value;
78
 
 
79
 
  dbg_printf3
80
 
    ("Event %2d: flags=%08x tag=%08x, q=%2d, time=%d, src=%x, dst=%x\n",
81
 
     ev->type, ev->flags, ev->tag, ev->queue, ev->time, ev->source, ev->dest);
82
 
 
83
 
  switch (ev->type)
84
 
    {
85
 
    case SND_SEQ_EVENT_CONTROLLER:
86
 
      dbg_printf3 ("\tSND_SEQ_EVENT_CONTRLLER %2d, %3d, %3d\n",
87
 
                   ev->data.control.channel,
88
 
                   ev->data.control.param, ev->data.control.value);
89
 
      if (ev->data.control.channel > 15)
90
 
        return -ERANGE;
91
 
      return midi_out3 (seq, 0xB0 + ev->data.control.channel,
92
 
                        ev->data.control.param, ev->data.control.value);
93
 
      break;
94
 
 
95
 
    case SND_SEQ_EVENT_PGMCHANGE:
96
 
      dbg_printf3 ("\tSND_SEQ_EVENT_PGMCHANGE %2d, %3d, %3d\n",
97
 
                   ev->data.control.channel,
98
 
                   ev->data.control.param, ev->data.control.value);
99
 
      if (ev->data.control.channel > 15)
100
 
        return -ERANGE;
101
 
      return midi_out2 (seq, 0xC0 + ev->data.control.channel,
102
 
                        ev->data.control.value);
103
 
      break;
104
 
 
105
 
    case SND_SEQ_EVENT_CHANPRESS:
106
 
      dbg_printf3 ("\tSND_SEQ_EVENT_CHANPRESS %2d, %5d\n",
107
 
                   ev->data.control.channel, ev->data.control.value);
108
 
      value = ev->data.control.value + 8192;
109
 
      if (ev->data.control.channel > 15)
110
 
        return -ERANGE;
111
 
      return midi_out3 (seq, 0xD0 + ev->data.control.channel,
112
 
                        value & 0x7f, (value >> 7) & 0x7f);
113
 
      break;
114
 
 
115
 
    case SND_SEQ_EVENT_PITCHBEND:
116
 
      dbg_printf3 ("\tSND_SEQ_EVENT_PITCHBEND %2d, %5d\n",
117
 
                   ev->data.control.channel, ev->data.control.value);
118
 
      value = ev->data.control.value + 8192;
119
 
      if (ev->data.control.channel > 15)
120
 
        return -ERANGE;
121
 
      return midi_out3 (seq, 0xE0 + ev->data.control.channel,
122
 
                        value & 0x7f, (value >> 7) & 0x7f);
123
 
      break;
124
 
 
125
 
    case SND_SEQ_EVENT_NOTEON:
126
 
      dbg_printf3 ("\tSND_SEQ_EVENT_NOTEON  %2d, %3d, %d\n",
127
 
                   ev->data.note.channel,
128
 
                   ev->data.note.note, ev->data.note.velocity);
129
 
      if (ev->data.control.channel > 15)
130
 
        return -ERANGE;
131
 
      return midi_out3 (seq, 0x90 + ev->data.note.channel,
132
 
                        ev->data.note.note, ev->data.note.velocity);
133
 
      break;
134
 
 
135
 
    case SND_SEQ_EVENT_NOTEOFF:
136
 
      dbg_printf3 ("\tSND_SEQ_EVENT_NOTEOFF %2d, %3d, %d\n",
137
 
                   ev->data.note.channel,
138
 
                   ev->data.note.note, ev->data.note.velocity);
139
 
      if (ev->data.control.channel > 15)
140
 
        return -ERANGE;
141
 
      return midi_out3 (seq, 0x80 + ev->data.note.channel,
142
 
                        ev->data.note.note, ev->data.note.velocity);
143
 
      break;
144
 
 
145
 
    case SND_SEQ_EVENT_KEYPRESS:
146
 
      dbg_printf3 ("\tSND_SEQ_EVENT_KEYPRESS %2d, %3d, %d\n",
147
 
                   ev->data.note.channel,
148
 
                   ev->data.note.note, ev->data.note.velocity);
149
 
      if (ev->data.control.channel > 15)
150
 
        return -ERANGE;
151
 
      return midi_out3 (seq, 0xA0 + ev->data.note.channel,
152
 
                        ev->data.note.note, ev->data.note.velocity);
153
 
      break;
154
 
 
155
 
    case SND_SEQ_EVENT_SYSTEM:
156
 
      dbg_printf ("\tSND_SEQ_EVENT_SYSTEM\n");
157
 
      break;
158
 
    case SND_SEQ_EVENT_RESULT:
159
 
      dbg_printf ("\tSND_SEQ_EVENT_RESULT\n");
160
 
      break;
161
 
    case SND_SEQ_EVENT_NOTE:
162
 
      dbg_printf ("\tSND_SEQ_EVENT_NOTE\n");
163
 
      break;
164
 
    case SND_SEQ_EVENT_CONTROL14:
165
 
      dbg_printf ("\tSND_SEQ_EVENT_CONTROL14\n");
166
 
      break;
167
 
    case SND_SEQ_EVENT_NONREGPARAM:
168
 
      dbg_printf ("\tSND_SEQ_EVENT_NONREGPARAM\n");
169
 
      break;
170
 
    case SND_SEQ_EVENT_REGPARAM:
171
 
      dbg_printf ("\tSND_SEQ_EVENT_REGPARAM\n");
172
 
      break;
173
 
    case SND_SEQ_EVENT_SONGPOS:
174
 
      dbg_printf ("\tSND_SEQ_EVENT_SONGPOS\n");
175
 
      break;
176
 
    case SND_SEQ_EVENT_SONGSEL:
177
 
      dbg_printf ("\tSND_SEQ_EVENT_SONGSEL\n");
178
 
      break;
179
 
    case SND_SEQ_EVENT_QFRAME:
180
 
      dbg_printf ("\tSND_SEQ_EVENT_QFRAME\n");
181
 
      break;
182
 
    case SND_SEQ_EVENT_TIMESIGN:
183
 
      dbg_printf ("\tSND_SEQ_EVENT_TIMESIGN\n");
184
 
      break;
185
 
    case SND_SEQ_EVENT_KEYSIGN:
186
 
      dbg_printf ("\tSND_SEQ_EVENT_KEYSIGN\n");
187
 
      break;
188
 
    case SND_SEQ_EVENT_START:
189
 
      dbg_printf ("\tSND_SEQ_EVENT_START\n");
190
 
      break;
191
 
    case SND_SEQ_EVENT_CONTINUE:
192
 
      dbg_printf ("\tSND_SEQ_EVENT_CONTINUE\n");
193
 
      break;
194
 
    case SND_SEQ_EVENT_STOP:
195
 
      dbg_printf ("\tSND_SEQ_EVENT_STOP\n");
196
 
      break;
197
 
    case SND_SEQ_EVENT_SETPOS_TICK:
198
 
      dbg_printf ("\tSND_SEQ_EVENT_SETPOS_TICK\n");
199
 
      break;
200
 
    case SND_SEQ_EVENT_SETPOS_TIME:
201
 
      dbg_printf ("\tSND_SEQ_EVENT_SETPOS_TIME\n");
202
 
      break;
203
 
    case SND_SEQ_EVENT_TEMPO:
204
 
      dbg_printf ("\tSND_SEQ_EVENT_TEMPO\n");
205
 
      break;
206
 
    case SND_SEQ_EVENT_CLOCK:
207
 
      dbg_printf ("\tSND_SEQ_EVENT_CLOCK\n");
208
 
      break;
209
 
    case SND_SEQ_EVENT_TICK:
210
 
      dbg_printf ("\tSND_SEQ_EVENT_TICK\n");
211
 
      break;
212
 
    case SND_SEQ_EVENT_QUEUE_SKEW:
213
 
      dbg_printf ("\tSND_SEQ_EVENT_QUEUE_SKEW\n");
214
 
      break;
215
 
    case SND_SEQ_EVENT_SYNC_POS:
216
 
      dbg_printf ("\tSND_SEQ_EVENT_SYNC_POS\n");
217
 
      break;
218
 
    case SND_SEQ_EVENT_TUNE_REQUEST:
219
 
      dbg_printf ("\tSND_SEQ_EVENT_TUNE_REQUEST\n");
220
 
      break;
221
 
    case SND_SEQ_EVENT_RESET:
222
 
      dbg_printf ("\tSND_SEQ_EVENT_RESET\n");
223
 
      break;
224
 
    case SND_SEQ_EVENT_SENSING:
225
 
      dbg_printf ("\tSND_SEQ_EVENT_SENSING\n");
226
 
      break;
227
 
    case SND_SEQ_EVENT_ECHO:
228
 
      dbg_printf ("\tSND_SEQ_EVENT_ECHO\n");
229
 
      break;
230
 
    case SND_SEQ_EVENT_OSS:
231
 
      dbg_printf ("\tSND_SEQ_EVENT_OSS\n");
232
 
      break;
233
 
    case SND_SEQ_EVENT_CLIENT_START:
234
 
      dbg_printf ("\tSND_SEQ_EVENT_CLIENT_START\n");
235
 
      break;
236
 
    case SND_SEQ_EVENT_CLIENT_EXIT:
237
 
      dbg_printf ("\tSND_SEQ_EVENT_CLIENT_EXIT\n");
238
 
      break;
239
 
    case SND_SEQ_EVENT_CLIENT_CHANGE:
240
 
      dbg_printf ("\tSND_SEQ_EVENT_CLIENT_CHANGE\n");
241
 
      break;
242
 
    case SND_SEQ_EVENT_PORT_START:
243
 
      dbg_printf ("\tSND_SEQ_EVENT_PORT_START\n");
244
 
      break;
245
 
    case SND_SEQ_EVENT_PORT_EXIT:
246
 
      dbg_printf ("\tSND_SEQ_EVENT_PORT_EXIT\n");
247
 
      break;
248
 
    case SND_SEQ_EVENT_PORT_CHANGE:
249
 
      dbg_printf ("\tSND_SEQ_EVENT_PORT_CHANGE\n");
250
 
      break;
251
 
    case SND_SEQ_EVENT_PORT_SUBSCRIBED:
252
 
      dbg_printf ("\tSND_SEQ_EVENT_PORT_SUBSCRIBED\n");
253
 
      break;
254
 
    case SND_SEQ_EVENT_PORT_UNSUBSCRIBED:
255
 
      dbg_printf ("\tSND_SEQ_EVENT_PORT_UNSUBSCRIBED\n");
256
 
      break;
257
 
    case SND_SEQ_EVENT_USR0:
258
 
      dbg_printf ("\tSND_SEQ_EVENT_USR0\n");
259
 
      break;
260
 
    case SND_SEQ_EVENT_USR1:
261
 
      dbg_printf ("\tSND_SEQ_EVENT_USR1\n");
262
 
      break;
263
 
    case SND_SEQ_EVENT_USR2:
264
 
      dbg_printf ("\tSND_SEQ_EVENT_USR2\n");
265
 
      break;
266
 
    case SND_SEQ_EVENT_USR3:
267
 
      dbg_printf ("\tSND_SEQ_EVENT_USR3\n");
268
 
      break;
269
 
    case SND_SEQ_EVENT_USR4:
270
 
      dbg_printf ("\tSND_SEQ_EVENT_USR4\n");
271
 
      break;
272
 
    case SND_SEQ_EVENT_USR5:
273
 
      dbg_printf ("\tSND_SEQ_EVENT_USR5\n");
274
 
      break;
275
 
    case SND_SEQ_EVENT_USR6:
276
 
      dbg_printf ("\tSND_SEQ_EVENT_USR6\n");
277
 
      break;
278
 
    case SND_SEQ_EVENT_USR7:
279
 
      dbg_printf ("\tSND_SEQ_EVENT_USR7\n");
280
 
      break;
281
 
    case SND_SEQ_EVENT_USR8:
282
 
      dbg_printf ("\tSND_SEQ_EVENT_USR8\n");
283
 
      break;
284
 
    case SND_SEQ_EVENT_USR9:
285
 
      dbg_printf ("\tSND_SEQ_EVENT_USR9\n");
286
 
      break;
287
 
    case SND_SEQ_EVENT_SYSEX:
288
 
      dbg_printf ("\tSND_SEQ_EVENT_SYSEX\n");
289
 
      break;
290
 
    case SND_SEQ_EVENT_BOUNCE:
291
 
      dbg_printf ("\tSND_SEQ_EVENT_BOUNCE\n");
292
 
      break;
293
 
    case SND_SEQ_EVENT_USR_VAR0:
294
 
      dbg_printf ("\tSND_SEQ_EVENT_USR_VAR0\n");
295
 
      break;
296
 
    case SND_SEQ_EVENT_USR_VAR1:
297
 
      dbg_printf ("\tSND_SEQ_EVENT_USR_VAR1\n");
298
 
      break;
299
 
    case SND_SEQ_EVENT_USR_VAR2:
300
 
      dbg_printf ("\tSND_SEQ_EVENT_USR_VAR2\n");
301
 
      break;
302
 
    case SND_SEQ_EVENT_USR_VAR3:
303
 
      dbg_printf ("\tSND_SEQ_EVENT_USR_VAR3\n");
304
 
      break;
305
 
    case SND_SEQ_EVENT_USR_VAR4:
306
 
      dbg_printf ("\tSND_SEQ_EVENT_USR_VAR4\n");
307
 
      break;
308
 
    case SND_SEQ_EVENT_NONE:
309
 
      dbg_printf ("\tSND_SEQ_EVENT_NONE\n");
310
 
      break;
311
 
    default:
312
 
      dbg_printf ("\tUnknown event type %d\n", ev->type);
313
 
    }
314
 
  return 0;
315
 
}