File tree 3 files changed +69
-9
lines changed
3 files changed +69
-9
lines changed Original file line number Diff line number Diff line change @@ -19,23 +19,51 @@ midi.createReadStream = function(input) {
19
19
var packet = new Buffer ( message ) ;
20
20
21
21
if ( ! stream . paused ) {
22
- var res = stream . emit ( 'data' , packet ) ;
22
+ stream . emit ( 'data' , packet ) ;
23
23
} else {
24
24
stream . queue . push ( packet ) ;
25
25
}
26
-
27
- if ( ! res ) {
28
- stream . paused = true ;
29
- stream . once ( 'drain' , function ( ) {
30
- while ( stream . queue . length && stream . write ( queue . shift ( ) ) ) { }
31
- } ) ;
32
- }
33
26
} ) ;
34
27
28
+ stream . pause = function ( ) {
29
+ stream . paused = true ;
30
+ } ;
31
+
32
+ stream . resume = function ( ) {
33
+ stream . paused = false ;
34
+ while ( stream . queue . length && stream . write ( queue . shift ( ) ) ) { }
35
+ } ;
36
+
35
37
return stream ;
36
38
} ;
37
39
38
40
39
- midi . createWriteStream = function ( ) {
41
+ midi . createWriteStream = function ( output ) {
42
+ output = output || new midi . output ( ) ;
43
+ var stream = new Stream ( ) ;
44
+ stream . writable = true ;
45
+ stream . paused = false ;
46
+ stream . queue = [ ] ;
47
+
48
+ stream . write = function ( d ) {
40
49
50
+ if ( Buffer . isBuffer ( d ) ) {
51
+ d = [ d [ 0 ] , d [ 1 ] , d [ 2 ] ] ;
52
+ }
53
+
54
+ output . sendMessage ( d ) ;
55
+
56
+ return ! this . paused ;
57
+ }
58
+
59
+ stream . end = function ( buf ) {
60
+ buf && stream . write ( buf ) ;
61
+ stream . writable = false ;
62
+ } ;
63
+
64
+ stream . destroy = function ( ) {
65
+ stream . writable = false ;
66
+ }
67
+
68
+ return stream ;
41
69
} ;
Original file line number Diff line number Diff line change
1
+ �Q
Original file line number Diff line number Diff line change
1
+ var midi = require ( "../midi.js" ) ;
2
+ var virtualInput = new midi . input ( ) ;
3
+ var output = new midi . output ( ) ;
4
+ var assert = require ( 'assert' ) ;
5
+ var fs = require ( 'fs' ) ;
6
+ var expect = [ 144 , 23 , 81 ] ;
7
+ var called = false ;
8
+ var writer = midi . createWriteStream ( output ) ;
9
+
10
+ virtualInput . openVirtualPort ( "node-midi" ) ;
11
+ virtualInput . on ( 'message' , function ( deltaTime , buffer ) {
12
+ assert . deepEqual ( buffer , expect ) ;
13
+ called = true ;
14
+ } ) ;
15
+
16
+
17
+ for ( var i = 0 ; i < output . getPortCount ( ) ; ++ i ) {
18
+ if ( output . getPortName ( i ) === 'node-midi' ) {
19
+ output . openPort ( i ) ;
20
+ break ;
21
+ }
22
+ }
23
+
24
+ fs . createReadStream ( __dirname + '/fixture/144-23-81.bin' ) . pipe ( writer ) ;
25
+
26
+ setTimeout ( function ( ) {
27
+ assert ( called ) ;
28
+ output . closePort ( ) ;
29
+ virtualInput . closePort ( ) ;
30
+ process . exit ( 0 ) ;
31
+ } , 100 ) ;
You can’t perform that action at this time.
0 commit comments