/// <summary> /// CUEシートのTrack情報からストリームを生成 /// </summary> /// <param name="track">CUEのTrack情報</param> /// <param name="preScan">preScanを行うかどうか</param> /// <returns></returns> private static PullSoundStreamBase CreateStreamCue(CD.Track track, bool preScan) { String streamFullPath = System.IO.Path.IsPathRooted(track.file_name_CUESheet) ? track.file_name_CUESheet : Path.GetDirectoryName(track.file_name) + Path.DirectorySeparatorChar + track.file_name_CUESheet; PullSoundStreamBase self = CreateFileStreamPrimitive(streamFullPath, preScan); self = ApplyTrackRange(self, track); return(self); }
private static PullSoundStreamBase ApplyTrackRange(PullSoundStreamBase self, CD.Track track) { var RangeOffset = GetFrame2Sample(self, track.Start); var RangeLength = track.End > track.Start ? GetFrame2Sample(self, track.End - track.Start) : self.LengthSample - RangeOffset; var gain = track.getTagValue("ALBUM GAIN"); if (gain != null) { self = new ReplayGainOverrideFilter(self, Util.Util.parseDouble(gain.ToString())); } self = new RangeFilter(self, RangeOffset, RangeLength); return(self); }