Sonorous.js adalah perpustakaan audio JavaScript yang menyederhanakan pekerjaan dengan audio web, memungkinkan integrasi audio yang mudah ke dalam aplikasi web dan game. Sebagai abstraksi dari API WebAudio, Sonorous.js menawarkan kontrol yang lebih baik bagi mereka yang membutuhkannya, sekaligus menangani masalah lintas-browser untuk Anda.
oleh tim dari
kotak booming
Pengaduk Jalur
Master Senar
Lihat direktori examples/
repo untuk kode sumber.
Untuk memulai, jalankan npm install --save sonorous
.
Untuk menggunakan Sonorous.js, minta atau impor ke file Anda.
ES6
import Sonorous from 'sonorous';
JS Umum
const Sonorous = require('sonorous');
Sonorous adalah manajer yang menangani penambahan dan penghapusan sonor. Sonor dapat dianggap sebagai pembungkus satu file audio. Setiap sonor memiliki fungsinya sendiri, seperti play()
, pause()
, volume
, dll. Anda juga dapat mengatur properti global ( masterVolume
, muteAll
, dll) pada semua sonor melalui instance Sonorous.
Contoh:
let mySonor = Sonorous.addSonor('./test_audio/test_sound_1.mp3');
mySonor.play(); // begins to play test_sound_1.mp3
mySonor.volume = 0.5; // sets the volume of the sonor to 0.5
Sonorous.muteAll = true; // mutes all sonors
mySonor.stop(); // stops the playback of test_sound_1.mp3
Silakan lihat bagian API untuk lebih jelasnya.
Sonorous adalah seorang lajang, dan akan mengelola semua objek Sonor.
Sonor[]
(hanya baca)Array semua objek Sonor ditambahkan ke manajer ini.
AudioContext
(hanya baca)Mengembalikan konteks audio saat ini yang digunakan oleh Sonorous.
number
Ini adalah properti baca/tulis dan terhubung ke node masterGain, yang akan mengatur volume untuk semua objek Sonor. Nilai yang valid adalah antara 0 dan 1.
boolean
Ini adalah properti baca/tulis yang akan membisukan/mengaktifkan semua objek Sonor.
boolean
mengembalikan nilai benar jika WebAudio didukung, salah jika tidak.
Sonor
membuat objek Sonor dan mengembalikannya, jika berhasil.
Param | Jenis | Keterangan |
---|---|---|
src | string , string[] , SonorSrc , SonorSrc[] | Media yang dikaitkan dengan suara ini. Jika Anda meneruskan array dengan berbagai format, ini akan mengambil format pertama yang berfungsi dengan browser saat ini. Jika url sumber Anda tidak memiliki ekstensi, Anda dapat menentukannya secara manual menggunakan objek SonorSrc yang ditentukan di bawah. |
pilihan | object | Objek konfigurasi opsional. Lihat opsi di bawah. |
Opsi Konfigurasi untuk addSonor()
:
Pilihan | Jenis | Bawaan | Keterangan |
---|---|---|---|
pengenal | string | dihasilkan secara acak | ID unik. Satu akan dibuat untuk objek ini jika Anda tidak meneruskannya. |
pramuat | boolean | true | Akan mencoba memuat url secara otomatis jika benar. Jika salah, kode pemanggil harus memanggil load() secara eksplisit. |
volume | number | 1.0 | Volume awal suara. |
lingkaran | boolean | false | Tentukan apakah audio harus diputar selamanya. |
putar otomatis | boolean | false | Tentukan apakah audio harus segera diputar saat dimuat. |
meredam | boolean | false | Bisukan setelah dimuat. |
ukuran kolam renang | number | 1 | Jumlah total segmen audio yang tersedia untuk diputar. Meningkatkan jumlah ini memungkinkan Anda untuk mulai memainkan suara yang sama beberapa kali secara bersamaan, sebelum pemutaran awal selesai. |
optimalkanUntuk | string | 'time' | Bisa berupa 'time' atau 'memory' . Ini menentukan apakah buffer yang didekodekan akan di-cache atau tidak. Secara default, itu akan terjadi. Jika memori menjadi perhatian, setel ini ke 'memori' dan perkirakan akan ada sedikit penundaan saat kami memecahkan kode buffer sebelum pemutaran dapat dimulai. |
Milik | Jenis | Keterangan |
---|---|---|
url | string | Url sumber audio, tanpa ekstensi. |
format | string | Format yang ditentukan secara manual untuk sumber audio ini. |
Contoh:
let mySonor = Sonorous.addSonor('./test_audio/test_sound_1.mp3', {
id: 'myFirstSonor',
preload: false,
volume: 0.5,
poolSize: 3 });
let testSoundSonor = Sonorous.addSonor(
{
url: './test_audio/test_sound_2',
format: 'mp3'
},
{ id: 'test_sound_2'});
menghapus objek Sonor dari manajer. Ini akan membongkar dan menghancurkan suara tersebut, dan segera menghentikan semua proses yang terkait dengan suara tersebut.
menghapus objek sonor yang ada dan mengatur ulang konteks audio.
menghancurkan semua objek Sonor
Sonor
mengembalikan objek Sonor
Contoh:
Sonorous.addSonor('./test_audio/test_sound_1.mp3', { id: 'mySonorId'});
let mySonor = Sonorous.get('mySonorId');
boolean
kembalikan nilai true jika Sonorous memiliki Sonor yang cocok dengan id yang diteruskan
akan terpicu ketika audio tidak terkunci (melalui interaksi pengguna dengan halaman). Beberapa browser tidak mengizinkan pemutaran audio sebelum pengguna berinteraksi dengan halaman tersebut dengan cara tertentu. Peristiwa ini akan terpicu setelah audio dapat diputar secara bebas.
Modul ini berisi sebagian besar fungsi untuk mengontrol suara, termasuk mengatur volume, memutar, menjeda, dll. Jika AudioContext belum dibuka kuncinya (melalui isyarat pengguna, dll), semua tindakan akan masuk ke antrian. Tindakan ini akan segera dijalankan segera setelah AudioContext dibuka kuncinya dan buffer telah dimuat.
string
(hanya baca) Properti read-only yang mengembalikan ID unik untuk objek suara ini. Id secara opsional disediakan selama inisialisasi (lihat addSonor() Sonorous untuk informasi lebih lanjut). Jika tidak ada ID yang diberikan selama inisialisasi, string alfanumerik yang dihasilkan secara acak akan ditetapkan sebagai id. Sonorous dapat mengambil objek Sonor berdasarkan id, menggunakan fungsi Sonorous.get(id)
.
string
(hanya baca)Mengembalikan url untuk audio sumber objek ini.
boolean
(hanya baca)Mengembalikan nilai benar jika sonor disetel ke pramuat selama inisialisasi.
string
(hanya baca) Mencerminkan keadaan sonor yang dimuat. Bisa berupa 'loading'
, 'loaded'
, atau 'unloaded'
.
Contoh:
let mySonor = Sonorous.addSonor('./test_audio/test_sound_1.mp3', { preload: false });
console.log(mySonor.state); // prints out 'unloaded'
mySonor.load();
console.log(mySonor.state); // prints out 'loading'
number
(hanya baca)Mengembalikan durasi sonor. Perhatikan bahwa nilai ini hanya akan tersedia ketika sonor dimuat. Jika sonor dibongkar, ini akan mengembalikan 0.
boolean
(hanya baca)Mengembalikan nilai benar jika suara sedang diputar, salah jika tidak.
number
(hanya baca)Mengembalikan seberapa jauh pemutaran suara. Jika poolSize > 1, segmen audio aktif pertama akan digunakan untuk mengembalikan nilai ini.
number
Properti publik baca/tulis yang mengontrol jumlah total segmen audio di kumpulan. Tingkatkan ukuran kolam jika Anda ingin mulai memainkan suara yang sama secara bersamaan. Defaultnya adalah 1.
Setelah ukuran kumpulan bertambah, setter/getter akan berperilaku sebagai berikut: Setiap setter akan diterapkan ke semua segmen aktif. Setiap pengambil akan menggunakan segmen audio aktif pertama untuk mengembalikan informasi yang diminta. ("Segmen aktif" adalah segmen yang telah ditarik dari kumpulan, dan sedang digunakan.)
Contoh:
let mySonor = Sonorous.addSonor('./test_audio/test_sound_1.mp3');
mySonor.poolSize = 2;
mySonor.play();
setTimeout(() => { mySonor.play(); }, 1000); // will result in the same audio being played twice, with the second playback 1s behind the first one.
number
Properti publik baca/tulis yang mengontrol kecepatan pemutaran suara ini. Jika poolSize > 1, segmen audio aktif pertama akan digunakan untuk mengembalikan nilai ini.
boolean
Properti publik baca/tulis yang mengontrol apakah suara akan berulang atau tidak. Saat menyetel properti ini, properti ini akan diterapkan ke semua segmen aktif.
number
Properti publik baca/tulis yang mengontrol volume suara ini. Saat menyetel properti ini, properti ini akan diterapkan ke semua segmen aktif.
boolean
Properti publik baca/tulis yang mengontrol apakah suara dibisukan atau tidak. Saat menyetel properti ini, properti ini akan diterapkan ke semua segmen aktif.
akan memutar sumber audio. Jika sonor belum dimuat, sonor akan dimuat dan diputar setelah dimuat. Jika kumpulan segmen audio lebih besar dari 1, maka kami menarik segmen dari kumpulan sesuai kebutuhan. Sebuah "segmen aktif" adalah segmen yang telah ditarik dari kumpulan, dan sedang digunakan. Logika bermainnya adalah sebagai berikut:
if there are no active segments:
retrieve one from the pool and play it.
if there are active segments:
if none are currently playing:
play all active segments
else:
retrieve/play a segment from the pool
if there are no available segments in the pool:
do nothing and report an error
akan menjeda semua segmen audio yang aktif, namun tidak mengembalikannya ke kumpulan.
akan menghentikan semua segmen audio aktif dan mengembalikannya ke kumpulan.
akan memudarkan audio dari volume saat ini ke targetVolume, selama durasi pemudaran yang disediakan. Jika startTime disediakan dan lebih besar dari waktu audioContext saat ini, fade akan dimulai pada titik tersebut. Jika tidak, ini akan segera dimulai. Durasi fade harus dalam hitungan detik.
akan memindahkan pemutaran ke waktu yang berlalu (dalam detik).
akan memuat buffer dan menyiapkan segmen audio untuk diputar.
akan menghapus buffer dan mengembalikan semua segmen audio aktif ke kumpulan.
Objek Sonor adalah pemancar peristiwa (hidup/mati/sekali). Lihat daftar acara yang tersedia di bawah ini.
Akan terpicu saat suara dimuat
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
Akan terpicu saat permainan dimulai
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
Akan terpicu saat suara berhenti
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
Akan terpicu saat suara berhenti diputar
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
Akan terpicu saat suara mencapai akhir durasinya
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
Akan terpicu ketika Waktu saat ini telah diubah secara manual
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
mencariPosisi | Nomor | Kode waktu yang diinginkan Sonor |
Akan terpicu ketika volume suara berubah (melalui volume atau mute)
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
Volume baru | Nomor | Volume baru yang ditetapkan Sonor |
Akan terpicu ketika kecepatan pemutaran berubah
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
Kecepatan Pemutaran baru | Nomor | Kecepatan pemutaran baru yang diatur Sonor |
Akan terpicu saat fade berakhir
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
Akan terpicu jika terjadi kesalahan selama operasi Sonor
Param | Jenis | Keterangan |
---|---|---|
sonorObj | nyaring | Contoh Sonor yang dioperasi |
kesalahan | Rangkaian | Pesan kesalahan |
Setelah Anda memiliki repo secara lokal, jalankan yarn install
untuk menginstal dependensi.
npm run build
akan membuat versi Sonorous yang tidak diminifikasi.npm run build:production
akan membuat versi Sonorous yang diperkecil dan di-gzip.npm run start-dev
akan membangun Sonorous yang tidak diminifikasi dan membuka halaman html sederhana dengan kontrol audio. Anda dapat menguji sebagian besar fungsi Sonorous secara manual melalui sana.npm run test
akan menjalankan semua pengujian unit. (Tes unit ditulis menggunakan Jest)Kami secara aktif menyambut permintaan penarikan dan mengusulkan perubahan pada basis kode. Silakan ikuti langkah-langkah ini saat berkontribusi.
develop
, dan ikuti panduan Berkembang Secara Lokal agar dapat dibangun.Sonorous didukung di mana pun WebAudio berada. Klik di sini untuk daftar lengkap.