{"_id":"@awesome-cordova-library/nativeaudio","_rev":"1-fd177ef6cc84772f3b317f2dca36ba68","name":"@awesome-cordova-library/nativeaudio","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@awesome-cordova-library/nativeaudio","version":"1.0.0","description":"This Cordova / PhoneGap (3.5+) plugin enables concurrency (multi-channel playback), polyphony (multi-voice playback) and minimized latency (via caching) in audio-based applications, by leveraging native audio APIs. Designed for the use in HTML5-based cros","main":"lib/index.js","types":"lib/index.d.ts","keywords":["cordova","capacitor","ionic","javascript","mobile","audio","native audio"],"publishConfig":{"access":"public"},"author":{"name":"Jordan AZOULAY","email":"jazoulay@joazco.com","url":"https://github.com/joazco"},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git://github.com/joazco/awesome-cordova-library.git"},"bugs":{"url":"https://github.com/joazco/awesome-cordova-library/issues"},"homepage":"https://github.com/joazco/awesome-cordova-library","devDependencies":{"@types/jest":"^27.5.1","@types/react":"~17.0.21","jest":"^28.1.0","prettier":"^2.6.2","ts-jest":"^28.0.3","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.7.2"},"scripts":{"build":"rm -rf lib/ && tsc","build-yalc":"npm run build; yalc publish --push --private","test":"jest --config jestconfig.json","format":"prettier --write \"src/**/*.ts\"","lint":"tslint -p tsconfig.json","prepublish":"npm run format; npm run lint; npm test; npm run build"},"directories":{"lib":"lib"},"dependencies":{},"_id":"@awesome-cordova-library/nativeaudio@1.0.0","_nodeVersion":"14.15.1","_npmVersion":"8.5.2","dist":{"integrity":"sha512-N+iL/QkpFKEr6Rk+vHrIsZZBKQcSII+5/giFJTWv3tKvzlzf623Si3zOke0Zxj/skUcX04zpreVoWAVkNugdqQ==","shasum":"a318e3a8ec6e8262788169319cc5970e2d752bb6","tarball":"https://registry.npmjs.org/@awesome-cordova-library/nativeaudio/-/nativeaudio-1.0.0.tgz","fileCount":7,"unpackedSize":21031,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTmZZcWOQHNiqJke/8kAho/LL3VcShUwWseyyKlUugcQIhAO7swVtonBAzPQGEqpk3axFjzowCH18hySJfWbiJZXzW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinj9rACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqPMA/+LebCGGoPGfn7npba+/xu0WsJpfKUOXY5yBSGg/CTJEvFAr9I\r\nb8+CwSpesDL31NNizOuAxuEhd/4dCkZyP+utU5fxNdeAameslXc3woD8jeXr\r\nrd40n3gelKgIpav80yh4gta2VTzG5IBCXKNYbwUsh20xS/fqBeQ4iC+CaLVh\r\nuByRseUFSgc1xU70cWCLEak3EjEzhq9BUKdb7vYXMVgDVW1PYLzaGXHbcTt3\r\n2Qi5+zxnJF0w1pFoN6Xxv6++vXu/lB8+OLo/uWdvnT0mqFewO3EwkzK955la\r\nWIL62ux3JItVAg/xmWssbL64RWpfbQOGLNKuXcWqrjgXPZ0eXt8qmC/fQwhP\r\nuaFUKqgzqTcosCi0lvmcWIwv4wcNB3K4ae+uAoMWMlulktvMsqwtlQYWIEkU\r\nio/tYY3m/tiF5ywewnWNf9vhJZzs7TTIVnh/9zBWYbfAP5XKHX+COcyMbv1p\r\n2abTp49XDBZuNRlEdbLSl1CYwAyee3t8hB27NhIcY4GyIyVlpHBcZc7LHhuX\r\nxpTSdNuutpUQurQVoQsw5/PKJaa1b+v/+zCJwEY+O17Kflhzf8raZXtjpweq\r\n96nWjVle5t7T3/X7Q9dVJtbpTIDmFMvnk9U5NPpDCX+BdkMvugbkcw17VLVh\r\nkxWgVlQsfal+GxaRDLK7btjLZUuI5D/6ccc=\r\n=usIA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"joazco","email":"jazoulay@joazco.com"},"maintainers":[{"name":"joazco","email":"jazoulay@joazco.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nativeaudio_1.0.0_1654538091281_0.8245425312128996"},"_hasShrinkwrap":false},"1.0.1":{"name":"@awesome-cordova-library/nativeaudio","version":"1.0.1","description":"This Cordova / PhoneGap (3.5+) plugin enables concurrency (multi-channel playback), polyphony (multi-voice playback) and minimized latency (via caching) in audio-based applications, by leveraging native audio APIs. Designed for the use in HTML5-based cros","main":"lib/index.js","types":"lib/index.d.ts","keywords":["cordova","capacitor","ionic","javascript","mobile","audio","native audio"],"publishConfig":{"access":"public"},"author":{"name":"Jordan AZOULAY","email":"jazoulay@joazco.com","url":"https://github.com/joazco"},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git://github.com/joazco/awesome-cordova-library.git"},"bugs":{"url":"https://github.com/joazco/awesome-cordova-library/issues"},"homepage":"https://github.com/joazco/awesome-cordova-library","devDependencies":{"@types/jest":"^27.5.1","@types/react":"~17.0.21","jest":"^28.1.0","prettier":"^2.6.2","ts-jest":"^28.0.3","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.7.2"},"scripts":{"build":"rm -rf lib/ && tsc","build-yalc":"npm run build; yalc publish --push --private","test":"jest --config jestconfig.json","format":"prettier --write \"src/**/*.ts\"","lint":"tslint -p tsconfig.json","prepublish":"npm run format; npm run lint; npm test; npm run build"},"directories":{"lib":"lib"},"dependencies":{},"gitHead":"2a2b9cf007a870056251632315547e6a651d26a0","_id":"@awesome-cordova-library/nativeaudio@1.0.1","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-6RZP16behIM5VVQj4LrtOtBvHtr3PY0J44GSuVYJX+TdUqwfK7VWKxZ622KWemFEHFyUAWfulgMKCu4bFzTqbA==","shasum":"5e18a0763a77b4497dd7d69e062b04fe508971cc","tarball":"https://registry.npmjs.org/@awesome-cordova-library/nativeaudio/-/nativeaudio-1.0.1.tgz","fileCount":7,"unpackedSize":21602,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGT/gS0HQP+Jt5gOmRhfROdJofZAnJKbDoVUmEQMn5ZDAiABdjET5IjIMX0EtDXiNU1rn+seaFPLl02dF/NazzdX2w=="}]},"_npmUser":{"name":"joazco","email":"jazoulay@joazco.com"},"maintainers":[{"name":"joazco","email":"jazoulay@joazco.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nativeaudio_1.0.1_1694498888082_0.5301858260900252"},"_hasShrinkwrap":false}},"time":{"created":"2022-06-06T17:54:51.234Z","1.0.0":"2022-06-06T17:54:51.569Z","modified":"2023-09-12T06:08:08.507Z","1.0.1":"2023-09-12T06:08:08.329Z"},"maintainers":[{"name":"joazco","email":"jazoulay@joazco.com"}],"description":"This Cordova / PhoneGap (3.5+) plugin enables concurrency (multi-channel playback), polyphony (multi-voice playback) and minimized latency (via caching) in audio-based applications, by leveraging native audio APIs. Designed for the use in HTML5-based cros","homepage":"https://github.com/joazco/awesome-cordova-library","keywords":["cordova","capacitor","ionic","javascript","mobile","audio","native audio"],"repository":{"type":"git","url":"git://github.com/joazco/awesome-cordova-library.git"},"author":{"name":"Jordan AZOULAY","email":"jazoulay@joazco.com","url":"https://github.com/joazco"},"bugs":{"url":"https://github.com/joazco/awesome-cordova-library/issues"},"license":"SEE LICENSE IN LICENSE","readme":"---\nid: plugin-nativeaudio\ntitle: Nativeaudio\ntags:\n  - cordova\n  - capacitor\n  - ionic\n  - javascript\n  - typescript\n  - plugin\n  - mobile\n  - nativeaudio\n---\n\n# Nativeaudio\n\nThis Cordova / PhoneGap (3.5+) plugin enables concurrency (multi-channel playback), polyphony (multi-voice playback) and minimized latency (via caching) in audio-based applications, by leveraging native audio APIs. Designed for the use in HTML5-based cross-platform games and mobile/hybrid audio applications.\n\n[Online documentation](https://awesomecordovalibrary.com)\n\n[Github documentation](https://github.com/floatinghotpot/cordova-plugin-nativeaudio)\n\n## Installation\n\n### Cordova\n\n```sh\ncordova plugin add cordova-plugin-nativeaudio\nnpm install @awesome-cordova-library/nativeaudio\n```\n\n### Capacitor / Ionic\n\n```bash\nnpm install cordova-plugin-nativeaudio\nnpm install @awesome-cordova-library/nativeaudio\nnpx cap sync\n```\n\n## Vanilla\n\n### Declaration\n\n```typescript\nclass NativeAudio {\n  static preloadSimple(\n    id: string,\n    assetPath: string,\n    successCallback: () => void,\n    errorCallback: () => void\n  ): void;\n  static preloadComplex(\n    id: string,\n    assetPath: string,\n    volume: number,\n    voices: number,\n    delay: number,\n    successCallback: () => void,\n    errorCallback: () => void\n  ): void;\n  static play(\n    id: string,\n    successCallback: () => void,\n    errorCallback: () => void,\n    completeCallback: () => void\n  ): void;\n  static playWeb(\n    src: string,\n    isLoop?: boolean,\n    volume?: number\n  ): HTMLAudioElement;\n  static loop(\n    id: string,\n    successCallback: () => void,\n    errorCallback: () => void\n  ): void;\n  static stop(\n    id: string,\n    successCallback: () => void,\n    errorCallback: () => void\n  ): void;\n  static stopWeb(sound: HTMLAudioElement): void;\n  static unload(\n    id: string,\n    successCallback: () => void,\n    errorCallback: () => void\n  ): void;\n  static setVolumeForComplexAsset(\n    id: string,\n    volume: number,\n    successCallback: () => void,\n    errorCallback: () => void\n  ): void;\n}\n```\n\n### Usages\n\n```typescript\nimport NativeAudio from '@awesome-cordova-library/nativeaudio';\n// Loads an audio file into memory. Optimized for short clips / single shots (up to five seconds). Cannot be stopped / looped.\nNativeAudio.preloadSimple(\n  'uniq id',\n  'assets/sound.mp3',\n  () => console.log('success'),\n  () => console.error('fail'),\n);\n// Loads an audio file into memory. Optimized for background music / ambient sound. Uses highlevel native APIs with a larger footprint. (iOS: AVAudioPlayer). Can be stopped / looped and used with multiple voices. Can be faded in and out using the delay parameter.\nNativeAudio.preloadComplex(....);\n//Plays an audio asset.\nNativeAudio.play(....);\n// Plays an audio with HTMLAudioElement object.\nNativeAudio.playWeb(....);\n// Loops an audio asset infinitely - this only works for assets loaded via preloadComplex.\nNativeAudio.loop(....);\n// Stops an audio file. Only works for assets loaded via preloadComplex.\nNativeAudio.stop(....);\n// Stop sound from HTMLAudioElement object.\nNativeAudio.stopWeb(....);\n// Unloads an audio file from memory.\nNativeAudio.unload(....);\n// Changes the volume for preloaded complex assets.\nNativeAudio.setVolumeForComplexAsset(....);\n```\n\n## React\n\n### Declaration\n\n```typescript\nconst useNativeAudio: () => {\n  preloadSimple: (id: string, assetPath: string) => Promise<void>;\n  preloadComplex: (\n    id: string,\n    assetPath: string,\n    volume: number,\n    voices: number,\n    delay: number\n  ) => Promise<void>;\n  play: (id: string, completeCallback?: () => void) => Promise<void>;\n  playWeb: (src: string, isLoop?: boolean, volume?: number) => HTMLAudioElement;\n  loop: (id: string) => Promise<void>;\n  stop: (id: string) => Promise<void>;\n  stopWeb: (sound: HTMLAudioElement) => void;\n  unload: (id: string) => Promise<void>;\n  setVolumeForComplexAsset: (id: string, volume: number) => Promise<void>;\n};\n```\n\n### Usages\n\n```typescript\nimport { useEffect } from \"react\";\nimport useNativeAudio from \"@awesome-cordova-library/nativeaudio/lib/react\";\n\nfunction App() {\n  const {\n    playWeb,\n    stopWeb,\n    preloadSimple,\n    play,\n    stop,\n    loop,\n    preloadComplex,\n    setVolumeForComplexAsset,\n    unload,\n  } = useNativeAudio();\n\n  useEffect(() => {\n    preloadSimple(\"my sound\", \"assets/sounds/mysound.mp3\").then(() => {\n      play(\"my sound\").then(() => {\n        setTimeout(() => stop(\"my sound\"), 4000);\n      });\n    });\n  }, []);\n\n  return <div />;\n}\n```\n","readmeFilename":"README.md"}