# Generate a MIDI file by reading in a file containing the MTK custom syntax (see mtk_grammar.citrus and grammar_spec.rb)
#
# NOTE: this blindly overwrites any existing MTK-syntax_to_midi.mid file, unless a second argument is provided

require 'mtk'
require 'mtk/io/midi_file'

input = ARGV[0]
if input.nil?
  STDERR.puts "Input file is required."
  STDERR.puts "Usage: #{$0} input [output]"
  exit 1
end

unless File.exists? input
  STDERR.puts "Cannot read file: #{input}"
  exit 2
end

output = ARGV[1] || "MTK-#{File.basename(__FILE__,'.rb')}.mid"


syntax = IO.read(input)
sequencer = MTK::Lang::Parser.parse(syntax)
timeline = sequencer.to_timeline

MTK::MIDIFile(output).write timeline