Class: Beats::Transforms::SongSwinger

Inherits:
Object
  • Object
show all
Defined in:
lib/beats/transforms/song_swinger.rb

Defined Under Namespace

Classes: InvalidSwingRateError

Class Method Summary collapse

Class Method Details

.transform(song, swing_rate) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/beats/transforms/song_swinger.rb', line 6

def self.transform(song, swing_rate)
  validate_swing_rate(swing_rate)

  song.patterns.each do |pattern_name, pattern|
    swung_tracks = pattern.tracks.map do |track_name, track|
      if swing_rate == 8
        Track.new(track.name, swing_8(track.rhythm))
      elsif swing_rate == 16
        Track.new(track.name, swing_16(track.rhythm))
      end
    end

    song.patterns[pattern_name] = Pattern.new(pattern_name, swung_tracks)
  end

  song.tempo *= 1.5

  song
end