2017-01-04 4 views
0

Я хочу играть в осциллятор в левом, правом или обоих каналах, и для этого я использую StereoPannerNode из Web Audio Api. Когда я запускаю «ионную подачу» на Chrome, все работает нормально, но когда я тестирую код на Android (я установил плагин для пешеходных переходов), звук поступает из обоих каналов (ниже в канале я не хочу, чтобы звук воспроизводился) ,Проиграть осциллятор в левом/правом канале с помощью Web Audio Api, Ionic и Crosswalk

Я также пробовал узлы слияния и разветвления с одинаковыми результатами: работает на Chrome, не работает на Android.

Я попытался использовать Asus ZenFone с Android 4.4.2 и Huawei p8 с Android 6.0.

Вот как я создаю свой аудиоконтент и узел panner.

var contextClass = (window.AudioContext); 
var audioCtx = new contextClass(); 
var panNode = audioCtx.createStereoPanner(); 

Я не знаю, как это исправить, любая идея?

ответ

0

На Android 6.0 работает следующий скрипт. Он использует API веб-аудио. Я еще не тестировал его на iOS, но у меня есть хорошее чувство, что он будет работать там (прокомментируйте, если это не так).

Вам нужен файл «omg.mp3» в корневом каталоге для проверки. Вы также должны строить с помощью Cordova и не беспокоиться о CORS или о той же ошибке, которую вы можете получить в своем браузере.

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta name="viewport" content="width=device-width"> 

    <title>StereoPannerNode example</title> 

    <link rel="stylesheet" href=""> 
    <!--[if lt IE 9]> 
     <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]--> 
    </head> 

    <body> 
    <h1>StereoPannerNode example</h1> 
    <audio controls> 
     <source src="omg.mp3" type="audio/mp3"> 
     <p>Browser too old to support HTML5 audio? How depressing!</p> 
    </audio> 
    <h2>Set stereo panning</h2> 
    <input class="panning-control" type="range" min="-1" max="1" step="0.1" value="0"> 
    <span class="panning-value">0</span> 

    </body> 
<script> 
var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); 
var myAudio = document.querySelector('audio'); 

var panControl = document.querySelector('.panning-control'); 
var panValue = document.querySelector('.panning-value'); 


// Create a MediaElementAudioSourceNode 
// Feed the HTMLMediaElement into it 
var source = audioCtx.createMediaElementSource(myAudio); 

// Create a stereo panner 
var panNode = audioCtx.createStereoPanner(); 

// Event handler function to increase panning to the right and left 
// when the slider is moved 

panControl.oninput = function() { 
    panNode.pan.value = panControl.value; 
    panValue.innerHTML = panControl.value; 
} 

// connect the AudioBufferSourceNode to the gainNode 
// and the gainNode to the destination, so we can play the 
// music and adjust the panning using the controls 
source.connect(panNode); 
panNode.connect(audioCtx.destination); 
    </script> 
</html> 
Смежные вопросы