Bueno,
Quería hacer un pequeño piano virtual en C++. Pero el problema, es que use la librería windows.h, que primero lo hace dependiente de Windows , que no me agrada, y segundo, uso la función Beep() que no está hecha para hacer música y es lenta y hace un ruido extraño al terminar el sonido, otra cosa es que no funciona en todos los ordenadores ya que es sonido interno, entonces:
Me gustaría que alguien me dijese una librería en la que pueda reproducir un sonido por ejemplo así: PlaySound("Do",2) En la que tocamos la nota Do por 2 segundos, o que simplemente use una frequencia.
Por cierto uso SDL para los eventos.
( Para correrlo necesitan SDL.dll )
#include <iostream>
#include <windows.h>
#include "SDL.h"
using namespace std;
int main(int argc,char* args[])
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Surface* screen;
screen = SDL_SetVideoMode(600,400,32,SDL_SWSURFACE);
SDL_WM_SetCaption("Alvii Board - Made by Sam",NULL);
bool running = true;
SDL_Event event;
int time = 0;
int key = 0;
while(running)
{
if(SDL_PollEvent(&event))
{
if(event.type==SDL_QUIT)
{
running = false;
}
if(event.type==SDL_KEYDOWN)
{
key = 1;
time = 300;
if(event.key.keysym.sym==SDLK_a)
{
Beep(262,time);
}
if(event.key.keysym.sym==SDLK_s)
{
Beep(294,time);
}
if(event.key.keysym.sym==SDLK_d)
{
Beep(330,time);
}
if(event.key.keysym.sym==SDLK_f)
{
Beep(349,time);
}
if(event.key.keysym.sym==SDLK_g)
{
Beep(392,time);
}
if(event.key.keysym.sym==SDLK_h)
{
Beep(440,time);
}
if(event.key.keysym.sym==SDLK_j)
{
Beep(494,time);
}
if(event.key.keysym.sym==SDLK_k)
{
Beep(523,time);
}
if(event.key.keysym.sym==SDLK_w)
{
Beep(277,time);
}
if(event.key.keysym.sym==SDLK_e)
{
Beep(311,time);
}
if(event.key.keysym.sym==SDLK_t)
{
Beep(370,time);
}
if(event.key.keysym.sym==SDLK_y)
{
Beep(415,time);
}
if(event.key.keysym.sym==SDLK_u)
{
Beep(466,time);
}
}
if(event.type==SDL_KEYUP)
{
key = 0;
time = 0;
}
}
SDL_Flip(screen);
}
return 0;
}