Création de patchname DX7 pour Cubase SX.
- 2 réponses
- 2 participants
- 1 275 vues
- 1 follower
Spawn-X
21544
Vie après AF ?
Membre depuis 19 ans
Sujet de la discussion Posté le 21/06/2003 à 01:53:23Création de patchname DX7 pour Cubase SX.
P'tit lu all...
Tout d'abord désolé pour le cross-post sur le forum Cubase SX mais les Cubasiens n'étant pas forcement aussi des DXiens, j'augmente mes chances d'autant
Je me suis lancé dans la création d'un Patchname pour mon DX7 sous Cubase SX (Manageur des appareils MIDI) étant donné les quelques difficultés, somme toute pas si méchantes, rencontrés lors de la confection du Patch pour le QY-70, je m'suis dit qu'ca s'rait guère plus compliqué... Que nenni ma bonne dame, je suis largué ;o)...
Donc, la première phase consistant simplement en l'enregistrement des données génèrées par le DX dans une piste midi afin de les observer dans l'éditeur en liste (ouf), je me suis appercu que le passage d'un son à un autre (interne ou cartouche) déclenche un simple program change... Logique me diront certains, m'ouais bon...
Le problème étant qu'un patch nommé DX7II, livré avec SX, semble fonctionner de manière totalement différente:
Ce script contient deux modes, un mode "Performances"
contenant 32 patchs et un mode "Voices" contenant deux dossiers "Group
1" et "Group 2" contenant chacun 32 autres patchs ce qui ne semble
absolument pas correspondre à mon DX7 qui y perd totalement son latin en
m'affichant le N°88 sur l'afficheur LED en m^m temps que le message
d'allumage "YAMAHA DX7 SYNTHESIZER".
En mode édition, chaque patch contient les infos suivantes:
-CC: Bank Select MSB Valeur 0
-Program Change Valeur XX (variable bien sûr en fonction du n° du program)
La valeur du MSB étant toujours nulle, je me suis dit que je devait probablement pouvoir simplement la supprimer pour ne garder que le PC.
Mais nan, du coup, y s'passe plus rien du tout :o(
Vu le peu de doc dispo pour le DX, impossible par ex. de trouver la table d'implémentation midi, je suis complètemnet largué et je ne vois pas trop que mettre dans mon script sachant que je ne passe que par le "Manageur des appareils MIDI" ne sachant pas tapper un script directement dans le bloc-note...
M'fin vala quoi, si quelqu'un à une idée voir carément le script déjà fait (hé hé ;op on sait jamais, on peut toujours rêver ;°P), ben y saura quoi faire...
Thanx et sorry pour la longueur ;o)
Espace-Cubase.org - Alix-Spawn.net
Tout d'abord désolé pour le cross-post sur le forum Cubase SX mais les Cubasiens n'étant pas forcement aussi des DXiens, j'augmente mes chances d'autant
Je me suis lancé dans la création d'un Patchname pour mon DX7 sous Cubase SX (Manageur des appareils MIDI) étant donné les quelques difficultés, somme toute pas si méchantes, rencontrés lors de la confection du Patch pour le QY-70, je m'suis dit qu'ca s'rait guère plus compliqué... Que nenni ma bonne dame, je suis largué ;o)...
Donc, la première phase consistant simplement en l'enregistrement des données génèrées par le DX dans une piste midi afin de les observer dans l'éditeur en liste (ouf), je me suis appercu que le passage d'un son à un autre (interne ou cartouche) déclenche un simple program change... Logique me diront certains, m'ouais bon...
Le problème étant qu'un patch nommé DX7II, livré avec SX, semble fonctionner de manière totalement différente:
Ce script contient deux modes, un mode "Performances"
contenant 32 patchs et un mode "Voices" contenant deux dossiers "Group
1" et "Group 2" contenant chacun 32 autres patchs ce qui ne semble
absolument pas correspondre à mon DX7 qui y perd totalement son latin en
m'affichant le N°88 sur l'afficheur LED en m^m temps que le message
d'allumage "YAMAHA DX7 SYNTHESIZER".
En mode édition, chaque patch contient les infos suivantes:
-CC: Bank Select MSB Valeur 0
-Program Change Valeur XX (variable bien sûr en fonction du n° du program)
La valeur du MSB étant toujours nulle, je me suis dit que je devait probablement pouvoir simplement la supprimer pour ne garder que le PC.
Mais nan, du coup, y s'passe plus rien du tout :o(
Vu le peu de doc dispo pour le DX, impossible par ex. de trouver la table d'implémentation midi, je suis complètemnet largué et je ne vois pas trop que mettre dans mon script sachant que je ne passe que par le "Manageur des appareils MIDI" ne sachant pas tapper un script directement dans le bloc-note...
M'fin vala quoi, si quelqu'un à une idée voir carément le script déjà fait (hé hé ;op on sait jamais, on peut toujours rêver ;°P), ben y saura quoi faire...
Thanx et sorry pour la longueur ;o)
Espace-Cubase.org - Alix-Spawn.net
elipicerie
13
Nouvel·le AFfilié·e
Membre depuis 21 ans
2 Posté le 24/08/2004 à 00:17:25
Slu
je sé pa si c ca ktu cherche ,
en plus g meme pas les retour de ligne ou y faut , mai bon y a plus ka lire le c :
/* This program takes a raw midi data dump, extracts all */
/* system exclusive messages, and saves these to a MID midi */
/* file. This version is poorly documented. */
#include <stdio.h> #define MAX_BUFFER 20000
#define MAX_SYSEX 20000 main(int argc, char *argv[]) { int i=0, j=0, imax=0, jmax=0, c, k, count=0; int num[4]; FILE *in, *out; char buffer[MAX_BUFFER]; char sysex[MAX_SYSEX]; static char header[] = { 'M','T','h','d', 0,0,0,6, 0,0, 0,1, 0,0x60, 'M','T','r','k', 0, 0, 0, 0 }; static char trailer[] = { 0x00, 0xff, 0x2f, 0x00 }; if (argc != 3) { printf("usage: %s <sys-ex file in> <MIDI file out>\n",argv[0]); exit(0); } in = fopen(argv[1], "rb"); out = fopen(argv[2],"wb"); if (!in || !out) { printf("error: cannot open file(s)!\n"); exit(0); } for (i=0; i<22; i++) { buffer[i] = header[i]; } do { c = fgetc(in); if (c == 0xf0) { buffer[i++] = 0x00; buffer[i++] = 0xf0; j = 0; do { c = fgetc(in); sysex[j++] = c; if (j >= MAX_SYSEX) { printf("error: input sys-ex exceeded maximum size of %d bytes!\n", MAX_SYSEX); exit(0); } } while (c != 0xf7 && c != EOF); jmax = j; num[3] = j & 0x7f; j = j >> 7; k = 2; while (j) { num[k] = (j & 0x7f) | 0x80; j = j >> 7; k--; } if (c == 0xf7) { if (i+4+jmax >= MAX_BUFFER) { printf("error: output file exceeded maximum size of %d bytes!\n", MAX_BUFFER); exit(0); } for (k++;k<4;k++) buffer[i++] = num[k]; for (j=0;j<jmax;j++) buffer[i++] = sysex[j]; printf("system exclusive found: %d bytes.\n",jmax+1); count++; } else { printf("warning: incomplete system exclusive found -- ignored.\n"); } } } while (c != EOF); /* End of track */ buffer[i++] = 0; buffer[i++] = 0xff; buffer[i++] = 0x2f; buffer[i++] = 0x00; j = 21; imax = i; i = i - 22; for (;i;j--) { buffer[j] = i; i = i >> 8; } fwrite(buffer,1,imax,out); if (count) { printf("%d system exclusives found and successfully converted.\n", count); } else { printf("warning: no complete system exclusives found.\n"); } fclose(in); fclose(out); }
chui perplex
pour dumper lesysex apparement , je comprend pa ou on l utilise ce prog//::!!
je sé pa si c ca ktu cherche ,
en plus g meme pas les retour de ligne ou y faut , mai bon y a plus ka lire le c :
/* This program takes a raw midi data dump, extracts all */
/* system exclusive messages, and saves these to a MID midi */
/* file. This version is poorly documented. */
#include <stdio.h> #define MAX_BUFFER 20000
#define MAX_SYSEX 20000 main(int argc, char *argv[]) { int i=0, j=0, imax=0, jmax=0, c, k, count=0; int num[4]; FILE *in, *out; char buffer[MAX_BUFFER]; char sysex[MAX_SYSEX]; static char header[] = { 'M','T','h','d', 0,0,0,6, 0,0, 0,1, 0,0x60, 'M','T','r','k', 0, 0, 0, 0 }; static char trailer[] = { 0x00, 0xff, 0x2f, 0x00 }; if (argc != 3) { printf("usage: %s <sys-ex file in> <MIDI file out>\n",argv[0]); exit(0); } in = fopen(argv[1], "rb"); out = fopen(argv[2],"wb"); if (!in || !out) { printf("error: cannot open file(s)!\n"); exit(0); } for (i=0; i<22; i++) { buffer[i] = header[i]; } do { c = fgetc(in); if (c == 0xf0) { buffer[i++] = 0x00; buffer[i++] = 0xf0; j = 0; do { c = fgetc(in); sysex[j++] = c; if (j >= MAX_SYSEX) { printf("error: input sys-ex exceeded maximum size of %d bytes!\n", MAX_SYSEX); exit(0); } } while (c != 0xf7 && c != EOF); jmax = j; num[3] = j & 0x7f; j = j >> 7; k = 2; while (j) { num[k] = (j & 0x7f) | 0x80; j = j >> 7; k--; } if (c == 0xf7) { if (i+4+jmax >= MAX_BUFFER) { printf("error: output file exceeded maximum size of %d bytes!\n", MAX_BUFFER); exit(0); } for (k++;k<4;k++) buffer[i++] = num[k]; for (j=0;j<jmax;j++) buffer[i++] = sysex[j]; printf("system exclusive found: %d bytes.\n",jmax+1); count++; } else { printf("warning: incomplete system exclusive found -- ignored.\n"); } } } while (c != EOF); /* End of track */ buffer[i++] = 0; buffer[i++] = 0xff; buffer[i++] = 0x2f; buffer[i++] = 0x00; j = 21; imax = i; i = i - 22; for (;i;j--) { buffer[j] = i; i = i >> 8; } fwrite(buffer,1,imax,out); if (count) { printf("%d system exclusives found and successfully converted.\n", count); } else { printf("warning: no complete system exclusives found.\n"); } fclose(in); fclose(out); }
chui perplex
pour dumper lesysex apparement , je comprend pa ou on l utilise ce prog//::!!
Spawn-X
21544
Vie après AF ?
Membre depuis 19 ans
3 Posté le 24/08/2004 à 00:22:14
Non non, c'est pas ça du tout, mais laisse tomber, mon patchename se trouve ici...
Merci quand m^m ;)
Merci quand m^m ;)
- < Liste des sujets
- Charte