Newsgroup: it.comp.musica
Titolo: wav------>mid: NE SIETE PROPRIO TUTTI SICURI?


Mai sentito parlare di wav2mid?  Bye Bye

Mai sentito parlare di wav2mid?  Bye Bye
Una classica mossa alla Yello dei bei tempi, non c'è che dire... >8D
In ogni caso, eccoti in fondo al messaggio il sorgente C del programma
in questione, nel quale lo stesso autore ammette lo scarso
funzionamento.
Tra l'altro io ho detto che programmi di questo genere esistono, ma
appunto sono ben lungi dall'essere funzionali e utili (è forse più
facile utile usare Wav2Mid o l'orecchio per trovarsi lo spartito di un
WAV monofonico con la certezza di non sbagliare?)
Tra l'altro sarei proprio curioso, avendo del tempo da buttare, di
vedere come si comporterebbe di fronte a un vibrato questo programma:
secondo me genererebbe semplicemente una rapida sequenza di note poco
diverse tra loro... chissà.
se hai fatto quella domanda solo per far fare una figura di merda a
qualcuno, direi che ci sei riuscito...
non farmi aggiungere altro.........
**  Wav2Mid.c
**
**  This is not quite functional yet.  It sort of works, but the notes
**  are not sorted.  Also, the midi file works with the sound-blaster
**  sequencer, but not throught the windows midi player.  I don't know
**  why.  Also, it is lacking in comments.  The comments shown are
**  just notes to myself, and may not make complete sense.
**
**************************************************************************/
#include
#include
#include
#include
FILE *out;
void print_tempo(void){
        fputc(0x00,out);
        fputc(0xFF,out);
        fputc(0x51,out);
        fputc(0x03,out);
        fputc(0x07,out);
        fputc(0xA1,out);
        fputc(0x20,out);
}
void print_header(int tracks){
        fputc(0x4D,out);
        fputc(0x54,out);
        fputc(0x68,out);
        fputc(0x64,out);
        fputc(0x00,out);
        fputc(0x00,out);
        fputc(0x00,out);
        fputc(0x06,out);
        fputc(0x00,out);
        fputc(0x02,out);
        fputc(0x00,out);
        fputc(tracks,out);
        fputc(0x00,out);
        fputc(0x60,out);
}
void print_track_head(int track, char length){
        fputc(0x4D,out);
        fputc(0x54,out);
        fputc(0x72,out);
        fputc(0x6B,out);
        fputc(0x00,out);
        fputc(0x00,out);
        fputc(0x00,out);
        fputc(length,out);
        fputc(0x00,out);
        fputc(0xC0+track,out);
        fputc(0x00,out);
}
void program_change(int track, char prog){
        fputc(0x00,out);
        fputc(0xC0+track,out);
        fputc(prog,out);
}
void note_strt(int track, char dtime, char note){
        fputc(dtime,out);
        fputc(0x90+track,out);
        fputc(note,out);
        fputc(0x32,out);
}
void note_stop(int track, char dtime, char note){
        fputc(dtime,out);
        fputc(0x80+track,out);
        fputc(note,out);
        fputc(0x00,out);
}
void stat(char dtime, char note){
        fputc(dtime,out);
        fputc(note,out);
        fputc(0x64,out);
}
void print_track_end(){
        fputc(0x00,out);
        fputc(0xFF,out);
        fputc(0x2F,out);
        fputc(0x00,out);
}
struct vect {
   float           base;
   float           v1;
   float           v2;
   float           v3;
   float           v4;
   float           v5;
   float           vstart;
   float           vduration;
   int             inst;
   int             note;
};
float dist(data, examplar)
   struct vect    *data, *examplar;
{
   float           temp;
   temp = ((data->v1 - examplar->v1) * (data->v1 - examplar->v1) +
        (data->v2 - examplar->v2) * (data->v2 - examplar->v2) +
        (data->v3 - examplar->v3) * (data->v3 - examplar->v3) +
        (data->v4 - examplar->v4) * (data->v4 - examplar->v4) +
        (data->v5 - examplar->v5) * (data->v5 - examplar->v5));
   return temp;
}
void jsort(struct vect *in[17][10000], int track, int tklngth)
{
        struct vect temp;
        int i,j;
        for(i=0;i0;j--){
if((in[track][j]->vstart)<(in[track][j-1]->vstart)){
                        temp.base=in[track][j]->base;
                        temp.v1=in[track][j]->v1;
                        temp.v2=in[track][j]->v2;
                        temp.v3=in[track][j]->v3;
                        temp.v4=in[track][j]->v4;
                        temp.v5=in[track][j]->v5;
                        temp.vstart=in[track][j]->vstart;
                        temp.vduration=in[track][j]->vduration;
                        temp.inst=in[track][j]->inst;
                        temp.note=in[track][j]->note;
                        in[track][j]->base=in[track][j-1]->base;
                        in[track][j]->v1=in[track][j-1]->v1;
                        in[track][j]->v2=in[track][j-1]->v2;
                        in[track][j]->v3=in[track][j-1]->v3;
                        in[track][j]->v4=in[track][j-1]->v4;
                        in[track][j]->v5=in[track][j-1]->v5;
                        in[track][j]->vstart=in[track][j-1]->vstart;
in[track][j]->vduration=in[track][j-1]->vduration;
                        in[track][j]->inst=in[track][j-1]->inst;
                        in[track][j]->note=in[track][j-1]->note;
                        in[track][j-1]->base=temp.base;
                        in[track][j-1]->v1=temp.v1;
                        in[track][j-1]->v2=temp.v2;
                        in[track][j-1]->v3=temp.v3;
                        in[track][j-1]->v4=temp.v4;
                        in[track][j-1]->v5=temp.v5;
                        in[track][j-1]->vstart=temp.vstart;
                        in[track][j-1]->vduration=temp.vduration;
                        in[track][j-1]->inst=temp.inst;
                        in[track][j-1]->note=temp.note;
                        }
                /*in[track][j]->vstart=0.0;*/
                }
        }
}
 
void mergesort(struct vect *A, int p, int r) {
   int q, i, j, k, n;
   struct vect move;
   if (pA[k].vstart) {
            move.base=A[k].base;
            move.v1=A[k].v1;
            move.v2=A[k].v2;
            move.v3=A[k].v3;
            move.v4=A[k].v4;
            move.v5=A[k].v5;
            move.vstart=A[k].vstart;
            move.vduration=A[k].vduration;
            move.inst=A[k].inst;
            move.note=A[k].note;
            for (n=j; nbase<17.35250) temp->note=0;
        if(temp->base>17.35250&&temp->base<19.47750) temp->note=1;
        if(temp->base>19.47750&&temp->base<21.21375) temp->note=2;
        if(temp->base>21.21375&&temp->base<23.16313) temp->note=3;
        if(temp->base>23.16313&&temp->base<26.00000) temp->note=4;
        if(temp->base>26.00000&&temp->base<29.18375) temp->note=5;
        if(temp->base>29.18375&&temp->base<31.78563) temp->note=6;
        if(temp->base>31.78563&&temp->base<34.70563) temp->note=7;
        if(temp->base>34.70563&&temp->base<38.95563) temp->note=8;
        if(temp->base>38.95563&&temp->base<42.42875) temp->note=9;
        if(temp->base>42.42875&&temp->base<46.32688) temp->note=10;
        if(temp->base>46.32688&&temp->base<52.00000) temp->note=11;
        if(temp->base>52.00000&&temp->base<58.36750) temp->note=12;
        if(temp->base>58.36750&&temp->base<63.57063) temp->note=13;
        if(temp->base>63.57063&&temp->base<69.41125) temp->note=14;
        if(temp->base>69.41125&&temp->base<77.91188) temp->note=15;
        if(temp->base>77.91188&&temp->base<84.85750) temp->note=16;
        if(temp->base>84.85750&&temp->base<92.65313) temp->note=17;
        if(temp->base>92.65313&&temp->base<103.9994) temp->note=18;
        if(temp->base>103.9994&&temp->base<116.7356) temp->note=19;
        if(temp->base>116.7356&&temp->base<127.1419) temp->note=20;
        if(temp->base>127.1419&&temp->base<138.8250) temp->note=21;
        if(temp->base>138.8250&&temp->base<155.8250) temp->note=22;
        if(temp->base>155.8250&&temp->base<169.7125) temp->note=23;
        if(temp->base>169.7125&&temp->base<185.3063) temp->note=24;
        if(temp->base>185.3063&&temp->base<208.0000) temp->note=25;
        if(temp->base>208.0000&&temp->base<233.4688) temp->note=26;
        if(temp->base>233.4688&&temp->base<254.2838) temp->note=27;
        if(temp->base>254.2838&&temp->base<277.6450) temp->note=28;
        if(temp->base>277.6450&&temp->base<311.6450) temp->note=29;
        if(temp->base>311.6450&&temp->base<339.4300) temp->note=30;
        if(temp->base>339.4300&&temp->base<370.6150) temp->note=31;
        if(temp->base>370.6150&&temp->base<416.0000) temp->note=32;
        if(temp->base>416.0000&&temp->base<466.9400) temp->note=33;
        if(temp->base>466.9400&&temp->base<508.5650) temp->note=34;
        if(temp->base>508.5650&&temp->base<555.2900) temp->note=35;
        if(temp->base>555.2900&&temp->base<623.2950) temp->note=36;
        if(temp->base>623.2950&&temp->base<678.8600) temp->note=37;
        if(temp->base>678.8600&&temp->base<741.2250) temp->note=38;
        if(temp->base>741.2250&&temp->base<831.9950) temp->note=39;
        if(temp->base>831.9950&&temp->base<933.8850) temp->note=40;
        if(temp->base>933.8850&&temp->base<1017.135) temp->note=41;
        if(temp->base>1017.135&&temp->base<1110.600) temp->note=42;
        if(temp->base>1110.600&&temp->base<1246.600) temp->note=43;
        if(temp->base>1246.600&&temp->base<1357.700) temp->note=44;
        if(temp->base>1357.700&&temp->base<1482.450) temp->note=45;
        if(temp->base>1482.450&&temp->base<1664.000) temp->note=46;
        if(temp->base>1664.000&&temp->base<1867.750) temp->note=47;
        if(temp->base>1867.750&&temp->base<2034.230) temp->note=48;
        if(temp->base>2034.230&&temp->base<2221.120) temp->note=49;
        if(temp->base>2221.120&&temp->base<2493.120) temp->note=50;
        if(temp->base>2493.120&&temp->base<2715.360) temp->note=51;
        if(temp->base>2715.360&&temp->base<2964.880) temp->note=52;
        if(temp->base>2964.880&&temp->base<3328.000) temp->note=53;
        if(temp->base>3328.000&&temp->base<3735.520) temp->note=54;
        if(temp->base>3735.520&&temp->base<4068.560) temp->note=55;
        if(temp->base>4068.560&&temp->base<4442.320) temp->note=56;
        if(temp->base>4442.320&&temp->base<4986.320) temp->note=57;
        if(temp->base>4986.320&&temp->base<5430.880) temp->note=58;
        if(temp->base>5430.880&&temp->base<5929.840) temp->note=59;
        if(temp->base>5929.840&&temp->base<6656.000) temp->note=60;
        if(temp->base>6656.000&&temp->base<7471.040) temp->note=61;
        if(temp->base>7471.040&&temp->base<8137.040) temp->note=62;
        if(temp->base>8137.040&&temp->base<8884.640) temp->note=63;
        if(temp->base>8884.640&&temp->base<9972.720) temp->note=64;
        if(temp->base>9972.720&&temp->base<10861.76) temp->note=65;
        if(temp->base>10861.76&&temp->base<11859.60) temp->note=66;
        if(temp->base>11859.60&&temp->base<13311.92) temp->note=67;
        if(temp->base>13311.92&&temp->base<14942.16) temp->note=68;
        if(temp->base>14942.16&&temp->base<16274.16) temp->note=69;
        if(temp->base>16274.16&&temp->base<17769.60) temp->note=70;
        if(temp->base>17769.60&&temp->base<19945.60) temp->note=71;
        if(temp->base>19945.60&&temp->base<21723.20) temp->note=72;
        if(temp->base>21723.20&&temp->base<23719.20) temp->note=73;
        if(temp->base>23719.20&&temp->base<26624.00) temp->note=74;
        if(temp->base>26624.00&&temp->base<29884.00) temp->note=75;
        if(temp->base>29884.00)                      temp->note=76;
        return;
}
void main(void) {
        clock_t start;
        clock_t finish;
 
   FILE           *fpin, *fpout;
        int     tempcount;
        int     hgjunk;
   float           tdist;
   int             track;
   int             count, count2;
   int             totalin;
   int             ct[17];
   int             i,j;
   struct vect     in[17][10000];
   struct vect     tempvec;
   int             tklngth[17];
   float           time;
   int             temp;
   char            tempc;
   struct vect     examplar[17] = 
   /*                                                              */
          {{1.0, 5.0, 1.0, 0.5, 2.0, 1.0, 1.0, 1.0, 1, 1},
           {1.0, 2.0, 0.5, 5.0, 3.0, 0.5, 1.0, 1.0, 2, 1},
           {1.0, 1.0, 2.0, 5.0, 1.0, 1.0, 1.0, 1.0, 3, 1},
           {1.0, 4.5, 1.0, 0.5, 1.5, 0.2, 1.0, 1.0, 4, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 5, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 6, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 7, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 8, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 9, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 10, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 11, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 12, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 13, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 14, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 15, 1},
           {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 16, 1}};
        start=clock();
   fpin = fopen("input.dat", "r");
   track = 0;
   count = 0;
   do {
      /* Read in the vector:  */
      /* in[track][count]=readvect(); */
      fscanf(fpin, "%f", &in[track][count].base);
      if (in[track][count].base != -999)
         fscanf(fpin, "%f %f %f %f %f %f %f", &in[track][count].v1,
          &in[track][count].v2, &in[track][count].v3,
          &in[track][count].v4, &in[track][count].v5,
                &in[track][count].vstart,
&in[track][count].vduration);
      count++;
   } while (in[track][count - 1].base != -999);
   fclose(fpin);
   totalin = count;
/*********************************************************
**
**  PFOR loop goes here
**      shared- in[][],tklength[count],ct[count]
**      local-  count
**
*********************************************************/
#pragma parallel shared(in,examplar,totalin) local(count,count2,tdist)
{
#pragma pfor iterate(count=0;totalin;1)
        for(count=0;count=0;j--){
                        /*printf("%f %f\n",
in[count][j+1].vstart,in[count][j].vstart);*/
if((in[count][j+1].vstart)<(in[count][j].vstart)){
                        /*printf("Less that detected.\n");*/
                        tempvec.base=in[count][j].base;
                        tempvec.v1=in[count][j].v1;
                        tempvec.v2=in[count][j].v2;
                        tempvec.v3=in[count][j].v3;
                        tempvec.v4=in[count][j].v4;
                        tempvec.v5=in[count][j].v5;
                        tempvec.vstart=in[count][j].vstart;
                        tempvec.vduration=in[count][j].vduration;
                        tempvec.inst=in[count][j].inst;
                        tempvec.note=in[count][j].note;
                        in[count][j].base=in[count][j+1].base;
                        in[count][j].v1=in[count][j+1].v1;
                        in[count][j].v2=in[count][j+1].v2;
                        in[count][j].v3=in[count][j+1].v3;
                        in[count][j].v4=in[count][j+1].v4;
                        in[count][j].v5=in[count][j+1].v5;
                        in[count][j].vstart=in[count][j+1].vstart;
in[count][j].vduration=in[count][j+1].vduration;
                        in[count][j].inst=in[count][j+1].inst;
                        in[count][j].note=in[count][j+1].note;
                        in[count][j+1].base=tempvec.base;
                        in[count][j+1].v1=tempvec.v1;
                        in[count][j+1].v2=tempvec.v2;
                        in[count][j+1].v3=tempvec.v3;
                        in[count][j+1].v4=tempvec.v4;
                        in[count][j+1].v5=tempvec.v5;
                        in[count][j+1].vstart=tempvec.vstart;
                        in[count][j+1].vduration=tempvec.vduration;
                        in[count][j+1].inst=tempvec.inst;
                        in[count][j+1].note=tempvec.note;
                        }
                /*in[track][j]->vstart=0.0;*/
                }
        }
}
}
/*scanf("%d",&hgjunk);*/
/*********************************************************
**
**      Pfor END
**
*********************************************************/
   out = fopen("output.mid", "w");
/* This is where the file header is written.  It should be exactly the
same
        for ALL the files.  <> denotes a binary value needed */
        print_header(16);
/* Loop through each of the tracks */
        for(track=1;track<17;track=track+1){
/* The length of the track works out to be as follows */
        /*Length = 3*prog_change + 8*notes + 7(tempo change) + 7*/
        tempc=tklngth[track]*8+10; /*No program changes*/
        if(track==0) tempc+=7;  /* If track 0, include a tempo */
        print_track_head(track,temp);
        if(track==0) print_tempo(); /* If track 0, include a tempo */
 
/*      program_change(0x04);*/
        count=0;
        time=0.0;
   while(in[track][count].base!=-999){
                        /* wmididata(in[track][count]); */
           if(in[track][count].vduration==1){
note_strt(track,in[track][count].vstart-time,in[track][count].note);
           }
           if(in[track][count].vduration==0){
note_stop(track,in[track][count].vstart-time,in[track][count].note);
           }
           /*printf("%i %f %f %f %f %i \n",
                track,
                time,
                in[track][count].vstart,
                in[track][count].vstart-time,
                in[track][count].vduration,
                in[track][count].note);*/
           if(in[track][count].vstart>time)
time=in[track][count].vstart;
           count=count+1;
           }
           /*fprintf(fpout, "\n");*/
           print_track_end();
        }
   fclose(out);
        finish=clock();
        printf("It took %f ticks to complete\n",(float)
(finish-start)/CLOCKS_PER_SEC);
   return;
}
          It-Alien
napo...@inopera.it
http://www.inopera.it/~napodano

Tutto quello che vuoi, ma perchč c****** mi vai ad includere trecento righe
di codice?!?
Carlo
c.cr...@sintel.it
M.U.S.I.C. - il sito per i musicisti sul web: 
http://www.carlo.sintel.it
MusicbOOm - la webzine tutta italiana:
http://www.geocities.com/SunsetStrip/Venue/7983


Mai sentito parlare di wav2mid?  Bye Bye
Anche se esistesse al massimo converte i toni del telefono nei rispettivi
numeri.
Quello che la gente non ha ancora capito e' che sta cosa del WAV -> MID NON SI
FA!!!!!! Basta una cazzata su un semplice WAV monofonico che mandi in palla
tutto!
Basti pensare che la FFT di un SEMPLICISSIMO seno a frequenzza costante NON DA
IN USCITA uno spettro cosi':
|
|
|
|                  |
|                  |
|_________|__________________\
                  a                                   /
(dove "a" e' la frequenza del seno) lo spettro che esce fuori e' INVECE cosi':
|
|
|
|                O
|             OOO
|....oooOOOOOooo..........._______\
             a b c                                  /
Ora e' facile che un programma dica che in "b" c'e' una nota, ma come fa a dire
se "a" e "c" sono parti di un bicordo o tricordo??? o se non centrano
un'accidente???
Mettiamo invece caso che la sinusoide in questione sia leggermente in clipping,
lo spettro in uscita e' il seguente:
|
|
|
|                O
|             OOO                          o
|....oooOOOOOooo.............ooOoo......___\
                b                             c                 /
Qui il segnale in ingresso e' (a grandi linee data la precisione degli ASCII) la
sinusoide iniziale in leggero clipping: certo, ora pretenderai che il programma
dica "ollalla! questo e' un seno di frequenza "b" in clipping" non e' cosi'???
Beh sappi che i programmi che emulano le capacita' umane di ascoltare la musica
non li hanno ancora fatti......
Un programma normale nel caso che ti ho appena presentato direbbe (se va molto
ma molto bene) che c'e' un bicordo delle note "b" e "c"....
Commento finale di fine anno:
Ma se non siete in grado di tirarvi giu' le note di un brano che caspiteriuola
aspettate a fare un po' di pratica al posto di fare figure MESCHINE sul NG???
Ciao
   NeuRoTiX
P.S.: I grafi sono ottimizzati usando il font "MSSerif" di w95.
P.P.S.: Non ho postato negli altri NG perche' it.comp.musica era l'unico
competente della tua richiesta.
___/__/_/ -+=NTXC3P=+- -+=/Program'r & Musician/=+-
___/__/_/      ---==oO NeuRoTiX / DMS Oo==---
___/__/_/ E-Mail : 
neur...@techno.org
___/__/_/ URL    : 
http://neurotix.303dim.com/
___/__/_/ DMS URL: 
http://www.dms.is.nl/
___/__/_/___________________________________________________________________

di codice?!?
Mi dispiace che tu sia stato "costretto" a scaricartele, ma mi sembra
che l'obiettivo sia evidente: guardate il programma e rendetevi conto
di cosa fa.
Non potevo mandare il file compilato in attachment perché
it.comp.musica non è un gruppo Binaries, tra l'altro non mi ero
accorto che ci fosse un crosspost, e di questo sicuramente mi scuso.
Cmq il poche parole il messaggio è questo:
1) prima di spararle certa gente dovrebbe sapere di cosa sta parlando 
    (spesso è un errore che compio anche io)
2) fare domande capziose per poi fare il figo dicendo la "risposta  
    giusta" è proprio un atteggiamento da.. come dire, non mi viene il
    termine... Lamer >8)
Cià!
          It-Alien
napo...@inopera.it
http://www.inopera.it/~napodano

non farmi aggiungere altro.........
Non era certo quella la mia intenzione e per favore vatti a leggere la
risposta che ho dato a NeuRoTiX. Probabilmente ce l'ho fatta io la figura
che dici (ma sono proprio il solo?) e se sono stato inteso in tal modo me ne
scuso nella maniera piů sincera. Rimane sempre il fatto che la mia
illusione di trovare in rete gente comprensiva e gentile rimane "pia" spesso
e volentieri. Per fortuna, non posso fare di tutta l'erba un fascio e in
ogni caso non volevo scatenare tutta questa bagarre. Ne valeva la pena?

aspettate a fare un po' di pratica al posto di fare figure MESCHINE sul
NG???
Ottima domanda, ma non t'è venuto in mente che c'è gente che è sprovvista
di aggeggi per "tirare giù le note di un brano" e che avendo a disposizione
solo dei file musicali e viste le potenzialità sempre più spinte dei PC e
visto che non tutti possono essere dei sapientoni e visto che la cortesia
non è proprio una dote così cara da comprare, mi ero illuso che la potessi
trovare anche sulle pagine di un nerwsgroup che in teoria dovrebbe essere
mantenuto da gente con una sensibilità un pochino più spinta del comune.
Mi sono sbagliato?


 Mi intrometto perchè ho trovato qualcosa di interessante su
alt.binaries.midi. Quoto il messaggio per intero:

 

 

 
Subject:


            
Re: Is it possible to convert .wav to .mid??


        Date:


            
31 Dec 1997 18:13:30 GMT


       From:


            

re...@aol.com
 (Rende)


 Organization:


            
AOL 
http://www.aol.com


 Newsgroups:


            
alt.binaries.sounds.midi


  References:


            
1


 


Sound or Wave to Midi converters:


Sound2Midi by AudioWorks Ltd. (a Phil Collins company)


http://www.audioworks.com/index.html


Prismer by Creative Labs (in beta)


http://realorche.elim.net/prismer/


Play By Ear by IMSYS (in beta)


imsy...@aol.com


Autoscore by Wildcat Canyon Software


http://www.wildcat.com


Musician's CD Player (CD to Midi)


http://home1.swipnet.se/~w-11396/muscdpl.htm


 


FACCIO NOTARE che l'ultima riga spara una leggera cazzata: il programma
in questione non converte affatto i CD in MIDI, ma è comunque un
utile strumento per chi deve trascrivere assoli etc: serve a suonare una
parte di un CD musicale a velocità ridotta MA SENZA ALTERARE IL
PITCH. Si può anche mandare in loop la frase che interessa.


Per quanto riguarda la conversione Sound to MIDI, dal sito della Creative
si può scaricare una versione beta.


Ciao e Buon Anno

Diego


Mi sono sbagliato?
E che ne so??? Se ti sei innamorato di me vuol dire che ti sei sbagliato! :)
ehehehehheh....
Ciao
   NeuRoTiX


alt.binaries.midi. Quoto il messaggio per intero:
Dato che al momento non posso per qualche minimo problema al mio PC,
prego qualche iscritto di buona volontà e interessato all'argomento
(tipo NeuroTiX) di controllare quanto presente in quei link.
Credo ci sarà da farsi qualche grassa risata 
(ciò non toglie che Diego ha fatto bene a "intromettersi")
 
          It-Alien
napo...@inopera.it
http://www.inopera.it/~napodano

Ne valeva la pena?
Io dico di no, tantopiù che, come ti è stato più volte detto, non sei
il primo a sollevare cotanto polverone.


- ascoltare la wave interessata
Cantare nel microfono le note appena udite scandendole bene !
Non vi sto prendendo in giro, esiste un software di cui ho provato
la demo che converte in note sullo spartito di un sequencer le note
cantate nel microfono.
Certo, dopo ti tocca ritoccare il tutto ma ti risparmia un sacco di lavoro,
o no?
Il programma mi pare fosse della stessa ditta di Cakewalk (che non
conosco e non ho mai visto) e veniva visto come un plug-in da
tutti i programmi sequencer di quella ditta. La demo disponeva
di un piccolo seqencer incorporato.
Bye.