private void LoadSample(Track track, TrackSample trackSample) { var sampleId = track.Description + " - " + trackSample.Key; var filename = trackSample.IsExternalLoop ? Path.Combine(LoopFolder, trackSample.Key) : track.Filename; if (!File.Exists(filename)) { return; } var sample = (Sample)_audioPlayer.Load(sampleId, filename); sample.LinkedTrackDescription = track.Description; sample.Gain = trackSample.IsExternalLoop ? 0 : track.Gain; sample.SampleKey = trackSample.Key; sample.IsLooped = trackSample.IsExternalLoop || trackSample.IsLooped; sample.Bpm = trackSample.CalculateBpm(track); sample.Description = trackSample.Description; _audioPlayer.AddSection(sampleId, sampleId, start: trackSample.Start, length: trackSample.Length, bpm: sample.Bpm, loopIndefinitely: trackSample.IsLooped); _audioPlayer.QueueSection(sampleId, sampleId); }
public void Play() { _mainPlayer.Unload(PatternPlayer); _mainPlayer.Load(PatternPlayer, SilenceHelper.GetSilenceAudioFile()); _mainPlayer.AddSection(PatternPlayer, PatternPlayer, 0, _loopLength, bpm: _targetBpm); var section = _mainPlayer.GetAudioSection(PatternPlayer, PatternPlayer); section.LoopIndefinitely = true; for (var channelIndex = 0; channelIndex < _sampleKeys.Count; channelIndex++) { var positions = GetPositions(channelIndex); var player = _channelPlayers[channelIndex]; foreach (var position in positions) { var currentPosition = position.Item2; _mainPlayer.AddEvent(PatternPlayer, currentPosition, position.Item1, position.Item1, EventType.PlaySolo, player); } } _mainPlayer.QueueSection(PatternPlayer, PatternPlayer); _mainPlayer.Play(PatternPlayer); }
public void SetPositions(double start = 0, double length = 0, double offset = 0) { _audioPlayer.Pause(StreamKey); _audioPlayer.SetSectionPositions(StreamKey, SectionKey, start, length, offset); _audioPlayer.QueueSection(StreamKey, SectionKey); _audioPlayer.Play(StreamKey); }