Hiệu ứng âm thanh trong JavaScript / HTML5


316

Tôi đang sử dụng HTML5 để lập trình trò chơi; trở ngại tôi gặp phải bây giờ là làm thế nào để phát hiệu ứng âm thanh.

Các yêu cầu cụ thể rất ít về số lượng:

  • Chơi và trộn nhiều âm thanh,
  • Phát cùng một mẫu nhiều lần, có thể phát lại chồng chéo,
  • Phát lại gián đoạn một mẫu tại bất kỳ điểm nào,
  • Tốt nhất là phát các tệp WAV chứa PCM thô (chất lượng thấp), nhưng tôi có thể chuyển đổi các tệp này, tất nhiên.

Cách tiếp cận đầu tiên của tôi là sử dụng <audio>phần tử HTML5 và xác định tất cả các hiệu ứng âm thanh trong trang của tôi. Firefox chỉ phát các tệp WAV, nhưng gọi #playnhiều lần không thực sự phát mẫu nhiều lần. Từ hiểu biết của tôi về thông số HTML5, <audio>phần tử cũng theo dõi trạng thái phát lại, vì vậy điều đó giải thích tại sao.

Suy nghĩ trước mắt của tôi là sao chép các thành phần âm thanh, vì vậy tôi đã tạo thư viện JavaScript nhỏ sau đây để làm điều đó cho tôi (phụ thuộc vào jQuery):

var Snd = {
  init: function() {
    $("audio").each(function() {
      var src = this.getAttribute('src');
      if (src.substring(0, 4) !== "snd/") { return; }
      // Cut out the basename (strip directory and extension)
      var name = src.substring(4, src.length - 4);
      // Create the helper function, which clones the audio object and plays it
      var Constructor = function() {};
      Constructor.prototype = this;
      Snd[name] = function() {
        var clone = new Constructor();
        clone.play();
        // Return the cloned element, so the caller can interrupt the sound effect
        return clone;
      };
    });
  }
};

Vì vậy, bây giờ tôi có thể làm Snd.boom();từ bảng điều khiển Firebird và chơi snd/boom.wav, nhưng tôi vẫn không thể chơi cùng một mẫu nhiều lần. Có vẻ như <audio>yếu tố này thực sự là một tính năng phát trực tuyến hơn là một thứ gì đó để phát hiệu ứng âm thanh.

Có một cách thông minh để thực hiện điều này mà tôi đang thiếu, tốt nhất là chỉ sử dụng HTML5 và JavaScript?

Tôi cũng nên đề cập rằng, môi trường thử nghiệm của tôi là Firefox 3.5 trên Ubuntu 9.10. Các trình duyệt khác mà tôi đã thử - Opera, Midori, Chromium, Epiphany - tạo ra các kết quả khác nhau. Một số không chơi bất cứ điều gì, và một số ngoại lệ ném.


Hừ! Tôi cũng đang chuyển một trò chơi Macintosh cũ sang HTML5. Muốn tiết lộ cái nào bạn đang nhân bản?
một mọt sách được trả tiền

1
Đó là Project ARASHI, một bản sao tạm thời.
Stéphan Kochen

"Trộn" âm thanh là gì?
Mads Skjern

2
Bạn đã hoàn thành nó? Chúng ta có thể nhìn thấy nó?
enyo

4
Thật đáng buồn không. Tôi có một sở trường cho việc không hoàn thành các dự án thời gian rảnh rỗi. :( Có một repo git cho nó, nhưng tôi đã không chạm vào nó trong nhiều năm: github.com/stephank/arashi-js
Stéphan Kochen

Câu trả lời:


448

AudioĐối tượng HTML5

Bạn không cần bận tâm đến <audio>các yếu tố. HTML 5 cho phép bạn truy cập Audiocác đối tượng trực tiếp:

var snd = new Audio("file.wav"); // buffers automatically when created
snd.play();

Không có hỗ trợ để trộn trong phiên bản hiện tại của thông số kỹ thuật.

Để phát cùng một âm thanh nhiều lần, hãy tạo nhiều phiên bản của Audiođối tượng. Bạn cũng có thể thiết lập snd.currentTime=0trên đối tượng sau khi chơi xong.


Vì hàm tạo JS không hỗ trợ <source>các phần tử dự phòng , bạn nên sử dụng

(new Audio()).canPlayType("audio/ogg; codecs=vorbis")

để kiểm tra xem trình duyệt có hỗ trợ Ogg Vorbis hay không.


Nếu bạn đang viết một trò chơi hoặc một ứng dụng âm nhạc (không chỉ là một trình phát), bạn sẽ muốn sử dụng API Web Audio nâng cao hơn , hiện được hầu hết các trình duyệt hỗ trợ .


18
Audiocác đối tượng được autobuffered. Chúng được thiết kế tương tự như Imagecác đối tượng, vì vậy các kỹ thuật tải trước hình ảnh cũ cũng hoạt động với âm thanh.
Kornel

5
Điều này cũng hoạt động trên iOS. Lưu ý rằng bạn cần sử dụng một số loại hành động của người dùng (ví dụ: nhấp vào nút) để bắt đầu âm thanh. Bạn không thể thực hiện snd.play()trên window.load ().
Husky

1
Tôi vẫn đang sử dụng <audio>thẻ vì nó dễ kiểm soát hơn. Nhưng dù sao cũng cảm ơn thông tin!
Derek 朕 會

2
Tôi thích phương pháp này hơn vì thực tế là các phần tử <audio> html5 cho phép nhiều nguồn, vì vậy nếu trình duyệt không hỗ trợ mp3, bạn có thể chuyển sang ogg / wav. Nó sẽ đòi hỏi một số mánh khóe trong javascript để thực hiện tương tự.
joelmdev

2
Trên iOS 6 tự động phát được hỗ trợ: bạn có thể bắt đầu âm thanh với một snd.play () đơn giản trên window.load ().
Pietro Arlingtoninelli

36

API WebAudio của W3C

Kể từ tháng 7 năm 2012, API WebAudio hiện được hỗ trợ trong Chrome và ít nhất được hỗ trợ một phần trong Firefox và dự kiến ​​sẽ được thêm vào IOS kể từ phiên bản 6.

Mặc dù nó đủ mạnh để được sử dụng theo chương trình cho các tác vụ cơ bản, nhưng phần tử Audio không bao giờ có nghĩa là cung cấp hỗ trợ âm thanh đầy đủ cho các trò chơi, v.v. Nó được thiết kế để cho phép một phần phương tiện được nhúng vào một trang, tương tự như img nhãn. Có rất nhiều vấn đề khi cố gắng sử dụng thẻ Audio cho các trò chơi:

  • Thời gian trượt là phổ biến với các yếu tố âm thanh
  • Bạn cần một yếu tố Âm thanh cho mỗi phiên bản của âm thanh
  • Tải sự kiện không hoàn toàn đáng tin cậy, nhưng
  • Không có điều khiển âm lượng chung, không mờ dần, không có bộ lọc / hiệu ứng

Tôi đã sử dụng bài viết Bắt đầu với WebAudio này để bắt đầu với API WebAudio. Các Case Study FieldRunners WebAudio cũng là một đọc tốt.


Đây là một câu trả lời tốt hơn câu trả lời được chấp nhận, vì nó tập trung vào giải pháp chính xác cho vấn đề (API WebAudio) và lý do các yếu tố Âm thanh không phải là giải pháp tốt, thay vì cố gắng hack một giải pháp tồi với các yếu tố Âm thanh
Sự bất thường

29

howler.js

Đối với tác giả trò chơi, một trong những giải pháp tốt nhất là sử dụng thư viện giải quyết nhiều vấn đề chúng ta gặp phải khi viết mã cho web, chẳng hạn như howler.js . howler.js trừu tượng hóa API Web Audio tuyệt vời (nhưng mức độ thấp) thành một khung dễ sử dụng. Nó sẽ cố gắng quay lại thành phần âm thanh HTML5 nếu API âm thanh web không khả dụng.

var sound = new Howl({
  urls: ['sound.mp3', 'sound.ogg']
}).play();
// it also provides calls for spatial/3d audio effects (most browsers)
sound.pos3d(0.1,0.3,0.5);

wad.js

Một thư viện tuyệt vời khác là wad.js , đặc biệt hữu ích để tạo âm thanh synth, chẳng hạn như âm nhạc và hiệu ứng. Ví dụ:

var saw = new Wad({source : 'sawtooth'})
saw.play({
    volume  : 0.8,
    wait    : 0,     // Time in seconds between calling play() and actually triggering the note.
    loop    : false, // This overrides the value for loop on the constructor, if it was set. 
    pitch   : 'A4',  // A4 is 440 hertz.
    label   : 'A',   // A label that identifies this note.
    env     : {hold : 9001},
    panning : [1, -1, 10],
    filter  : {frequency : 900},
    delay   : {delayTime : .8}
})

Âm thanh cho trò chơi

Một thư viện khác tương tự Wad.js là " Âm thanh cho trò chơi ", nó tập trung hơn vào sản xuất hiệu ứng, đồng thời cung cấp một bộ chức năng tương tự thông qua API tương đối khác biệt (và có lẽ ngắn gọn hơn):

function shootSound() {
  soundEffect(
    1046.5,           //frequency
    0,                //attack
    0.3,              //decay
    "sawtooth",       //waveform
    1,                //Volume
    -0.8,             //pan
    0,                //wait before playing
    1200,             //pitch bend amount
    false,            //reverse bend
    0,                //random pitch range
    25,               //dissonance
    [0.2, 0.2, 2000], //echo array: [delay, feedback, filter]
    undefined         //reverb array: [duration, decay, reverse?]
  );
}

Tóm lược

Mỗi thư viện này đều đáng xem, cho dù bạn cần phát lại một tệp âm thanh duy nhất hoặc có thể tạo trình chỉnh sửa nhạc, trình tạo hiệu ứng hoặc trò chơi video dựa trên html của riêng bạn.


Không thể nhận xét về phát triển trò chơi, nhưng tôi đang sử dụng điều này cho một số phản hồi âm thanh nhỏ trong giao diện và để nó hoạt động một điều trị tuyệt đối. Nhanh chóng, dễ dàng và đơn giản.
Thoát khỏi

Khung thực sự tốt, hoạt động tốt trong điện thoại di động là tốt. Bạn phải kích hoạt nó bằng touchstart ... nhưng một khi đã xong thì nó hoạt động ngay lập tức :)
Philip

9

Bạn cũng có thể muốn sử dụng điều này để phát hiện âm thanh HTML 5 trong một số trường hợp:

http://diveintohtml5.ep.io/everything.html

Chức năng phát hiện HTML 5 JS

function supportsAudio()
{
    var a = document.createElement('audio'); 
    return !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, ''));
}

Cảm ơn đã lưu ý điều này. Tôi đã học phương pháp này từ has.js, nhưng tôi thấy nó có một số vấn đề trong Firefox và dường như trong Opera cũng theo mã nguồn has.js. (refs: github.com/phiggins42/has.js/issues/48 github.com/phiggins42/has.js/blob/master/detect/audio.js#L19 )
Stéphan Kochen

5

Đây là một phương pháp để có thể phát cùng một âm thanh cùng một lúc. Kết hợp với trình tải trước và bạn đã hoàn tất. Điều này ít nhất hoạt động với Firefox 17.0.1, chưa thử nghiệm nó với bất kỳ thứ gì khác.

// collection of sounds that are playing
var playing={};
// collection of sounds
var sounds={step:"knock.ogg",throw:"swing.ogg"};

// function that is used to play sounds
function player(x)
{
    var a,b;
    b=new Date();
    a=x+b.getTime();
    playing[a]=new Audio(sounds[x]);
    // with this we prevent playing-object from becoming a memory-monster:
    playing[a].onended=function(){delete playing[a]};
    playing[a].play();
}

Ràng buộc điều này với một phím bàn phím và tận hưởng:

player("step");

Không. Tôi không nghĩ rằng việc tạo một đối tượng mới cho mỗi lần phát lại âm thanh riêng lẻ là một giải pháp. Đó là một cách giải quyết nhanh chóng và bẩn thỉu, nhưng điều này có thể được thực hiện tốt hơn.
Pawel

@Pawel Đúng, rằng điều này KHÔNG nên được sử dụng làm phương thức phát âm thanh chính, nhưng theo như tôi biết, nguyên tắc trong ví dụ là cách duy nhất phát cùng một âm thanh nhiều lần, hoặc như OP thể hiện, "Phát lại chồng chéo". (Không yêu cầu trình cắm trình duyệt.) Việc triển khai thực tế của tôi trong dự án hiện tại của tôi phức tạp hơn nhiều so với mã ví dụ tôi đã đăng.
F-3000

4

Âm thanh như những gì bạn muốn là âm thanh đa kênh. Giả sử bạn có 4 kênh (như trên các trò chơi 16 bit thực sự cũ), tôi chưa bao giờ chơi với tính năng âm thanh HTML5, nhưng bạn không cần 4 yếu tố <audio> và chu trình được sử dụng để chơi hiệu ứng âm thanh tiếp theo? Bạn đã thử chưa? Chuyện gì xảy ra Nếu nó hoạt động: Để phát nhiều âm thanh đồng thời, chỉ cần thêm nhiều yếu tố <audio> hơn.

Tôi đã thực hiện việc này trước đây mà không có phần tử <audio> HTML5, sử dụng một đối tượng Flash nhỏ từ http://flash-mp3-player.net/ - Tôi đã viết một bài kiểm tra âm nhạc ( http://webdeavour.appspot.com/ ) và đã sử dụng nó để phát các clip nhạc khi người dùng nhấp vào nút cho câu hỏi. Ban đầu tôi có một người chơi cho mỗi câu hỏi và có thể chơi chúng trên đầu của nhau, vì vậy tôi đã thay đổi nó để chỉ có một người chơi, tôi chỉ vào các clip nhạc khác nhau.


Đó là một suy nghĩ thú vị, để sử dụng & lt; âm thanh & gt; các yếu tố như các kênh. Khi tôi đặt hai yếu tố trên một trang, tôi có thể phát chúng cùng lúc. Có vẻ như nhân bản tôi đang làm không thực sự làm những gì tôi mong đợi, bởi vì trong mã gốc của tôi, chơi hai mẫu cũng hoạt động. Chỉ cần không hai lần cùng một mẫu. Tôi sẽ phải thử nghiệm thêm một số điều này nữa và sẽ lấy lại kết quả!
Stéphan Kochen

Vâng, có thể có một lý do tinh tế tại sao nó được gọi là bản sao và không sao chép. Có lẽ bản sao vẫn đang chia sẻ một cái gì đó với bản gốc ngăn không cho cả hai chơi cùng một lúc.
Lee Kowalkowski

Để tham khảo, sử dụng lại phần tử <audio> tương tự không hoạt động, ít nhất là trong Firefox. Bạn có thể đặt thuộc tính 'src', nhưng thực tế nó sẽ không tải một mẫu khác.
Stéphan Kochen

4

Hãy xem trang web jai (-> mirror ) (giao diện âm thanh javascript). Từ việc nhìn vào nguồn của họ, họ dường như đang gọi play()liên tục và họ đề cập rằng thư viện của họ có thể phù hợp để sử dụng trong các trò chơi dựa trên HTML5.

Bạn có thể phát đồng thời nhiều sự kiện âm thanh, có thể được sử dụng để tạo trò chơi Javascript hoặc có giọng nói qua một số nhạc nền


3

Để chơi cùng một mẫu nhiều lần, sẽ không thể làm một cái gì đó như thế này:

e.pause(); // Perhaps optional
e.currentTime = 0;
e.play();

( elà yếu tố âm thanh)

Có lẽ tôi đã hoàn toàn hiểu sai vấn đề của bạn, bạn có muốn hiệu ứng âm thanh phát nhiều lần cùng một lúc không? Sau đó, điều này là hoàn toàn sai.


Điều đó đúng, tôi cần chơi cùng một mẫu nhiều lần cùng một lúc.
Stéphan Kochen

Có, điều này chơi cùng một ví dụ nhiều lần nhưng đối với những người nhìn vào câu trả lời này, chỉ cần lưu ý rằng điều này không gây ra "phát lại chồng chéo", như OP đã nói.
Patrick Roberts

3

Đây là một ý tưởng. Tải tất cả âm thanh của bạn cho một loại âm thanh nhất định vào một thành phần âm thanh riêng lẻ trong đó dữ liệu src là tất cả các mẫu của bạn trong một tệp âm thanh liền kề (có thể muốn có một khoảng im lặng để bạn có thể bắt và cắt các mẫu với thời gian chờ ít hơn nguy cơ chảy máu đến mẫu tiếp theo). Sau đó, tìm đến mẫu và chơi nó khi cần.

Nếu bạn cần nhiều hơn một trong số này để phát, bạn có thể tạo một thành phần âm thanh bổ sung có cùng src để nó được lưu trữ. Bây giờ, bạn thực sự có nhiều "bài hát". Bạn có thể sử dụng các nhóm bản nhạc với sơ đồ phân bổ tài nguyên yêu thích của mình như Round Robin, v.v.

Bạn cũng có thể chỉ định các tùy chọn khác như xếp hàng âm thanh vào bản nhạc để phát khi tài nguyên đó khả dụng hoặc cắt một mẫu hiện đang phát.



2

Tôi sẽ khuyên bạn nên sử dụng SoundJS , một thư viện mà tôi đã giúp phát triển. Nó cho phép bạn viết một cơ sở mã duy nhất hoạt động ở mọi nơi, với SoundJS chọn âm thanh web, âm thanh html hoặc âm thanh flash khi thích hợp.

Nó sẽ cho phép bạn làm tất cả những điều bạn muốn:

  • Chơi và trộn nhiều âm thanh,
  • Chơi cùng một mẫu nhiều lần, có thể phát lại chồng chéo
  • Phát lại mẫu bị gián đoạn tại bất kỳ điểm nào
  • phát tệp WAV có chứa (tùy thuộc vào hỗ trợ trình duyệt)

Mong rằng sẽ giúp.


thư viện đó khá tuyệt vời, tôi thực sự đào máy phát sfx. thời gian để tải xuống
RozzA

1

Không thể thực hiện chơi nhiều phát với một <audio>yếu tố duy nhất . Bạn cần sử dụng nhiều yếu tố cho việc này.


1

Tôi gặp phải điều này trong khi lập trình một trình tạo thẻ nhạc. Bắt đầu với các thư viện khác nhau nhưng mọi lúc mọi nơi đều có trục trặc. Độ trễ khi thực hiện âm thanh bình thường rất tệ, không có nhiều lần phát ... cuối cùng kết thúc bằng thư viện lowlag + soundmanager:

http://lowlag.alienbill.com/http://www.schillmania.com/projects/soundmanager2/

Bạn có thể kiểm tra việc thực hiện ở đây: http://musicbox.grit.it/

Tôi đã tạo các tệp wav + ogg để phát nhiều trình duyệt. Trình phát nhạc này hoạt động nhanh trên ipad, iphone, Nexus, mac, pc, ... hoạt động với tôi.


Đó là một ứng dụng hộp nhạc hay! Bạn có một kho git? Tôi có thể sử dụng nó với trẻ em của chúng tôi!
icarito

0

Tôi biết đây là một bản hack hoàn toàn nhưng nghĩ rằng tôi nên thêm thư viện âm thanh mã nguồn mở mẫu này mà tôi đã đặt trên github một lúc trước ...

https://github.com/run-time/jThump

Sau khi nhấp vào liên kết bên dưới, hãy nhập các phím hàng chủ để phát một đoạn nhạc blues (đồng thời nhập nhiều phím cùng lúc, v.v.)

Mẫu sử dụng thư viện jThump >> http://davealger.com/apps/jthump/

Về cơ bản, nó hoạt động bằng cách tạo <iframe>các phần tử vô hình tải một trang phát âm thanh trênReady ().

Điều này chắc chắn không lý tưởng nhưng bạn có thể +1 giải pháp này chỉ dựa trên sự sáng tạo (và thực tế là nó là nguồn mở và hoạt động trong bất kỳ trình duyệt nào tôi đã thử) Tôi hy vọng điều này sẽ cho người khác tìm kiếm ít nhất một số ý tưởng.

:)


Tại sao ai đó bỏ phiếu này? Có vẻ như một lựa chọn khả thi với tôi.
jtrick

Đây là một giải pháp khá hay nhưng tôi đã sử dụng thư viện này để tạo một trò chơi canvas html 5 mẫu để nó có thể hoạt động không kém ... trò chơi sử dụng thư viện này ở đây - beepbox.net
DaveAlger

0

Câu trả lời được chọn sẽ hoạt động trong mọi thứ trừ IE. Tôi đã viết một hướng dẫn về cách làm cho nó hoạt động trên trình duyệt chéo = http://www.andy-howard.com/how-to-play-sound-cross-browser-including-ie/index.html

Đây là chức năng tôi đã viết;

function playSomeSounds(soundPath)
 {

 var trident = !!navigator.userAgent.match(/Trident\/7.0/);
 var net = !!navigator.userAgent.match(/.NET4.0E/);
 var IE11 = trident && net
 var IEold = ( navigator.userAgent.match(/MSIE/i) ? true : false );
 if(IE11 || IEold){
 document.all.sound.src = soundPath;
 }
 else
 {
 var snd = new Audio(soundPath); // buffers automatically when created
 snd.play();
 }
 };

Bạn cũng cần thêm thẻ sau vào trang html:

<bgsound id="sound">

Cuối cùng, bạn có thể gọi hàm và chỉ cần đi qua đường dẫn ở đây:

playSomeSounds("sounds/welcome.wav");

0

Bạn luôn có thể thử AudioContextnó có hỗ trợ hạn chế nhưng đó là một phần của dự thảo hoạt động api âm thanh web . Nó có thể có giá trị nếu bạn dự định phát hành một cái gì đó trong tương lai. Và nếu bạn chỉ lập trình cho chrome và Firefox thì bạn là vàng.


0

var AudioContextFunc = window.AudioContext || window.webkitAudioContext;
var audioContext = new AudioContextFunc();
var player=new WebAudioFontPlayer();
var instrumVox,instrumApplause;
var drumClap,drumLowTom,drumHighTom,drumSnare,drumKick,drumCrash;
loadDrum(21,function(s){drumClap=s;});
loadDrum(30,function(s){drumLowTom=s;});
loadDrum(50,function(s){drumHighTom=s;});
loadDrum(15,function(s){drumSnare=s;});
loadDrum(5,function(s){drumKick=s;});
loadDrum(70,function(s){drumCrash=s;});
loadInstrument(594,function(s){instrumVox=s;});
loadInstrument(1367,function(s){instrumApplause=s;});
function loadDrum(n,callback){
  var info=player.loader.drumInfo(n);
  player.loader.startLoad(audioContext, info.url, info.variable);
  player.loader.waitLoad(function () {callback(window[info.variable])});
}
function loadInstrument(n,callback){
  var info=player.loader.instrumentInfo(n);
  player.loader.startLoad(audioContext, info.url, info.variable);
  player.loader.waitLoad(function () {callback(window[info.variable])});
}
function uhoh(){
  var when=audioContext.currentTime;
  var b=0.1;
  player.queueWaveTable(audioContext, audioContext.destination, instrumVox, when+b*0, 60, b*1);
  player.queueWaveTable(audioContext, audioContext.destination, instrumVox, when+b*3, 56, b*4);
}
function applause(){
  player.queueWaveTable(audioContext, audioContext.destination, instrumApplause, audioContext.currentTime, 54, 3);
}
function badumtss(){
  var when=audioContext.currentTime;
  var b=0.11;
  player.queueWaveTable(audioContext, audioContext.destination, drumSnare, when+b*0, drumSnare.zones[0].keyRangeLow, 3.5);
  player.queueWaveTable(audioContext, audioContext.destination, drumLowTom, when+b*0, drumLowTom.zones[0].keyRangeLow, 3.5);
  player.queueWaveTable(audioContext, audioContext.destination, drumSnare, when+b*1, drumSnare.zones[0].keyRangeLow, 3.5);
  player.queueWaveTable(audioContext, audioContext.destination, drumHighTom, when+b*1, drumHighTom.zones[0].keyRangeLow, 3.5);
  player.queueWaveTable(audioContext, audioContext.destination, drumSnare, when+b*3, drumSnare.zones[0].keyRangeLow, 3.5);
  player.queueWaveTable(audioContext, audioContext.destination, drumKick, when+b*3, drumKick.zones[0].keyRangeLow, 3.5);
  player.queueWaveTable(audioContext, audioContext.destination, drumCrash, when+b*3, drumCrash.zones[0].keyRangeLow, 3.5);
}
<script src='https://surikov.github.io/webaudiofont/npm/dist/WebAudioFontPlayer.js'></script>
<button onclick='badumtss();'>badumtss</button>
<button onclick='uhoh();'>uhoh</button>
<button onclick='applause();'>applause</button>
<br/><a href='https://github.com/surikov/webaudiofont'>More sounds</a>


0

API Web âm thanh là công cụ phù hợp cho công việc này. Có một chút công việc liên quan đến tải tập tin âm thanh và chơi nó. May mắn thay, có rất nhiều thư viện ngoài kia đơn giản hóa công việc. Quan tâm đến âm thanh, tôi cũng tạo ra một thư viện có tên là muỗi, bạn cũng có thể kiểm tra nó.

Hiện tại, nó chỉ hỗ trợ hiệu ứng âm thanh mờ dần và tôi đang làm việc trên những thứ khác như không gian 3D.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.