Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement a reliable port selection API #30

Open
wants to merge 260 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
260 commits
Select commit Hold shift + click to select a range
687a039
Bump library version.
Mar 30, 2014
68f2e38
Silence some warnings about unused parameters.
Mar 30, 2014
7d36db3
Provide some abstraction layer that will eventually handle all generi…
Apr 5, 2014
1793608
Provide the implementation part of the prvious patch.
Apr 5, 2014
6bbeebc
Provide the implementation part of the prvious patch.
Aug 8, 2018
be26958
Some whitespace fixes
Apr 5, 2014
b39eb3d
Implement some functions.
Apr 5, 2014
1056eac
Add first tests for the new port selection API.
Apr 5, 2014
e350a7c
Implement opening ALSA output ports.
Apr 6, 2014
3606ea7
Fix port handling of old port handling.
Apr 6, 2014
00e8774
fix sendMessage which got an error.
Apr 6, 2014
1d7cddc
Adapt qmidiin to the new API.
Apr 6, 2014
7f2aadb
Implement the missing functions of the proposed port selection API.
Apr 8, 2014
c314e85
Provide a test case that uses virtual ports to test communication wit…
Apr 8, 2014
ab08fd5
Implement new port selection API for JACK
Apr 13, 2014
df6cb65
Fix checking for the length of the gool.
Apr 13, 2014
996d4ea
Really show output ports to the user in midiout2.
Apr 13, 2014
4a0af7e
Flush the output queue when a JACK client connection is going to be c…
Apr 13, 2014
b404c32
Update midiout2 provides a virtual output port (not input port) ;-)
Apr 13, 2014
3f505b9
Emulate the new port selection API for WinMM.
Apr 26, 2014
e930f0e
Implement the new API for CoreMidi.
May 1, 2014
1c3fef8
Fix destructors of some sequencer classes.
May 1, 2014
1e124d4
Fix getPortName(PortDescriptor) for Core MIDI.
May 2, 2014
89c1a64
Use "RtMidi virtual port" as default for virtual ports.
May 2, 2014
2f3c663
Make everything dependent on RtMidi.h
May 2, 2014
e976325
Improve the identification of virtual ports using Core MIDI.
May 2, 2014
2011265
Convert tests for the port descriptor API to use the new API directly.
May 4, 2014
dec51eb
Fix compilation on Linux as well as duplicate closing of the ALSA seq…
May 4, 2014
f9996df
Add tests for the port descriptor API to the documentation as examples.
May 4, 2014
d551556
Update the documentation to reflect the port descriptor API.
May 4, 2014
832b543
Depricate old API and rename RTMIDI_DUMMY to DUMMY (not in compatibli…
May 11, 2014
0d5b881
Some whitespace fixes
Aug 8, 2018
f3a9fc6
Fix conflict in the makefile.
May 17, 2014
ce3339c
Allow to enumerate all MIDI ports from all APIs.
May 17, 2014
f90014e
Add configure options to enable runtime pointer and thread checks.
May 17, 2014
23aa1e7
Partly fix an issue of the JACK backend that loses data and may cause…
May 17, 2014
228c91c
Close the JACK independently from sending data.
May 17, 2014
a6edc5d
Check whether the JACK write buffer exists before sending MIDI data.
May 17, 2014
6c60ef5
Store API parameters for later usage and allow to choose the order of…
May 18, 2014
1a0e931
Implement virtual ports for rtmidi::ALL_API
May 18, 2014
b61b6b8
Update input tests/examples for rtmidi::ALL_API.
May 18, 2014
f5725fc
Update the documentation to reflect the last changes to RtMidi
May 18, 2014
af535ed
Fix some errors found by Gary.
May 28, 2014
e3374cf
make PortDescriptor a class (it was partly a struct).
May 29, 2014
45e4285
Merge autotools-patchset and Core memory leak patch into portdescript…
Jun 7, 2014
e7aeafc
Emulate the new port selection API for WinMM.
Jun 8, 2014
14a3c8f
Use automake for tests and provide some limited test cases.
Jun 7, 2014
defbbf9
Merge branch 'portdescriptor-api' of git@github.com:keinstein/rtmidi.…
Jun 8, 2014
87b23ad
Fix compilation on Windows.
Jun 8, 2014
f139345
Fix some compilation warnings in the WinMM code.
Jun 8, 2014
ce531f6
getPortList returns an empty set if the requirements cannot be met.
Jun 8, 2014
e17a725
End-user friendly error messages.
Jun 7, 2014
3ef6b7f
Merge forgotten windows changes from 'portdescriptor-api' into i18n+G…
Jun 8, 2014
7939b20
Fix the remaining compilation errors for WinMM and the Error patch.
Jun 8, 2014
0179824
Merge branch 'portdescriptor-api' into i18n+GUI-friendly
Jun 8, 2014
5b6f0f8
Gettextize the source tree.
Jun 8, 2014
fd664e5
Example locale: German without any translated strings.
Jun 8, 2014
cbe9bce
Advice people to run autoreconf after git checkout.
Jun 8, 2014
ce8fb4c
Revise some error messages and make API descriptions translatable.
Jun 10, 2014
e710038
Remove some unused functions.
Jun 10, 2014
f4dc403
Update translation strings.
Jun 10, 2014
9086673
Provide a preliminary complete German translation.
Jun 10, 2014
8ab3e39
Implement automatic gettext configuration if RtMidi is compiled with …
Jul 26, 2014
af8ee5f
Remove some unused code.
Jul 30, 2014
e838cdd
Return localized API name from getApiName()
Jul 30, 2014
7ea16f3
Use the API error function if present from global classes.
Jul 30, 2014
9ded621
Hand over some error exceptions to the error function.
Jul 30, 2014
8557bfb
Change some error types to be more specific.
Jul 30, 2014
1c1447b
Use C++ to describe callbacks of the different kinds.
Jul 30, 2014
5927e23
Integrate inputData_ into MidiInApi.
Jul 30, 2014
81faa71
Fix some error messages and documentation.
Jul 30, 2014
2ef2e0e
Revise and add some error handling code.
Jul 30, 2014
1ff3de5
Remove some debug output.
Jul 30, 2014
8cb47f8
Initialize JackSequencer in a separate step in order to avoid certain…
Jul 30, 2014
0a46fc5
Fix some compiler errors that have been left over by the last patches.
Jul 30, 2014
c753cb8
Add an error test case.
Jul 30, 2014
2c3f5c6
Copy Windows DLLs into the test directory before running the individu…
Sep 5, 2014
a7462bb
Add some additionally useful documentational files.
Jul 30, 2014
cb2bf64
ignore generated documentation
Sep 7, 2014
32ca0ff
Tell git to ignore all Makefile{,.in} and *.orig and *~
Sep 7, 2014
b781576
Fix the last changes on Mac OS X 10.5.
Sep 7, 2014
dcc4bce
Merge branch 'i18n+GUI-friendly' of github.com:keinstein/rtmidi into …
Sep 7, 2014
08addf4
Allow further Applications using the old API to be compiled without c…
Sep 8, 2014
be3bd43
Merge branch 'i18n+GUI-friendly' of git@github.com:keinstein/rtmidi.g…
Sep 8, 2014
e7243eb
Fix compilation using clang 3.4 on Mac OS X 10.5
Sep 9, 2014
8188d31
Merge branch 'i18n+GUI-friendly' of git@github.com:keinstein/rtmidi.g…
Sep 9, 2014
6b6ecf0
Provide better backwards compatibility and verbose deprecation warnings.
Sep 11, 2014
369c567
Fix compiling with C++11 - can't typedef a template, can't implicitly…
DouglasHeriot Sep 2, 2015
443e8f3
Fix building on Windows with Visual Studio
DouglasHeriot Sep 3, 2015
2b3a29c
Oops, fix #ifdef
DouglasHeriot Sep 5, 2015
c24e696
Fix Linux Alsa build - oops, extra bracket.
DouglasHeriot Sep 5, 2015
ce97b74
Merge branch 'DouglasHeriot-cpp11-fix' into i18n+GUI-friendly
Oct 14, 2015
c889a1f
Properly return after finishing the loopback test.
Oct 14, 2015
74a0483
Fix deleting of callback objects.
Oct 14, 2015
850d4b4
Add rtmidi_gettext to the keywords used by xgettext.
Oct 14, 2015
d9d9720
Change bug report address and package name to avoid confusion.
Oct 14, 2015
60ec696
Updated translation files: rtmidi.pot de.po
Oct 14, 2015
ce0b6cd
Update pot file
Oct 14, 2015
065bd06
disable trim function as it is unused
Mar 30, 2016
12ae725
AlsaMidiData is a struct.
Mar 30, 2016
76df905
Merge branch 'i18n+GUI-friendly' into HEAD
Feb 28, 2016
4c8764e
Merge branch 'master-ts' into whitespace2
Feb 28, 2016
cb1e9ad
Update translations.
Feb 28, 2016
af49a24
Fix compilation with gettext support.
Mar 31, 2016
4057589
Fix compilation of dummy midi device.
Mar 31, 2016
b6bb480
Avoid triggering of warnings in RtMidi.h when the functions are not a…
Apr 1, 2016
cc0f6d1
Add PortPointer as Pointer type for increasing readablity of source c…
Apr 1, 2016
0058095
Add some missing operators to for the Pointer Class.
Apr 1, 2016
0c80e6b
Merge branch 'i18n+GUI-friendly' into master-ts
Mar 31, 2016
0161cab
Write sub-constructors in the correct order for MidiApi::MidiApi().
Apr 2, 2016
e99079f
Merge branch 'master-ts' of git@github.com:keinstein/rtmidi.git into …
Apr 2, 2016
86aac09
Fix issuing of deprication warnings.
Apr 2, 2016
5abe1ee
Constistently use references to strings.
Apr 2, 2016
c02a15b
Use a Reference rather than a pointer to the message object in the MI…
Apr 2, 2016
cca569d
Fix the error detection in sendMessage.
Apr 14, 2016
1591454
update gettext
Jan 14, 2018
f17180a
allow to include configure.library as well as Makefile.am into other …
Jan 14, 2018
7c773cb
Fix Constant names so that they do not clash with windows predefined …
Jan 14, 2018
6d9bc8c
Specialize getPortList for MIDI input as well as MIDI output to selec…
Jan 14, 2018
8e0dd49
fix gettext-enabled compilation
Jan 14, 2018
147d4bb
fix warnings about unused arguments
Jan 14, 2018
0e210ab
Fix warning about redefined macro
Jan 14, 2018
321164b
Fix warning about signed/unsigned comparison
Jan 14, 2018
fef3603
fix compilation of loopback
Jan 14, 2018
f1b3a8b
configure suffix, build and test as part of another project
Jan 26, 2018
13873da
Fix exception handling for multiple APIs when jack cannot connect to …
Jan 26, 2018
dce42b0
Silence some compiler warnings when they do not apply.
Jan 26, 2018
f504f04
Fix internal pointer class.
Jan 26, 2018
d7edd3e
Fix some spelling errors.
Jan 26, 2018
160635a
add m4 directory
Jan 26, 2018
6b83962
Distribute config.rpath and sources for some configuration files (fix…
Mar 8, 2018
2a781d0
fix two errors with new api
Mar 17, 2018
962f50b
implement trim according to C++11
Mar 17, 2018
a45866e
Use old gettext to make travis happy
Mar 17, 2018
dc916a2
Add travis.yml
Mar 17, 2018
ff3536a
add po to SUBDIRS
Mar 17, 2018
6691109
check for ar
Mar 17, 2018
a903569
Another fix for the po not in SUBDIRS problem.
Mar 17, 2018
6866ce5
generate config/config.rpath by script
Mar 17, 2018
2d12be9
neutralize fallthrough macro if it is not defined.
Mar 17, 2018
ec1b13a
Fix fallthrough
Mar 17, 2018
226f646
Forch C++11
Mar 17, 2018
661b830
Add missing m4 files
Mar 17, 2018
3bda3bc
split Makefile
Mar 17, 2018
4ee5c80
Update README to match current state.
Mar 18, 2018
69711ce
rename COREMIDI defined macro
Mar 18, 2018
1c9bb4d
Reorganize build system.
Mar 18, 2018
4ffae07
Fix some minor build system errors
Mar 18, 2018
d9ff423
output test-suite.log in case of check errors
Mar 18, 2018
6d46184
Fix check for preventing backend tests.
Mar 18, 2018
b711ce8
Some further diagnostics for errors.cpp
Mar 18, 2018
4dee467
return error after output of test-suite.log
Mar 18, 2018
923c13b
Fix interface errors from CoreMidi
Mar 18, 2018
5048c71
Report ALSA error in case AlsaSequencer cannot be initialized.
Mar 18, 2018
ac78ba4
Report NO_DEVICES_FOUND if ALSA does not find /dev/snd/seq.
Mar 18, 2018
9606276
Report Error number if AlsaSequencer cannot be intitialized.
Mar 18, 2018
46b5f68
Correct last patch: show error code in default branch.
Mar 18, 2018
558201e
Error numbers are negative and error constants positive...
Mar 18, 2018
dd0a2da
trying with sudo: false
Mar 18, 2018
01b9ace
always show errors.log so that we know how ALSA performs
Mar 18, 2018
530a086
Define HAVE_LIBWINKS to 1
Mar 19, 2018
2491c8d
Move rtmidi-private m4 files into separate subdirectory
Mar 21, 2018
f2787d1
New FALLTHROUGH check and added ac_lib_winmm.m4
Mar 21, 2018
33319a4
Add missing variables to Makevars
Mar 21, 2018
520ffbb
Travis-ci: make distcheck
Mar 21, 2018
e1bc3a3
fix check for fallthrough syntax
Mar 25, 2018
2de93a5
full matrix including windows
Mar 25, 2018
7ca9ebe
move osx_image into os:osx
Mar 25, 2018
fed5162
remove osx_image and windows
Mar 25, 2018
05f3622
add colon after os
Mar 25, 2018
8c1403c
remove everything
Mar 25, 2018
6ee5383
readd xcode image
Mar 25, 2018
728c35d
move osx_image to top level
Mar 25, 2018
fa5e6f8
readd windows
Mar 25, 2018
63c932b
remove windows
Mar 25, 2018
642006c
trying appveyor
Mar 25, 2018
23ef177
add appveyor badge
Mar 25, 2018
47804e5
try to activate gcc
Mar 25, 2018
29b4fea
show topdir and use bash to run compilation
Mar 25, 2018
b47700a
Disable deprecated warnings for test suite
Mar 25, 2018
19e8cb2
trying xcode only in osx
Mar 25, 2018
eecd8cf
exclude appveyor test branches from travis builds
Mar 25, 2018
fd60e27
remove appveyor.yml
Mar 25, 2018
e864662
add dash to branch exception patten
Mar 26, 2018
fbea08a
fix error in .travis.yml
Mar 26, 2018
cfc87ae
Use appveyor
Mar 25, 2018
8629e05
fix FALLTHROUGH definition
Jun 7, 2018
7489c95
Silence some warnings.
Jun 7, 2018
8caf657
reactivate RTMIDITESTLDFLAGS
Jun 7, 2018
817439e
create CLEANFILES variable
Jun 7, 2018
94fa1a0
Fix windows paths for DLL dirs.
Jul 20, 2018
e6d1714
fix dll search path
Jul 29, 2018
b156317
Additional debug output
Aug 2, 2018
244e310
Fix DLL target dir
Aug 3, 2018
ea783b7
Merge commit '22f6344e3ed90619a639258157744b4ef7db5754' into master-ts
Aug 4, 2018
d82c415
Merge commit '74c92f7c9b93415650d7d449c7d0a5de0e803b26' into master-ts
Aug 4, 2018
f74c644
Ignore namespace in indentation
Aug 4, 2018
917acf3
Merge commit '109edc86fee6153f97a0a4e0fb63b3971a6bb30c' into master-ts
Aug 4, 2018
61caaf6
Catch exceptions without unnecessary copies.
Aug 4, 2018
79531c1
Merge commit '34a195402a28f1e1b87cab93d6be0e22108097ab' into master-ts
Aug 4, 2018
9650b9b
Merge commit '7b6ed715587f3390fb4ef6b3eb532a630b5d1e7c' into master-ts
Aug 4, 2018
6cea777
Merge commit '447308a38f22211910439b6c7483aba7862d3f0e' into master-ts
Aug 4, 2018
7556bb9
Merge commit '120350bdb30a9b3b70f8fe0502824e4f040b7635' into master-ts
Aug 4, 2018
a8e4db0
Merge commit '9b3b34a70f43d78bf5fb035de46da7cb5789a46d' into master-ts
Aug 4, 2018
bbaf9b6
Silence unnecessary debug output
Aug 4, 2018
de02b24
Fix C interface
Aug 4, 2018
ced1f04
Fix distclean
Aug 4, 2018
172af4b
Fix distcheck when doxygen is not available
Aug 4, 2018
9d43bf1
Merge commit 'c91f5fc30f88d7c50b59afa30a399a1a21b2ad71' into master-ts
Aug 4, 2018
bd23c65
Merge tag '2.1.1' into master-ts
Aug 4, 2018
7e308d6
Merge 39fb73f32ef04efbe2861dd2924b431a40a44ebe
Aug 4, 2018
29b76ba
Merge commit '1aa4d04add81f62333d281c129b2cc20b734a9a9' into master-ts
Aug 4, 2018
9917f69
Merge commit 'd752799b56427f6defca8a524c3ffcab67f146a4' into master-ts
Aug 4, 2018
91a733d
Merge commit '399a8ee902978ebee63337d7de57799c3420ad16' into master-ts
Aug 5, 2018
0e506d4
Merge commit '8d9776fb130f5edca564f34c17459227d0685b2e' into master-ts
Aug 5, 2018
baf7bd5
Merge commit 'edb963b608c0b682a5154a35c898cc607d517dc9' into master-ts
Aug 7, 2018
dee7cf4
Merge commit 'e4fd4f759dca916ff1017ec88c0aacda4354c5e9' into master-ts
Aug 7, 2018
547af76
Merge commit 'd4e108282c8f0e2a8e206165f2de10d515e64e0d' into master-ts
Aug 7, 2018
b110bff
Merge commit 'd17d6d64e083a5a7b97cb8d27fe530722f12e81e' into master-ts
Aug 7, 2018
7439593
Merge commit 'c87a1d276b92d09a6dadf54eb5260dd348e08b9d' into master-ts
Aug 7, 2018
dbdd976
Merge commit '3c00f021857994e784c9ee95f188cd0bba6ab819' into master-ts
Aug 7, 2018
04ac328
Merge commit '758c8b99154824820fc99985f9f51a8aba27e272' into master-ts
Aug 7, 2018
caf128c
Merge commit '88ebcca388cfcd43eb1c8773628ba638e721b4f4' into master-ts
Aug 7, 2018
ee64806
Merge commit 'c3328c0a83de96d96de15959ca21d6ba16219f92' into master-ts
Aug 7, 2018
0a34079
Merge commit 'e3097e2aee9ca7b84260c0044fd92dcc6fec84b9' into master-ts3
Aug 10, 2018
b0c3451
Upgrade boost only if necessary
Aug 10, 2018
6b36a0d
Use temporary objects for CFStringRef on MacOS
Aug 10, 2018
8fd1c7f
Fix coremidi renaming
Aug 10, 2018
bc1fc73
Merge commit '9a58b5df44f759318933cf333713a7879d6da5b1' into master-ts3
Aug 10, 2018
8a04a70
Merge commit '837d6ad7a1c984102db30179c65bb66dbaf1af89' into master-ts3
Aug 10, 2018
ba259f9
Merge commit 'db9277b68b03fa3be4c6bd30c31c3dc9f7afae36' into master-ts3
Aug 10, 2018
90753be
Merge commit '4adb2275fb7ae3bd6f4f591112a8aabfd5149cf1' into master-ts3
Aug 10, 2018
96d9218
Port: Merge commit 'd38c229014723a6dbc5f7b246f464708d01f588e' into ma…
Aug 10, 2018
00ee8e6
Port: Merge commit 'b0cacfdc2f31f831e6cfabd0e1c282a4befaf81b' into ma…
Aug 10, 2018
8ab3bbd
Merge commit '88e53b9cfe60719c9ade800795313f3c6026c48c' into master-ts3
Aug 11, 2018
fa87b8f
Move *Api classes below the public API
Aug 11, 2018
9b13e2a
Move inline implementations of the public API classes after *Api
Aug 11, 2018
a735b61
Port: Merge commit '3c788c139fb888026a4fbf6a3ec688f406b5b773' into ma…
Aug 11, 2018
6b7727f
Port: Merge commit '1182656ceb6b702c6b035d1fe8f39741c092440a' into ma…
Aug 11, 2018
532b20c
remove libtool generated files
Aug 11, 2018
bad1139
fixs .travis.yml
Aug 11, 2018
74fe28b
remove --force from autogen.sh
Aug 11, 2018
a939acb
check for sem_timedwait as this is not available on Mac OS X
Aug 11, 2018
204849d
Fix some minor Mac OS X issues
Aug 11, 2018
a888e47
Fix coremidi and build multi-api binaries.
Aug 11, 2018
d225d2b
Merge remote-tracking branch 'Upstream/master' into master-ts3
Aug 13, 2018
f628504
Merge remote-tracking branch 'Upstream/master' into master-ts3
Aug 13, 2018
c4a05d3
Fix Dummy interface
Aug 13, 2018
3f6ef4e
Update translations
Aug 13, 2018
3b9ba4c
Merge remote-tracking branch 'Upstream/master' into portdescriptor-api
Aug 28, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .dir-locals.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")

((c++-mode
(c-basic-offset . 2))
(c-mode
(c-basic-offset . 2)))

15 changes: 10 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
/config
/configure
/Makefile.in
/doc/html
Makefile
Makefile.in
/aclocal.m4
/autom4te.cache
/configure
/m4
/doc/Makefile.in
/tests/Makefile.in
/build*/
/m4/libtool.m4
/m4/ltoptions.m4
/m4/ltsugar.m4
/m4/ltversion.m4
/m4/lt~obsolete.m4
*.orig
*~
82 changes: 64 additions & 18 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
language: cpp
git:
depth: 1
branches:
except:
- /(?i:appveyor)/
sudo: false # docker VM
matrix:
include:
Expand All @@ -15,11 +19,17 @@ matrix:
env: HOST="" API="jack"
compiler: clang
- os: linux
env: HOST="--host=i686-w64-mingw32" API="winmm"
env: HOST="--with-jack" API="alsa"
compiler: gcc
- os: linux
env: HOST="--host=x86_64-w64-mingw32" API="winmm"
compiler: gcc
env: HOST="--with-jack" API="alsa"
compiler: clang
# - os: linux
# env: HOST="--host=i686-w64-mingw32" API="winmm"
# compiler: gcc
# - os: linux
# env: HOST="--host=x86_64-w64-mingw32" API="winmm"
# compiler: gcc
# jack and asound not found on ARM gnueabihf
# - os: linux
# env: HOST="--host=arm-linux-gnueabihf" API="alsa"
Expand All @@ -28,20 +38,56 @@ matrix:
# env: HOST="--host=arm-linux-gnueabihf" API="jack"
# compiler: gcc
- os: osx
env: HOST="" API="core"
env: HOST="" API="coremidi"
compiler: gcc
- os: osx
env: HOST="" API="coremidi"
compiler: clang
- os: osx
env: HOST="" API="jack"
compiler: gcc
- os: osx
env: HOST="" API="jack"
compiler: clang
- os: osx
env: HOST="--with-jack" API="coremidi"
compiler: gcc
- os: osx
env: HOST="" API="core"
env: HOST="--with-jack" API="coremidi"
compiler: clang
install:
- if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get install libasound2-dev libjack-dev doxygen g++-mingw-w64-i686 g++-mingw-w64-x86-64 g++-arm-linux-gnueabihf; fi
- if [ $TRAVIS_OS_NAME = osx ]; then brew install doxygen || (brew update && brew install doxygen); fi
- if [ -n "$HOST" ]; then unset CXX; unset CC; fi
script: ./autogen.sh --enable-debug --with-$API $HOST && make
after_script:
- make check
- make distcheck
- make install
# ALSA: no access to /dev/snd/seq
# JACK: Jack server not running
# - tests/midiprobe
language: c++
group: travis_latest


addons:
apt:
packages:
- autoconf
- libtool
- autopoint
- automake
- libasound-dev
- libjack-dev
- libcppunit-dev
- doxygen
- g++-mingw-w64-i686
- g++-mingw-w64-x86-64
- g++-arm-linux-gnueabihf


before_install:
- eval "${MATRIX_EVAL}"
- if test "$TRAVIS_OS_NAME" = osx ; then brew update ; fi
- if test "$TRAVIS_OS_NAME" = osx ; then if brew upgrade boost ; then echo "upgraded" ; else echo "nothing to be done"; fi ; fi
- if test "$TRAVIS_OS_NAME" = osx ; then rm -rf /usr/local/include/c++ ; fi # fix broken gcc installation
- if test "$TRAVIS_OS_NAME" = osx ; then brew install $EXTRA_BREW gettext flex bison libtool autoconf jack doxygen ; fi
- if test "$TRAVIS_OS_NAME" = osx ; then brew link --force $EXTRA_BREW gettext flex bison libtool autoconf jack ; fi
- mkdir -p config
- touch config/config.rpath

script:
- mkdir -p config
- touch config/config.rpath
- ./autogen.sh --disable-apisearch --with-$API $HOST && make && make -j4 && $TEST_RUNNER make check || (cat test-suite.log ; false)
- make distcheck
- cat tests/errors.log
1,379 changes: 1,379 additions & 0 deletions ABOUT-NLS

Large diffs are not rendered by default.

28 changes: 10 additions & 18 deletions Makefile.am
Original file line number Diff line number Diff line change
@@ -1,21 +1,13 @@
SUBDIRS = . tests
ACLOCAL_AMFLAGS = -I m4 -I rtmidi-m4 --install
SUBDIRS = po
if MAKE_DOC
SUBDIRS += doc
endif

lib_LTLIBRARIES = %D%/librtmidi.la
%C%_librtmidi_la_LDFLAGS = -no-undefined -export-dynamic -version-info @SO_VERSION@
%C%_librtmidi_la_SOURCES = \
%D%/RtMidi.cpp \
%D%/rtmidi_c.cpp

rtmidi_incdir = $(includedir)/rtmidi
rtmidi_inc_HEADERS = \
%D%/RtMidi.h \
%D%/rtmidi_c.h

pkgconfigdatadir = $(libdir)/pkgconfig
pkgconfigdata_DATA = rtmidi.pc

EXTRA_DIST = autogen.sh README.md msw

RTMIDICONFIGRPATH = config/config.rpath
DLLPROGRAMS = $(check_PROGRAMS)
check_PROGRAMS =
TESTS =
CLEANFILES =
DISTCLEANFILES =

include %D%/Makefile.library
59 changes: 59 additions & 0 deletions Makefile.library
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# -*- makefile-automake -*-
RTMIDITESTCXXFLAGS = $(EXTRA_RTMIDITESTCXXFLAGS) -I$(top_srcdir)/%D%
RTMIDILIBRARYNAME = %D%/librtmidi@rtmidi_suffix@.la
RTMIDITESTLDFLAGS = $(EXTRA_RTMIDITESTLDFLAGS) $(RTMIDILIBRARYNAME)
lib_LTLIBRARIES += %D%/librtmidi@rtmidi_suffix@.la
DLLPROGRAMS += %D%/librtmidi@rtmidi_suffix@.*
DLLPROGRAMS += %D%/.libs/librtmidi@rtmidi_suffix@.*

DISTCLEANFILES += \
%D%/rtmidi@rtmidi_suffix@.pc \
%D%/rtmidi@rtmidi_suffix@-config

%C%_librtmidi@rtmidi_suffix@_la_LDFLAGS = \
$(RTMIDI_LIBS) \
$(LDADD) \
-export-dynamic \
-version-info @RTMIDI_SO_VERSION@ \
-no-undefined \
-v
%C%_librtmidi@rtmidi_suffix@_la_CXXFLAGS = \
$(rtmidi_visibility) \
$(CXXFLAGS) \
$(CPPFLAGS) \
$(RTMIDI_API) \
$(RTMIDI_LIB_CFLAGS) \
-DRTMIDI_NO_WARN_DEPRECATED
%C%_librtmidi@rtmidi_suffix@_la_SOURCES = \
%D%/RtMidi.cpp \
%D%/RtMidi.h \
%D%/rtmidi_c.cpp \
%D%/rtmidi_c.h

%C%_librtmidi@rtmidi_suffix@_ladir = $(includedir)/rtmidi@rtmidi_suffix@
%C%_librtmidi@rtmidi_suffix@_la_HEADERS = \
%D%/RtMidi.h \
%D%/rtmidi_c.h


EXTRA_DIST += \
$(RTMIDICONFIGRPATH) \
%D%/m4/ChangeLog \
%D%/rtmidi-config.in \
%D%/rtmidi.pc.in \
%D%/autogen.sh \
%D%/README.md \
%D%/msw

pkgconfigdatadir = $(libdir)/pkgconfig
pkgconfigdata_DATA = %D%/rtmidi@rtmidi_suffix@.pc

%D%/rtmidi@rtmidi_suffix@.pc: %D%/rtmidi.pc
if cmp "$<" "$@" ; then : ; else cp "$<" "$@" ; fi
%D%/rtmidi@rtmidi_suffix@-config: %D%/rtmidi-config
if cmp "$<" "$@" ; then : ; else cp -a "$<" "$@" ; fi




include %D%/tests/Makefile.am
93 changes: 85 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,82 @@
# RtMidi
[![Build Status](https://travis-ci.org/keinstein/rtmidi.svg?branch=master-ts)](https://travis-ci.org/keinstein/rtmidi)[![Build status](https://ci.appveyor.com/api/projects/status/ac98q210qscfjayk/branch/master-ts?svg=true)](https://ci.appveyor.com/project/keinstein/rtmidi/branch/travis-tests)

[![Build Status](https://travis-ci.org/thestk/rtmidi.svg?branch=master)](https://travis-ci.org/thestk/rtmidi)
Extended RtMidi fork for Mutabor, GUI based Software, and saving MIDI connections
=================================================================================

A set of C++ classes that provide a common API for realtime MIDI input/output across Linux (ALSA & JACK), Macintosh OS X (CoreMIDI & JACK) and Windows (Multimedia).

By Gary P. Scavone, 2003-2017.
Forked by Tobias Schlemmer, 2014-2018.

This fork has been started because the original RtMidi did not work
for Mutabor and ALSA. Mutabor has a two-step activation scheme. The
MIDI configuration is set up while no connections are active. After
compiling the tuning logic all MIDI interfaces are activated at
once. Each MIDI connection that RtMidi makes is reported as MIDI
device again by RtMidi. This leads to a renumbering of all MIDI
endpoints which have a higher ALSA device ID than the current RtMidi
instance. The result is unexpected behaviour.

As a side effect this library uses a different namespace and is more
C++-ish than the original RtMidi.

Incompatible changes against upstream
-------------------------------------

- The old API has been deprecated as there is no way to rely on
consecutive port numbers. It is always the responsibility of the
end user not to change the MIDI configuration between certain points
in the execution path of the library. Obviously they usually lack the
necessary information for that Currently, it is still available, but a
compiler warning is generated if applicable

- `__MACOSX_CORE__` has been renamed to `__MACOSX_COREMIDI__`

- The classes of RtMidi now reside in the namespace rtmidi.
- The beginning letters “Rt” are dropped from the names
- For easy adoption of the new interface wrappers for the old API are provided.
- The library uses backend provided port descriptors, now. This provides a more reliable port handling for changing environments (See below).

- The way MIDI devices are enumerated has changed. The old way, using the ordinal number of MIDI devices works only in cases where MIDI devices are not added or removed during the program session. When a virtual MIDI port or USB MIDI device is added or removed the ordinal number of each of the other devices may change.

Suppose your computer has the following list of MIDI devices.
1. MIDI loopback device
2. Removable USB MIDI device
3. Another MIDI device
4. Software MIDI Synth
5. A virtual MIDI port

After the software obtained this list, your friend remembers that he
must catch the next bus and unplugs his removable USB MIDI device.
The software does not recognize this removal and keeps the above list,
while the system has a new one:
1. MIDI loopback device
2. Another MIDI device
3. Software MIDI Synth
4. A virtual MIDI port

Somehow you told the software to use the Software MIDI Synth. The
program stores the number 4 as it obtained during enumeration of the
MIDI devices. Instead of playing the music using your sound card it
sends the music to a different port.

While this behaviour is only annoying in interactive environments it
results in unpredictable behaviour if several ports are opened at
once. E.g. in the ALSA backend every opened port results in an
aditional newly created virtual port.

In order to avoid such problems, most backends identify ports (except
WinMM) by different data structures.

The current version introduces a new class \ref rtmidi::PortDescriptor
in order to hide this implementation detail from the user code. In
order to avoid the above problems these are retrieved at once using \ref rtmidi::Midi::getPortList.
This new feature also allows to retreive the port descriptor of an open device using
\ref rtmidi::Midi::getDescriptor. The latter can be used to obtain


Compilation
-----------

This distribution of RtMidi contains the following:

Expand All @@ -15,9 +87,10 @@ On Unix systems, type `./configure` in the top level directory, then `make` in t

If you checked out the code from git, please run `./autogen.sh` before `./configure`.

## Overview
Overview
--------

RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific classes) that provide a common API (Application Programming Interface) for realtime MIDI input/output across Linux (ALSA, JACK), Macintosh OS X (CoreMIDI, JACK), and Windows (Multimedia Library) operating systems. RtMidi significantly simplifies the process of interacting with computer MIDI hardware and software. It was designed with the following goals:
RtMidi is a set of C++ classes (rtmidi::MidiIn, rtmidi::MidiOut, and API specific classes) that provide a common API (Application Programming Interface) for realtime MIDI input/output across Linux (ALSA, JACK), Macintosh OS X (CoreMIDI, JACK), and Windows (Multimedia Library) operating systems. RtMidi significantly simplifies the process of interacting with computer MIDI hardware and software. It was designed with the following goals:

- object oriented C++ design
- simple, common API across all supported platforms
Expand All @@ -26,21 +99,25 @@ RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific classes) t

MIDI input and output functionality are separated into two classes, RtMidiIn and RtMidiOut. Each class instance supports only a single MIDI connection. RtMidi does not provide timing functionality (i.e., output messages are sent immediately). Input messages are timestamped with delta times in seconds (via a double floating point type). MIDI data is passed to the user as raw bytes using an std::vector<unsigned char>.

## Windows
Windows
-------

In some cases, for example to use RtMidi with GS Synth, it may be necessary for your program to call CoInitializeEx and CoUninitialize on entry to and exit from the thread that uses RtMidi.

## Further reading
Further reading
---------------

For complete documentation on RtMidi, see the doc directory of the distribution or surf to http://music.mcgill.ca/~gary/rtmidi/.
For complete documentation on the original RtMidi, see the doc directory of the distribution or surf to http://music.mcgill.ca/~gary/rtmidi/.


## Legal and ethical
Legal and ethical
-----------------

The RtMidi license is similar to the MIT License, with the added *feature* that modifications be sent to the developer.

RtMidi: realtime MIDI i/o C++ classes
Copyright (c) 2003-2017 Gary P. Scavone
Forked by Tobias Schlemmer, 2014-2018.

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
Expand Down
Loading