summaryrefslogtreecommitdiff
path: root/portmidi/pm_test/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'portmidi/pm_test/README.txt')
-rw-r--r--portmidi/pm_test/README.txt363
1 files changed, 0 insertions, 363 deletions
diff --git a/portmidi/pm_test/README.txt b/portmidi/pm_test/README.txt
deleted file mode 100644
index 6c0c7ab..0000000
--- a/portmidi/pm_test/README.txt
+++ /dev/null
@@ -1,363 +0,0 @@
-README.txt - for pm_test directory
-
-These are all test programs for PortMidi
-
-Because device numbers depend on the system, there is no automated
-script to run all tests on PortMidi.
-
-To run the full set of tests manually:
-
-Note: everything is run from the ../Debug or ../Release directory.
-Actual or example input is marked with >>, e.g., >>0 means type 0<ENTER>
-Comments are shown in square brackets [like this]
-
-1. ./qtest -- output should show a bunch of tests and no error message.
-
-2. ./testio [test input]
-Latency in ms: >>0
-enter your choice... >>1
-Type input number: >>6 [pick a working input device]
-[play some notes, look for note-on (0x90) with pitch and velocity data]
-
-3. ./testio [test input (fail w/assert)]
-Latency in ms: >>0
-enter your choice... >>2
-Type input number: >>6 [pick a working input device]
-[play some notes, program will abort after 5 messages
-(this test only applies to a Debug build, otherwise
-the assert() macro is disabled.)]
-
-4. ./testio [test input (fail w/NULL assign)]
-Latency in ms: >>0
-enter your choice... >>3
-Type input number: >>6 [pick a working input device]
-[play some notes, program will Segmentation fault after 5 messages
-(this test may not Segfault in the Release build; if not
-try testing with a Debug build.)]
-
-5. ./testio [test output, no latency]
-Latency in ms: >>0
-enter your choice... >>4
-Type output number: >>2 [pick a working output device]
->> [type ENTER when prompted (7 times)]
-[hear note on, note off, note on, note off, chord]
-
-6. ./testio [test output, latency > 0]
-Latency in ms: >>300
-enter your choice... >>4
-Type output number: >>2 [pick a working output device]
->> [type ENTER when prompted (7 times)]
-[hear note on, note off, note on, note off, arpeggiated chord
- (delay of 300ms should be apparent)]
-
-7. ./testio [for both, no latency]
-Latency in ms: >>0
-enter your choice... >>5
-Type input number: >>6 [pick a working input device]
-Type output number: >>2 [pick a working output device]
-[play notes on input, hear them on output]
-
-8. ./testio [for both, latency > 0]
-Latency in ms: >>300
-enter your choice... >>5
-Type input number: >>6 [pick a working input device]
-Type output number: >>2 [pick a working output device]
-[play notes on input, hear them on output (delay of 300ms is apparent)]
-
-9. ./testio [stream test]
-Latency in ms: >>0 [does not matter]
-enter your choice... >>6
-Type output number: >>2 [pick a working output device]
->> [type ENTER to start]
-[hear 4 notes: C D E F# at one note per second, then all turn off]
-ready to close and terminate... (type ENTER) :>> [type ENTER (twice)]
-
-10. ./testio [isochronous out]
-Latency in ms: >>300
-enter your choice... >>7
-Type output number: >>2 [pick a working output device]
-ready to send program 1 change... (type ENTER): >> [type ENTER]
-[hear 80 notes, exactly 4 notes per second, no jitter]
-
-11. ./latency [no MIDI, histogram]
-Choose timer period (in ms, >= 1): >>1
-? >>1 [No MIDI traffic option]
-[wait about 10 seconds]
->> [type ENTER]
-[output should be something like ... Maximum latency: 1 milliseconds]
-
-12. ./latency [MIDI input, histogram]
-Choose timer period (in ms, >= 1): >>1
-? >>2 [MIDI input option]
-Midi input device number: >>6 [pick a working input device]
-[wait about 5 seconds, play input for 10 seconds ]
->> [type ENTER]
-[output should be something like ... Maximum latency: 3 milliseconds]
-
-13. ./latency [MIDI output, histogram]
-Choose timer period (in ms, >= 1): >>1
-? >>3 [MIDI output option]
-Midi output device number: >>2 [pick a working output device]
-Midi output should be sent every __ callback iterations: >>50
-[wait until you hear notes for 5 or 10 seconds]
->> [type ENTER to stop]
-[output should be something like ... Maximum latency: 2 milliseconds]
-
-14. ./latency [MIDI input and output, histogram]
-Choose timer period (in ms, >= 1): >>1
-? >>4 [MIDI input and output option]
-Midi input device number: >>6 [pick a working input device]
-Midi output device number: >>2 [pick a working output device]
-Midi output should be sent every __ callback iterations: >>50
-[wait until you hear notes, simultaneously play notes for 5 or 10 seconds]
->> [type ENTER to stop]
-[output should be something like ... Maximum latency: 1 milliseconds]
-
-15. ./mm [test with device input]
-Type input device number: >>6 [pick a working input device]
-[play some notes, see notes printed]
->>q [Type q ENTER when finished to exit]
-
-16. ./midithread -i 6 -o 2 [use working input/output device numbers]
->>5 [enter a transposition number]
-[play some notes, hear parallel 4ths]
->>q [quit after ENTER a couple of times]
-
-17. ./midiclock [in one shell]
- ./mm [in another shell]
-[Goal is send clock messages to MIDI monitor program. This requires
- either a hardware loopback (MIDI cable from OUT to IN on interface)
- or a software loopback (macOS IAC bus or ALSA MIDI Through Port)]
-[For midiclock application:]
- Type output device number: >>0 [pick a device with loopback]
- Type ENTER to start MIDI CLOCK: >> [type ENTER]
-[For mm application:]
- Type input device number: >>1 [pick device with loopback]
- [Wait a few seconds]
- >>s [to get Clock Count]
- >>s [expect to get a higher Clock Count]
-[For midiclock application:]
- >>c [turn off clocks]
-[For mm application:]
- >>s [to get Clock Count]
- >>s [expect to Clock Count stays the same]
-[For midiclock application:]
- >>t [turn on time code, see Time Code Quarter Frame messages from mm]
- >>q [to quit]
-[For mm application:]
- >>q [to quit]
-
-18. ./midithru -i 6 -o 2 [use working input/output device numbers]
-[Play notes on input evice; notes are sent immediately and also with a
- 2 sec delay to the output device; program terminates in 60 seconds or
- when you play B3 (B below Middle C)]
->> [ENTER to exit]
-
-19. ./recvvirtual -h [in one shell, macOS and Linux only]
- ./recvvirtual -m vvv [for mac, or -c vvv -p vvvport for linux]
- ./testio [in another shell]
-[For testio application:]
- Latency in ms: >>0
- enter your choice... >>4 [test output]
- Type output number: >>9 [select the "portmidi (output)" device]
- [type ENTER to each prompt, see that recvvirtual "Got message 0"
- through "Got message 9"]
- >> [ENTER to quit]
-[For recvvirtual application:]
- >> [ENTER to quit]
-
-20. ./sendvirtual -h [in one shell, macOS and Linux only]
- ./sendvirtual -m vvv [for mac, or -c vvv -p vvvport for linux]
- ./mm [in another shell]
-[For mm application:]
- Type input device number: >>10 [select the "portmidi" device]
-[For sendvirtual application:]
- Type ENTER to send messages: >> [type ENTER]
- [see NoteOn and off messages received by mm for Key 60-64]
- >> [ENTER to quit]
-[For mm application:]
- >>q [and ENTER twice to quit]
-
-21. ./sysex [no latency]
-[This requires either a hardware loopback (MIDI cable from OUT to IN
- on interface) or a software loopback (macOS IAC bus or ALSA MIDI
- Through Port)]
->>l [for loopback test]
-Type output device number: >>0 [pick output device to loopback]
-Latency in milliseconds: >>0
-Type input device number: >>0 [pick input device for loopback]
-[Program will send 100,000 bytes. After awhile, program will quit.
- You can read the Cummulative bytes/sec value.]
-
-22. ./sysex [latency > 0]
-[This requires either a hardware loopback (MIDI cable from OUT to IN
- on interface) or a software loopback (macOS IAC bus or ALSA MIDI
- Through Port)]
->>l [for loopback test]
-Type output device number: >>0 [pick output device to loopback]
-Latency in milliseconds: >>100
-Type input device number: >>0 [pick input device for loopback]
-[Program will send 100,000 bytes. After awhile, program will quit. You
- can read the Cummulative bytes/sec value; it is affected by latency.]
-
-23. ./fast [no latency]
- ./fastrcv [in another shell]
-[This is a speed check, especially for macOSX IAC bus connections,
- which are known to drop messages if you send messages too fast.
- fast and fastrcv must use a loopback to function.]
-[In fastrcv:]
- Input device number: >>1 [pick a non-hardware device if possible]
-[In fast:]
- Latency in ms: >>0
- Rate in messages per second: >>10000
- Duration in seconds: >>10
- Output device number: >>0 [pick a non-hardware device if possible]
- sending output...
-[see message counts and times; on Linux you should get about 10000
- messages/s; on macOS you should get about 1800 messages/s; Windows
- does not have software ports, so data rate might be limited by the
- loopback device you use.]
-
-Check output of fastrcv: there should be no errors, just msg/sec.]
-
-24. ./fast [latency > 0]
- ./fastrcv [in another shell]
-[This is a speed check, especially for macOSX IAC bus connections,
- which are known to drop messages if you send messages too fast.
- fast and fastrcv must use a loopback to function.]
-[In fastrcv:]
- Input device number: >>1 [pick a non-hardware device if possible]
-[In fast:]
- Latency in ms: >>30 [Note for ALSA, use latency * msgs/ms < 400]
- Rate in messages per second: >>10000
- Duration in seconds: >>10
- Output device number: >>0 [pick a non-hardware device if possible]
- sending output...
-[see message counts and times; on Linux you should get about 10000
- messages/s; on macOS you should get about 1800 messages/s; Windows
- does not have software ports, so data rate might be limited by the
- loopback device you use.]
-
-Check output of fastrcv: there should be no errors, just msg/sec.]
-
-25. ./fast [virtual output port, latency = 0, macOS and Linux only]
- ./fastrcv [in another shell]
-[Start fast first:]
- Latency in ms: >>0
- Rate in messages per second: >>10000
- Duration in seconds: >>10
- Output device number: >>9 [enter number listed for "Create virtual
- port named 'fast' (output)"]
- Pausing so you can connect a receiver to the newly created
- "fast" port. Type ENTER to proceed:
-[In fastrcv:]
- Input device number: >>3 [pick the device named "fast (input)"]
-[In fast:]
- >> [type ENTER to start]
-[see message counts and times as above ]
-
-Check output of fastrcv: there should be no errors, just msg/sec.]
-
-26. ./fast [virtual output port, latency > 0, macOS and Linux only]
- ./fastrcv [in another shell]
-[Start fast first:]
- Latency in ms: >>30 [Note for ALSA, use latency * msgs/ms < 400]
- Rate in messages per second: >>10000
- Duration in seconds: >>10
- Output device number: >>9 [enter number listed for "Create virtual
- port named 'fast' (output)"]
- Pausing so you can connect a receiver to the newly created
- "fast" port. Type ENTER to proceed:
-[In fastrcv:]
- Input device number: >>3 [pick the device named "fast (input)"]
-[In fast:]
- >> [type ENTER to start]
-[see message counts and times as above ]
-
-Check output of fastrcv: there should be no errors, just msg/sec.]
-
-27. ./fast [latency = 0, macOS and Linux only]
- ./fastrcv [virtual input port, in another shell]
-[In fastrcv:]
- Input device number: >>8 [enter number listed for "Create virtual
- port named 'fastrcv' (input)"]
-[In fast:]
- Latency in ms: >>0
- Rate in messages per second: >>10000
- Duration in seconds: >>10
- Output device number: >>7 [pick the device named "fastrcv (output)"]
- sending output...
-[see message counts and times as above ]
-
-Check output of fastrcv: there should be no errors, just msg/sec.]
-
-28. ./fast [latency > 0, macOS and Linux only]
- ./fastrcv [virtual input port, in another shell]
-[In fastrcv:]
- Input device number: >>8 [enter number listed for "Create virtual
- port named 'fastrcv' (input)"]
-[In fast:]
- Latency in ms: >>30 [Note for ALSA, use latency * msgs/ms < 400]
- Rate in messages per second: >>10000
- Duration in seconds: >>10
- Output device number: >>7 [pick the device named "fastrcv (output)"]
- sending output...
-[see message counts and times as above ]
-
-Check output of fastrcv: there should be no errors, just msg/sec.]
-
-29. ./midithru -v -n [virtual input and output, macOS and Linux only]
- ./fast [latency = 0]
- ./fastrcv [in another shell]
-[Start midithru first, it will run for 60 seconds]
-[In fastrcv:]
- Input device number: >>3 [pick the device named
- port named "midithru (input)"]
-[In fast:]
- Latency in ms: >>0
- Rate in messages per second: >>10000
- Duration in seconds: >>10
- Output device number: >>8 [pick the device named "midithru (output)"]
- sending output...
-[see message counts and times as above, on Mac, output from fast to
- midithru AND output from midithru to fastrcv are rate limited, so
- as in other tests, it will take more than 10s to receive all the
- messages and the receiving message rate will be about 1800 messages/second]
-
-30. ./multivirtual [macOS and Linux only]
- ./testio
- ./testio
-[Start multivirtual first]
-[In first testio:]
- Latency in ms: >>0
- enter your choice... >>5 [test both]
- Type input number: >>1 [pick portmidi1 (input)
- Type output number: >>4 [pick portmidi1 (output)
-[In second testio:]
- Latency in ms: >>10
- enter your choice... >>5 [test both]
- Type input number: >>2 [pick portmidi2 (input)
- Type output number: >>5 [pick portmidi2 (output)
-[In multivirtual:]
- Type ENTER to send messages: >> [type ENTER to start]
-[see that each testio gets 11 messages (0 to 10) at reasonable times
- (e.g. 2077 to 7580, and the "@" times (real times) should match the
- timestamps). multivirtual should also report reasonable times and
- line near the end of output should be "Got 11 messages from
- portmidi1 and 11 from portmidi2; expected 11."]
-
-31. ./multivirtual [macOS and Linux only]
- ./multivirtual
-[Second instance should report "PortMidi call failed...
- PortMidi: Cannot create virtual device: name is taken"]
-
-32. pmlist
- ./pmlist [check the output]
- [plug in or remove a device]
- >> [type RETURN]
- [check for changes in device list]
- >>q
-
-
-
-