elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Piano Virtual - Ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Piano Virtual - Ayuda  (Leído 3,039 veces)
prometheus48

Desconectado Desconectado

Mensajes: 176


Making a Distro...


Ver Perfil
Piano Virtual - Ayuda
« en: 12 Junio 2012, 19:38 pm »

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 )
Código:
#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;
}



En línea

"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana.
Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas"
The knowledge is free
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Piano Virtual - Ayuda
« Respuesta #1 en: 13 Junio 2012, 09:44 am »

para los sonidos mu simple del piano tenes la midiOutShortMsg de Winmm  :D
obviamente si es para windows tenes que agregar la windows.h, o que lo quiere hacer multiplataforma? :|


En línea

d(-_-)b


Desconectado Desconectado

Mensajes: 1.331



Ver Perfil WWW
Re: Piano Virtual - Ayuda
« Respuesta #2 en: 13 Junio 2012, 12:54 pm »

Lo mejor seria usar sample de piano en formato .wav, y asociarlas a cada teclas para reproducir su respectiva notas. cada instrumento virtual lleva consigo su propia libreria de sonidos (samples), creo que ese deberia ser tu caso.

Los samples puedes conseguirlos gogleando..
« Última modificación: 13 Junio 2012, 12:57 pm por Tuberculo Gourmet » En línea

Max 400; caracteres restantes: 366
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Piano Virtual - Ayuda
« Respuesta #3 en: 15 Junio 2012, 06:17 am »

Mejor aún: qué tal reemplazar ese windows.h por SDL_mixer, que es portable y mantiene el estilo de programación "uniforme" con las otras funciones de SDL? http://www.libsdl.org/projects/SDL_mixer/
Pensalo :D

Saludos.
En línea

vikour92

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Piano Virtual - Ayuda
« Respuesta #4 en: 15 Junio 2012, 09:44 am »

Buenos días,

Yo también tengo el interés de que mis programas sean portables. No se, si los sonidos se hacen con esta librería, pero los gráficos sí, es para C++. Es multiplataforma en los sistemas operativos Unix con GTK+, windows, MAC OS X, windows phone, etc.

La librería es wxWidgets, http://www.wxwidgets.org/ . Por ahí había un libro pdf de esto, ahora mismo no recuerdo donde está, pero si os interesa lo busco y lo posteo.

Es muy probable que para reproducir sonidos.

Un saludo, espero que haya sido de ayuda.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
hacer del teclado de mi pc un piano
Multimedia
Netrian 1 2,497 Último mensaje 1 Octubre 2008, 17:27 pm
por Lord William
Busco canciones de piano. « 1 2 3 »
Foro Libre
Draklit 28 9,062 Último mensaje 23 Junio 2010, 17:51 pm
por Draklit
Dueto de Piano [Video]
Foro Libre
[D4N93R] 1 1,795 Último mensaje 10 Abril 2011, 23:13 pm
por flacc
PIANO VIRTUAL
Software
Zorronde 3 1,536 Último mensaje 30 Junio 2019, 22:26 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines