midi-communications-windows 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.version +6 -0
  4. data/.yardoc/checksums +8 -0
  5. data/.yardoc/complete +0 -0
  6. data/.yardoc/object_types +0 -0
  7. data/.yardoc/objects/root.dat +0 -0
  8. data/.yardoc/proxy_types +0 -0
  9. data/.yardopts +8 -0
  10. data/Gemfile +3 -0
  11. data/LICENSE +165 -0
  12. data/README.md +176 -0
  13. data/Rakefile +13 -0
  14. data/doc/MIDICommunicationsWindows/API/MIDIHdr.html +144 -0
  15. data/doc/MIDICommunicationsWindows/API/MIDIInCaps.html +142 -0
  16. data/doc/MIDICommunicationsWindows/API/MIDIOutCaps.html +140 -0
  17. data/doc/MIDICommunicationsWindows/API/MSG.html +143 -0
  18. data/doc/MIDICommunicationsWindows/API.html +981 -0
  19. data/doc/MIDICommunicationsWindows/Device/ClassMethods.html +365 -0
  20. data/doc/MIDICommunicationsWindows/Device/InstanceMethods.html +1096 -0
  21. data/doc/MIDICommunicationsWindows/Device.html +988 -0
  22. data/doc/MIDICommunicationsWindows/Error.html +438 -0
  23. data/doc/MIDICommunicationsWindows/Input.html +1554 -0
  24. data/doc/MIDICommunicationsWindows/Message.html +700 -0
  25. data/doc/MIDICommunicationsWindows/Output.html +1697 -0
  26. data/doc/MIDICommunicationsWindows/TypeConversion.html +369 -0
  27. data/doc/MIDICommunicationsWindows.html +210 -0
  28. data/doc/_index.html +262 -0
  29. data/doc/class_list.html +54 -0
  30. data/doc/css/common.css +1 -0
  31. data/doc/css/full_list.css +206 -0
  32. data/doc/css/style.css +1089 -0
  33. data/doc/file.README.html +240 -0
  34. data/doc/file.testing-on-windows.html +253 -0
  35. data/doc/file_list.html +64 -0
  36. data/doc/frames.html +22 -0
  37. data/doc/index.html +240 -0
  38. data/doc/js/app.js +801 -0
  39. data/doc/js/full_list.js +334 -0
  40. data/doc/js/jquery.js +4 -0
  41. data/doc/method_list.html +382 -0
  42. data/doc/top-level-namespace.html +112 -0
  43. data/docs/testing-on-windows.md +222 -0
  44. data/examples/input.rb +27 -0
  45. data/examples/list_ports.rb +17 -0
  46. data/examples/output.rb +22 -0
  47. data/examples/sysex_output.rb +15 -0
  48. data/lib/midi-communications-windows/api.rb +340 -0
  49. data/lib/midi-communications-windows/device.rb +310 -0
  50. data/lib/midi-communications-windows/input.rb +486 -0
  51. data/lib/midi-communications-windows/message.rb +133 -0
  52. data/lib/midi-communications-windows/output.rb +206 -0
  53. data/lib/midi-communications-windows/type_conversion.rb +20 -0
  54. data/lib/midi-communications-windows/version.rb +4 -0
  55. data/lib/midi-communications-windows.rb +76 -0
  56. data/midi-communications-windows.gemspec +32 -0
  57. metadata +220 -0
@@ -0,0 +1,1554 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: MIDICommunicationsWindows::Input
8
+
9
+ &mdash; MIDI Communications Windows API
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css">
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css">
16
+
17
+ <script type="text/javascript">
18
+ pathId = "MIDICommunicationsWindows::Input";
19
+ relpath = '../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div id="main_progress" aria-hidden="true"></div>
31
+
32
+ <div class="nav_wrap">
33
+ <iframe id="nav" src="../class_list.html?1"></iframe>
34
+ <div id="resizer"></div>
35
+ </div>
36
+
37
+ <div id="main" tabindex="-1">
38
+ <div id="header">
39
+ <div id="menu">
40
+
41
+ <a href="../_index.html">Index (I)</a> &raquo;
42
+ <span class='title'><span class='object_link'><a href="../MIDICommunicationsWindows.html" title="MIDICommunicationsWindows (module)">MIDICommunicationsWindows</a></span></span>
43
+ &raquo;
44
+ <span class="title">Input</span>
45
+
46
+ </div>
47
+
48
+ <div id="search">
49
+
50
+ <a class="full_list_link" id="class_list_link"
51
+ href="../class_list.html">
52
+
53
+ <svg width="24" height="24">
54
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
55
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
56
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
57
+ </svg>
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <div id="content"><h1>Class: MIDICommunicationsWindows::Input
65
+
66
+
67
+
68
+ </h1>
69
+ <div class="box_info">
70
+
71
+ <dl>
72
+ <dt>Inherits:</dt>
73
+ <dd>
74
+ <span class="inheritName">Object</span>
75
+
76
+ <ul class="fullTree">
77
+ <li>Object</li>
78
+
79
+ <li class="next">MIDICommunicationsWindows::Input</li>
80
+
81
+ </ul>
82
+ <a href="#" class="inheritanceTree">show all</a>
83
+
84
+ </dd>
85
+ </dl>
86
+
87
+
88
+
89
+
90
+ <dl>
91
+ <dt>Extended by:</dt>
92
+ <dd><span class='object_link'><a href="Device/ClassMethods.html" title="MIDICommunicationsWindows::Device::ClassMethods (module)">Device::ClassMethods</a></span></dd>
93
+ </dl>
94
+
95
+
96
+
97
+ <dl>
98
+ <dt>Includes:</dt>
99
+ <dd><span class='object_link'><a href="Device/InstanceMethods.html" title="MIDICommunicationsWindows::Device::InstanceMethods (module)">Device::InstanceMethods</a></span></dd>
100
+ </dl>
101
+
102
+
103
+
104
+
105
+
106
+
107
+ <dl>
108
+ <dt>Defined in:</dt>
109
+ <dd>lib/midi-communications-windows/input.rb
110
+ </dd>
111
+ </dl>
112
+
113
+ </div>
114
+
115
+ <h2>Overview</h2><div class="docstring">
116
+ <div class="discussion">
117
+ <p>A MIDI input port: somewhere messages arrive from.</p>
118
+ <h2 id="_gets__blocks__and_that_is_part_of_the_contract"><code>gets</code> blocks, and that is part of the contract</h2>
119
+ <p><span class='object_link'><a href="#gets-instance_method" title="MIDICommunicationsWindows::Input#gets (method)">#gets</a></span> waits until at least one message has arrived and then returns
120
+ everything that accumulated. It does not return an empty array.</p>
121
+ <p>This is not an incidental property. <code>Musa::Clock::InputMidiClock</code> reads its
122
+ MIDI Clock in a loop with no delay of its own, relying on <code>gets</code> to be where
123
+ the thread waits. An implementation that returned immediately would turn
124
+ that loop into a spin on a full core, and would do it silently — the notes
125
+ would still play.</p>
126
+
127
+ </div>
128
+ </div>
129
+ <div class="tags">
130
+
131
+ <div class="examples">
132
+ <h4 class="tag_title">Examples:</h4>
133
+
134
+
135
+ <h5 class="example_title"><div class='inline'><p>Read from the first input</p></div></h5>
136
+
137
+ <pre class="example code"><code><span class='id identifier rubyid_input'>input</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../MIDICommunicationsWindows.html" title="MIDICommunicationsWindows (module)">MIDICommunicationsWindows</a></span></span><span class='op'>::</span><span class='const'>Input</span><span class='period'>.</span><span class='id identifier rubyid_first'><span class='object_link'><a href="Device/ClassMethods.html#first-instance_method" title="MIDICommunicationsWindows::Device::ClassMethods#first (method)">first</a></span></span>
138
+ <span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span>
139
+ <span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_gets'>gets</span>
140
+ <span class='comment'># =&gt; [{ data: [144, 60, 100], timestamp: 1789123456.789 }]</span></code></pre>
141
+
142
+ </div>
143
+
144
+
145
+ <p class="tag_title">See Also:</p>
146
+ <ul class="see">
147
+
148
+ <li><span class='object_link'><a href="Output.html" title="MIDICommunicationsWindows::Output (class)">for sending</a></span></li>
149
+
150
+ </ul>
151
+
152
+ </div>
153
+
154
+
155
+
156
+ <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
157
+ <ul class="summary">
158
+
159
+ <li class="public ">
160
+ <span class="summary_signature">
161
+
162
+ <a href="#enabled-instance_method" title="#enabled (instance method)">#<strong>enabled</strong> &#x21d2; Object </a>
163
+
164
+
165
+
166
+ (also: #enabled?)
167
+
168
+ </span>
169
+
170
+ <span class="note title not_defined_here">
171
+ included
172
+ from <span class='object_link'><a href="Device/InstanceMethods.html#enabled-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#enabled (method)">Device::InstanceMethods</a></span>
173
+ </span>
174
+
175
+
176
+
177
+
178
+ <span class="note title readonly">readonly</span>
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+ <span class="summary_desc"><div class='inline'></div></span>
189
+
190
+ </li>
191
+
192
+
193
+ <li class="public ">
194
+ <span class="summary_signature">
195
+
196
+ <a href="#id-instance_method" title="#id (instance method)">#<strong>id</strong> &#x21d2; Integer </a>
197
+
198
+
199
+
200
+ </span>
201
+
202
+ <span class="note title not_defined_here">
203
+ included
204
+ from <span class='object_link'><a href="Device/InstanceMethods.html#id-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#id (method)">Device::InstanceMethods</a></span>
205
+ </span>
206
+
207
+
208
+
209
+
210
+ <span class="note title readonly">readonly</span>
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+ <span class="summary_desc"><div class='inline'><p>The port's WinMM index <strong>within its direction</strong>; see the note on identity in <span class='object_link'><a href="Device.html" title="MIDICommunicationsWindows::Device (module)">Device</a></span>.</p></div></span>
221
+
222
+ </li>
223
+
224
+
225
+ <li class="public ">
226
+ <span class="summary_signature">
227
+
228
+ <a href="#name-instance_method" title="#name (instance method)">#<strong>name</strong> &#x21d2; String </a>
229
+
230
+
231
+
232
+ </span>
233
+
234
+ <span class="note title not_defined_here">
235
+ included
236
+ from <span class='object_link'><a href="Device/InstanceMethods.html#name-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#name (method)">Device::InstanceMethods</a></span>
237
+ </span>
238
+
239
+
240
+
241
+
242
+ <span class="note title readonly">readonly</span>
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+ <span class="summary_desc"><div class='inline'><p>The port's name, as WinMM reports it, truncated to 31 characters.</p></div></span>
253
+
254
+ </li>
255
+
256
+
257
+ </ul>
258
+
259
+
260
+
261
+
262
+
263
+ <h2>
264
+ Class Method Summary
265
+ <small><a href="#" class="summary_toggle">collapse</a></small>
266
+ </h2>
267
+
268
+ <ul class="summary">
269
+
270
+ <li class="public ">
271
+ <span class="summary_signature">
272
+
273
+ <a href="#all-class_method" title="#all (class method)">.<strong>all</strong> &#x21d2; Array&lt;Input&gt;, Array&lt;Output&gt; </a>
274
+
275
+
276
+
277
+ </span>
278
+
279
+ <span class="note title not_defined_here">
280
+ extended
281
+ from <span class='object_link'><a href="Device/ClassMethods.html#all-class_method" title="MIDICommunicationsWindows::Device::ClassMethods#all (method)">Device::ClassMethods</a></span>
282
+ </span>
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+ <span class="summary_desc"><div class='inline'><p>Every port of this direction.</p></div></span>
293
+
294
+ </li>
295
+
296
+
297
+ <li class="public ">
298
+ <span class="summary_signature">
299
+
300
+ <a href="#direction-class_method" title="direction (class method)">.<strong>direction</strong> &#x21d2; Symbol </a>
301
+
302
+
303
+
304
+ </span>
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+ <span class="summary_desc"><div class='inline'><p><code>:input</code>.</p></div></span>
315
+
316
+ </li>
317
+
318
+
319
+ <li class="public ">
320
+ <span class="summary_signature">
321
+
322
+ <a href="#first-class_method" title="#first (class method)">.<strong>first</strong> &#x21d2; Input, ... </a>
323
+
324
+
325
+
326
+ </span>
327
+
328
+ <span class="note title not_defined_here">
329
+ extended
330
+ from <span class='object_link'><a href="Device/ClassMethods.html#first-class_method" title="MIDICommunicationsWindows::Device::ClassMethods#first (method)">Device::ClassMethods</a></span>
331
+ </span>
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
+
341
+ <span class="summary_desc"><div class='inline'><p>The first port of this direction, or nil if there are none.</p></div></span>
342
+
343
+ </li>
344
+
345
+
346
+ <li class="public ">
347
+ <span class="summary_signature">
348
+
349
+ <a href="#last-class_method" title="#last (class method)">.<strong>last</strong> &#x21d2; Input, ... </a>
350
+
351
+
352
+
353
+ </span>
354
+
355
+ <span class="note title not_defined_here">
356
+ extended
357
+ from <span class='object_link'><a href="Device/ClassMethods.html#last-class_method" title="MIDICommunicationsWindows::Device::ClassMethods#last (method)">Device::ClassMethods</a></span>
358
+ </span>
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+ <span class="summary_desc"><div class='inline'><p>The last port of this direction, or nil if there are none.</p></div></span>
369
+
370
+ </li>
371
+
372
+
373
+ </ul>
374
+
375
+
376
+ <h2>
377
+ Instance Method Summary
378
+ <small><a href="#" class="summary_toggle">collapse</a></small>
379
+ </h2>
380
+
381
+ <ul class="summary">
382
+
383
+ <li class="public ">
384
+ <span class="summary_signature">
385
+
386
+ <a href="#close-instance_method" title="#close (instance method)">#<strong>close</strong> &#x21d2; Boolean </a>
387
+
388
+
389
+
390
+ </span>
391
+
392
+ <span class="note title not_defined_here">
393
+ included
394
+ from <span class='object_link'><a href="Device/InstanceMethods.html#close-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#close (method)">Device::InstanceMethods</a></span>
395
+ </span>
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+ <span class="summary_desc"><div class='inline'><p>Closes the port.</p></div></span>
406
+
407
+ </li>
408
+
409
+
410
+ <li class="public ">
411
+ <span class="summary_signature">
412
+
413
+ <a href="#display_name-instance_method" title="#display_name (instance method)">#<strong>display_name</strong> &#x21d2; String </a>
414
+
415
+
416
+
417
+ </span>
418
+
419
+ <span class="note title not_defined_here">
420
+ included
421
+ from <span class='object_link'><a href="Device/InstanceMethods.html#display_name-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#display_name (method)">Device::InstanceMethods</a></span>
422
+ </span>
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+
431
+
432
+ <span class="summary_desc"><div class='inline'><p>The name to show a person choosing a port.</p></div></span>
433
+
434
+ </li>
435
+
436
+
437
+ <li class="public ">
438
+ <span class="summary_signature">
439
+
440
+ <a href="#gets-instance_method" title="#gets (instance method)">#<strong>gets</strong> &#x21d2; Array&lt;Hash&gt; </a>
441
+
442
+
443
+
444
+ (also: #read)
445
+
446
+ </span>
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+ <span class="summary_desc"><div class='inline'><p>Reads the messages that have arrived.</p></div></span>
457
+
458
+ </li>
459
+
460
+
461
+ <li class="public ">
462
+ <span class="summary_signature">
463
+
464
+ <a href="#gets_s-instance_method" title="#gets_s (instance method)">#<strong>gets_s</strong> &#x21d2; Array&lt;Hash&gt; </a>
465
+
466
+
467
+
468
+ (also: #gets_bytestr)
469
+
470
+ </span>
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+ <span class="summary_desc"><div class='inline'><p>Reads the messages that have arrived, with their data as hex strings.</p></div></span>
481
+
482
+ </li>
483
+
484
+
485
+ <li class="public ">
486
+ <span class="summary_signature">
487
+
488
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(id, name) &#x21d2; Input </a>
489
+
490
+
491
+
492
+ </span>
493
+
494
+
495
+ <span class="note title constructor">constructor</span>
496
+
497
+
498
+
499
+
500
+
501
+ <span class="private note title">private</span>
502
+
503
+
504
+ <span class="summary_desc"><div class='inline'><p>A new instance of Input.</p></div></span>
505
+
506
+ </li>
507
+
508
+
509
+ <li class="public ">
510
+ <span class="summary_signature">
511
+
512
+ <a href="#manufacturer-instance_method" title="#manufacturer (instance method)">#<strong>manufacturer</strong> &#x21d2; nil </a>
513
+
514
+
515
+
516
+ </span>
517
+
518
+ <span class="note title not_defined_here">
519
+ included
520
+ from <span class='object_link'><a href="Device/InstanceMethods.html#manufacturer-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#manufacturer (method)">Device::InstanceMethods</a></span>
521
+ </span>
522
+
523
+
524
+
525
+
526
+
527
+
528
+
529
+
530
+
531
+ <span class="summary_desc"><div class='inline'><p>Who made the device.</p></div></span>
532
+
533
+ </li>
534
+
535
+
536
+ <li class="public ">
537
+ <span class="summary_signature">
538
+
539
+ <a href="#model-instance_method" title="#model (instance method)">#<strong>model</strong> &#x21d2; nil </a>
540
+
541
+
542
+
543
+ </span>
544
+
545
+ <span class="note title not_defined_here">
546
+ included
547
+ from <span class='object_link'><a href="Device/InstanceMethods.html#model-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#model (method)">Device::InstanceMethods</a></span>
548
+ </span>
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+
557
+
558
+ <span class="summary_desc"><div class='inline'><p>The device model.</p></div></span>
559
+
560
+ </li>
561
+
562
+
563
+ <li class="public ">
564
+ <span class="summary_signature">
565
+
566
+ <a href="#open-instance_method" title="#open (instance method)">#<strong>open</strong> {|self| ... } &#x21d2; self </a>
567
+
568
+
569
+
570
+ (also: #enable, #start)
571
+
572
+ </span>
573
+
574
+ <span class="note title not_defined_here">
575
+ included
576
+ from <span class='object_link'><a href="Device/InstanceMethods.html#open-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#open (method)">Device::InstanceMethods</a></span>
577
+ </span>
578
+
579
+
580
+
581
+
582
+
583
+
584
+
585
+
586
+
587
+ <span class="summary_desc"><div class='inline'><p>Opens the port.</p></div></span>
588
+
589
+ </li>
590
+
591
+
592
+ <li class="public ">
593
+ <span class="summary_signature">
594
+
595
+ <a href="#to_s-instance_method" title="#to_s (instance method)">#<strong>to_s</strong> &#x21d2; String </a>
596
+
597
+
598
+
599
+ </span>
600
+
601
+ <span class="note title not_defined_here">
602
+ included
603
+ from <span class='object_link'><a href="Device/InstanceMethods.html#to_s-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#to_s (method)">Device::InstanceMethods</a></span>
604
+ </span>
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+ <span class="summary_desc"><div class='inline'></div></span>
615
+
616
+ </li>
617
+
618
+
619
+ <li class="public ">
620
+ <span class="summary_signature">
621
+
622
+ <a href="#type-instance_method" title="#type (instance method)">#<strong>type</strong> &#x21d2; Symbol </a>
623
+
624
+
625
+
626
+ </span>
627
+
628
+ <span class="note title not_defined_here">
629
+ included
630
+ from <span class='object_link'><a href="Device/InstanceMethods.html#type-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#type (method)">Device::InstanceMethods</a></span>
631
+ </span>
632
+
633
+
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+ <span class="summary_desc"><div class='inline'><p>The port's direction.</p></div></span>
642
+
643
+ </li>
644
+
645
+
646
+ </ul>
647
+
648
+
649
+
650
+
651
+
652
+
653
+
654
+ <div id="constructor_details" class="method_details_list">
655
+ <h2>Constructor Details</h2>
656
+
657
+ <div class="method_details first">
658
+ <h3 class="signature first" id="initialize-instance_method">
659
+
660
+ #<strong>initialize</strong>(id, name) &#x21d2; <tt><span class='object_link'><a href="" title="MIDICommunicationsWindows::Input (class)">Input</a></span></tt>
661
+
662
+
663
+
664
+
665
+
666
+ </h3><div class="docstring">
667
+ <div class="discussion">
668
+ <p class="note private">
669
+ <strong>This method is part of a private API.</strong>
670
+ You should avoid using this method if possible, as it may be removed or be changed in the future.
671
+ </p>
672
+ <p>Returns a new instance of Input.</p>
673
+
674
+ </div>
675
+ </div>
676
+ <div class="tags">
677
+ <p class="tag_title">Parameters:</p>
678
+ <ul class="param">
679
+
680
+ <li>
681
+
682
+ <span class='name'>id</span>
683
+
684
+
685
+ <span class='type'>(<tt>Integer</tt>)</span>
686
+
687
+
688
+
689
+ &mdash;
690
+ <div class='inline'><p>the port's WinMM index among inputs</p></div>
691
+
692
+ </li>
693
+
694
+ <li>
695
+
696
+ <span class='name'>name</span>
697
+
698
+
699
+ <span class='type'>(<tt>String</tt>)</span>
700
+
701
+
702
+
703
+ &mdash;
704
+ <div class='inline'><p>the port's name as reported by WinMM</p></div>
705
+
706
+ </li>
707
+
708
+ </ul>
709
+
710
+
711
+ </div><table class="source_code">
712
+ <tr>
713
+ <td>
714
+ <pre class="lines">
715
+
716
+
717
+ 36
718
+ 37
719
+ 38
720
+ 39
721
+ 40
722
+ 41</pre>
723
+ </td>
724
+ <td>
725
+ <pre class="code"><span class="info file"># File 'lib/midi-communications-windows/input.rb', line 36</span>
726
+
727
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
728
+ <span class='kw'>super</span>
729
+
730
+ <span class='ivar'>@queue</span> <span class='op'>=</span> <span class='const'>Queue</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
731
+ <span class='ivar'>@sysex</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
732
+ <span class='kw'>end</span></pre>
733
+ </td>
734
+ </tr>
735
+ </table>
736
+ </div>
737
+
738
+ </div>
739
+
740
+ <div id="instance_attr_details" class="attr_details">
741
+ <h2>Instance Attribute Details</h2>
742
+
743
+
744
+ <span id=""></span>
745
+ <div class="method_details first">
746
+ <h3 class="signature first" id="enabled-instance_method">
747
+
748
+ #<strong>enabled</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
749
+
750
+
751
+
752
+ <span class="aliases">Also known as:
753
+ <span class="names"><span id='enabled?-instance_method'>enabled?</span></span>
754
+ </span>
755
+
756
+
757
+
758
+ <span class="not_defined_here">
759
+ Originally defined in module
760
+ <span class='object_link'><a href="Device/InstanceMethods.html#enabled-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#enabled (method)">Device::InstanceMethods</a></span>
761
+ </span>
762
+
763
+ </h3><div class="docstring">
764
+ <div class="discussion">
765
+
766
+
767
+ </div>
768
+ </div>
769
+ <div class="tags">
770
+
771
+
772
+ </div>
773
+ </div>
774
+
775
+
776
+ <span id=""></span>
777
+ <div class="method_details ">
778
+ <h3 class="signature " id="id-instance_method">
779
+
780
+ #<strong>id</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
781
+
782
+
783
+
784
+
785
+
786
+ <span class="not_defined_here">
787
+ Originally defined in module
788
+ <span class='object_link'><a href="Device/InstanceMethods.html#id-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#id (method)">Device::InstanceMethods</a></span>
789
+ </span>
790
+
791
+ </h3><div class="docstring">
792
+ <div class="discussion">
793
+ <p>Returns the port's WinMM index <strong>within its direction</strong>;
794
+ see the note on identity in <span class='object_link'><a href="Device.html" title="MIDICommunicationsWindows::Device (module)">MIDICommunicationsWindows::Device</a></span>.</p>
795
+
796
+ </div>
797
+ </div>
798
+ <div class="tags">
799
+
800
+ <p class="tag_title">Returns:</p>
801
+ <ul class="return">
802
+
803
+ <li>
804
+
805
+
806
+ <span class='type'>(<tt>Integer</tt>)</span>
807
+
808
+
809
+
810
+ &mdash;
811
+ <div class='inline'><p>the port's WinMM index <strong>within its direction</strong>;
812
+ see the note on identity in <span class='object_link'><a href="Device.html" title="MIDICommunicationsWindows::Device (module)">MIDICommunicationsWindows::Device</a></span></p></div>
813
+
814
+ </li>
815
+
816
+ </ul>
817
+
818
+ </div>
819
+ </div>
820
+
821
+
822
+ <span id=""></span>
823
+ <div class="method_details ">
824
+ <h3 class="signature " id="name-instance_method">
825
+
826
+ #<strong>name</strong> &#x21d2; <tt>String</tt> <span class="extras">(readonly)</span>
827
+
828
+
829
+
830
+
831
+
832
+ <span class="not_defined_here">
833
+ Originally defined in module
834
+ <span class='object_link'><a href="Device/InstanceMethods.html#name-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#name (method)">Device::InstanceMethods</a></span>
835
+ </span>
836
+
837
+ </h3><div class="docstring">
838
+ <div class="discussion">
839
+ <p>Returns the port's name, as WinMM reports it, truncated to
840
+ 31 characters. <strong>Not unique</strong>: see the note on names in <span class='object_link'><a href="Device.html" title="MIDICommunicationsWindows::Device (module)">MIDICommunicationsWindows::Device</a></span>.</p>
841
+
842
+ </div>
843
+ </div>
844
+ <div class="tags">
845
+
846
+ <p class="tag_title">Returns:</p>
847
+ <ul class="return">
848
+
849
+ <li>
850
+
851
+
852
+ <span class='type'>(<tt>String</tt>)</span>
853
+
854
+
855
+
856
+ &mdash;
857
+ <div class='inline'><p>the port's name, as WinMM reports it, truncated to
858
+ 31 characters. <strong>Not unique</strong>: see the note on names in <span class='object_link'><a href="Device.html" title="MIDICommunicationsWindows::Device (module)">MIDICommunicationsWindows::Device</a></span>.</p></div>
859
+
860
+ </li>
861
+
862
+ </ul>
863
+
864
+ </div>
865
+ </div>
866
+
867
+ </div>
868
+
869
+
870
+ <div id="class_method_details" class="method_details_list">
871
+ <h2>Class Method Details</h2>
872
+
873
+
874
+ <div class="method_details first">
875
+ <h3 class="signature first" id="all-class_method">
876
+
877
+ .<strong>all</strong> &#x21d2; <tt>Array&lt;<span class='object_link'><a href="" title="MIDICommunicationsWindows::Input (class)">Input</a></span>&gt;</tt>, <tt>Array&lt;<span class='object_link'><a href="Output.html" title="MIDICommunicationsWindows::Output (class)">Output</a></span>&gt;</tt>
878
+
879
+
880
+
881
+
882
+
883
+ <span class="not_defined_here">
884
+ Originally defined in module
885
+ <span class='object_link'><a href="Device/ClassMethods.html#all-class_method" title="MIDICommunicationsWindows::Device::ClassMethods#all (method)">Device::ClassMethods</a></span>
886
+ </span>
887
+
888
+ </h3><div class="docstring">
889
+ <div class="discussion">
890
+ <p>Every port of this direction.</p>
891
+ <p>WinMM is asked afresh on every call, so a port that appeared or went
892
+ away since the last one is reflected. A port that is still there comes
893
+ back as the same object as before; see <span class='object_link'><a href="Device.html#enumerate-class_method" title="MIDICommunicationsWindows::Device.enumerate (method)">MIDICommunicationsWindows::Device.enumerate</a></span>.</p>
894
+
895
+ </div>
896
+ </div>
897
+ <div class="tags">
898
+
899
+ <p class="tag_title">Returns:</p>
900
+ <ul class="return">
901
+
902
+ <li>
903
+
904
+
905
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="" title="MIDICommunicationsWindows::Input (class)">Input</a></span>&gt;</tt>, <tt>Array&lt;<span class='object_link'><a href="Output.html" title="MIDICommunicationsWindows::Output (class)">Output</a></span>&gt;</tt>)</span>
906
+
907
+
908
+
909
+ </li>
910
+
911
+ </ul>
912
+
913
+ </div>
914
+ </div>
915
+
916
+ <div class="method_details ">
917
+ <h3 class="signature " id="direction-class_method">
918
+
919
+ .<strong>direction</strong> &#x21d2; <tt>Symbol</tt>
920
+
921
+
922
+
923
+
924
+
925
+ </h3><div class="docstring">
926
+ <div class="discussion">
927
+ <p>Returns <code>:input</code>.</p>
928
+
929
+ </div>
930
+ </div>
931
+ <div class="tags">
932
+
933
+ <p class="tag_title">Returns:</p>
934
+ <ul class="return">
935
+
936
+ <li>
937
+
938
+
939
+ <span class='type'>(<tt>Symbol</tt>)</span>
940
+
941
+
942
+
943
+ &mdash;
944
+ <div class='inline'><p><code>:input</code></p></div>
945
+
946
+ </li>
947
+
948
+ </ul>
949
+
950
+ </div><table class="source_code">
951
+ <tr>
952
+ <td>
953
+ <pre class="lines">
954
+
955
+
956
+ 29
957
+ 30
958
+ 31</pre>
959
+ </td>
960
+ <td>
961
+ <pre class="code"><span class="info file"># File 'lib/midi-communications-windows/input.rb', line 29</span>
962
+
963
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_direction'>direction</span>
964
+ <span class='symbol'>:input</span>
965
+ <span class='kw'>end</span></pre>
966
+ </td>
967
+ </tr>
968
+ </table>
969
+ </div>
970
+
971
+ <div class="method_details ">
972
+ <h3 class="signature " id="first-class_method">
973
+
974
+ .<strong>first</strong> &#x21d2; <tt><span class='object_link'><a href="" title="MIDICommunicationsWindows::Input (class)">Input</a></span></tt>, ...
975
+
976
+
977
+
978
+
979
+
980
+ <span class="not_defined_here">
981
+ Originally defined in module
982
+ <span class='object_link'><a href="Device/ClassMethods.html#first-class_method" title="MIDICommunicationsWindows::Device::ClassMethods#first (method)">Device::ClassMethods</a></span>
983
+ </span>
984
+
985
+ </h3><div class="docstring">
986
+ <div class="discussion">
987
+ <p>The first port of this direction, or nil if there are none.</p>
988
+
989
+ </div>
990
+ </div>
991
+ <div class="tags">
992
+
993
+ <p class="tag_title">Returns:</p>
994
+ <ul class="return">
995
+
996
+ <li>
997
+
998
+
999
+ <span class='type'>(<tt><span class='object_link'><a href="" title="MIDICommunicationsWindows::Input (class)">Input</a></span></tt>, <tt><span class='object_link'><a href="Output.html" title="MIDICommunicationsWindows::Output (class)">Output</a></span></tt>, <tt>nil</tt>)</span>
1000
+
1001
+
1002
+
1003
+ </li>
1004
+
1005
+ </ul>
1006
+
1007
+ </div>
1008
+ </div>
1009
+
1010
+ <div class="method_details ">
1011
+ <h3 class="signature " id="last-class_method">
1012
+
1013
+ .<strong>last</strong> &#x21d2; <tt><span class='object_link'><a href="" title="MIDICommunicationsWindows::Input (class)">Input</a></span></tt>, ...
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+ <span class="not_defined_here">
1020
+ Originally defined in module
1021
+ <span class='object_link'><a href="Device/ClassMethods.html#last-class_method" title="MIDICommunicationsWindows::Device::ClassMethods#last (method)">Device::ClassMethods</a></span>
1022
+ </span>
1023
+
1024
+ </h3><div class="docstring">
1025
+ <div class="discussion">
1026
+ <p>The last port of this direction, or nil if there are none.</p>
1027
+
1028
+ </div>
1029
+ </div>
1030
+ <div class="tags">
1031
+
1032
+ <p class="tag_title">Returns:</p>
1033
+ <ul class="return">
1034
+
1035
+ <li>
1036
+
1037
+
1038
+ <span class='type'>(<tt><span class='object_link'><a href="" title="MIDICommunicationsWindows::Input (class)">Input</a></span></tt>, <tt><span class='object_link'><a href="Output.html" title="MIDICommunicationsWindows::Output (class)">Output</a></span></tt>, <tt>nil</tt>)</span>
1039
+
1040
+
1041
+
1042
+ </li>
1043
+
1044
+ </ul>
1045
+
1046
+ </div>
1047
+ </div>
1048
+
1049
+ </div>
1050
+
1051
+ <div id="instance_method_details" class="method_details_list">
1052
+ <h2>Instance Method Details</h2>
1053
+
1054
+
1055
+ <div class="method_details first">
1056
+ <h3 class="signature first" id="close-instance_method">
1057
+
1058
+ #<strong>close</strong> &#x21d2; <tt>Boolean</tt>
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+ <span class="not_defined_here">
1065
+ Originally defined in module
1066
+ <span class='object_link'><a href="Device/InstanceMethods.html#close-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#close (method)">Device::InstanceMethods</a></span>
1067
+ </span>
1068
+
1069
+ </h3><div class="docstring">
1070
+ <div class="discussion">
1071
+ <p>Closes the port.</p>
1072
+
1073
+ </div>
1074
+ </div>
1075
+ <div class="tags">
1076
+
1077
+ <p class="tag_title">Returns:</p>
1078
+ <ul class="return">
1079
+
1080
+ <li>
1081
+
1082
+
1083
+ <span class='type'>(<tt>Boolean</tt>)</span>
1084
+
1085
+
1086
+
1087
+ &mdash;
1088
+ <div class='inline'><p>true if it was open, false if it already was not</p></div>
1089
+
1090
+ </li>
1091
+
1092
+ </ul>
1093
+
1094
+ </div>
1095
+ </div>
1096
+
1097
+ <div class="method_details ">
1098
+ <h3 class="signature " id="display_name-instance_method">
1099
+
1100
+ #<strong>display_name</strong> &#x21d2; <tt>String</tt>
1101
+
1102
+
1103
+
1104
+
1105
+
1106
+ <span class="not_defined_here">
1107
+ Originally defined in module
1108
+ <span class='object_link'><a href="Device/InstanceMethods.html#display_name-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#display_name (method)">Device::InstanceMethods</a></span>
1109
+ </span>
1110
+
1111
+ </h3><div class="docstring">
1112
+ <div class="discussion">
1113
+ <p>The name to show a person choosing a port.</p>
1114
+ <p>This is the port name unchanged. On macOS the display name is built as
1115
+ &quot;manufacturer model (name)&quot;, which here would render as a name wrapped
1116
+ in the punctuation of two absent fields.</p>
1117
+
1118
+ </div>
1119
+ </div>
1120
+ <div class="tags">
1121
+
1122
+ <p class="tag_title">Returns:</p>
1123
+ <ul class="return">
1124
+
1125
+ <li>
1126
+
1127
+
1128
+ <span class='type'>(<tt>String</tt>)</span>
1129
+
1130
+
1131
+
1132
+ </li>
1133
+
1134
+ </ul>
1135
+
1136
+ </div>
1137
+ </div>
1138
+
1139
+ <div class="method_details ">
1140
+ <h3 class="signature " id="gets-instance_method">
1141
+
1142
+ #<strong>gets</strong> &#x21d2; <tt>Array&lt;Hash&gt;</tt>
1143
+
1144
+
1145
+
1146
+ <span class="aliases">Also known as:
1147
+ <span class="names"><span id='read-instance_method'>read</span></span>
1148
+ </span>
1149
+
1150
+
1151
+
1152
+ </h3><div class="docstring">
1153
+ <div class="discussion">
1154
+ <p>Reads the messages that have arrived.</p>
1155
+ <p>Blocks until there is at least one. See the note on the class.</p>
1156
+
1157
+ </div>
1158
+ </div>
1159
+ <div class="tags">
1160
+
1161
+ <div class="examples">
1162
+ <h4 class="tag_title">Examples:</h4>
1163
+
1164
+
1165
+ <pre class="example code"><code><span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_gets'>gets</span>
1166
+ <span class='comment'># =&gt; [{ data: [248], timestamp: 1789123456.789 },
1167
+ </span><span class='comment'># { data: [144, 60, 100], timestamp: 1789123456.812 }]</span></code></pre>
1168
+
1169
+ </div>
1170
+
1171
+ <p class="tag_title">Returns:</p>
1172
+ <ul class="return">
1173
+
1174
+ <li>
1175
+
1176
+
1177
+ <span class='type'>(<tt>Array&lt;Hash&gt;</tt>)</span>
1178
+
1179
+
1180
+
1181
+ &mdash;
1182
+ <div class='inline'><p>each with <code>:data</code>, an array of numeric bytes, and
1183
+ <code>:timestamp</code>, a Float of seconds</p></div>
1184
+
1185
+ </li>
1186
+
1187
+ </ul>
1188
+
1189
+ </div><table class="source_code">
1190
+ <tr>
1191
+ <td>
1192
+ <pre class="lines">
1193
+
1194
+
1195
+ 54
1196
+ 55
1197
+ 56
1198
+ 57
1199
+ 58
1200
+ 59
1201
+ 60
1202
+ 61
1203
+ 62
1204
+ 63
1205
+ 64
1206
+ 65
1207
+ 66</pre>
1208
+ </td>
1209
+ <td>
1210
+ <pre class="code"><span class="info file"># File 'lib/midi-communications-windows/input.rb', line 54</span>
1211
+
1212
+ <span class='kw'>def</span> <span class='id identifier rubyid_gets'>gets</span>
1213
+ <span class='comment'># Queue#pop is where the thread waits, and it is the whole of the waiting
1214
+ </span> <span class='comment'># mechanism on purpose. The obvious alternative — test whether the queue
1215
+ </span> <span class='comment'># is empty, then sleep, and have the producer Thread#run the sleeper — has
1216
+ </span> <span class='comment'># a window between the test and the sleep in which a message can arrive
1217
+ </span> <span class='comment'># and its wake-up be delivered to a thread that is not sleeping yet. The
1218
+ </span> <span class='comment'># reader then sleeps forever, and the thread it happens on is the one
1219
+ </span> <span class='comment'># carrying the MIDI clock. Queue does the same job with no such window.
1220
+ </span> <span class='id identifier rubyid_messages'>messages</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='ivar'>@queue</span><span class='period'>.</span><span class='id identifier rubyid_pop'>pop</span><span class='rbracket'>]</span>
1221
+ <span class='id identifier rubyid_messages'>messages</span> <span class='op'>&lt;&lt;</span> <span class='ivar'>@queue</span><span class='period'>.</span><span class='id identifier rubyid_pop'>pop</span> <span class='kw'>until</span> <span class='ivar'>@queue</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1222
+
1223
+ <span class='id identifier rubyid_messages'>messages</span>
1224
+ <span class='kw'>end</span></pre>
1225
+ </td>
1226
+ </tr>
1227
+ </table>
1228
+ </div>
1229
+
1230
+ <div class="method_details ">
1231
+ <h3 class="signature " id="gets_s-instance_method">
1232
+
1233
+ #<strong>gets_s</strong> &#x21d2; <tt>Array&lt;Hash&gt;</tt>
1234
+
1235
+
1236
+
1237
+ <span class="aliases">Also known as:
1238
+ <span class="names"><span id='gets_bytestr-instance_method'>gets_bytestr</span></span>
1239
+ </span>
1240
+
1241
+
1242
+
1243
+ </h3><div class="docstring">
1244
+ <div class="discussion">
1245
+ <p>Reads the messages that have arrived, with their data as hex strings.</p>
1246
+
1247
+ </div>
1248
+ </div>
1249
+ <div class="tags">
1250
+
1251
+ <div class="examples">
1252
+ <h4 class="tag_title">Examples:</h4>
1253
+
1254
+
1255
+ <pre class="example code"><code><span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_gets_s'>gets_s</span>
1256
+ <span class='comment'># =&gt; [{ data: &#39;F8&#39;, timestamp: 1789123456.789 }]</span></code></pre>
1257
+
1258
+ </div>
1259
+
1260
+ <p class="tag_title">Returns:</p>
1261
+ <ul class="return">
1262
+
1263
+ <li>
1264
+
1265
+
1266
+ <span class='type'>(<tt>Array&lt;Hash&gt;</tt>)</span>
1267
+
1268
+
1269
+
1270
+ &mdash;
1271
+ <div class='inline'><p>as <span class='object_link'><a href="#gets-instance_method" title="MIDICommunicationsWindows::Input#gets (method)">#gets</a></span>, but <code>:data</code> is a String</p></div>
1272
+
1273
+ </li>
1274
+
1275
+ </ul>
1276
+
1277
+ </div><table class="source_code">
1278
+ <tr>
1279
+ <td>
1280
+ <pre class="lines">
1281
+
1282
+
1283
+ 76
1284
+ 77
1285
+ 78
1286
+ 79
1287
+ 80</pre>
1288
+ </td>
1289
+ <td>
1290
+ <pre class="code"><span class="info file"># File 'lib/midi-communications-windows/input.rb', line 76</span>
1291
+
1292
+ <span class='kw'>def</span> <span class='id identifier rubyid_gets_s'>gets_s</span>
1293
+ <span class='id identifier rubyid_gets'>gets</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='op'>|</span>
1294
+ <span class='id identifier rubyid_message'>message</span><span class='lbracket'>[</span><span class='symbol'>:data</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="TypeConversion.html" title="MIDICommunicationsWindows::TypeConversion (module)">TypeConversion</a></span></span><span class='period'>.</span><span class='id identifier rubyid_numeric_bytes_to_hex_string'><span class='object_link'><a href="TypeConversion.html#numeric_bytes_to_hex_string-instance_method" title="MIDICommunicationsWindows::TypeConversion#numeric_bytes_to_hex_string (method)">numeric_bytes_to_hex_string</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='lbracket'>[</span><span class='symbol'>:data</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1295
+ <span class='kw'>end</span>
1296
+ <span class='kw'>end</span></pre>
1297
+ </td>
1298
+ </tr>
1299
+ </table>
1300
+ </div>
1301
+
1302
+ <div class="method_details ">
1303
+ <h3 class="signature " id="manufacturer-instance_method">
1304
+
1305
+ #<strong>manufacturer</strong> &#x21d2; <tt>nil</tt>
1306
+
1307
+
1308
+
1309
+
1310
+
1311
+ <span class="not_defined_here">
1312
+ Originally defined in module
1313
+ <span class='object_link'><a href="Device/InstanceMethods.html#manufacturer-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#manufacturer (method)">Device::InstanceMethods</a></span>
1314
+ </span>
1315
+
1316
+ </h3><div class="docstring">
1317
+ <div class="discussion">
1318
+ <p>Who made the device.</p>
1319
+ <p>Always nil on Windows. See the note in <span class='object_link'><a href="Device.html" title="MIDICommunicationsWindows::Device (module)">MIDICommunicationsWindows::Device</a></span> for why this is not
1320
+ derived from <code>wMid</code>.</p>
1321
+
1322
+ </div>
1323
+ </div>
1324
+ <div class="tags">
1325
+
1326
+ <p class="tag_title">Returns:</p>
1327
+ <ul class="return">
1328
+
1329
+ <li>
1330
+
1331
+
1332
+ <span class='type'>(<tt>nil</tt>)</span>
1333
+
1334
+
1335
+
1336
+ </li>
1337
+
1338
+ </ul>
1339
+
1340
+ </div>
1341
+ </div>
1342
+
1343
+ <div class="method_details ">
1344
+ <h3 class="signature " id="model-instance_method">
1345
+
1346
+ #<strong>model</strong> &#x21d2; <tt>nil</tt>
1347
+
1348
+
1349
+
1350
+
1351
+
1352
+ <span class="not_defined_here">
1353
+ Originally defined in module
1354
+ <span class='object_link'><a href="Device/InstanceMethods.html#model-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#model (method)">Device::InstanceMethods</a></span>
1355
+ </span>
1356
+
1357
+ </h3><div class="docstring">
1358
+ <div class="discussion">
1359
+ <p>The device model.</p>
1360
+ <p>Always nil on Windows, for the same reason as <span class='object_link'><a href="Device/InstanceMethods.html#manufacturer-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#manufacturer (method)">#manufacturer</a></span>.</p>
1361
+
1362
+ </div>
1363
+ </div>
1364
+ <div class="tags">
1365
+
1366
+ <p class="tag_title">Returns:</p>
1367
+ <ul class="return">
1368
+
1369
+ <li>
1370
+
1371
+
1372
+ <span class='type'>(<tt>nil</tt>)</span>
1373
+
1374
+
1375
+
1376
+ </li>
1377
+
1378
+ </ul>
1379
+
1380
+ </div>
1381
+ </div>
1382
+
1383
+ <div class="method_details ">
1384
+ <h3 class="signature " id="open-instance_method">
1385
+
1386
+ #<strong>open</strong> {|self| ... } &#x21d2; <tt>self</tt>
1387
+
1388
+
1389
+
1390
+ <span class="aliases">Also known as:
1391
+ <span class="names"><span id='enable-instance_method'>enable</span>, <span id='start-instance_method'>start</span></span>
1392
+ </span>
1393
+
1394
+
1395
+
1396
+ <span class="not_defined_here">
1397
+ Originally defined in module
1398
+ <span class='object_link'><a href="Device/InstanceMethods.html#open-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#open (method)">Device::InstanceMethods</a></span>
1399
+ </span>
1400
+
1401
+ </h3><div class="docstring">
1402
+ <div class="discussion">
1403
+ <p>Opens the port.</p>
1404
+ <p>Opening twice is not an error and does nothing the second time, which
1405
+ is what <code>midi-communications</code> relies on when it opens a port a caller
1406
+ may already hold.</p>
1407
+
1408
+ </div>
1409
+ </div>
1410
+ <div class="tags">
1411
+
1412
+ <p class="tag_title">Yields:</p>
1413
+ <ul class="yield">
1414
+
1415
+ <li>
1416
+
1417
+
1418
+ <span class='type'>(<tt>self</tt>)</span>
1419
+
1420
+
1421
+
1422
+ &mdash;
1423
+ <div class='inline'><p>if a block is given, the port is closed when it returns</p></div>
1424
+
1425
+ </li>
1426
+
1427
+ </ul>
1428
+ <p class="tag_title">Returns:</p>
1429
+ <ul class="return">
1430
+
1431
+ <li>
1432
+
1433
+
1434
+ <span class='type'>(<tt>self</tt>)</span>
1435
+
1436
+
1437
+
1438
+ </li>
1439
+
1440
+ </ul>
1441
+ <p class="tag_title">Raises:</p>
1442
+ <ul class="raise">
1443
+
1444
+ <li>
1445
+
1446
+
1447
+ <span class='type'>(<tt><span class='object_link'><a href="Error.html" title="MIDICommunicationsWindows::Error (class)">Error</a></span></tt>)</span>
1448
+
1449
+
1450
+
1451
+ &mdash;
1452
+ <div class='inline'><p>if WinMM refuses to open the port</p></div>
1453
+
1454
+ </li>
1455
+
1456
+ </ul>
1457
+
1458
+ </div>
1459
+ </div>
1460
+
1461
+ <div class="method_details ">
1462
+ <h3 class="signature " id="to_s-instance_method">
1463
+
1464
+ #<strong>to_s</strong> &#x21d2; <tt>String</tt>
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+ <span class="not_defined_here">
1471
+ Originally defined in module
1472
+ <span class='object_link'><a href="Device/InstanceMethods.html#to_s-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#to_s (method)">Device::InstanceMethods</a></span>
1473
+ </span>
1474
+
1475
+ </h3><div class="docstring">
1476
+ <div class="discussion">
1477
+
1478
+
1479
+ </div>
1480
+ </div>
1481
+ <div class="tags">
1482
+
1483
+ <p class="tag_title">Returns:</p>
1484
+ <ul class="return">
1485
+
1486
+ <li>
1487
+
1488
+
1489
+ <span class='type'>(<tt>String</tt>)</span>
1490
+
1491
+
1492
+
1493
+ </li>
1494
+
1495
+ </ul>
1496
+
1497
+ </div>
1498
+ </div>
1499
+
1500
+ <div class="method_details ">
1501
+ <h3 class="signature " id="type-instance_method">
1502
+
1503
+ #<strong>type</strong> &#x21d2; <tt>Symbol</tt>
1504
+
1505
+
1506
+
1507
+
1508
+
1509
+ <span class="not_defined_here">
1510
+ Originally defined in module
1511
+ <span class='object_link'><a href="Device/InstanceMethods.html#type-instance_method" title="MIDICommunicationsWindows::Device::InstanceMethods#type (method)">Device::InstanceMethods</a></span>
1512
+ </span>
1513
+
1514
+ </h3><div class="docstring">
1515
+ <div class="discussion">
1516
+ <p>The port's direction.</p>
1517
+
1518
+ </div>
1519
+ </div>
1520
+ <div class="tags">
1521
+
1522
+ <p class="tag_title">Returns:</p>
1523
+ <ul class="return">
1524
+
1525
+ <li>
1526
+
1527
+
1528
+ <span class='type'>(<tt>Symbol</tt>)</span>
1529
+
1530
+
1531
+
1532
+ &mdash;
1533
+ <div class='inline'><p><code>:input</code> or <code>:output</code></p></div>
1534
+
1535
+ </li>
1536
+
1537
+ </ul>
1538
+
1539
+ </div>
1540
+ </div>
1541
+
1542
+ </div>
1543
+
1544
+ </div>
1545
+
1546
+ <div id="footer">
1547
+ Generated on Sun Sep 6 21:20:52 2026 by
1548
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1549
+ 0.9.45 (ruby-3.4.7).
1550
+ </div>
1551
+
1552
+ </div>
1553
+ </body>
1554
+ </html>