Current section
Files
Jump to
Current section
Files
src/wechat/audio.gleam
//// audio module provides audio API bindings
//// details in [wechat document](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/)
////
import gleam/javascript/promise.{type Promise}
import wechat/object.{
type WechatResultCallback, type JsObject, type WechatCallback, type WechatResult,
}
/// InnerAudioContext type
///
pub type InnerAudioContext
/// `wx.createInnerAudioContext`
/// Create inner audio context
///
@external(javascript, "../wechat_media_ffi.mjs", "createInnerAudioContext")
pub fn create_inner_audio_context() -> InnerAudioContext
/// `wx.playVoice`
/// Play voice
///
@external(javascript, "../wechat_media_ffi.mjs", "playVoiceAsync")
pub fn play_voice(
file_path fp: String,
duration d: Int,
complete cb: WechatCallback,
) -> Promise(WechatResult)
/// `wx.pauseVoice`
/// Pause voice
///
@external(javascript, "../wechat_media_ffi.mjs", "pauseVoiceAsync")
pub fn pause_voice(complete cb: WechatCallback) -> Promise(WechatResult)
/// `wx.stopVoice`
/// Stop voice
///
@external(javascript, "../wechat_media_ffi.mjs", "stopVoiceAsync")
pub fn stop_voice(complete cb: WechatCallback) -> Promise(WechatResult)
/// AudioContext type
///
pub type AudioContext
/// `wx.createAudioContext`
/// Create audio context
///
@external(javascript, "../wechat_media_ffi.mjs", "createAudioContext")
pub fn create_audio_context(id s: String) -> AudioContext
/// InnerAudioContext.setSrc
///
@external(javascript, "../wechat_media_ffi.mjs", "setInnerAudioSrc")
pub fn set_inner_audio_src(ctx: InnerAudioContext, src s: String) -> Nil
/// InnerAudioContext.play
///
@external(javascript, "../wechat_media_ffi.mjs", "innerAudioPlay")
pub fn inner_audio_play(ctx: InnerAudioContext) -> Nil
/// InnerAudioContext.pause
///
@external(javascript, "../wechat_media_ffi.mjs", "innerAudioPause")
pub fn inner_audio_pause(ctx: InnerAudioContext) -> Nil
/// InnerAudioContext.stop
///
@external(javascript, "../wechat_media_ffi.mjs", "innerAudioStop")
pub fn inner_audio_stop(ctx: InnerAudioContext) -> Nil
/// InnerAudioContext.seek
///
@external(javascript, "../wechat_media_ffi.mjs", "innerAudioSeek")
pub fn inner_audio_seek(ctx: InnerAudioContext, position p: Float) -> Nil
/// InnerAudioContext.destroy
///
@external(javascript, "../wechat_media_ffi.mjs", "innerAudioDestroy")
pub fn inner_audio_destroy(ctx: InnerAudioContext) -> Nil
/// AudioContext.setSrc
///
@external(javascript, "../wechat_media_ffi.mjs", "setAudioSrc")
pub fn set_audio_src(ctx: AudioContext, src s: String) -> Nil
/// AudioContext.play
///
@external(javascript, "../wechat_media_ffi.mjs", "audioPlay")
pub fn audio_play(ctx: AudioContext) -> Nil
/// AudioContext.pause
///
@external(javascript, "../wechat_media_ffi.mjs", "audioPause")
pub fn audio_pause(ctx: AudioContext) -> Nil
/// AudioContext.seek
///
@external(javascript, "../wechat_media_ffi.mjs", "audioSeek")
pub fn audio_seek(ctx: AudioContext, position p: Float) -> Nil
/// InnerAudioContext.onPlay
///
@external(javascript, "../wechat_media_ffi.mjs", "onInnerAudioPlay")
pub fn on_inner_audio_play(ctx: InnerAudioContext, cb: WechatCallback) -> Nil
/// InnerAudioContext.onPause
///
@external(javascript, "../wechat_media_ffi.mjs", "onInnerAudioPause")
pub fn on_inner_audio_pause(ctx: InnerAudioContext, cb: WechatCallback) -> Nil
/// InnerAudioContext.onStop
///
@external(javascript, "../wechat_media_ffi.mjs", "onInnerAudioStop")
pub fn on_inner_audio_stop(ctx: InnerAudioContext, cb: WechatCallback) -> Nil
/// InnerAudioContext.onEnded
///
@external(javascript, "../wechat_media_ffi.mjs", "onInnerAudioEnded")
pub fn on_inner_audio_ended(ctx: InnerAudioContext, cb: WechatCallback) -> Nil
/// InnerAudioContext.onError
///
@external(javascript, "../wechat_media_ffi.mjs", "onInnerAudioError")
pub fn on_inner_audio_error(ctx: InnerAudioContext, cb: WechatResultCallback) -> Nil
/// InnerAudioContext.onTimeUpdate
///
@external(javascript, "../wechat_media_ffi.mjs", "onInnerAudioTimeUpdate")
pub fn on_inner_audio_time_update(
ctx: InnerAudioContext,
cb: WechatResultCallback,
) -> Nil
/// WebAudioContext type
///
pub type WebAudioContext
/// `wx.createWebAudioContext`
/// Create WebAudio context
///
@external(javascript, "../wechat_media_ffi.mjs", "createWebAudioContext")
pub fn create_web_audio_context() -> WebAudioContext
/// `WebAudioContext.createAnalyser`
/// Create analyser node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateAnalyser")
pub fn web_audio_create_analyser(wac: WebAudioContext) -> JsObject
/// `WebAudioContext.createBiquadFilter`
/// Create biquad filter node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateBiquadFilter")
pub fn web_audio_create_biquad_filter(wac: WebAudioContext) -> JsObject
/// `WebAudioContext.createBuffer`
/// Create audio buffer
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateBuffer")
pub fn web_audio_create_buffer(
wac: WebAudioContext,
num_channels nc: Int,
length l: Int,
sample_rate sr: Float,
) -> JsObject
/// `WebAudioContext.createBufferSource`
/// Create buffer source node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateBufferSource")
pub fn web_audio_create_buffer_source(wac: WebAudioContext) -> JsObject
/// `WebAudioContext.createChannelMerger`
/// Create channel merger node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateChannelMerger")
pub fn web_audio_create_channel_merger(
wac: WebAudioContext,
inputs i: Int,
) -> JsObject
/// `WebAudioContext.createChannelSplitter`
/// Create channel splitter node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateChannelSplitter")
pub fn web_audio_create_channel_splitter(
wac: WebAudioContext,
outputs o: Int,
) -> JsObject
/// `WebAudioContext.createConstantSource`
/// Create constant source node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateConstantSource")
pub fn web_audio_create_constant_source(wac: WebAudioContext) -> JsObject
/// `WebAudioContext.createDelay`
/// Create delay node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateDelay")
pub fn web_audio_create_delay(
wac: WebAudioContext,
max_delay md: Float,
) -> JsObject
/// `WebAudioContext.createDynamicsCompressor`
/// Create dynamics compressor node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateDynamicsCompressor")
pub fn web_audio_create_dynamics_compressor(wac: WebAudioContext) -> JsObject
/// `WebAudioContext.createGain`
/// Create gain node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateGain")
pub fn web_audio_create_gain(wac: WebAudioContext) -> JsObject
/// `WebAudioContext.createIIRFilter`
/// Create IIR filter node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateIIRFilter")
pub fn web_audio_create_iir_filter(
wac: WebAudioContext,
feedforward ff: JsObject,
feedback fb: JsObject,
) -> JsObject
/// `WebAudioContext.createOscillator`
/// Create oscillator node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateOscillator")
pub fn web_audio_create_oscillator(wac: WebAudioContext) -> JsObject
/// `WebAudioContext.createPanner`
/// Create panner node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreatePanner")
pub fn web_audio_create_panner(wac: WebAudioContext) -> JsObject
/// `WebAudioContext.createPeriodicWave`
/// Create periodic wave
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreatePeriodicWave")
pub fn web_audio_create_periodic_wave(
wac: WebAudioContext,
options o: JsObject,
) -> JsObject
/// `WebAudioContext.createScriptProcessor`
/// Create script processor node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateScriptProcessor")
pub fn web_audio_create_script_processor(
wac: WebAudioContext,
buffer_size bs: Int,
num_inputs ni: Int,
num_outputs no: Int,
) -> JsObject
/// `WebAudioContext.createWaveShaper`
/// Create wave shaper node
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioCreateWaveShaper")
pub fn web_audio_create_wave_shaper(
wac: WebAudioContext,
curve c: JsObject,
) -> JsObject
/// `WebAudioContext.decodeAudioData`
/// Decode audio data
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioDecodeAudioData")
pub fn web_audio_decode_audio_data(
wac: WebAudioContext,
array_buffer ab: JsObject,
complete cb: WechatCallback,
) -> Promise(WechatResult)
/// `WebAudioContext.close`
/// Close WebAudio context
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioClose")
pub fn web_audio_close(wac: WebAudioContext) -> Nil
/// `WebAudioContext.resume`
/// Resume WebAudio context
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioResume")
pub fn web_audio_resume(wac: WebAudioContext) -> Nil
/// `WebAudioContext.suspend`
/// Suspend WebAudio context
///
@external(javascript, "../wechat_media_ffi.mjs", "webAudioSuspend")
pub fn web_audio_suspend(wac: WebAudioContext) -> Nil