Bonjour,

Je programme actuellement un soft qui me permettra d'enregistrer du son, démarrer l'enregistrement en appuyant sur un bouton et l'arreter en appuyant sur un autre.

J'utilise pour cela la bibliotheque FMOD (qui est tres complete), mais j'ai un probleme ! Je me suis basé sur un exemple qu'ils fournissent dans leur doc pour créer mon programme. Quand je clique sur le bouton Start, l'enregistrement démarre bien, mais je ne peux plus l'arreter. En effet, l'enregistrement nécessite une boucle, que l'on stoppe dans l'exemple en pressant une touche du clavier...
Mais je me veux pas passer par une touche du clavier, plutot par un bouton sur ma GUI ou alors une fenetre qui s'ouvre et qui demande de cliquer OK lorsque l'on veut arreter le programme.

Pour que ca soit plus compréhensible, voici le code source de l'exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
 
    /*
        Write out the wav header.  As we don't know the length yet it will be 0.
    */
    WriteWavHeader(fp, sound, datalength);
 
    result = sound->getLength(&soundlength, FMOD_TIMEUNIT_PCM);
    ERRCHECK(result);
 
    /*
        Main loop.
    */
    do
    {
        static unsigned int lastrecordpos = 0;
        unsigned int recordpos = 0;
 
        if (kbhit())
        {
            key = getch();
        }
 
        system->getRecordPosition(&recordpos);
        ERRCHECK(result);
 
        if (recordpos != lastrecordpos)        
        {
            void *ptr1, *ptr2;
            int blocklength;
            unsigned int len1, len2;
 
            blocklength = (int)recordpos - (int)lastrecordpos;
            if (blocklength < 0)
            {
                blocklength += soundlength;
            }
 
            /*
                Lock the sound to get access to the raw data.
            */
            sound->lock(lastrecordpos * exinfo.numchannels * 2, blocklength * exinfo.numchannels * 2, &ptr1, &ptr2, &len1, &len2);   /* * exinfo.numchannels * 2 = stereo 16bit.  1 sample = 4 bytes. */
 
            /*
                Write it to disk.
            */
            if (ptr1 && len1)
            {
                datalength += fwrite(ptr1, 1, len1, fp);
            }
            if (ptr2 && len2)
            {
                datalength += fwrite(ptr2, 1, len2, fp);
            }
 
            /*
                Unlock the sound to allow FMOD to use it again.
            */
            sound->unlock(ptr1, ptr2, len1, len2);
        }
 
        lastrecordpos = recordpos;
 
        printf("%-23s. Record buffer pos = %6d : Record time = %02d:%02d\r", (timeGetTime() / 500) & 1 ? "Recording to record.wav" : "", recordpos, datalength / exinfo.defaultfrequency / exinfo.numchannels / 2 / 60, (datalength / exinfo.defaultfrequency / exinfo.numchannels / 2) % 60);
 
        system->update();
 
        Sleep(10);
 
    } while (key != 27);  <------ C'est ici que je voudrais modifier le fait de presser escape par un bouton, mais je n'y arrive pas
 
    printf("\n");
 
    /*
        Write back the wav header now that we know its length.
    */
    WriteWavHeader(fp, sound, datalength);
 
    fclose(fp);
 
    /*
        Shut down
    */
    result = sound->release();
    ERRCHECK(result);
 
    result = system->release();
    ERRCHECK(result);
 
    return 0;
}
Voila, j'ai noté ou était mon probleme, em espérant que vous puissiez m'aider