alda-rb ↑

A Ruby library for live-coding music with Alda. Also provides an alda DSL in Ruby.

Installation ↑

Add this line to your application’s Gemfile:

gem 'alda-rb'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install alda-rb

Usage ↑

Install Alda, and try the following Ruby codes yourself:

require 'alda-rb'

puts Alda.version

score = Alda::Score.new { o4; c4/e/g; -d8; r8_16; +f4; o5; c2 }

Alda::Score.new do
  piano_
  quant 200
  v1
  5.times do |t|
    transpose t
    import score
    note midi_note(30 + t * t), duration(note_length 1)
  end
  v2; o6
  motif = -> { c200ms; d500ms }
  8.times { motif * 2; e400ms_4; t4 { a; b; c } }
  _ended
  
  violin_
  __ended
  ->i do
    c2; d4; e2_4; e2; d4; c2_4; c2; e4; d2
    i == 0 ? (c4; d1_2) : (d4; c1_2)
  end * 2

end.play

There is also an interactive mode. You can run it by running alda-irb in your command line if you installed the gem. Run bundle exec alda-irb instead if you installed it using the bundler.

$ alda-irb
> p processes.last
{:id=>"dus", :port=>34317, :state=>nil, :expiry=>nil, :type=>:repl_server}
> piano_; c d e f
piano: [c d e f]
> 5.times do
.   c
>   end
c c c c c
> score_text
piano: [c d e f]
c c c c c
> play
Playing...
> save 'temp.alda'
> puts `cat temp.alda`
piano: [c d e f]
c c c c c
> system 'rm temp.alda'
> exit

You can also use it to programmatically communicate with the nREPL server:

repl = Alda::REPL.new
repl.message :eval_and_play, code: 'piano: c d e f' # => nil
repl.message :eval_and_play, code: 'g a b > c' # => nil
repl.message :score_text # => "piano: [c d e f]\ng a b > c\n"
repl.message :eval_and_play, code: 'this will cause an error' # (raises Alda::NREPLServerError)

Development ↑

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing ↑

Bug reports and pull requests are welcome on GitHub at github.com/UlyssesZh/alda-rb. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License ↑

The gem is available as open source under the terms of the MIT License.

Code of Conduct ↑

Everyone interacting in the alda-rb project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.