Module: FiddleFluidSynth::C

Extended by:
Fiddle::Importer
Defined in:
lib/fiddle_fluidsynth/soundfonts/modulators.rb,
lib/fiddle_fluidsynth.rb,
lib/fiddle_fluidsynth/util.rb,
lib/fiddle_fluidsynth/misc/misc.rb,
lib/fiddle_fluidsynth/util/util.rb,
lib/fiddle_fluidsynth/synth/synth.rb,
lib/fiddle_fluidsynth/types/types.rb,
lib/fiddle_fluidsynth/logging/logging.rb,
lib/fiddle_fluidsynth/sequencer/events.rb,
lib/fiddle_fluidsynth/synth/midi/setup.rb,
lib/fiddle_fluidsynth/fiddle_fluidsynth.rb,
lib/fiddle_fluidsynth/midi_input/driver.rb,
lib/fiddle_fluidsynth/midi_input/events.rb,
lib/fiddle_fluidsynth/midi_input/player.rb,
lib/fiddle_fluidsynth/midi_input/router.rb,
lib/fiddle_fluidsynth/settings/settings.rb,
lib/fiddle_fluidsynth/soundfonts/loader.rb,
lib/fiddle_fluidsynth/soundfonts/voices.rb,
lib/fiddle_fluidsynth/synth/midi/tuning.rb,
lib/fiddle_fluidsynth/audio_output/driver.rb,
lib/fiddle_fluidsynth/sequencer/sequencer.rb,
lib/fiddle_fluidsynth/synth/effect/chorus.rb,
lib/fiddle_fluidsynth/synth/effect/ladspa.rb,
lib/fiddle_fluidsynth/synth/effect/reverb.rb,
lib/fiddle_fluidsynth/synth/midi/messages.rb,
lib/fiddle_fluidsynth/synth/params/params.rb,
lib/fiddle_fluidsynth/synth/voice_control.rb,
lib/fiddle_fluidsynth/midi_input/midi_input.rb,
lib/fiddle_fluidsynth/soundfonts/generators.rb,
lib/fiddle_fluidsynth/soundfonts/soundfonts.rb,
lib/fiddle_fluidsynth/synth/audio_rendering.rb,
lib/fiddle_fluidsynth/command_interface/shell.rb,
lib/fiddle_fluidsynth/synth/effect/iir_filter.rb,
lib/fiddle_fluidsynth/command_interface/server.rb,
lib/fiddle_fluidsynth/command_interface/handler.rb,
lib/fiddle_fluidsynth/audio_output/file_renderer.rb,
lib/fiddle_fluidsynth/synth/soundfont_management.rb,
lib/fiddle_fluidsynth/command_interface/command_interface.rb

Defined Under Namespace

Modules: Interface

Class Method Summary collapse

Class Method Details

.current_platformObject



23
24
25
26
27
28
29
30
31
# File 'lib/fiddle_fluidsynth/util/util.rb', line 23

def self.current_platform
  host_os = RbConfig::CONFIG['host_os']
  case host_os
  when /darwin/  then :macos
  when /linux/   then :linux
  when /mswin|mingw|cygwin/ then :windows
  else raise "Unsupported OS: #{host_os}"
  end
end

.full_path_for_lib(name) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/fiddle_fluidsynth/util/util.rb', line 55

def self.full_path_for_lib( name )
  lib_path = lib_path(name)

  case current_platform
  when :macos
    File.join(lib_path, "lib#{name}.dylib")
  when :linux
    File.join(lib_path, "lib#{name}.so")
  when :windows
    # DLLは PATH に通ってるか、明示パスで指定
    File.join(lib_path, "#{name}.dll")
  end
end

.full_path_for_soundfont(sf2_filename = SOUNDFONT_NAME_DEFAULT) ⇒ Object



97
98
99
# File 'lib/fiddle_fluidsynth/util/util.rb', line 97

def self.full_path_for_soundfont( sf2_filename = SOUNDFONT_NAME_DEFAULT )
  self.soundfont_path + "/" + sf2_filename
end

.lib_path(name) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/fiddle_fluidsynth/util/util.rb', line 33

def self.lib_path( name )
  case current_platform
  when :macos
    brew_prefix = `brew --prefix`.strip
    path = File.exist?("#{brew_prefix}/lib/lib#{name}.dylib") ? \
      "#{brew_prefix}/lib" : "/usr/local/lib"
    # File.join(path, "lib#{name}.dylib")
    path
  when :linux
    path = `pkg-config --libs-only-L #{name} 2>/dev/null`.sub("-L", "").strip
    raise "pkg-config couldn't find #{name}" if path.empty?
    # File.join(path, "lib#{name}.so")
    path
  when :windows
    # DLLは PATH に通ってるか、明示パスで指定
    path = ENV["LIB_FLUIDSYNTH_PATH"] || "#{name}.dll"
    raise "Set LIB_FLUIDSYNTH_PATH env var or place " +
      "#{name}.dll in working dir" unless File.exist?(path)
    path
  end
end

.soundfont_pathObject



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/fiddle_fluidsynth/util/util.rb', line 72

def self.soundfont_path
  case current_platform
  when :macos
    brew_prefix = `brew --prefix`.strip
    share_dir = File.exist?("#{brew_prefix}/share/fluid-synth/sf2") ? \
      "#{brew_prefix}/share/fluid-synth/sf2" : \
      "/usr/local/share/fluid-synth/sf2"

    share_dir
  when :linux
    name = "fluidsynth"
    path = `pkg-config --libs-only-L #{name} 2>/dev/null`.sub("-L", "").strip
    raise "pkg-config couldn't find #{name}" if path.empty?
    path = path + "/../share/fluid-synth/sf2"

    path
  when :windows
    # DLLは PATH に通ってるか、明示パスで指定
    path = ENV["SOUNDFONT_PATH"] || "#{name}.dll"
    raise "Set LIB_FLUIDSYNTH_PATH env var or place " +
      "#{name}.dll in working dir" unless File.exist?(path)
    path
  end
end