From 043ba92381e3572fb6d58112b7bc31d6fd21fdd2 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Tue, 8 May 2018 13:14:25 +0300 Subject: CMake: Use different strategy to identify MinGW if CMAKE_CXX_COMPILER_ID doesn't gives "GNU" --- CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bda3e0b..dce3bd3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -141,9 +141,10 @@ if(WITH_EMBEDDED_BANKS) endif() if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR - "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" OR + CMAKE_COMPILER_IS_MINGW) if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.2) - message("Turned on C++11 on GCC/CLang/Intel") + message("Turned on C++11 on GCC/CLang/Intel/MinGW") target_compile_options(gen_adldata PUBLIC $<$:-std=c++11>) endif() else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") -- cgit v1.2.3 From 87a8b80b017281158547edc72db33e93d49b9ade Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Tue, 8 May 2018 13:17:16 +0300 Subject: Add AppVeyor's badge [ci skip] --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index da79b39..81d3cbc 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ Library is based on the ADLMIDI, a MIDI player for Linux and Windows with OPL3 e [http://iki.fi/bisqwit/source/adlmidi.html](http://iki.fi/bisqwit/source/adlmidi.html) -[![Build Status](https://semaphoreci.com/api/v1/wohlstand/libadlmidi/branches/master/badge.svg)](https://semaphoreci.com/wohlstand/libadlmidi) +* Semaphore-CI: [![Build Status](https://semaphoreci.com/api/v1/wohlstand/libadlmidi/branches/master/shields_badge.svg)](https://semaphoreci.com/wohlstand/libadlmidi) +* AppVeyor CI: [![Build status](https://ci.appveyor.com/api/projects/status/bfhwdsm13s17rn49?svg=true)](https://ci.appveyor.com/project/Wohlstand/libadlmidi) # Differences with original tool * Reverb code has been removed. -- cgit v1.2.3 From 61991cfd68afd7531b3d865c7870b10fc4a43de6 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Tue, 8 May 2018 13:19:57 +0300 Subject: CMake: Another attempt to fix MinGW build --- CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dce3bd3..f175476 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -139,9 +139,10 @@ if(WITH_EMBEDDED_BANKS) if(NOT MSVC) target_link_libraries(gen_adldata pthread m stdc++) endif() - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR - CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MinGW" OR CMAKE_COMPILER_IS_MINGW) if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.2) message("Turned on C++11 on GCC/CLang/Intel/MinGW") -- cgit v1.2.3 From 25b65876d06ad252e0237a6c884d51d97a91da64 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Tue, 8 May 2018 13:24:21 +0300 Subject: CMake: third attempt to fix MinGW build --- CMakeLists.txt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f175476..6a57b98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -144,7 +144,7 @@ if(WITH_EMBEDDED_BANKS) "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MinGW" OR CMAKE_COMPILER_IS_MINGW) - if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.2) + if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.2) message("Turned on C++11 on GCC/CLang/Intel/MinGW") target_compile_options(gen_adldata PUBLIC $<$:-std=c++11>) endif() @@ -375,10 +375,12 @@ if(WITH_ADLMIDI2) message(FATAL_ERROR "ADLMIDI2 Requires C++ Extras. Please enable WITH_CPP_EXTRAS option!") endif() - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR - CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR - "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.2) + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MinGW" OR + CMAKE_COMPILER_IS_MINGW) + if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.2) message("Turned on C++11 on GCC/CLang/Intel") target_compile_options(adlmidi2 PUBLIC $<$:-std=c++11>) endif() -- cgit v1.2.3 From 788c3f5211b0eb98d2bdcd6bfab1393dc551cda6 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Tue, 8 May 2018 13:31:16 +0300 Subject: CMake: Fourth attempt to fix MinGW build --- CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a57b98..d6dbd01 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,7 +146,9 @@ if(WITH_EMBEDDED_BANKS) CMAKE_COMPILER_IS_MINGW) if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.2) message("Turned on C++11 on GCC/CLang/Intel/MinGW") - target_compile_options(gen_adldata PUBLIC $<$:-std=c++11>) + set_target_properties(gen_adldata PROPERTIES + CXX_STANDARD 11 + CXX_STANDARD_REQUIRED YES) endif() else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") message("Turned on C++11 on MSVC") @@ -382,7 +384,9 @@ if(WITH_ADLMIDI2) CMAKE_COMPILER_IS_MINGW) if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.2) message("Turned on C++11 on GCC/CLang/Intel") - target_compile_options(adlmidi2 PUBLIC $<$:-std=c++11>) + set_target_properties(gen_adldata PROPERTIES + CXX_STANDARD 11 + CXX_STANDARD_REQUIRED YES) endif() else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") message("Turned on C++11 on MSVC") -- cgit v1.2.3 From f729563b683c3ac7adcf07d2f4dffcdfa49fd605 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Tue, 8 May 2018 20:32:41 +0200 Subject: fix pitchbend --- src/adlmidi_midiplay.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 7c40fa0..39d7bff 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -1393,7 +1393,7 @@ void MIDIplay::realTime_PatchChange(uint8_t channel, uint8_t patch) void MIDIplay::realTime_PitchBend(uint8_t channel, uint16_t pitch) { channel = channel % 16; - Ch[channel].bend = (uint32_t(pitch) - 8192) * Ch[channel].bendsense; + Ch[channel].bend = (int(pitch) - 8192) * Ch[channel].bendsense; NoteUpdate_All(channel, Upd_Pitch); } -- cgit v1.2.3 From 6545b648cded507215be777864194f4cc961f877 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Thu, 10 May 2018 15:03:47 +0200 Subject: meaningful handling of pitch bend sensitivity --- src/adlmidi_midiplay.cpp | 8 +++++++- src/adlmidi_private.hpp | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 39d7bff..e7489b1 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -2358,8 +2358,14 @@ void MIDIplay::SetRPN(unsigned MidCh, unsigned value, bool MSB) switch(addr + nrpn * 0x10000 + MSB * 0x20000) { case 0x0000 + 0*0x10000 + 1*0x20000: // Pitch-bender sensitivity - Ch[MidCh].bendsense = value / 8192.0; + { + if (MSB) + Ch[MidCh].bendsense_msb = value; + else + Ch[MidCh].bendsense_lsb = value; + Ch[MidCh].updateBendSensitivity(); break; + } case 0x0108 + 1*0x10000 + 1*0x20000: // Vibrato speed if(value == 64) Ch[MidCh].vibspeed = 1.0; else if(value < 100) Ch[MidCh].vibspeed = 1.0 / (1.6e-2 * (value ? value : 1)); diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp index 9fd6f97..5ac6ebc 100644 --- a/src/adlmidi_private.hpp +++ b/src/adlmidi_private.hpp @@ -599,6 +599,7 @@ public: uint8_t panning, vibrato, sustain; char ____padding[6]; double bend, bendsense; + int bendsense_lsb, bendsense_msb; double vibpos, vibspeed, vibdepth; int64_t vibdelay; uint8_t lastlrpn, lastmrpn; @@ -791,7 +792,9 @@ public: void resetAllControllers() { bend = 0.0; - bendsense = 2 / 8192.0; + bendsense_msb = 2; + bendsense_lsb = 0; + updateBendSensitivity(); volume = 100; expression = 127; sustain = 0; @@ -803,6 +806,11 @@ public: portamento = 0; brightness = 127; } + void updateBendSensitivity() + { + int cent = bendsense_msb * 100 + bendsense_lsb; + bendsense = cent * (0.01 / 8192.0); + } MIDIchannel() { activenotes_clear(); -- cgit v1.2.3 From 82b0b69707fe69108fd1721b97f14b55d5c50642 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Thu, 10 May 2018 16:19:27 +0200 Subject: pitch bend sensitivity attempt #2 --- src/adlmidi_midiplay.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index e7489b1..6bc2366 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -2358,14 +2358,13 @@ void MIDIplay::SetRPN(unsigned MidCh, unsigned value, bool MSB) switch(addr + nrpn * 0x10000 + MSB * 0x20000) { case 0x0000 + 0*0x10000 + 1*0x20000: // Pitch-bender sensitivity - { - if (MSB) - Ch[MidCh].bendsense_msb = value; - else - Ch[MidCh].bendsense_lsb = value; + Ch[MidCh].bendsense_msb = value; + Ch[MidCh].updateBendSensitivity(); + break; + case 0x0000 + 0*0x10000 + 0*0x20000: // Pitch-bender sensitivity LSB + Ch[MidCh].bendsense_lsb = value; Ch[MidCh].updateBendSensitivity(); break; - } case 0x0108 + 1*0x10000 + 1*0x20000: // Vibrato speed if(value == 64) Ch[MidCh].vibspeed = 1.0; else if(value < 100) Ch[MidCh].vibspeed = 1.0 / (1.6e-2 * (value ? value : 1)); -- cgit v1.2.3