В качестве примера - конвертор из таблички ST в ASM и обратно, для текстовых файлов Vortex II (на руби).

Код:
ff =  File.new("filename.txt","r")

lines = ff.readlines("\n")
freqtable =nil

lines.each { |z|
 if z =~ /NoteTable=(\d+)/ then
    freqtable = $1.to_i
    abort "Incorrect FreqTable" if freqtable != 1 and freqtable != 2
 end
}

lines.each { |z|
   if z =~ /(NoteTable=)(\d+)/ then
    ft = $2.to_i
    z = $1 + (ft == "1"? "2": "1")
   end

   if z[0,5] =~  /^\.*([A-G|0-9]+)\|/ then
    originalEnvelope = $1.to_i(16)
    case freqtable
    when 1  #st to asm
         resultedEnvelope = (originalEnvelope.to_f * 0.879143316085256).to_i.to_s(16).upcase
    when 2  #asm to st
         resultedEnvelope = (originalEnvelope.to_f * 1.13747096941248).to_i.to_s(16).upcase
    end
   # print "#{$1} hex = #{$1.to_i(16)}  = #{resultedEnvelope} \n"
    prefix = ""
    (4-resultedEnvelope.length).times {prefix = prefix + "."}
    resultedEnvelope = prefix + resultedEnvelope
    #puts resultedEnvelope
    z[0,4] = resultedEnvelope
    puts z
   else
    puts z
   end
  }
#  end

ff.close