Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/dev/isa/midi_pcppi.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/dev/isa/midi_pcppi.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.11 retrieving revision 1.11.2.1 diff -u -p -r1.11 -r1.11.2.1 --- src/sys/dev/isa/midi_pcppi.c 2005/03/21 18:27:32 1.11 +++ src/sys/dev/isa/midi_pcppi.c 2006/12/30 20:48:27 1.11.2.1 @@ -1,4 +1,4 @@ -/* $NetBSD: midi_pcppi.c,v 1.11 2005/03/21 18:27:32 xtraeme Exp $ */ +/* $NetBSD: midi_pcppi.c,v 1.11.2.1 2006/12/30 20:48:27 yamt Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: midi_pcppi.c,v 1.11 2005/03/21 18:27:32 xtraeme Exp $"); +__KERNEL_RCSID(0, "$NetBSD: midi_pcppi.c,v 1.11.2.1 2006/12/30 20:48:27 yamt Exp $"); #include #include @@ -70,35 +70,26 @@ struct midi_pcppi_softc { int midi_pcppi_match(struct device *, struct cfdata *, void *); void midi_pcppi_attach(struct device *, struct device *, void *); -void midi_pcppi_on (midisyn *, u_int32_t, u_int32_t, u_int32_t); -void midi_pcppi_off (midisyn *, u_int32_t, u_int32_t, u_int32_t); +void midi_pcppi_on (midisyn *, uint_fast16_t, midipitch_t, int16_t); +void midi_pcppi_off (midisyn *, uint_fast16_t, uint_fast8_t); void midi_pcppi_close(midisyn *); +static void midi_pcppi_repitchv(midisyn *, uint_fast16_t, midipitch_t); CFATTACH_DECL(midi_pcppi, sizeof(struct midi_pcppi_softc), midi_pcppi_match, midi_pcppi_attach, NULL, NULL); struct midisyn_methods midi_pcppi_hw = { - 0, /* open */ - midi_pcppi_close, - 0, /* ioctl */ - 0, /* allocv */ - midi_pcppi_on, - midi_pcppi_off, - 0, - 0, - 0, - 0, - 0, - 0, + .close = midi_pcppi_close, + .attackv = midi_pcppi_on, + .releasev = midi_pcppi_off, + .repitchv = midi_pcppi_repitchv, }; int midi_pcppi_attached = 0; /* Not very nice */ int -midi_pcppi_match(parent, match, aux) - struct device *parent; - struct cfdata *match; - void *aux; +midi_pcppi_match(struct device *parent, struct cfdata *match, + void *aux) { return (!midi_pcppi_attached); } @@ -117,7 +108,6 @@ midi_pcppi_attach(parent, self, aux) ms->mets = &midi_pcppi_hw; strcpy(ms->name, "PC speaker"); ms->nvoice = 1; - ms->flags = MS_DOALLOC | MS_FREQXLATE; ms->data = pa->pa_cookie; midi_pcppi_attached++; @@ -127,20 +117,18 @@ midi_pcppi_attach(parent, self, aux) } void -midi_pcppi_on(ms, chan, note, vel) - midisyn *ms; - u_int32_t chan, note, vel; +midi_pcppi_on(midisyn *ms, + uint_fast16_t voice, midipitch_t mp, int16_t level) { pcppi_tag_t t = ms->data; - /*printf("ON %p %d\n", t, MIDISYN_FREQ_TO_HZ(note));*/ - pcppi_bell(t, MIDISYN_FREQ_TO_HZ(note), MAX_DURATION * hz, 0); + pcppi_bell(t, + MIDIHZ18_TO_HZ(MIDIPITCH_TO_HZ18(mp)), + MAX_DURATION * hz, 0); } void -midi_pcppi_off(ms, chan, note, vel) - midisyn *ms; - u_int32_t chan, note, vel; +midi_pcppi_off(midisyn *ms, uint_fast16_t voice, uint_fast8_t vel) { pcppi_tag_t t = ms->data; @@ -157,3 +145,9 @@ midi_pcppi_close(ms) /* Make sure we are quiet. */ pcppi_bell(t, 0, 0, 0); } + +static void +midi_pcppi_repitchv(midisyn *ms, uint_fast16_t voice, midipitch_t newpitch) +{ + midi_pcppi_on(ms, voice, newpitch, 64); +}