dev@13: import {Component, OnInit, ViewChild, ElementRef} from '@angular/core'; dev@13: dev@15: interface AudioContextConstructor { dev@15: new(): AudioContext dev@15: } dev@15: dev@15: interface WindowAudioContext { dev@15: AudioContext?: AudioContextConstructor; dev@15: webkitAudioContext?: AudioContextConstructor dev@15: } dev@15: dev@13: @Component({ dev@13: selector: 'app-audio-file-open', dev@13: templateUrl: './audio-file-open.component.html', dev@13: styleUrls: ['./audio-file-open.component.css'] dev@13: }) dev@13: export class AudioFileOpenComponent implements OnInit { dev@13: dev@13: @ViewChild('open') open: ElementRef; dev@13: dev@15: private audioContext: AudioContext; dev@15: dev@15: constructor() { dev@15: // TODO make a service which provides the AudioContext? dev@15: const factory: WindowAudioContext = (window as WindowAudioContext); dev@15: this.audioContext = new (factory.AudioContext || factory.webkitAudioContext)(); dev@15: } dev@13: dev@13: ngOnInit() { dev@13: } dev@13: dev@15: decodeAudio(files: FileList) { dev@15: if (files.length > 0) { dev@15: const reader: FileReader = new FileReader(); dev@15: reader.onload = (event: any) => { dev@15: this.audioContext.decodeAudioData(event.target.result, buffer => { dev@15: console.log(buffer); dev@15: }); dev@15: }; dev@15: reader.readAsArrayBuffer(files[0]); dev@15: } dev@13: } dev@13: dev@13: openAudioDialog() { dev@13: this.open.nativeElement.click(); dev@13: } dev@13: }