Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
# Created using the Midi Library Gem created by Jim Menerad # to_midi Provided from the Rails Cookbook # This script generates any website into a single midi Track # Application website_song method logic Created & Designed by Gabriel G. Updated Nov 24th 2009 # http://pastie.org/712997 require 'rubygems' require 'midilib' require 'open-uri' # Logic Behind the Midi class Array def to_midi(file, note_length='half') midi_max = 128.0 midi_min = 0.0 low, high = min, max song = MIDI::Sequence.new song.tracks << (melody = MIDI::Track.new(song)) melody.events << MIDI::Tempo.new(MIDI::Tempo.bpm_to_mpq(120)) melody.events << MIDI::ProgramChange.new(0, 0) each do |number| midi_note = (midi_min + ((number-midi_min) * (midi_max-low)/high)).to_i melody.events << MIDI::NoteOnEvent.new(0, midi_note, 127, 0) melody.events << MIDI::NoteOffEvent.new(0, midi_note, 127, song.note_to_delta(note_length)) end open(file, 'w') { |f| song.write(f) } end end # Method converts the website into a Musical composition def website_song(w,tl) t_a=[]; t=open("#{w}") a=t.read; t_a=a.unpack("C*") t_a.to_midi("#{tl}.mid") end # Method needs a website and title for the song example website_song("http://google.com","google_song")
This paste will be private.
From the Design Piracy series on my blog: