angular-cli@0
|
1 import { BrowserModule } from '@angular/platform-browser';
|
dev@70
|
2 import {NgModule} from '@angular/core';
|
angular-cli@0
|
3 import { FormsModule } from '@angular/forms';
|
angular-cli@0
|
4 import { HttpModule } from '@angular/http';
|
angular-cli@0
|
5
|
angular-cli@0
|
6 import { AppComponent } from './app.component';
|
dev@31
|
7 import { MaterialModule } from "@angular/material";
|
dev@5
|
8 import { WaveformComponent } from './waveform/waveform.component';
|
dev@13
|
9 import { AudioFileOpenComponent } from './audio-file-open/audio-file-open.component';
|
dev@21
|
10 import { PlaybackControlComponent } from './playback-control/playback-control.component';
|
dev@37
|
11 import { AudioPlayerService } from "./services/audio-player/audio-player.service";
|
dev@40
|
12 import { FeatureExtractionService } from "./services/feature-extraction/feature-extraction.service";
|
dev@44
|
13 import { FeatureExtractionMenuComponent } from "./feature-extraction-menu/feature-extraction-menu.component";
|
dev@115
|
14 import { ProgressSpinnerComponent } from "./progress-spinner/progress-spinner.component";
|
dev@135
|
15 import {
|
dev@135
|
16 AudioRecorderService,
|
dev@135
|
17 AudioInputProvider,
|
dev@135
|
18 MediaRecorderConstructor,
|
dev@135
|
19 MediaRecorder as IMediaRecorder,
|
dev@135
|
20 MediaRecorderOptions,
|
dev@135
|
21 ThrowingMediaRecorder,
|
dev@135
|
22 } from "./services/audio-recorder/audio-recorder.service";
|
dev@135
|
23 import {RecordingControlComponent} from "./recording-control/recording-control.component";
|
dev@31
|
24
|
dev@93
|
25 export function createAudioContext(): AudioContext {
|
dev@31
|
26 return new (
|
dev@31
|
27 (window as any).AudioContext
|
dev@31
|
28 || (window as any).webkitAudioContext
|
dev@31
|
29 )();
|
dev@31
|
30 }
|
angular-cli@0
|
31
|
dev@94
|
32 export function createAudioElement(): HTMLAudioElement {
|
dev@94
|
33 return new Audio();
|
dev@94
|
34 }
|
dev@94
|
35
|
dev@135
|
36 export function createAudioInputProvider(): AudioInputProvider {
|
dev@135
|
37 if (navigator.mediaDevices &&
|
dev@135
|
38 typeof navigator.mediaDevices.getUserMedia === 'function') {
|
dev@135
|
39 return () => navigator.mediaDevices.getUserMedia(
|
dev@135
|
40 {audio: true, video: false}
|
dev@135
|
41 );
|
dev@135
|
42 } else {
|
dev@135
|
43 return () => Promise.reject('Recording is not supported in this browser.');
|
dev@135
|
44 }
|
dev@135
|
45 }
|
dev@135
|
46
|
dev@135
|
47 declare const MediaRecorder: {
|
dev@135
|
48 prototype: IMediaRecorder;
|
dev@135
|
49 new(stream: MediaStream,
|
dev@135
|
50 options?: MediaRecorderOptions): IMediaRecorder;
|
dev@135
|
51 isTypeSupported(mimeType: string): boolean;
|
dev@135
|
52 };
|
dev@135
|
53
|
dev@135
|
54 export function createMediaRecorderFactory(): MediaRecorderConstructor {
|
dev@135
|
55 if (typeof MediaRecorder !== 'undefined') {
|
dev@135
|
56 return MediaRecorder;
|
dev@135
|
57 } else {
|
dev@135
|
58 return ThrowingMediaRecorder;
|
dev@135
|
59 }
|
dev@135
|
60 }
|
dev@135
|
61
|
angular-cli@0
|
62 @NgModule({
|
angular-cli@0
|
63 declarations: [
|
dev@1
|
64 AppComponent,
|
dev@13
|
65 WaveformComponent,
|
dev@21
|
66 AudioFileOpenComponent,
|
dev@44
|
67 PlaybackControlComponent,
|
dev@135
|
68 RecordingControlComponent,
|
dev@115
|
69 FeatureExtractionMenuComponent,
|
dev@115
|
70 ProgressSpinnerComponent
|
angular-cli@0
|
71 ],
|
angular-cli@0
|
72 imports: [
|
angular-cli@0
|
73 BrowserModule,
|
angular-cli@0
|
74 FormsModule,
|
dev@3
|
75 HttpModule,
|
dev@89
|
76 MaterialModule
|
angular-cli@0
|
77 ],
|
dev@1
|
78 providers: [
|
dev@94
|
79 {provide: HTMLAudioElement, useFactory: createAudioElement}, // TODO use something more generic than HTMLAudioElement
|
dev@94
|
80 {provide: 'AudioContext', useFactory: createAudioContext}, // use a string token, Safari doesn't seem to like AudioContext
|
dev@40
|
81 AudioPlayerService,
|
dev@135
|
82 {provide: 'AudioInputProvider', useFactory: createAudioInputProvider},
|
dev@135
|
83 AudioRecorderService,
|
dev@70
|
84 FeatureExtractionService,
|
dev@135
|
85 {provide: 'MediaRecorderFactory', useFactory: createMediaRecorderFactory},
|
dev@78
|
86 {provide: 'PiperRepoUri', useValue: 'assets/remote-plugins.json'}
|
dev@1
|
87 ],
|
angular-cli@0
|
88 bootstrap: [AppComponent]
|
angular-cli@0
|
89 })
|
dev@1
|
90 export class AppModule {
|
dev@1
|
91
|
dev@1
|
92 }
|