<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -41,10 +41,10 @@ notes = []
 (36..45).each do |midi_note_number|
   notes &lt;&lt; Drum.new(:note =&gt; note(midi_note_number),
                     :when =&gt; L{|beat| false},
-                    :number_generator =&gt; L{0.5},
-                    # :number_generator =&gt; L{rand},
-                    :next =&gt; L{|queue| queue[queue.size - 1]},
-                    # :next =&gt; L{|queue| queue[rand(queue.size)]},
+                    # :number_generator =&gt; L{0.5},
+                    :number_generator =&gt; L{rand},
+                    # :next =&gt; L{|queue| queue[queue.size - 1]},
+                    :next =&gt; L{|queue| queue[rand(queue.size)]},
                     :probabilities =&gt; probabilities[midi_note_number] || probabilities[:none])
 end
 notes</diff>
      <filename>db_drum_definition.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,12 @@
 require 'lib/archaeopteryx'
 
-@loop = Loop.new(:measures =&gt; 4,
+@loop = Loop.new(:measures =&gt; 32,
                  :beats =&gt; 16,
                  :logging =&gt; false,
                  :evil_timer_offset_wtf =&gt; 0.2,
-                 :clock =&gt; Clock.new(@tempo = 170),
+                 :clock =&gt; (@clock = Clock.new(@tempo = 170)),
                  :midi =&gt; (@midi = FileMIDI.new(:tempo =&gt; @tempo,
+                                                :clock =&gt; @clock,
                                                 :filename =&gt; &quot;db_drums.midi&quot;,
                                                 :name =&gt; &quot;d&amp;b drums&quot;)),
                  :generator =&gt; Rhythm.new(:drumfile =&gt; &quot;db_drum_definition.rb&quot;,</diff>
      <filename>drums_file.rb</filename>
    </modified>
    <modified>
      <diff>@@ -11,6 +11,7 @@ class FileMIDI
   def initialize(options)
     raise :hell unless options.is_a? Hash
     @filename = options[:filename]
+    @clock = options[:clock]
     @events = []
     
     @sequence = MIDI::Sequence.new
@@ -25,18 +26,15 @@ class FileMIDI
   def infinite?
     false
   end
+  def midilib_delta
+    # figuring this shit out was an epic fucking nightmare and to be honest I still have no idea why it works
+    ((@sequence.note_to_delta(&quot;16th&quot;) / @clock.interval) * @clock.time).to_i
+  end
   def play(note)
-    # http://github.com/jvoorhis/music.rb/blob/5cf79915dda155d4e8348750d731739c85ac1e60/lib/music/smf_writer.rb
-    @track.events &lt;&lt; NoteOnEvent.new(note.channel,
-                                     note.number,
-                                     note.velocity,
-                                     0) # this number here should carry an offset representing the
-                                     # amount of time since the last message in this stream. it's still
-                                     # not clear to me how to handle simultaneous notes, however.
-    # @track.events &lt;&lt; NoteOffEvent.new(note.channel,
-    #                                  note.number,
-    #                                  note.velocity,
-    #                                  @sequence.note_to_delta(&quot;16th&quot;)) # yeah, well, whatever
+    @track.merge [NoteOnEvent.new(note.channel,
+                                  note.number,
+                                  note.velocity,
+                                  midilib_delta)]
   end
   def write
     File.open(@filename, 'wb') do |file|
@@ -44,7 +42,3 @@ class FileMIDI
     end
   end
 end
-
-# I think what this has to do is have a ticker. because it expects to tick, and you're using predefined
-# intervals. so if you've got a ticker, you just have to check if it's ticked, or something. actually I
-# have no idea - I don't know how midilib tracks time.</diff>
      <filename>lib/midi/file_output/file_midi.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7a2fd57a0f1a6704f5d40b7e6158f611adc1c943</id>
    </parent>
  </parents>
  <author>
    <name>Giles Bowkett</name>
    <email>gilesb@gmail.com</email>
  </author>
  <url>http://github.com/gilesbowkett/archaeopteryx/commit/deb77cb653682ad789a94ef588ee44e162c26d4e</url>
  <id>deb77cb653682ad789a94ef588ee44e162c26d4e</id>
  <committed-date>2009-05-06T17:56:25-07:00</committed-date>
  <authored-date>2009-05-06T17:56:25-07:00</authored-date>
  <message>midi_files branch is complete. you can now export MIDI files from Arx. the workflow is like this: fuck with it live in the text editor, live-coding, til you like what you hear. then run it again in MIDI file export mode. then import the MIDI file into your MIDI app (e.g., Propellerhead Reason, Ableton Live) and fuck with it to your heart's content.</message>
  <tree>a022431cfa2f4ec7cd2b0e649d45fbbc0a3041fb</tree>
  <committer>
    <name>Giles Bowkett</name>
    <email>gilesb@gmail.com</email>
  </committer>
</commit>
