2010-11-25 40 views
10

¡Buen día!Configuración del volumen con java

Estoy desarrollando una aplicación que reproduce un MIDI. Funciona bien, pero a menudo obtengo informes de casi errores: "no hay sonido reproducido". La respuesta siempre es ingresar el controlador de volumen y activar el sonido del sintetizador (no silenciarlo).

La pregunta es - ¿cómo cambiarla automáticamente - por software? Hasta ahora solo puedo cambiar el volumen maestro y realmente no pude encontrar en ningún sitio cómo cambiar solo para 'wave' 'SW synthesizer', etc.

Estoy generalmente buscando soluciones de plataforma independiente (Java puro) Sin embargo, la solución solo para Windows (todo tipo de ventanas) también es bienvenida;) ¡Gracias de antemano!

Editar: Bueno, mirando las respuestas, ya veo, debería especificar mejor mi pregunta. Añado una imagen. El control seleccionado con verde es lo que ya puedo hacer (es decir, como Cliff linked); sin embargo, necesito algo para los controles en rojo (el más importante en mi caso es el tercero desde el izquierdo - volumen del sintetizador). La imagen está tomada de win XP, pero otros sistemas operativos (también Linux) tienen controles similares. Java tiene que tener tal posibilidad. alt text

+0

¿Duplicado? http://stackoverflow.com/questions/953598/audio-volume-control-increase-or-decrease-in-java –

+0

Ojalá estuviera duplicado;/La gente sabe cómo cambiar el volumen principal, pero siempre ha silenciado el sintetizador volumen - cuando edité la pregunta principal;/ – parvuselephantus

Respuesta

0

Intente echar un vistazo a lo que sucede en el fondo cuando ajusta los niveles de onda/sintetizador usando la herramienta en la captura de pantalla usando sysinternal Process Monitor, y luego haga que su código java haga la misma llamada nativa del sistema/dll.

1

He buscado en Ubuntu, Fedora y Windows y las únicas características comunes en estos SO son el volumen maestro y el volumen de alerta (o "beep" en Windows). Esto me lleva a pensar que no existe una forma de hacerlo independiente de la plataforma, lo que significa que no hay una forma Java estándar.

Habiendo dicho esto, lo más probable es que haya API (probablemente diferentes) para todos estos sistemas operativos que le permiten controlar estos ajustes de grano más fino. Si es así, casi definitivamente requerirá bibliotecas Java separadas para interactuar con estas API en cada plataforma.

Lo siento, no puedo apuntarlo en la dirección correcta, pero espero al menos ayudarlo a eliminar la posibilidad de tener una forma estandarizada de hacer esta función. ¡Buena suerte!

+0

Esa es la información mencionada, pero vale mucho. ¡Gracias por ese trabajo! – parvuselephantus

0

¿Está trabajando con algún tipo de interfaz o utilizando el predeterminado Mixer del sistema? ¿Y de qué nivel de control estás hablando? Desafortunadamente estoy aprendiendo esta API también, pero mi primer pensamiento es que cada uno de ellos sería una línea diferente, ¿verdad? ¿Has intentado obtener todas las líneas del sistema y usando el MASTER_GAIN en cada una de las líneas? Al igual que la persona que está sobre mí, dijo que estoy seguro de que hay API para esto, pero si fuera a hacerlo en mi propio código con fines educativos o algo así es donde comenzaría. Hablando de API hay una API de control que manipula los datos de audio en sí, pero hasta donde yo sé, no afecta el control de volumen del hardware.

Cuestiones relacionadas