Skip to content

@jstrait jstrait released this Jun 29, 2018 · 2 commits to master since this release

  • Several error messages are improved to be more accurate or specific.

  • Bug fix: Songs can now use *.wav files with more than 2 channels. Previously, using a sound with more than 2 channels would cause a fatal Invalid sample data array in AudioUtils.normalize() error.

  • Bug fix: If a sound is defined multiple times in a Kit, the final definition should be used as the winner. However, previously this did not occur if the earlier definition was for a composite sound. For example, with this Kit:

    Kit:
      - sound: [sound1.wav, sound2.wav]
      - sound: sound3.wav
    

    sound will now be bound to sound3.wav, not [sound1.wav, sound2.wav].

Assets 2

@jstrait jstrait released this Jun 22, 2018 · 102 commits to master since this release

This version adds support for composite sounds. That is, sounds that are made by combining two or more sounds together. They are a more succinct way of writing songs where multiple tracks play the same rhythm.

Composite sounds can be defined in the Kit by putting multiple sound files in an array:

Kit:
  - bass:         bass.wav                    # A traditional non-composite sound
  - combo_snare:  [clap.wav, 808_snare.wav]   # A composite sound

The combo_snare sound above is a composite sound made by combining clap.wav and 808_snare.wav together. It can then be used in a pattern:

Verse:
  - bass:         X.......X.......
  - combo_snare:  ....X.......X...

This is equivalent to the following song:

Kit:
  - bass:   bass.wav
  - clap:   clap.wav
  - snare:  808_snare.wav

Verse:
  - bass:   X.......X.......
  - clap:   ....X.......X...
  - snare:  ....X.......X...

When using the -s command-line option to write each track to its own *.wav file, each sub-sound in a composite sound will be written to its own file. For example, this song:

Kit:
  - combo_snare:  [clap.wav, 808_snare.wav]

Verse:
  - combo_snare:  X...X...X...X...

...will be written to two different files, combo_snare-clap.wav and combo_snare-808_snare.wav, when using the -s option.

Finally, when defining a track in a pattern, multiple sounds can be given in an array as a composite sound. Kit sounds and non-Kit sounds can be used together:

Kit:
  - bass:         bass.wav
  - combo_snare:  [clap.wav, 808_snare.wav]

Verse:
  - [bass, combo_snare, other_sound.wav]:   X...X...X...X...

This is a equivalent to:

Kit:
  - bass:   bass.wav
  - clap:   clap.wav
  - snare:  808_snare.wav

Verse:
  - bass:             X...X...X...X...
  - clap:             X...X...X...X...
  - snare:            X...X...X...X...
  - other_sound.wav:  X...X...X...X...
Assets 2

@jstrait jstrait released this Jun 22, 2018 · 131 commits to master since this release

This is primarily a modernization release, and contains some relatively small backwards incompatible changes.

  • Track rhythms can now have spaces in them. For example, X... .... X... .... is now a valid rhythm. Spaces are ignored, and don't affect the rhythm. For example, X... X... is treated as the same rhythm as X...X...
  • Wave files using WAVEFORMATEXTENSIBLE format can now be used, due to upgrading the WaveFile gem dependency to v0.8.1 behind the scenes.
  • Installing the gem is now simpler, since it no longer requires installing the legacy syck YAML parser via an extension.
  • A Fixnum is deprecated message is no longer shown when using Ruby 2.4
  • Backwards incompatible changes:
    • Song files containing a Structure section are no longer supported. A Flow section should be used instead. Support for the Structure section has been deprecated since v1.2.1 (released in 2011).
    • Track rhythms can no longer start with a | character. For example, |X...X... is no longer a valid rhythm. However, bar lines are still allowed to appear elsewhere in the rhythm. For example, X...X...|X...X...| is a valid rhythm. The reason for this change is that a rhythm starting with | is parsed as a YAML scalar block now that Beats is using the Psych YAML library behind the scenes. The fact that the old Syck YAML library didn't treat rhythms starting with a | as a YAML scalar block appears to have been a bug in Syck?
  • The minimum supported Ruby version is now 1.9.3, instead of 1.8.7
Assets 2

@jstrait jstrait released this Jun 22, 2018 · 235 commits to master since this release

  • Songs can be swung (either by 8th note or 16th note), using the new Swing declaration in the song header.
  • Support for fractional tempos, such as 100.5
  • Bug fix: When you run the beats command with no arguments, it now displays the help screen, rather than an error message.
Assets 2

@jstrait jstrait released this Jun 22, 2018 · 270 commits to master since this release

  • Tracks that start with a | no longer cause an error in Ruby 2.0 and above.
  • Additional Wave file formats can now be used as samples, due to upgrading to WaveFile 0.6.0 behind the scenes: 24-bit PCM, 32-bit IEEE Float, 64-bit IEEE Float
Assets 2

@jstrait jstrait released this Jun 22, 2018 · 297 commits to master since this release

  • Now fully supports MRI 1.9.3
  • Now supports 32-bit PCM Wave files, due to upgrading to WaveFile 0.4.0. Previously, only 8-bit and 16-bit PCM files were supported.
Assets 2

@jstrait jstrait released this Jun 22, 2018 · 318 commits to master since this release

  • Bug fix: You can now use ~ in sound file paths, and it will correctly expand to your home folder. (At least on UNIX OSes, I'm not sure if that works on Windows).
  • The new --path option allows setting the base path from which relative sound file paths are searched for.
Assets 2

@jstrait jstrait released this Jun 22, 2018 · 334 commits to master since this release

  • Bug fix: Compatibility issues with Windows. Thanks to Luis Lavena for mentioning the problem and how to fix it.
  • Bug fix: Return the correct status code when Beats terminates, to improve scriptability.
Assets 2

@jstrait jstrait released this Jun 22, 2018 · 374 commits to master since this release

  • You can use the | character to represent bar lines in a track rhythm. This is optional, but often makes longer rhythms easier to read.
  • The Structure section of the song header is now called Flow. (You can still use Structure for now, but you'll get a warning).
  • A pattern can contain multiple tracks that use the same sound. Previously, Beats would pick one of those tracks as the 'winner', and the other tracks wouldn't be played.
  • Bug fix: A better error message is displayed if a sound file is in an unsupported format (such as MP3), or is not even a sound file.
Assets 2

@jstrait jstrait released this Jun 22, 2018 · 543 commits to master since this release

  • Major performance improvements. Up to 19x faster.
Assets 2
You can’t perform that action at this time.