| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import request from 'umi-request'
- const ac = new (window.AudioContext || (window as any).webkitAudioContext)()
- export type IList = any[]
- export default class Player {
- list:any []
- arrayBuffer: ArrayBuffer[] = []
- constructor (list:any []) {
- this.list = list
- }
- load() {
- const promises = this.list.map(item => request.get(item, {responseType: 'arrayBuffer'}))
- return Promise.all(promises)
- .then(res => this.arrayBuffer = res)
- }
- async play() {
- if (!this.arrayBuffer.length) {
- await this.load()
- }
- const decodedDatas = this.arrayBuffer.map(async item => {
- const data = await ac.decodeAudioData(item)
- return data
- })
- const sources = decodedDatas.map(async item => {
- const source = await ac.createBufferSource()
- source.buffer = await item
- source.connect(ac.destination)
- return source
- })
- for (const item of sources) {
- const source = await item
- source.playbackRate.value = 1.5
- source.start()
- console.log(source)
- }
- // await Promise.all(sources)
- // .then(res => await res)
- // console.log(sources)
- }
- }
|