Sha256: 76c8baced00d0a180d37ed4481b2ee48eaf423c549ef42ea75d9b3811708fdcb

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

# lib/gemwarrior/misc/music.rb
# Music cues using win32-sound

require 'feep'
require 'win32/sound'

require_relative 'musical_notes'

module Gemwarrior
  module Music
    def self.cue(sequence)
      # if Windows, use superior win32-sound library
      if OS.windows?
        threads = []

        Thread.start {
          sequence.each do |seq|
            seq[:frequencies].split(',').each do |note|
              threads << Thread.new {
                Win32::Sound::play_freq(Notes::NOTE_FREQ[note], seq[:duration], 0.5)
              }
            end
            threads.each { |th| th.join }
          end
        }
      # otherwise, use inferior feep library
      else
        feep_defaults = {
          :frequencies  => '440', 
          :waveform     => 'sine', 
          :volume       => 0.3, 
          :duration     => 500,
          :notext       => true
        }
      
        Thread.start {
          sequence.each do |seq|
            seq = feep_defaults.merge(seq)

            Feep::Base.new({
              :freq_or_note => seq[:frequencies], 
              :waveform     => seq[:waveform], 
              :volume       => seq[:volume], 
              :duration     => seq[:duration],
              :notext       => seq[:notext]
            })
          end
        }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gemwarrior-0.9.26 lib/gemwarrior/misc/music.rb