class Musicality::SuperCollider::SynthDef

Attributes

body[R]
credit[R]
name[R]
params[R]
source[R]

Public Class Methods

new(name: "", params: {}) click to toggle source
# File lib/musicality/performance/supercollider/synthdef.rb, line 8
def initialize name: "", params: {}, body: "", credit: "", source: ""
  raise ArgumentError if name.empty?
  raise ArgumentError if body.empty?

  @name, @params, @body = name, params, body
  @credit, @source = credit, source
end

Public Instance Methods

settings(args = {}) click to toggle source
# File lib/musicality/performance/supercollider/synthdef.rb, line 44
def settings args = {}
  Settings.new(self, args)
end
to_sclang() click to toggle source
# File lib/musicality/performance/supercollider/synthdef.rb, line 16
def to_sclang
  params_str = "|" + @params.map {|k,v| v.nil? ? k.to_s : "#{k} = #{v}" }.join(", ") + "|"
  output = "SynthDef(\"#{@name}\", {" + params_str + "\n" + @body + "#{"\n" unless @body[-1] == "\n"}\}"
  
  unless (@credit.empty? && @source.empty?)
    metadata_str = ", metadata: (\n"
    unless @credit.empty?
      metadata_str += "  credit: \"#{@credit}\",\n"
    end
    unless @source.empty?
      metadata_str += "  source: \"#{@source}\"\n"
    end
    metadata_str += ")\n"
    output += metadata_str
  end

  output += ").writeDefFile;"
end