[PD-cvs] pd/src s_midi_sgi.c,1.2,1.2.12.1
Mathieu Bouchard
matju at users.sourceforge.net
Fri Aug 3 01:53:10 CEST 2007
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15076
Modified Files:
Tag: desiredata
s_midi_sgi.c
Log Message:
cleanup
Index: s_midi_sgi.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/s_midi_sgi.c,v
retrieving revision 1.2
retrieving revision 1.2.12.1
diff -C2 -d -r1.2 -r1.2.12.1
*** s_midi_sgi.c 6 Sep 2004 20:20:36 -0000 1.2
--- s_midi_sgi.c 2 Aug 2007 23:53:08 -0000 1.2.12.1
***************
*** 14,37 ****
#include <sys/types.h>
#include <sys/time.h>
-
#include <dmedia/audio.h>
#include <sys/fpu.h>
#include <dmedia/midi.h>
! int mdInit(void); /* prototype was messed up in midi.h */
! /* #include "sys/select.h" */
!
! /*
! set the special "flush zero" but (FS, bit 24) in the
! Control Status Register of the FPU of R4k and beyond
! so that the result of any underflowing operation will
! be clamped to zero, and no exception of any kind will
! be generated on the CPU.
!
! thanks to cpirazzi at cp.esd.sgi.com (Chris Pirazzi).
! */
! static void sgi_flush_all_underflows_to_zero(void)
! {
union fpc_csr f;
f.fc_word = get_fpc_csr();
--- 14,28 ----
#include <sys/types.h>
#include <sys/time.h>
#include <dmedia/audio.h>
#include <sys/fpu.h>
#include <dmedia/midi.h>
! int mdInit(); /* prototype was messed up in midi.h */
! //#include "sys/select.h"
! /* set the special "flush zero" but (FS, bit 24) in the Control Status Register of the FPU of R4k and beyond
! so that the result of any underflowing operation will be clamped to zero, and no exception of any kind will
! be generated on the CPU. thanks to cpirazzi at cp.esd.sgi.com (Chris Pirazzi). */
! static void sgi_flush_all_underflows_to_zero() {
union fpc_csr f;
f.fc_word = get_fpc_csr();
***************
*** 45,82 ****
static MDport sgi_outport[NPORT];
! void sgi_open_midi(int midiin, int midiout)
! {
int i;
int sgi_nports = mdInit();
if (sgi_nports < 0) sgi_nports = 0;
else if (sgi_nports > NPORT) sgi_nports = NPORT;
! if (sys_verbose)
! {
! if (!sgi_nports)
! {
post("no serial ports are configured for MIDI;");
post("if you want to use MIDI, try exiting Pd, typing");
post("'startmidi -d /dev/ttyd2' to a shell, and restarting Pd.");
! }
! else if (sgi_nports == 1)
! post("Found one MIDI port on %s", mdGetName(0));
! else if (sgi_nports == 2)
! post("Found MIDI ports on %s and %s",
! mdGetName(0), mdGetName(1));
}
! if (midiin)
! {
! for (i = 0; i < sgi_nports; i++)
! {
! if (!(sgi_inport[i] = mdOpenInPort(mdGetName(i))))
! error("MIDI input port %d: open failed", i+1);;
}
}
! if (midiout)
! {
! for (i = 0; i < sgi_nports; i++)
! {
! if (!(sgi_outport[i] = mdOpenOutPort(mdGetName(i))))
! error("MIDI output port %d: open failed", i+1);;
}
}
--- 36,60 ----
static MDport sgi_outport[NPORT];
! void sgi_open_midi(int midiin, int midiout) {
int i;
int sgi_nports = mdInit();
if (sgi_nports < 0) sgi_nports = 0;
else if (sgi_nports > NPORT) sgi_nports = NPORT;
! if (sys_verbose) {
! if (!sgi_nports) {
post("no serial ports are configured for MIDI;");
post("if you want to use MIDI, try exiting Pd, typing");
post("'startmidi -d /dev/ttyd2' to a shell, and restarting Pd.");
! } else if (sgi_nports == 1) post("Found one MIDI port on %s", mdGetName(0));
! else if (sgi_nports == 2) post("Found MIDI ports on %s and %s", mdGetName(0), mdGetName(1));
}
! if (midiin) {
! for (i = 0; i < sgi_nports; i++) {
! if (!(sgi_inport[i] = mdOpenInPort(mdGetName(i)))) error("MIDI input port %d: open failed", i+1);
}
}
! if (midiout) {
! for (i = 0; i < sgi_nports; i++) {
! if (!(sgi_outport[i] = mdOpenOutPort(mdGetName(i)))) error("MIDI output port %d: open failed", i+1);
}
}
***************
*** 84,89 ****
}
! void sys_putmidimess(int portno, int a, int b, int c)
! {
MDevent mdv;
if (portno >= NPORT || portno < 0 || !sgi_outport[portno]) return;
--- 62,66 ----
}
! void sys_putmidimess(int portno, int a, int b, int c) {
MDevent mdv;
if (portno >= NPORT || portno < 0 || !sgi_outport[portno]) return;
***************
*** 95,105 ****
mdv.stamp = 0;
mdv.msglen = 0;
! if (mdSend(sgi_outport[portno], &mdv, 1) < 0)
! error("MIDI output error\n");
post("msg out %d %d %d", a, b, c);
}
! void sys_putmidibyte(int portno, int foo)
! {
error("MIDI raw byte output not available on SGI");
}
--- 72,80 ----
mdv.stamp = 0;
mdv.msglen = 0;
! if (mdSend(sgi_outport[portno], &mdv, 1) < 0) error("MIDI output error\n");
post("msg out %d %d %d", a, b, c);
}
! void sys_putmidibyte(int portno, int foo) {
error("MIDI raw byte output not available on SGI");
}
***************
*** 112,121 ****
void inmidi_polyaftertouch(int portno, int channel, int pitch, int value);
! void sys_poll_midi(void)
! {
int i;
MDport *mp;
! for (i = 0, mp = sgi_inport; i < NPORT; i++, mp++)
! {
int ret, status, b1, b2, nfds;
MDevent mdv;
--- 87,94 ----
void inmidi_polyaftertouch(int portno, int channel, int pitch, int value);
! void sys_poll_midi() {
int i;
MDport *mp;
! for (i = 0, mp = sgi_inport; i < NPORT; i++, mp++) {
int ret, status, b1, b2, nfds;
MDevent mdv;
***************
*** 127,168 ****
FD_ZERO(&inports);
FD_SET(mdGetFd(*mp), &inports);
!
! if (select(mdGetFd(*mp)+1 , &inports, 0, 0, &timeout) < 0)
! perror("midi select");
! if (FD_ISSET(mdGetFd(*mp),&inports))
! {
if (mdReceive(*mp, &mdv, 1) < 0)
error("failure receiving message\n");
else if (mdv.msg[0] == MD_SYSEX) mdFree(mdv.sysexmsg);
!
! else
! {
int status = mdv.msg[0];
int channel = (status & 0xf) + 1;
int b1 = mdv.msg[1];
int b2 = mdv.msg[2];
! switch(status & 0xf0)
! {
! case MD_NOTEOFF:
! inmidi_noteon(i, channel, b1, 0);
! break;
! case MD_NOTEON:
! inmidi_noteon(i, channel, b1, b2);
! break;
! case MD_POLYKEYPRESSURE:
! inmidi_polyaftertouch(i, channel, b1, b2);
! break;
! case MD_CONTROLCHANGE:
! inmidi_controlchange(i, channel, b1, b2);
! break;
! case MD_PITCHBENDCHANGE:
! inmidi_pitchbend(i, channel, ((b2 << 7) + b1));
! break;
! case MD_PROGRAMCHANGE:
! inmidi_programchange(i, channel, b1);
! break;
! case MD_CHANNELPRESSURE:
! inmidi_aftertouch(i, channel, b1);
! break;
}
}
--- 100,121 ----
FD_ZERO(&inports);
FD_SET(mdGetFd(*mp), &inports);
! if (select(mdGetFd(*mp)+1 , &inports, 0, 0, &timeout) < 0) perror("midi select");
! if (FD_ISSET(mdGetFd(*mp),&inports)) {
if (mdReceive(*mp, &mdv, 1) < 0)
error("failure receiving message\n");
else if (mdv.msg[0] == MD_SYSEX) mdFree(mdv.sysexmsg);
! else {
int status = mdv.msg[0];
int channel = (status & 0xf) + 1;
int b1 = mdv.msg[1];
int b2 = mdv.msg[2];
! switch(status & 0xf0) {
! case MD_NOTEOFF: inmidi_noteon(i, channel, b1, 0); break;
! case MD_NOTEON: inmidi_noteon(i, channel, b1, b2); break;
! case MD_POLYKEYPRESSURE: inmidi_polyaftertouch(i, channel, b1, b2); break;
! case MD_CONTROLCHANGE: inmidi_controlchange(i, channel, b1, b2); break;
! case MD_PITCHBENDCHANGE: inmidi_pitchbend(i, channel, ((b2 << 7) + b1)); break;
! case MD_PROGRAMCHANGE: inmidi_programchange(i, channel, b1); break;
! case MD_CHANNELPRESSURE: inmidi_aftertouch(i, channel, b1); break;
}
}
***************
*** 171,201 ****
}
! void sys_do_open_midi(int nmidiin, int *midiinvec,
! int nmidiout, int *midioutvec)
! {
sgi_open_midi(nmidiin!=0, nmidiout!=0);
}
!
! void sys_close_midi( void)
! {
! /* ??? */
! }
!
!
! void midi_getdevs(char *indevlist, int *nindevs,
! char *outdevlist, int *noutdevs, int maxndev, int devdescsize)
! {
int i, nindev = 0, noutdev = 0;
! for (i = 0; i < mdInit(); i++)
! {
! if (nindev < maxndev)
! {
! strcpy(indevlist + nindev * devdescsize, mdGetName(i));
! nindev++;
!
! strcpy(outdevlist + noutdev * devdescsize, mdGetName(i));
! noutdev++;
! }
}
*nindevs = nindev;
--- 124,141 ----
}
! void sys_do_open_midi(int nmidiin, int *midiinvec, int nmidiout, int *midioutvec) {
sgi_open_midi(nmidiin!=0, nmidiout!=0);
}
+ void sys_close_midi() {/* ??? */}
! void midi_getdevs(char *indevlist, int *nindevs, char *outdevlist, int *noutdevs, int maxndev, int devdescsize) {
int i, nindev = 0, noutdev = 0;
! for (i = 0; i < mdInit(); i++) {
! if (nindev < maxndev) {
! strcpy(indevlist + nindev * devdescsize, mdGetName(i));
! nindev++;
! strcpy(outdevlist + noutdev * devdescsize, mdGetName(i));
! noutdev++;
! }
}
*nindevs = nindev;
More information about the Pd-cvs
mailing list