All pastes #626730 Raw Edit

transposerator

public ruby v1 · immutable
·published 2007-07-19 21:06 UTC
rendered paste body
KEYS = %W(A A# B C C# D D# E F F# G G#)def transpose(text, old_key, new_key)	difference = KEYS.index(new_key) - KEYS.index(old_key)	chords = Regexp.new(/(?:@)([A-Z]b?#?)(\w+)?(?:\/)?([A-Z]b?#?)?/)	text.gsub(chords) do		unless $3			KEYS[KEYS.index($1) + difference] + $2		else			KEYS[KEYS.index($1) + difference] + '/' + KEYS[KEYS.index($3) + difference]		end	endendtext = "@Gadd7min13\nThis is some text\n@D/F#\nthis is some more text"puts transpose(text, 'G', 'D')