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@172
|
24 import {NotebookFeedComponent} from "./notebook-feed/notebook-feed.component";
|
dev@172
|
25 import {AnalysisItemComponent} from "./analysis-item/analysis-item.component";
|
dev@31
|
26
|
dev@93
|
27 export function createAudioContext(): AudioContext {
|
dev@31
|
28 return new (
|
dev@31
|
29 (window as any).AudioContext
|
dev@31
|
30 || (window as any).webkitAudioContext
|
dev@31
|
31 )();
|
dev@31
|
32 }
|
angular-cli@0
|
33
|
dev@94
|
34 export function createAudioElement(): HTMLAudioElement {
|
dev@94
|
35 return new Audio();
|
dev@94
|
36 }
|
dev@94
|
37
|
dev@135
|
38 export function createAudioInputProvider(): AudioInputProvider {
|
dev@135
|
39 if (navigator.mediaDevices &&
|
dev@135
|
40 typeof navigator.mediaDevices.getUserMedia === 'function') {
|
dev@135
|
41 return () => navigator.mediaDevices.getUserMedia(
|
dev@135
|
42 {audio: true, video: false}
|
dev@135
|
43 );
|
dev@135
|
44 } else {
|
dev@135
|
45 return () => Promise.reject('Recording is not supported in this browser.');
|
dev@135
|
46 }
|
dev@135
|
47 }
|
dev@135
|
48
|
dev@135
|
49 declare const MediaRecorder: {
|
dev@135
|
50 prototype: IMediaRecorder;
|
dev@135
|
51 new(stream: MediaStream,
|
dev@135
|
52 options?: MediaRecorderOptions): IMediaRecorder;
|
dev@135
|
53 isTypeSupported(mimeType: string): boolean;
|
dev@135
|
54 };
|
dev@135
|
55
|
dev@135
|
56 export function createMediaRecorderFactory(): MediaRecorderConstructor {
|
dev@135
|
57 if (typeof MediaRecorder !== 'undefined') {
|
dev@135
|
58 return MediaRecorder;
|
dev@135
|
59 } else {
|
dev@135
|
60 return ThrowingMediaRecorder;
|
dev@135
|
61 }
|
dev@135
|
62 }
|
dev@135
|
63
|
angular-cli@0
|
64 @NgModule({
|
angular-cli@0
|
65 declarations: [
|
dev@1
|
66 AppComponent,
|
dev@13
|
67 WaveformComponent,
|
dev@21
|
68 AudioFileOpenComponent,
|
dev@44
|
69 PlaybackControlComponent,
|
dev@135
|
70 RecordingControlComponent,
|
dev@115
|
71 FeatureExtractionMenuComponent,
|
dev@172
|
72 ProgressSpinnerComponent,
|
dev@172
|
73 AnalysisItemComponent,
|
dev@172
|
74 NotebookFeedComponent
|
angular-cli@0
|
75 ],
|
angular-cli@0
|
76 imports: [
|
angular-cli@0
|
77 BrowserModule,
|
angular-cli@0
|
78 FormsModule,
|
dev@3
|
79 HttpModule,
|
dev@89
|
80 MaterialModule
|
angular-cli@0
|
81 ],
|
dev@1
|
82 providers: [
|
dev@94
|
83 {provide: HTMLAudioElement, useFactory: createAudioElement}, // TODO use something more generic than HTMLAudioElement
|
dev@94
|
84 {provide: 'AudioContext', useFactory: createAudioContext}, // use a string token, Safari doesn't seem to like AudioContext
|
dev@40
|
85 AudioPlayerService,
|
dev@135
|
86 {provide: 'AudioInputProvider', useFactory: createAudioInputProvider},
|
dev@135
|
87 AudioRecorderService,
|
dev@70
|
88 FeatureExtractionService,
|
dev@135
|
89 {provide: 'MediaRecorderFactory', useFactory: createMediaRecorderFactory},
|
dev@78
|
90 {provide: 'PiperRepoUri', useValue: 'assets/remote-plugins.json'}
|
dev@1
|
91 ],
|
angular-cli@0
|
92 bootstrap: [AppComponent]
|
angular-cli@0
|
93 })
|
dev@1
|
94 export class AppModule {
|
dev@1
|
95
|
dev@1
|
96 }
|