Mercurial > hg > ugly-duckling
annotate src/app/audio-file-open/audio-file-open.component.ts @ 15:0571cf863026
Hack into the component the decoding of the chosen audio file, this needs refactoring and actually thinking about. Now, how to get the AudioBuffer to the waveform component?
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Thu, 27 Oct 2016 14:44:37 +0100 |
parents | b12e78d6185e |
children | 7e3ab6f8792f |
rev | line source |
---|---|
dev@13 | 1 import {Component, OnInit, ViewChild, ElementRef} from '@angular/core'; |
dev@13 | 2 |
dev@15 | 3 interface AudioContextConstructor { |
dev@15 | 4 new(): AudioContext |
dev@15 | 5 } |
dev@15 | 6 |
dev@15 | 7 interface WindowAudioContext { |
dev@15 | 8 AudioContext?: AudioContextConstructor; |
dev@15 | 9 webkitAudioContext?: AudioContextConstructor |
dev@15 | 10 } |
dev@15 | 11 |
dev@13 | 12 @Component({ |
dev@13 | 13 selector: 'app-audio-file-open', |
dev@13 | 14 templateUrl: './audio-file-open.component.html', |
dev@13 | 15 styleUrls: ['./audio-file-open.component.css'] |
dev@13 | 16 }) |
dev@13 | 17 export class AudioFileOpenComponent implements OnInit { |
dev@13 | 18 |
dev@13 | 19 @ViewChild('open') open: ElementRef; |
dev@13 | 20 |
dev@15 | 21 private audioContext: AudioContext; |
dev@15 | 22 |
dev@15 | 23 constructor() { |
dev@15 | 24 // TODO make a service which provides the AudioContext? |
dev@15 | 25 const factory: WindowAudioContext = (window as WindowAudioContext); |
dev@15 | 26 this.audioContext = new (factory.AudioContext || factory.webkitAudioContext)(); |
dev@15 | 27 } |
dev@13 | 28 |
dev@13 | 29 ngOnInit() { |
dev@13 | 30 } |
dev@13 | 31 |
dev@15 | 32 decodeAudio(files: FileList) { |
dev@15 | 33 if (files.length > 0) { |
dev@15 | 34 const reader: FileReader = new FileReader(); |
dev@15 | 35 reader.onload = (event: any) => { |
dev@15 | 36 this.audioContext.decodeAudioData(event.target.result, buffer => { |
dev@15 | 37 console.log(buffer); |
dev@15 | 38 }); |
dev@15 | 39 }; |
dev@15 | 40 reader.readAsArrayBuffer(files[0]); |
dev@15 | 41 } |
dev@13 | 42 } |
dev@13 | 43 |
dev@13 | 44 openAudioDialog() { |
dev@13 | 45 this.open.nativeElement.click(); |
dev@13 | 46 } |
dev@13 | 47 } |