• Viernes 29 de Marzo de 2024, 09:27

Autor Tema:  Musica  (Leído 5347 veces)

kkklira

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Musica
« en: Martes 19 de Octubre de 2004, 23:35 »
0
Hola:
   
         Se que antes de pedir ayuda debo investigar un poco por mi cuenta, pero como tengo poco tiempo escribire primero el mensaje e inmediatamente me pondre a investigar.
         Lo que quiero es un codigo para reproducir musica desde c, esto implica tambien que pueda detenerlo en el momento adecuado o necesario, sin mas por el momento .
   GRACIAS de antemano...
   
    ATTE:  kkklira :whistling:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Musica
« Respuesta #1 en: Miércoles 20 de Octubre de 2004, 05:33 »
0
musica o sonidos?

sonidos=

sound();--> recibe como parametro el valor de la frecuencia que debe sonar por el altavos del pc.
nosound();


musica:
depende el formato,
depende tambien si lo quieres hacer tu mismo o si quieres usa una libreria ya hecha.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Musica
« Respuesta #2 en: Miércoles 20 de Octubre de 2004, 08:42 »
0
Hola  :hola:

Puedes usar la libreria fmod, que es facil de usar con archivos mid o wav.
La puedes usar tanto para hacer efectos sonoros como para poner musica de fondo

Un saludo   :kicking:

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Musica
« Respuesta #3 en: Miércoles 20 de Octubre de 2004, 16:44 »
0
Si la música está en formato WAV, puedes hacer una reproducción simplemente usando la función PlaySound. Si está en otros formatos habrás de cargarlo, convertirlo a formato WAV PCM y usar el API de Windows para reproducirlo. Si está en MIDI simplemente has de cargarlo y reproducirlo con en API. Ésta es una forma más laboriosa, pero también se aprende más. Si tienes cualquier duda sobre ésto pregunta aqui.

Por otro lado, también puedes usar librerías ya hechas, como dicen más arriba. Todo depende del tiempo y las ganas de aprender que tengas.

Un saludo.

Ruben3d

icaruss

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Musica
« Respuesta #4 en: Miércoles 10 de Noviembre de 2004, 18:42 »
0
hablando de eso , alguien sabe como reproducir wav en msdos??? , pero no mediante una libreria , alguien sabe la teoria , y tambien como programar la tarjeta de sonido?? , les agradeceria su ayuda, y ya se que pido mucho pero alguien conoce el formato de compresion mp3 y sabe como usarlo con turbo C++,
gracias por su ayuda.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Musica
« Respuesta #5 en: Jueves 11 de Noviembre de 2004, 05:44 »
0
hola,
pues no es dificil pero si es dispendioso...
debes conocer la estructura del archivo , una vez eso debes teer manera de acceder a los deispositivos de sonido y asi cada cosa que leas del archivo la conviertes en un fromato entendible para el dispositivo de sonido especificando tiempos, timbres y sas cosas... realmete cosas relevantes a las ondas..
aca tienes el formato.

si te sale puedes sentirte enc apacidad de tratar de reproducir una de las variantes ma sencillas del mp3.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

icaruss

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Musica
« Respuesta #6 en: Viernes 12 de Noviembre de 2004, 19:38 »
0
aaaa eso me sirvio de mucho , gracias , pero de casualidad no sabes de algun buen manual de como mandarlo a la tarjeta de sonido , por que supongo que se programa de una manera especial y no mediante las funciones clasicas sound y nosound ,  gracias por la ayuda amigo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Musica
« Respuesta #7 en: Sábado 13 de Noviembre de 2004, 04:57 »
0
recomendacion:ç
-Usa la api de windows.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

icaruss

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Musica
« Respuesta #8 en: Lunes 15 de Noviembre de 2004, 20:11 »
0
queria mantenerme alejado del windows pero bueno parece que no podre , terminare por ceder ante el :( , vere si puedo averiguar como hacerlo mediante interrupciones.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Musica
« Respuesta #9 en: Miércoles 17 de Noviembre de 2004, 05:16 »
0
:huh:
bueno eso si son ganas de perder tiempo.. o de aprender mucho

usando interrupciones no encontraras nada como playwav...
olvidalo.

lo mas que encontraras (si encuentras algo) es acerca de usar el altavoz del pc.

realmente para acceder a la tarjeta de sonido lo debes hacer a traves del DMA pero es muy dificil y es muy poco probable que un OS te permita acceder directamete a ella, lo unico que puedes hacer es usar la api o en el caso de windows usar el DDK.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Musica
« Respuesta #10 en: Miércoles 17 de Noviembre de 2004, 06:06 »
0
Cita de: "icaruss"
queria mantenerme alejado del windows pero bueno parece que no podre , terminare por ceder ante el :( , vere si puedo averiguar como hacerlo mediante interrupciones.
Malas noticias:

Usar interrupciones, puertos y DMA como lo hacían los juegos antiguos para controlar el sonido ya quedo obsoleto. Aún si lograras hacer funcionar el sonido en tu máquina habría que ver cuanto trabajo de configuración tendría que hacer el usuario para hacer funcionar el sonido de tu programa. Sólo ve los foros de abandonware, están llenos de: No puedo hacer funcionar el sonido, el sonido no funciona, no se escucha nada, ¿tiene sonido?, etc...

Haggen

  • Miembro activo
  • **
  • Mensajes: 88
  • Nacionalidad: mx
    • Ver Perfil
    • Mis proyectos
Re: Musica
« Respuesta #11 en: Lunes 29 de Noviembre de 2004, 17:23 »
0
Saludos:

 Yo también quisiera saber como reproducir sonidos sin tener que recurrir a windows, la idea de mi sistema es cuando mucho depender del ms-dos, ya que seguramente no habrá windows en la pc destino (es más, ni quiero que halla), que podria yo hacer??  <_<

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Musica
« Respuesta #12 en: Martes 30 de Noviembre de 2004, 02:27 »
0
si lees todos los post de este mensaje desde el principio tendras la respuesta.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Haggen

  • Miembro activo
  • **
  • Mensajes: 88
  • Nacionalidad: mx
    • Ver Perfil
    • Mis proyectos
Re: Musica
« Respuesta #13 en: Martes 30 de Noviembre de 2004, 15:24 »
0
que tal:

 Ya miré el resto de los comentarios (incluyendo el adjunto de los formatos wave. midi y otros), está muy bien, pero todavía me queda la duda, ok, ya tengo la información del sonido (estructura del archivo leida), pero, ahora como la mando a la tarjeta??, con las funciones sound?, es decir, al leer la frecuencia de la muestra la mando para alla o como debería hacerlo?, disculpen, pero es que soy nuevo en esto y si que tengo dudas...  :unsure:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Musica
« Respuesta #14 en: Martes 30 de Noviembre de 2004, 15:45 »
0
Si quieres usar directamente el hardware tendras que usar DOS o compatibles, es decir versiones de windows hasta wiondows 98 o anterior.

Si vas a usar sistemas mas modernos que windows 98 entonces no podras hacerlo sino a traves de la API de windows, especificamente  el Multimedia SDK (usa el MCI) de windows.
si vas a usar UNIX o compatibles =mente debes usar la API de este sistema.

Si no quieres usar la API Multimedia de windows, lo mas abajo que podrias hacer para tocar el hardware tu mismo es desarrollar utilizando el Driver Development Kit (DDK) de windows.

Para el caso especifico que colocas...
la funcion cound y nosound del lenguaje C no te sirven sino para enviar algunas frecuencias al altavoz del PC y por demas no son funciones de bajo nivel, ni te serviran para reproducrio un wav.

Si no quieres depender de las APIs... o almenos depender lo menos posible , eso es lo que debes hacer, ahora si recapacitas ... deberias usar qcualquier libreria de las que ya estan hechas, como directX, MCI, o en fin...
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Musica
« Respuesta #15 en: Martes 30 de Noviembre de 2004, 16:34 »
0
La verdad que el reproductor de .midi del MCI del windows no es bueno. Cuando la  tarjeta de sonido no tiene sintetizador para midi y el MCI usa su emulador por software (lo que es común en estos días) "traba" al programa que envía el comando MCI para abrir el midi por un buen momento y eso es realmente molesto. (ni con hilos ni con nada se puede evitar esto, traba todo) :angry:
De hecho baje un open source para reproducir midis que trabaja mucho mejor. :)

Haggen

  • Miembro activo
  • **
  • Mensajes: 88
  • Nacionalidad: mx
    • Ver Perfil
    • Mis proyectos
Re: Musica
« Respuesta #16 en: Miércoles 1 de Diciembre de 2004, 06:18 »
0
no hay problema por ese lado, yo tengo windows 98 en mi pc (de hecho no me gusta ni el milenium ni el xp por razones que no voy a entrar en detalle), la idea es no depender en nada de windows, de hecho lo ideal es que en la pc ni siquiera hubiera windows, el sistema que quiero es que funcione sobre ms-dos puro (si se puede), pero se oye feo tener que meterme a crear un driver porque de eso si que no tengo ni idea...como es entonces que los juegos antiguos mandaban el sonido a la tarjeta???, supongo que por interrupciones en ensamblador o que podría yo hacer en este caso, o no se que librería me recomiendes para este caso pero sin tener que depender de la api de windows?  :o

Haggen

  • Miembro activo
  • **
  • Mensajes: 88
  • Nacionalidad: mx
    • Ver Perfil
    • Mis proyectos
Re: Musica
« Respuesta #17 en: Miércoles 1 de Diciembre de 2004, 06:22 »
0
que open source?

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Musica
« Respuesta #18 en: Miércoles 1 de Diciembre de 2004, 14:12 »
0
Para la soundblaster lo típico era el puerto 220 / 240 , interrupción 5 / 7. y Otro puerto para el midi: el 388 si no me equivoco (muchos juegos sólo tenían sonido por midi y se escuchaban muy bien) y para sonido digitalizado de alta calidad un DMA, el 1 o 3 generalmente.

Estoy casi seguro que debe existir por lo menos un open source para C puro.

Adjunto un "space invaders" (el original) en Basic que funciona en qbasic y un ejecutable para probar tu tarjeta de sonido :huh:
¿Por que?: Tiene unos comandos y trabaja con puertos para controlar la tarjeta de sonido adlib/soundblaster. (Sólo escucharás el sonido si tu tarjeta es compatible con las antiguas adlib o si es compatible con soundblaster antiguo también funcionara).
Este juego sólo utiliza las capacidades de sintetización de midi. Reproducir sonidos digitalizados como los .wav es más complicado.

Asi que si existen ejemplos hasta para el antiguo basic, pues en algún sitio de internet TIENEN que existir ejemplos para C.

Acabo de caer en cuenta de algo: Si tu tarjeta de sonido es integrada seguramente no será compatible con las antiguas tarjetas de sonido.  :(  

P.D.
El open source es para delphi, como el subforo es de C++...
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Musica
« Respuesta #19 en: Miércoles 1 de Diciembre de 2004, 15:40 »
0
Bueno, ya que dices que lo vas a hacer en dos (No se para que)...

Citar
como es entonces que los juegos antiguos mandaban el sonido a la tarjeta???

Pues tenian que hacer sus propios driver en ensamblor o en c, accediendo a las interrupciones de la bios y del DOS, o en su defecto usar un driver ya hecho por otras personas (lo cuial es lo mismo que usar una API). Esto es muy complicado, no tanto el acceder a la tarjeta de sonido sino mas bien saber que hacer con ella,
es decir el acceder a la tarjeta no te da nada hecho asi que si reprodujeras un archivo wav (ver epec. mas arriba) tendrias que entender als tramas del archivo y de alli deducir frecuencias, amplitudes timbres tiempos y todas esas cosas para luego organizar la informacion y enviarla a la tarjeta de una forma que ella lo pueda entender.

Citar
que podría yo hacer en este caso, o no se que librería me recomiendes para este caso pero sin tener que depender de la api de windows?

Cualquier libreria te podria servir, hay miles de ellas con diferentyes tipos de liscencias y algunas open source.

En todo caso sino vas a usar puramente DOS sino que vas a usar windows posterior al 98 cualquier libreria que uses  sin excepcion  accedera a alguno de los niveles de la api de windows, las pocas excepciones que hay son por ejemplo directX que es un paso mas directo al hardware que se evita pasar por algunas capas de la API.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Haggen

  • Miembro activo
  • **
  • Mensajes: 88
  • Nacionalidad: mx
    • Ver Perfil
    • Mis proyectos
Re: Musica
« Respuesta #20 en: Miércoles 1 de Diciembre de 2004, 16:51 »
0
Bueno, la idea tras estas marcianadas es que desde hace años atrás me he interesado por el funcionamiento de los sistemas operativos, y nació la idea de crear uno desde cero, probé todo lo que se ocurrió a lo largo de 5 años (  :blink:  ), pero todo era dependiente de otras cosas, mi idea era que el sistema no dependiera de windows, a la mejor no tanto como reemplazarlo, se que para eso me falta mucho y tampoco se tanto de c, pero hago el intento por aprender algo nuevo, Linux me parece un buen sistema, pero creo que muy complicado para meterle mano, así que pensé en hacer algo más sencillo y llegué a la conclusión de hacerlo en c++ pero corriendo bajo MS-DOS, es decir, iniciar la pc con solo DOS, osea no usar windows para nada, y si fuera posible que no hubiera windows pues mejor, solo habría que tener MS-DOS en la pc y listo.
 Pero el gran inconveniente es que prácticamente no hay drivers para el MS-DOS de los dispositivos modernos, he encontrado del mouse, cd, floppy, impresoras, pero por ejemplo para un cd-writter, scanner pues nada y he ahí el inconveniente, pero bueno a ver que se puede hacer, por ahí encontré referencias de un sistema parecido programado en borland c++ con fines educativos, pero no encontré nada concreto y pues a ver que sale de todo esto, no tengo nada contra Windows pero pues siempre hay otras cosas que se puedan hacer.
 De cualquier modo si no se puede pues al menos el intento se hizo y aprendí algo nuevo...  ;)

Haggen

  • Miembro activo
  • **
  • Mensajes: 88
  • Nacionalidad: mx
    • Ver Perfil
    • Mis proyectos
Re: Musica
« Respuesta #21 en: Miércoles 1 de Diciembre de 2004, 16:54 »
0
por cierto Amilius, gracias por la información, la voy a revisar con más calma luego y buscar lo que me falte.  :hola: