Beepiano - program do tworzenia muzyki z systemowych beepów.

0

Dzień dobry.
Aktualnie piszę program do tworzenia muzyki z systemowych beepów.

Program ma sczytać znaki z klawiatury, przekonwertować do beepa i zapisać np. w pliku utwór.txt w postaci np. beep(400,300)
Jak na razie sczytuje i konwertuje.
A tak się oto prezentuje:

#include <Windows.h>//Robi Beeep
#include <iostream>// Pozwala wychodzić i wchodzić
#include <conio.h>//  od getch
using namespace std;//przestrzeń nazw
int main()
{
        int x,y;
        while(x=x)
        {
           if (GetAsyncKeyState(VK_ESCAPE))//jeżeli naciśnięty klawisz esc to
            {
                break;// przerwij pętle
            }
            x=getch();
        //  y=getch();
            int i = (int)((char)x - '0');//stackoverflow wie, ja nie, ważne, że działa, jak ktoś chce niech mi wyjaśni krok po kroku, jak to działa,że działa.
            Beep(i*100,200);//(glośność,długość)
            cout<<i<< endl;
        }

}

Jak napisać kod by długość trwania dźwięku była adekwatna do długości wciskania danego klawisza.
Następnie jak napisać kod który zapisuje wykonane beepy w postaci:
beep(300,400)
beep(400,276)etc.

2

stackoverflow wie, ja nie, ważne, że działa, jak ktoś chce niech mi wyjaśni krok po kroku, jak to działa,że działa.

O ASCII słyszał?
Poza tym na bank na SO było to opisane.
A już na pewno gdziekolwiek indziej.
Użyłbyś wyszukiwarki może?

zapisać np. w pliku utwór.txt w postaci np. beep(400,300)

Zbyt skomplikowany format jak na kompletnego newbie - łatwiej będzie:

wysokość1 długość1
wysokość2 długość2
(...)
np.:
100 50
200 80
(...)

Lektura: obsługa plików w C++.

Jak napisać kod by długość trwania dźwięku była adekwatna do długości wciskania danego klawisza.

Licz liczbę iteracji pętli, w której będzie np.pięciomilisekundowy sleep?
W stylu:

unsigned int duration = 0;

while (keyPressed())
{
 duration += 5;
 sleep(5);
}

Następnie jak napisać kod który zapisuje wykonane beepy (...)

Lektura: obsługa plików w C++.


PS głośność dźwięku (dB) nie ma zbytnio powiązania z jego wysokością (Hz), mylisz te pojęcia.
0

@Nocturn
W pliku z "dźwiękiem" będą się znajdować wyłącznie dźwięki, więc nie potrzebujesz tej otoczki, a jedynie same wartości. Coś jak pliki amorficzne.

Jeśli chodzi o zapis, wystarczy przekierowanie wyjścia do pliku. app.exe > output.txt

0
Patryk27 napisał(a):

zapisać np. w pliku utwór.txt w postaci np. beep(400,300)

Zbyt skomplikowany format jak na kompletnego newbie
Nie, dlaczego? http://ideone.com/Wo0FLO

0

Więc tak, Ten programik a moja super nowoczesna gra, to osobne byty, Beepiano ma mi pomóc wygenerować kod muzyki do niej.
@Patryk27

Licz liczbę iteracji pętli, w której będzie np.pięciomilisekundowy sleep?
W stylu:
unsigned int duration = 0;

while (keyPressed())
{
duration += 5;
sleep(5);
}

Jak to ująłeś jestem kompletnym newbie, jak mam to zastosować w moim kodzie by działało odpowiednio?

@lukasz1235
@spartanPAGE
Tutaj, z zapisywaniem, to już kompletnie się pogubiłem ;D

0

Wydaje mi się, że podchodzisz do tego źle, jak zresztą każdy newbie - uczysz się języka pisząc grę, co jest ogromnym błędem.

jak mam to zastosować w moim kodzie by działało odpowiednio?

Dunno, musiałbyś sprawdzić w dokumentacji WinAPI, ale odnoszę wrażenie, że GetAsyncKeyState wystarczy do tego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1