File

src/app/services/player.service.ts

Index

Properties
Methods

Constructor

constructor(effectServ: EffectsService, eqServ: EQService)
Parameters :
Name Type Optional
effectServ EffectsService No
eqServ EQService No

Methods

activateEffect
activateEffect(deck: , i: )
Parameters :
Name Optional
deck No
i No
Returns : void
adjustHeight
adjustHeight(deck: , height: )
Parameters :
Name Optional
deck No
height No
Returns : void
applyEffects
applyEffects()
Returns : void
createLoop
createLoop(deck: , start: , end: )
Parameters :
Name Optional
deck No
start No
end No
Returns : any
equalizer
equalizer()
Returns : any
getCurrentTime
getCurrentTime(deck: )
Parameters :
Name Optional
deck No
Returns : any
getDuration
getDuration(deck: )
Parameters :
Name Optional
deck No
Returns : any
getInstance
getInstance(deck: )
Parameters :
Name Optional
deck No
Returns : any
isPlaying
isPlaying(deck: )
Parameters :
Name Optional
deck No
Returns : any
load
load(deck: , song: )
Parameters :
Name Optional
deck No
song No
Returns : void
on
on(deck: , event: , callback: )
Parameters :
Name Optional
deck No
event No
callback No
Returns : void
playFromPosition
playFromPosition(deck: , start: )
Parameters :
Name Optional
deck No
start No
Returns : void
playPause
playPause(deck: )
Parameters :
Name Optional
deck No
Returns : void
save
save(deck: , wavesurfer: )
Parameters :
Name Optional
deck No
wavesurfer No
Returns : void
saveEffects
saveEffects(deck: , i: , effect: )
Parameters :
Name Optional
deck No
i No
effect No
Returns : void
saveEQ
saveEQ(bass: , mid: , trebble: , deck: )
Parameters :
Name Optional
bass No
mid No
trebble No
deck No
Returns : void
setPitch
setPitch(deck: , playback: )
Parameters :
Name Optional
deck No
playback No
Returns : void
setVolume
setVolume(deck: , volume: )
Parameters :
Name Optional
deck No
volume No
Returns : void

Properties

activeEffects
activeEffects: []
Type : []
Default value : [[], []]
deck
deck: any[]
Type : any[]
Default value : [null, null]
deck$
deck$: []
Type : []
Default value : [this.deckLoader[0].asObservable(), this.deckLoader[1].asObservable()]
deckLoader
deckLoader: []
Type : []
Default value : [new Subject(), new Subject()]
deckNum
deckNum: number
Type : number
Default value : 2
effectLoader
effectLoader: []
Type : []
Default value : [new Subject(), new Subject()]
effects
effects: []
Type : []
Default value : [[null, null, null, null, null, null], [null, null, null, null, null, null]]
effects$
effects$: []
Type : []
Default value : [this.effectLoader[0].asObservable(), this.effectLoader[1].asObservable()]
effectsNum
effectsNum: number
Type : number
Default value : 6
eq
eq: []
Type : []
Default value : [null, null]
eqEffect
eqEffect: any
Type : any
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { EffectsService } from './effects.service';
import { EQService } from './eq.service';

@Injectable({
  providedIn: 'root'
})
export class PlayerService {
  deckLoader = [new Subject(), new Subject()];
  deck$ = [this.deckLoader[0].asObservable(), this.deckLoader[1].asObservable()];
  effectLoader = [new Subject(), new Subject()];
  effects$ = [this.effectLoader[0].asObservable(), this.effectLoader[1].asObservable()];
  deck: any[] = [null, null];
  eq = [null, null];
  eqEffect: any;
  effectsNum = 6;
  deckNum = 2;
  effects = [[null, null, null, null, null, null], [null, null, null, null, null, null]];
  activeEffects = [[], []];
  constructor(private effectServ: EffectsService, private eqServ: EQService) {
    for (let i = 0; i < this.effectsNum; i++) {
      this.saveEffects(0, i, this.effectServ.getEffects()[i]);
      this.saveEffects(1, i, this.effectServ.getEffects()[i]);
    }
  }
  save(deck, wavesurfer) {
    this.deck[deck] = wavesurfer;
    this.deckLoader[deck].next(this.deck[deck]);
    this.eqEffect = this.equalizer();
    this.applyEffects();
  }
  getInstance(deck) {
    return this.deck[deck];
  }
  setVolume(deck, volume) {
    this.deck[deck].setVolume(volume);
  }
  setPitch(deck, playback) {
    this.deck[deck].setPlaybackRate(playback);
  }
  on(deck, event, callback) {
    this.deck[deck].on(event, callback);
  }
  load(deck, song) {
    this.deck[deck].load(song);
  }
  playPause(deck) {
    this.deck[deck].playPause();
  }
  isPlaying(deck) {
    return this.deck[deck].isPlaying();
  }
  applyEffects() {
    if (this.eqEffect) {
      this.deck[0].backend.setFilters(this.eqEffect[0].concat(this.activeEffects[0]));
      this.deck[1].backend.setFilters(this.eqEffect[1].concat(this.activeEffects[1]));
    }
  }

  equalizer() {
    if (this.deck[0] && this.deck[1] && this.eq[0] && this.eq[1]) {
      return this.eqServ.createEQEffect(this.deck, this.eq);
    }
  }

  saveEQ(bass, mid, trebble, deck) {
    const eq = this.eqServ.createEQ(bass, mid, trebble);
    this.eq[deck] = eq;
    this.eqEffect = this.equalizer();
    this.applyEffects();
  }
  saveEffects(deck, i, effect) {
    if (this.effects[deck][i] && this.effects[deck][i].active) {
      this.activateEffect(deck, i);
    }
    this.effects[deck][i] = effect;
    this.effectLoader[deck].next(this.effects[deck]);
  }
  activateEffect(deck, i) {
    this.effects[deck][i].active = !this.effects[deck][i].active;
    const effects = this.effects[deck].filter(a => a.active);
    this.activeEffects[deck] = this.effectServ.createEffects(this.deck[deck].backend.ac, effects);
    this.applyEffects();
    this.effectLoader[deck].next(this.effects[deck]);
  }
  getCurrentTime(deck) {
    return this.deck[deck].getCurrentTime();
  }
  getDuration(deck) {
    return this.deck[deck].getDuration();
  }
  playFromPosition(deck, start) {
    this.deck[deck].seekAndCenter(start);
  }
  createLoop(deck, start, end) {
    return this.deck[deck].addRegion({ start: start, end: end, loop: true, drag: false, resize: false });
  }
  adjustHeight(deck, height) {
    this.deck[deck].setHeight(height);
  }
}

result-matching ""

    No results matching ""