Class: Webmidi::Virtual::Port

Inherits:
Object
  • Object
show all
Defined in:
lib/webmidi/virtual/port.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, direction: :bidirectional) ⇒ Port

Returns a new instance of Port.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/webmidi/virtual/port.rb', line 12

def initialize(name:, direction: :bidirectional)
  @name = name
  @direction = direction
  transport = Transport::Virtual

  case direction
  when :bidirectional, :input
    input_handle = transport.create_virtual_input(name)
    @input = Webmidi::Port::Input.new(
      id: input_handle.device_info.id,
      name: input_handle.device_info.name,
      manufacturer: input_handle.device_info.manufacturer,
      version: input_handle.device_info.version,
      transport_handle: input_handle
    )
  end

  case direction
  when :bidirectional, :output
    output_handle = transport.create_virtual_output(name)
    @output = Webmidi::Port::Output.new(
      id: output_handle.device_info.id,
      name: output_handle.device_info.name,
      manufacturer: output_handle.device_info.manufacturer,
      version: output_handle.device_info.version,
      transport_handle: output_handle
    )
  end
end

Instance Attribute Details

#inputObject (readonly)

Returns the value of attribute input.



6
7
8
# File 'lib/webmidi/virtual/port.rb', line 6

def input
  @input
end

#outputObject (readonly)

Returns the value of attribute output.



6
7
8
# File 'lib/webmidi/virtual/port.rb', line 6

def output
  @output
end

Class Method Details

.create(name:, direction: :bidirectional) ⇒ Object



8
9
10
# File 'lib/webmidi/virtual/port.rb', line 8

def self.create(name:, direction: :bidirectional)
  new(name: name, direction: direction)
end

Instance Method Details

#closeObject



42
43
44
45
# File 'lib/webmidi/virtual/port.rb', line 42

def close
  @input&.disconnect
  @output&.disconnect
end