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

Sleep() | nieregularne odstępy czasu

Ostatnio zmodyfikowano 2017-03-02 13:08
Autor Wiadomość
Nazgul
Temat założony przez niniejszego użytkownika
» 2017-03-02 02:48:11
Wybaczcie, że z takim opóźnieniem odpisuję;)
Bardzo Wam dziękuję za pomoc!:D

rozumiem już, że problemy typu metronom najlepiej załatwiać odwołując się się do bibliotek od operacji na dźwiękach;D

wpadłem jeszcze na bardzo dziwny sposób. Do zweryfikowania, nie testowałem dokładności(już się posłużyłem biblioteką od dźwięku;D)
C/C++
#include <Windows.h>

int main() {
    double BPM = 60; // beat per minute(ilosc uderzen na minute)
   
   
    int click_frequency = 800;
    int click_duration = 80;
   
    int nosound_frequency = 0;
    int nosound_duration =(( 60.0 / BPM ) * 1000.0 ) - click_duration;
    //((zamiana czestotliwosci na czas[sec] jednego tykniecia) * konwersja[milisec]) - czas samego tykniecia;
   
    while( true )
    {
        Beep( click_frequency, click_duration );
        Beep( nosound_frequency, nosound_duration );
    }
}
Sposób trochę lewy;D

A temat ciągnąłem, ponieważ chciałem znać funkcję która po prostu dokładnie czeka;D użyłbym tego w wielu projektach;)
No najwyraźniej albo scheduler Windowsa jest kiepski, albo się nie da tego inaczej zrobić, żeby faktycznie zwolnić procesor;D

zobaczę jeszcze jak będzie działał program w openGL z kwadracikiem i mnóstwem podmieniających się tekstur.. tak, żeby praktycznie wyświetlać film.. raz wyświetlę go bez ogranicznika fps, a raz z tym ogranicznikiem(Sleep). Jeżeli bez ograniczenia film będzie płynny, a potem z tym Sleepem film będzie "skakał" to będę musiał doczytać/wznowićtemat, żeby dowiedzieć się o mechanizmach które pozwalają płynnie wyświetlać takie coś;D ehh choćby ciągłe zabieranie cykli procesora, tylko że takie pasywne, żeby po prostu się nie grzał

Jeszcze raz dziękuję!;)
P-158442
mokrowski
» 2017-03-02 13:08:11
@Nazgul, ale jeśli chodzi o dźwięk to nie interesuje Cię problem "dokładnie czekać" tylko "wykonać dokładnie co X (tu jednostka czasu)". Stąd nie miej pretensji do planisty Windows czy innego systemu operacyjnego bo to są zagadnienia rozwiązywane właśnie przez bufory i transfery niskopoziomowe (np. DMA). Dlatego radziłem obsłużyć to w oddzielnym wątku/dedykowaną biblioteką lub mechanizmami systemu ;-) A wtedy dotkniesz (być może) problemu następnego.. czyli jak ograniczyć opóźnienie np. pomiędzy "zmiana ustawienia -> słyszalna reakcja w dźwięku" :-)
P-158446
1 « 2 »
Poprzednia strona Strona 2 z 2