Charles FlXche wrote:
> Hello everybody !
>
> I'm french, so I'll **TRY** to speak english correctly...
>
> I'm new in C programming (in programming, in fact...) and I work on a
> soft for speaking with an effect rack (alesis microverb IV) with sysex
> trough rawmidi for saving my patches, remote control this unit, etc...
>
> So, this is my problem : I don't know how to send sysex through
> rawmidi !! I'm using the snd_rawmidi_open and snd_rawmidi_write, but I
> can't send anything !! Even the rawmidi.c test program from alsa-utils
> don't work...
>
> My soundcard is an Sound Blaster Live ! 1024 Player...
>
> This is a piece of my source code :
>
> /* START OF SOURCE */
>
> #include <sys/asoundlib.h>
> #include <stdio.h>
> #include <stdlib.h>
>
> typedef struct {
> int prog; //num of program
> int a; //A parameter
> int b; //B parameter
> int bank; //bank number (0 = preset, 1 = user)
> } pdb;
>
> void affiche(unsigned char a[]) {
> int i=-1;
>
> printf("The next SySex have been sent trough RawMidi\n");
>
>
> while (a[i++] != 0xF7) {
> printf("%x",a[i]);
> printf(" ");
> }
> printf("\n");
> printf("\n");
>
> return;
> }
>
> void entete(unsigned char mess[]) {
>
> /* start of SySex */
> mess[0]=0xf0;
> /* identification Alesis */
> mess[1]=0x00;
> mess[2]=0x00;
> mess[3]=0x0e;
> /*identification microverb IV*/
> mess[4]=0x12;
> /* MIDI channel (0x00 = omni) */
> mess[5]=0x00;
> }
>
> void sysex_store(unsigned char a[]) {
>
> // head of SySex
> entete(a);
>
> //SySex definition STORE
> a[6]=0x03;
>
> // EOX
> a[7]=0xF7;
> }
>
> void dump_store(snd_rawmidi_t *handle) {
> unsigned char sysex[8];
> ssize_t taille; //### VARIABLE A DECOMMENTER QUAND ON REACTIVE
> L'ENVOIE DU SYSEX ###
>
> //creation du unsigned char
> sysex_store(sysex);
>
> //envoie du unsigned char
> snd_rawmidi_write(handle,sysex,taille);
> affiche(sysex);
> }
>
> int main (void) {
>
> snd_rawmidi_t *handle;
>
> snd_rawmidi_open(&handle, 0, 0, SND_RAWMIDI_OPEN_DUPLEX);
>
The first argument is input handle, the second is output handle. And the
third
is the device. 0 is eq to NULL, and I don't think you have a device with
that name.
And you migth want to have a output handle since you send data.
And someone told you. Add error handling checks and then you get to know
on what
calls fails. Or trace in to it on a debugger.
>
> dump_store(handle);
>
> snd_rawmidi_close(handle);
>
> return 0;
> }
>
> /* END OF SOURCE */
>
> Normally, this code create a "store the current program" message and
> send it trough rawmidi... But it don't...
>
> So, where is my error ?
>
> Another small question : how can I force a pause in a program ? Is
> there a function like [delay(10);] who make a pause of 10 miliseconds
> in a execution ? I'll need to make a pause between to sysex later in
> program...
>
> Thanx for help a newbie !!
>
> Charles Fl�che
>
> _______________________________________________
> Alsa-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/alsa-devel
--
foo!
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel