Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
 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);
 }