Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czas wciskania guzika

Ostatnio zmodyfikowano 2014-05-15 19:14
Autor Wiadomość
najkosz
Temat założony przez niniejszego użytkownika
Czas wciskania guzika
» 2014-04-25 16:23:34
Napisałem pianino  w WinAPI, oto kod:
C/C++
#include<conio.h>
#include<windows.h>
double c = 261.625568;
double cis = 277.182634;
double d = 293.664771;
double dis = 311.126987;
double e = 329.627560;
double f = 349.228235;
double fis = 369.994427;
double g = 391.995440;
double gis = 415.304702;
double a = 440.000005;
double ais = 466.163766;
double h = 493.883306;
double c2 = 523.251136;
double cis2 = 554.365268;
double d2 = 587.329542;
double dis2 = 622.253974;
double e2 = 659.255121;
double f2 = 698.456470;
double fis2 = 739.988853;
double g2 = 783.990880;
double gis2 = 830.609404;
long double a2 = 880.000009;
double ais2 = 932.327533;
double h2 = 987.766613;
double c3 = 1046.502272;
int main()
{
    char z;
    while( z != 27 )
    {
        z = getch();
        if( z == 'a' )
        {
            Beep( c2, 150 );
        }
        if( z == 'w' )
        {
            Beep( cis2, 150 );
        }
        if( z == 's' )
        {
            Beep( d2, 150 );
        }
        if( z == 'e' )
        {
            Beep( dis2, 150 );
        }
        if( z == 'd' )
        {
            Beep( e2, 150 );
        }
        if( z == 'f' )
        {
            Beep( f2, 150 );
        }
        if( z == 't' )
        {
            Beep( fis2, 150 );
        }
        if( z == 'g' )
        {
            Beep( g2, 150 );
        }
        if( z == 'y' )
        {
            Beep( gis2, 150 );
        }
        if( z == 'h' )
        {
            Beep( a2, 150 );
        }
        if( z == 'u' )
        {
            Beep( ais2, 150 );
        }
        if( z == 'j' )
        {
            Beep( h2, 150 );
        }
        if( z == 'k' )
        {
            Beep( c3, 150 );
        }
    }
    return 0;
}
Chciałbym zmierzyć czas wciskania przycisków w milisekundach, aby móc przekazywać to jako drugi argument funkcji Beep. Jak wykonać to, żeby przy przyciśnięciu naliczanie czasu się zaczęło, a przy puszczeniu skończyło i przekazało to do funkcji?
P-108660
pekfos
» 2014-04-25 18:22:46
Nie uzyskasz w ten sposób pożądanego efektu. Poza tym, pianino tak nie działa.
P-108668
najkosz
Temat założony przez niniejszego użytkownika
» 2014-05-15 18:40:47
Przepraszam za długą nieobecność. Wiem, że tak nie działa, grałem przez 3 lata jako instrument dodatkowy, właśnie jestem u kolegi-pianisty. Jak wtedy zrobić, żeby grało dopóty, dopóki klawisz jest wciśnięty?
P-110048
Monika90
» 2014-05-15 19:14:20
Za pomocą Beep tego nie zrobisz, bo dla Beep musisz z góry podać czas trwania. Użyj MIDI. Windows ma wbudowany prosty syntezator (prynajmniej tak jest w Windows XP).
P-110051
« 1 »
  Strona 1 z 1