PAN не работает в Java звук API

У меня есть большая проблема, я разработал приложение Java, которое предназначено для проверки слуха, передачи звуков на разных частотах (500–6000 Гц) и децибелах, так что хорошо, пока apareción проблема в некоторых ноутбуках не работает, потому что когда вы запускаете звук до правого уха доставляется два уха, то же самое с левым. Сначала я подумал, что это было ошибкой в ​​моем приложении, но когда я нашел пример подобного оракула, http://www.oracle.com/technetwork/java/index-139508.html был тоже ошарашен. Я также могу быть хардверным правилом, потому что в моем ноутбуке windows7/fedora правильно работает в linux.

Я могу только начать видеть решение для уровня драйверов или операционной системы для приложения для запуска на любом компьютере.

-Я пробовал на нескольких компьютерах, пока не работал на 2 Samsung, 1 HP и 1 Toshiba (новые и подержанные, это не вопрос настроек звука)

-Это приложение также хорошо работает, будь то я C + + + http://www.programming.de/freeware_windows.php (тест на слух)

-Вот пример кода http://www.anyexample.com/programming/java/java_play_wav_sound_file.xml

-Я пытался создать. WAV файлы в стерео и моно режиме (с Audacity)

-В Java я установил 1.4 JRE, чтобы проверить текущий

Вероятно, многие из вас будут работать, потому что это зависит от компьютера

кусок кода:

private void propiedadesSound()
{
        this.clipAudio.stop();
        this.clipAudio.close();
        try
        {
            InputStream temp = getClass().getResourceAsStream(this.archivo);
            InputStream bufferedIn = new BufferedInputStream(temp);
            this.audio = AudioSystem.getAudioInputStream(bufferedIn);
                this.clipAudio.open(this.audio);
                if(this.clipAudio.isControlSupported(FloatControl.Type.PAN))
                {
                    FloatControl pan = (FloatControl) this.clipAudio.getControl(FloatControl.Type.PAN);
                    if(this.jRadioButtonIzq.isSelected())
                     pan.setValue(-1.0f);
                     else if(this.jRadioButtonDer.isSelected())
                     pan.setValue(1.0f);
                     else if(this.jRadioButtonAmbos.isSelected())
                     pan.setValue(0.0f);
                }
        else if(this.clipAudio.isControlSupported(FloatControl.Type.BALANCE))
                {
                    FloatControl pan = (FloatControl) this.clipAudio.getControl(FloatControl.Type.BALANCE);
                    if(this.jRadioButtonIzq.isSelected())
                    pan.setValue(-1.0f);
                    else if(this.jRadioButtonDer.isSelected())
                    pan.setValue(1.0f);
                    else if(this.jRadioButtonAmbos.isSelected())
                    pan.setValue(0.0f);
                 }
                if(this.clipAudio.isControlSupported(FloatControl.Type.MASTER_GAIN))
                {
                    FloatControl gain = (FloatControl) this.clipAudio.getControl(FloatControl.Type.MASTER_GAIN);
                    float max = gain.getMaximum();
                    float min = gain.getMinimum();
                    float current = gain.getValue();
                    double gainValue = this.jSliderDecibel.getValue()+20;
                    float newValue = (float)(min + gainValue * (max - min) / 100.0F);
                    gain.setValue(newValue);
                }
        }
        catch (UnsupportedAudioFileException ex)
        {
            exitError("Archivo de audio no soportado.");
        }
        catch (LineUnavailableException ex)
        {
            exitError("Linea no soportada.");
        }
        catch (IOException ex)
        {
            exitError("Error en la lectura del archivo de audio."+ex);
        }
    }

pd: я также попытался удалить код PAN only, баланс и только два, как это сейчас

кто-то придумывает альтернативу?, код должен быть java, так как он является частью более крупной программы, но, возможно, вы могли бы добавить какой-нибудь другой язык dll

заранее спасибо

/-----РЕДАКТИРОВАТЬ--------------------------------/

Я нашел решение, которое не является окончательным, но оно сработало до сих пор. Ноутбуки, в которых возникла проблема, поставлялись с завода, по какой-то причине не удается разделить звук Java, поэтому были отформатированы, вы установили новые окна (в данном случае Windows 7), ту же версию Windows, которая приносила, но не заводскую после этого сработал каждый ноутбук у меня была такая проблема. Поэтому это несовместимость заводских драйверов для некоторых ноутбуков с Java API, которая не обновлялась в течение многих лет.

/----------------------------------------/

1 ответ

Определение PAN немного расплывчато. Вы не можете получить полное стерео разделение в зависимости от того, как они интерпретируют PAN.

Я рекомендую открыть стерео линию и сделать свой собственный панорамирование. Я делаю это в JSyn и получаю полное стерео разделение.

Если вам нужен тональный сигнал только для одного канала, запишите тональный сигнал для одного канала, а нули - для другого.

Другие вопросы по тегам