1
1
import { Injectable } from '@angular/core' ;
2
- import { Sample } from '../../domain /sample' ;
2
+ import { Sample } from './sample' ;
3
3
import { Track } from '../../domain/track' ;
4
4
import { AudioFilesService } from "../files/audio-files.service" ;
5
5
import { SoundGeneratorService } from "./sound-generator.service" ;
@@ -9,17 +9,21 @@ import {LoadingBarService} from '@ngx-loading-bar/core';
9
9
providedIn : 'root'
10
10
} )
11
11
export class SoundService {
12
- static maxBpm = 1300 ;
13
- static minBpm = 30 ;
12
+ private readonly audioFilesService = new AudioFilesService ( ) ;
13
+ private readonly context : AudioContext ;
14
+
15
+ static readonly maxBpm = 1300 ;
16
+ static readonly minBpm = 30 ;
17
+
14
18
bpm : number = 120 ;
15
19
isPlaying : boolean = false ;
16
20
index : number = 0 ;
17
- private samples : Sample [ ] = [ ] ;
18
- private context : AudioContext ;
19
- private tracks : Track [ ] = [ ] ;
20
- private playbackSource : AudioBufferSourceNode ;
21
+
22
+ private samples : Array < Sample > = [ ] ;
23
+ private tracks : Array < Track > = [ ] ;
24
+
21
25
private stepNumber : number = 16 ;
22
- private audioFilesService = new AudioFilesService ( ) ;
26
+ private playbackSource : AudioBufferSourceNode ;
23
27
private loopBuffer : AudioBuffer | null = null ;
24
28
25
29
constructor (
@@ -98,8 +102,8 @@ export class SoundService {
98
102
this . bpm = bpm ;
99
103
}
100
104
101
- setTracks ( tracks : Track [ ] ) {
102
- this . tracks = tracks ;
105
+ setTracks ( tracks : readonly Track [ ] ) {
106
+ this . tracks = [ ... tracks ] ;
103
107
const trackNames = tracks . map ( x => x . fileName ) ;
104
108
this . loadTracks ( trackNames ) ;
105
109
}
0 commit comments