play_music(options, fadeDuration) {
    const src = _.isString(options) ? options : options.src;
    if (this._music == null || this._music.get_src() !== src) {
      if (fadeDuration == null) { fadeDuration = CONFIG.MUSIC_CROSSFADE_DURATION; }

      // stop currently playing music
      this.stop_music(fadeDuration);

      // start new music
      // get music or create new for src
      this._music = this.take_from_pool(src);
      if (this._music == null) {
        this._music = new music_object(options);
      }

      return this._play(this._music, fadeDuration, this.get_music_volume());
    }
    return Promise.resolve();
  }
Creates and plays a music file and returns a promise that resolves when the music is faded in/out.
@param options
@param [fadeDuration=CONFIG.AUDIO_CROSSFADE_DURATION]
@returns {Promise}