├── .gitignore
├── .gitmodules
├── Assets
├── appicon-ios.png
├── appicon.png
├── bar.svg
├── close.svg
├── collapsed.svg
├── expanded.svg
├── graph.svg
├── help.svg
├── hidden.svg
├── pause.svg
├── play.svg
├── reset.svg
├── settings.svg
└── visible.svg
├── Builds
├── LinuxMakefile
│ ├── Makefile
│ └── make_helpers
│ │ ├── arch_detection.cpp
│ │ ├── juce_LinuxSubprocessHelper.cpp
│ │ └── juce_SimpleBinaryBuilder.cpp
├── MacOSX
│ ├── AU.entitlements
│ ├── AUv3_AppExtension.entitlements
│ ├── All.entitlements
│ ├── Icon.icns
│ ├── Info-AU.plist
│ ├── Info-AUv3_AppExtension.plist
│ ├── Info-LV2_Manifest_Helper.plist
│ ├── Info-LV2_Plugin.plist
│ ├── Info-Standalone_Plugin.plist
│ ├── Info-VST.plist
│ ├── Info-VST3.plist
│ ├── Info-VST3_Manifest_Helper.plist
│ ├── LV2_Manifest_Helper.entitlements
│ ├── LV2_Plugin.entitlements
│ ├── RecentFilesMenuTemplate.nib
│ ├── Shared_Code.entitlements
│ ├── Standalone_Plugin.entitlements
│ ├── VST.entitlements
│ ├── VST3.entitlements
│ └── showmidi.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ └── xcschemes
│ │ └── ShowMIDI - Standalone Plugin.xcscheme
├── VisualStudio2022
│ ├── ShowMIDI_LV2ManifestHelper.vcxproj
│ ├── ShowMIDI_LV2ManifestHelper.vcxproj.filters
│ ├── ShowMIDI_LV2Plugin.vcxproj
│ ├── ShowMIDI_LV2Plugin.vcxproj.filters
│ ├── ShowMIDI_SharedCode.vcxproj
│ ├── ShowMIDI_SharedCode.vcxproj.filters
│ ├── ShowMIDI_StandalonePlugin.vcxproj
│ ├── ShowMIDI_StandalonePlugin.vcxproj.filters
│ ├── ShowMIDI_VST.vcxproj
│ ├── ShowMIDI_VST.vcxproj.filters
│ ├── ShowMIDI_VST3.vcxproj
│ ├── ShowMIDI_VST3.vcxproj.filters
│ ├── ShowMIDI_VST3ManifestHelper.vcxproj
│ ├── ShowMIDI_VST3ManifestHelper.vcxproj.filters
│ ├── icon.ico
│ ├── resources.rc
│ └── showmidi.sln
└── iOS
│ ├── AUv3_AppExtension.entitlements
│ ├── All.entitlements
│ ├── Icon.icns
│ ├── Info-AUv3_AppExtension.plist
│ ├── Info-Standalone_Plugin.plist
│ ├── Shared_Code.entitlements
│ ├── ShowMIDI.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── ShowMIDI - AUv3 AppExtension.xcscheme
│ │ └── ShowMIDI - Standalone Plugin.xcscheme
│ ├── ShowMIDI
│ └── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-29.png
│ │ ├── Icon-29@2x.png
│ │ ├── Icon-29@3x.png
│ │ ├── Icon-60@2x.png
│ │ ├── Icon-76.png
│ │ ├── Icon-76@2x.png
│ │ ├── Icon-83.5@2x.png
│ │ ├── Icon-@3x.png
│ │ ├── Icon-AppStore-1024.png
│ │ ├── Icon-Notification-20@2x.png
│ │ ├── Icon-Notification-20@3x.png
│ │ ├── Icon-Notifications-20.png
│ │ ├── Icon-Notifications-20@2x.png
│ │ ├── Icon-Small-1.png
│ │ ├── Icon-Small@2x-1.png
│ │ ├── Icon-Spotlight-40.png
│ │ ├── Icon-Spotlight-40@2x-1.png
│ │ ├── Icon-Spotlight-40@2x.png
│ │ └── Icon-Spotlight-40@3x.png
│ │ └── LaunchImage.launchimage
│ │ ├── Contents.json
│ │ ├── LaunchImage-ipad-landscape-1x.png
│ │ ├── LaunchImage-ipad-landscape-2x.png
│ │ ├── LaunchImage-ipad-portrait-1x.png
│ │ ├── LaunchImage-ipad-portrait-2x.png
│ │ ├── LaunchImage-iphone-2x.png
│ │ └── LaunchImage-iphone-retina4.png
│ └── Standalone_Plugin.entitlements
├── CMakeLists.txt
├── COPYING.md
├── Design
├── icon.afdesign
├── icon.png
├── logo.pdf
├── play-pause.afdesign
├── showmidi-0.5.0.png
├── showmidi-0.8.0.png
├── showmidi-0.9.0.png
├── showmidi-1.0.0-announcement.afdesign
├── showmidi-1.0.0-graph.png
├── showmidi-1.0.0-line.png
├── showmidi.afdesign
├── showmidi.png
├── showmidi.svg
└── wizard_image1.afphoto
├── Fonts
├── JetBrainsMono-Italic.ttf
├── JetBrainsMono-Regular.ttf
├── JetBrainsMono-SemiBold.ttf
└── JetBrainsMono-SemiBoldItalic.ttf
├── Installers
├── Assets
│ ├── wizard_icon1.bmp
│ ├── wizard_icon2.bmp
│ ├── wizard_icon3.bmp
│ ├── wizard_icon4.bmp
│ ├── wizard_icon5.bmp
│ ├── wizard_icon6.bmp
│ ├── wizard_icon7.bmp
│ ├── wizard_image1.bmp
│ ├── wizard_image2.bmp
│ ├── wizard_image3.bmp
│ ├── wizard_image4.bmp
│ ├── wizard_image5.bmp
│ ├── wizard_image6.bmp
│ └── wizard_image7.bmp
├── ShowMIDI.iss
├── ShowMIDI.pkgproj
├── gpl-3.0.txt
└── uninstall.sh
├── Interface
└── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── launch-screen-logo@2x.png
├── JuceLibraryCode
├── AppConfig.h
├── BinaryData.cpp
├── BinaryData.h
├── JuceHeader.h
├── JuceLV2Defines.h
├── JucePluginDefines.h
├── ReadMe.txt
├── include_juce_audio_basics.cpp
├── include_juce_audio_basics.mm
├── include_juce_audio_devices.cpp
├── include_juce_audio_devices.mm
├── include_juce_audio_formats.cpp
├── include_juce_audio_formats.mm
├── include_juce_audio_plugin_client_AAX.cpp
├── include_juce_audio_plugin_client_AAX.mm
├── include_juce_audio_plugin_client_AAX_utils.cpp
├── include_juce_audio_plugin_client_ARA.cpp
├── include_juce_audio_plugin_client_AU_1.mm
├── include_juce_audio_plugin_client_AU_2.mm
├── include_juce_audio_plugin_client_AUv3.mm
├── include_juce_audio_plugin_client_LV2.cpp
├── include_juce_audio_plugin_client_LV2.mm
├── include_juce_audio_plugin_client_Standalone.cpp
├── include_juce_audio_plugin_client_Unity.cpp
├── include_juce_audio_plugin_client_VST2.cpp
├── include_juce_audio_plugin_client_VST2.mm
├── include_juce_audio_plugin_client_VST3.cpp
├── include_juce_audio_plugin_client_VST3.mm
├── include_juce_audio_processors.cpp
├── include_juce_audio_processors.mm
├── include_juce_audio_processors_ara.cpp
├── include_juce_audio_processors_lv2_libs.cpp
├── include_juce_audio_utils.cpp
├── include_juce_audio_utils.mm
├── include_juce_core.cpp
├── include_juce_core.mm
├── include_juce_data_structures.cpp
├── include_juce_data_structures.mm
├── include_juce_events.cpp
├── include_juce_events.mm
├── include_juce_graphics.cpp
├── include_juce_graphics.mm
├── include_juce_gui_basics.cpp
├── include_juce_gui_basics.mm
├── include_juce_gui_extra.cpp
├── include_juce_gui_extra.mm
└── modules
│ └── juce_audio_devices
│ └── native
│ └── oboe
│ └── CMakeLists.txt
├── README.md
├── Scripts
├── auv3_aum_size.sh
├── build-linux.sh
├── build-macos.sh
└── build-windows.ps1
├── Source
├── AboutComponent.cpp
├── AboutComponent.h
├── ChannelState.h
├── DetectDevice.h
├── DetectDevice.mm
├── DeviceListener.cpp
├── DeviceListener.h
├── DeviceManager.h
├── Main.cpp
├── MainLayoutComponent.cpp
├── MainLayoutComponent.h
├── MidiDeviceComponent.cpp
├── MidiDeviceComponent.h
├── MidiDeviceInfoComparator.h
├── MidiDevicesListener.cpp
├── MidiDevicesListener.h
├── PaintedButton.cpp
├── PaintedButton.h
├── PluginEditor.cpp
├── PluginEditor.h
├── PluginProcessor.cpp
├── PluginProcessor.h
├── PluginSettings.cpp
├── PluginSettings.h
├── PopupColourSelector.cpp
├── PopupColourSelector.h
├── PortListComponent.cpp
├── PortListComponent.h
├── PropertiesSettings.cpp
├── PropertiesSettings.h
├── Settings.h
├── SettingsComponent.cpp
├── SettingsComponent.h
├── SettingsManager.h
├── ShowMidiApplication.cpp
├── ShowMidiApplication.h
├── SidebarComponent.cpp
├── SidebarComponent.h
├── StandaloneDevicesComponent.cpp
├── StandaloneDevicesComponent.h
├── StandaloneWindow.cpp
├── StandaloneWindow.h
├── Theme.cpp
├── Theme.h
├── UwynLookAndFeel.cpp
└── UwynLookAndFeel.h
├── Themes
├── bstation.svg
├── classic light.svg
├── darcula.svg
├── dark.svg
├── disco.svg
├── light.svg
└── mouha.svg
├── libs
└── vst2_readme.txt
└── showmidi.jucer
/.gitignore:
--------------------------------------------------------------------------------
1 | Builds/*/build
2 | Builds/MacOSX/showmidi.xcodeproj/xcuserdata
3 | Builds/MacOSX/showmidi.xcodeproj/project.xcworkspace/xcuserdata
4 | Builds/VisualStudio2022/.vs/
5 | Builds/VisualStudio2022/x64/
6 | Builds/VisualStudio2022/ShowMIDI_App.vcxproj.user
7 | Builds/iOS/ShowMIDI.xcodeproj/project.xcworkspace/xcuserdata
8 | Builds/iOS/ShowMIDI.xcodeproj/xcuserdata
9 | Plugin/Builds/MacOSX/ShowMIDIPlugin.xcodeproj/project.xcworkspace/xcuserdata
10 | /Builds/VisualStudio2022/ShowMIDI_StandalonePlugin.vcxproj.user
11 | libs/vst2
12 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "libs/clap-juce-extensions"]
2 | path = libs/clap-juce-extensions
3 | url = https://github.com/free-audio/clap-juce-extensions.git
4 | [submodule "JUCE"]
5 | path = JUCE
6 | url = https://github.com/juce-framework/JUCE.git
--------------------------------------------------------------------------------
/Assets/appicon-ios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Assets/appicon-ios.png
--------------------------------------------------------------------------------
/Assets/appicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Assets/appicon.png
--------------------------------------------------------------------------------
/Assets/bar.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/Assets/close.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/Assets/collapsed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
--------------------------------------------------------------------------------
/Assets/expanded.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
--------------------------------------------------------------------------------
/Assets/graph.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/Assets/help.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
--------------------------------------------------------------------------------
/Assets/hidden.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
--------------------------------------------------------------------------------
/Assets/pause.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/Assets/play.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/Assets/reset.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/Assets/settings.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/Assets/visible.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
--------------------------------------------------------------------------------
/Builds/LinuxMakefile/make_helpers/arch_detection.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | ==============================================================================
3 |
4 | This file is part of the JUCE library.
5 | Copyright (c) 2022 - Raw Material Software Limited
6 |
7 | JUCE is an open source library subject to commercial or open-source
8 | licensing.
9 |
10 | By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 | Agreement and JUCE Privacy Policy.
12 |
13 | End User License Agreement: www.juce.com/juce-7-licence
14 | Privacy Policy: www.juce.com/juce-privacy-policy
15 |
16 | Or: You may also use this code under the terms of the GPL v3 (see
17 | www.gnu.org/licenses).
18 |
19 | JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 | EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 | DISCLAIMED.
22 |
23 | ==============================================================================
24 | */
25 |
26 | #if defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) || defined(_M_ARM64) || defined(__aarch64__) || defined(__ARM64__)
27 |
28 | #if defined(_M_ARM64) || defined(__aarch64__) || defined(__ARM64__)
29 | #error JUCE_ARCH aarch64
30 | #elif (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM == 8) || defined(__ARMv8__) || defined(__ARMv8_A__)
31 | #error JUCE_ARCH armv8l
32 | #elif (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM == 7) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(_ARM_ARCH_7) || defined(__CORE_CORTEXA__)
33 | #error JUCE_ARCH armv7l
34 | #elif (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM == 6) || defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6M__)
35 | #error JUCE_ARCH armv6l
36 | #elif (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM == 5) || defined(__ARM_ARCH_5TEJ__)
37 | #error JUCE_ARCH armv5l
38 | #else
39 | #error JUCE_ARCH arm
40 | #endif
41 |
42 | #elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
43 |
44 | #error JUCE_ARCH i386
45 |
46 | #elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64)
47 |
48 | #error JUCE_ARCH x86_64
49 |
50 | #elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
51 |
52 | #error JUCE_ARCH ia64
53 |
54 | #elif defined(__mips) || defined(__mips__) || defined(_M_MRX000)
55 |
56 | #if defined(_MIPS_ARCH_MIPS64) || defined(__mips64)
57 | #error JUCE_ARCH mips64
58 | #else
59 | #error JUCE_ARCH mips
60 | #endif
61 |
62 | #elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) || defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) || defined(_M_MPPC) || defined(_M_PPC)
63 |
64 | #if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__)
65 | #error JUCE_ARCH ppc64
66 | #else
67 | #error JUCE_ARCH ppc
68 | #endif
69 |
70 | #elif defined(__riscv)
71 |
72 | #if __riscv_xlen == 64
73 | #error JUCE_ARCH riscv64
74 | #else
75 | #error JUCE_ARCH riscv
76 | #endif
77 |
78 | #else
79 |
80 | #error JUCE_ARCH unknown
81 |
82 | #endif
83 |
--------------------------------------------------------------------------------
/Builds/LinuxMakefile/make_helpers/juce_LinuxSubprocessHelper.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | ==============================================================================
3 |
4 | This file is part of the JUCE library.
5 | Copyright (c) 2022 - Raw Material Software Limited
6 |
7 | JUCE is an open source library subject to commercial or open-source
8 | licensing.
9 |
10 | By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 | Agreement and JUCE Privacy Policy.
12 |
13 | End User License Agreement: www.juce.com/juce-7-licence
14 | Privacy Policy: www.juce.com/juce-privacy-policy
15 |
16 | Or: You may also use this code under the terms of the GPL v3 (see
17 | www.gnu.org/licenses).
18 |
19 | JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 | EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 | DISCLAIMED.
22 |
23 | ==============================================================================
24 | */
25 |
26 | #include
27 |
28 | int main (int argc, const char* const* argv)
29 | {
30 | if (argc >= 3)
31 | if (auto* handle = dlopen (argv[1], RTLD_LAZY))
32 | if (auto* function = reinterpret_cast (dlsym (handle, argv[2])))
33 | return function (argc - 3, argv + 3);
34 |
35 | return 1;
36 | }
37 |
--------------------------------------------------------------------------------
/Builds/MacOSX/AU.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.files.user-selected.read-write
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Builds/MacOSX/AUv3_AppExtension.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.files.user-selected.read-write
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Builds/MacOSX/All.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.files.user-selected.read-write
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Builds/MacOSX/Icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/MacOSX/Icon.icns
--------------------------------------------------------------------------------
/Builds/MacOSX/Info-AU.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ITSAppUsesNonExemptEncryption
7 |
8 | CFBundleExecutable
9 | ${EXECUTABLE_NAME}
10 | CFBundleIconFile
11 | Icon.icns
12 | CFBundleIdentifier
13 | com.uwyn.showmidi
14 | CFBundleName
15 | ShowMIDI
16 | CFBundleDisplayName
17 | ShowMIDI
18 | CFBundlePackageType
19 | BNDL
20 | CFBundleSignature
21 | ????
22 | CFBundleShortVersionString
23 | 1.0.1
24 | CFBundleVersion
25 | 22
26 | NSHumanReadableCopyright
27 | ©2023 Uwyn LLC
28 | NSHighResolutionCapable
29 |
30 | LSApplicationCategoryType
31 | public.app-category.music
32 | AudioComponents
33 |
34 |
35 | name
36 | Uwyn: ShowMIDI
37 | description
38 | Visualize MIDI activity
39 | factoryFunction
40 | ShowMIDIAUFactory
41 | manufacturer
42 | Uwyn
43 | type
44 | aumi
45 | subtype
46 | shmi
47 | version
48 | 65537
49 | sandboxSafe
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/Builds/MacOSX/Info-AUv3_AppExtension.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ITSAppUsesNonExemptEncryption
7 |
8 | CFBundleExecutable
9 | ${EXECUTABLE_NAME}
10 | CFBundleIconFile
11 | Icon.icns
12 | CFBundleIdentifier
13 | com.uwyn.showmidi.showmidiAUv3
14 | CFBundleName
15 | ShowMIDI
16 | CFBundleDisplayName
17 | ShowMIDI
18 | CFBundlePackageType
19 | XPC!
20 | CFBundleSignature
21 | ????
22 | CFBundleShortVersionString
23 | 1.0.1
24 | CFBundleVersion
25 | 22
26 | NSHumanReadableCopyright
27 | ©2023 Uwyn LLC
28 | NSHighResolutionCapable
29 |
30 | LSApplicationCategoryType
31 | public.app-category.music
32 | NSExtension
33 |
34 | NSExtensionPrincipalClass
35 | ShowMIDIAUFactoryAUv3
36 | NSExtensionPointIdentifier
37 | com.apple.AudioUnit-UI
38 | NSExtensionAttributes
39 |
40 | AudioComponents
41 |
42 |
43 | name
44 | Uwyn: ShowMIDI
45 | description
46 | Visualize MIDI activity
47 | factoryFunction
48 | ShowMIDIAUFactoryAUv3
49 | manufacturer
50 | Uwyn
51 | type
52 | aumi
53 | subtype
54 | shmi
55 | version
56 | 65537
57 | sandboxSafe
58 |
59 | tags
60 |
61 | Effects
62 | MIDI
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/Builds/MacOSX/Info-LV2_Manifest_Helper.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ITSAppUsesNonExemptEncryption
7 |
8 | CFBundleExecutable
9 | ${EXECUTABLE_NAME}
10 | CFBundleIconFile
11 | Icon.icns
12 | CFBundleIdentifier
13 | com.uwyn.showmidi
14 | CFBundleName
15 | ShowMIDI
16 | CFBundleDisplayName
17 | ShowMIDI
18 | CFBundlePackageType
19 |
20 | CFBundleSignature
21 |
22 | CFBundleShortVersionString
23 | 1.0.1
24 | CFBundleVersion
25 | 22
26 | NSHumanReadableCopyright
27 | ©2023 Uwyn LLC
28 | NSHighResolutionCapable
29 |
30 | LSApplicationCategoryType
31 | public.app-category.music
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Builds/MacOSX/Info-LV2_Plugin.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ITSAppUsesNonExemptEncryption
7 |
8 | CFBundleExecutable
9 | ${EXECUTABLE_NAME}
10 | CFBundleIconFile
11 | Icon.icns
12 | CFBundleIdentifier
13 | com.uwyn.showmidi
14 | CFBundleName
15 | ShowMIDI
16 | CFBundleDisplayName
17 | ShowMIDI
18 | CFBundlePackageType
19 |
20 | CFBundleSignature
21 |
22 | CFBundleShortVersionString
23 | 1.0.1
24 | CFBundleVersion
25 | 22
26 | NSHumanReadableCopyright
27 | ©2023 Uwyn LLC
28 | NSHighResolutionCapable
29 |
30 | LSApplicationCategoryType
31 | public.app-category.music
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Builds/MacOSX/Info-Standalone_Plugin.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ITSAppUsesNonExemptEncryption
7 |
8 | CFBundleExecutable
9 | ${EXECUTABLE_NAME}
10 | CFBundleIconFile
11 | Icon.icns
12 | CFBundleIdentifier
13 | com.uwyn.showmidi
14 | CFBundleName
15 | ShowMIDI
16 | CFBundleDisplayName
17 | ShowMIDI
18 | CFBundlePackageType
19 | APPL
20 | CFBundleSignature
21 | ????
22 | CFBundleShortVersionString
23 | 1.0.1
24 | CFBundleVersion
25 | 22
26 | NSHumanReadableCopyright
27 | ©2023 Uwyn LLC
28 | NSHighResolutionCapable
29 |
30 | LSApplicationCategoryType
31 | public.app-category.music
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Builds/MacOSX/Info-VST.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ITSAppUsesNonExemptEncryption
7 |
8 | CFBundleExecutable
9 | ${EXECUTABLE_NAME}
10 | CFBundleIconFile
11 | Icon.icns
12 | CFBundleIdentifier
13 | com.uwyn.showmidi
14 | CFBundleName
15 | ShowMIDI
16 | CFBundleDisplayName
17 | ShowMIDI
18 | CFBundlePackageType
19 | BNDL
20 | CFBundleSignature
21 | ????
22 | CFBundleShortVersionString
23 | 1.0.1
24 | CFBundleVersion
25 | 22
26 | NSHumanReadableCopyright
27 | ©2023 Uwyn LLC
28 | NSHighResolutionCapable
29 |
30 | LSApplicationCategoryType
31 | public.app-category.music
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Builds/MacOSX/Info-VST3.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ITSAppUsesNonExemptEncryption
7 |
8 | CFBundleExecutable
9 | ${EXECUTABLE_NAME}
10 | CFBundleIconFile
11 | Icon.icns
12 | CFBundleIdentifier
13 | com.uwyn.showmidi
14 | CFBundleName
15 | ShowMIDI
16 | CFBundleDisplayName
17 | ShowMIDI
18 | CFBundlePackageType
19 | BNDL
20 | CFBundleSignature
21 | ????
22 | CFBundleShortVersionString
23 | 1.0.1
24 | CFBundleVersion
25 | 22
26 | NSHumanReadableCopyright
27 | ©2023 Uwyn LLC
28 | NSHighResolutionCapable
29 |
30 | LSApplicationCategoryType
31 | public.app-category.music
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Builds/MacOSX/Info-VST3_Manifest_Helper.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ITSAppUsesNonExemptEncryption
7 |
8 | CFBundleExecutable
9 | ${EXECUTABLE_NAME}
10 | CFBundleIconFile
11 | Icon.icns
12 | CFBundleIdentifier
13 | com.uwyn.showmidi
14 | CFBundleName
15 | ShowMIDI
16 | CFBundleDisplayName
17 | ShowMIDI
18 | CFBundlePackageType
19 |
20 | CFBundleSignature
21 |
22 | CFBundleShortVersionString
23 | 1.0.1
24 | CFBundleVersion
25 | 22
26 | NSHumanReadableCopyright
27 | ©2023 Uwyn LLC
28 | NSHighResolutionCapable
29 |
30 | LSApplicationCategoryType
31 | public.app-category.music
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Builds/MacOSX/LV2_Manifest_Helper.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.files.user-selected.read-write
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Builds/MacOSX/LV2_Plugin.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.files.user-selected.read-write
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Builds/MacOSX/RecentFilesMenuTemplate.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/MacOSX/RecentFilesMenuTemplate.nib
--------------------------------------------------------------------------------
/Builds/MacOSX/Shared_Code.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.files.user-selected.read-write
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Builds/MacOSX/Standalone_Plugin.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.files.user-selected.read-write
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Builds/MacOSX/VST.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.files.user-selected.read-write
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Builds/MacOSX/VST3.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.files.user-selected.read-write
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Builds/MacOSX/showmidi.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Builds/MacOSX/showmidi.xcodeproj/xcshareddata/xcschemes/ShowMIDI - Standalone Plugin.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
42 |
44 |
50 |
51 |
52 |
53 |
59 |
61 |
67 |
68 |
69 |
70 |
72 |
73 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/Builds/VisualStudio2022/ShowMIDI_LV2ManifestHelper.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | JUCE Library Code
10 |
11 |
12 |
13 |
14 | JUCE Library Code
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Builds/VisualStudio2022/ShowMIDI_LV2Plugin.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {8FF7E4BF-402D-E88A-60F1-F4B63E830502}
7 |
8 |
9 | {BA0A76FA-458F-0B1C-02E9-ECFBF81140EC}
10 |
11 |
12 | {FE955B6B-68AC-AA07-70D8-2413F6DB65C8}
13 |
14 |
15 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61}
16 |
17 |
18 |
19 |
20 | JUCE Modules\juce_audio_plugin_client\LV2
21 |
22 |
23 | JUCE Modules\juce_audio_plugin_client
24 |
25 |
26 | JUCE Modules\juce_audio_plugin_client
27 |
28 |
29 | JUCE Library Code
30 |
31 |
32 |
33 |
34 |
35 | JUCE Library Code
36 |
37 |
38 |
39 |
40 | JUCE Library Code
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Builds/VisualStudio2022/ShowMIDI_StandalonePlugin.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {725C0EA8-9736-764D-81E6-01695B6B00B3}
7 |
8 |
9 | {BA0A76FA-458F-0B1C-02E9-ECFBF81140EC}
10 |
11 |
12 | {FE955B6B-68AC-AA07-70D8-2413F6DB65C8}
13 |
14 |
15 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61}
16 |
17 |
18 |
19 |
20 | JUCE Modules\juce_audio_plugin_client
21 |
22 |
23 | JUCE Library Code
24 |
25 |
26 |
27 |
28 | JUCE Modules\juce_audio_plugin_client\Standalone
29 |
30 |
31 |
32 |
33 | JUCE Library Code
34 |
35 |
36 |
37 |
38 | JUCE Library Code
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Builds/VisualStudio2022/ShowMIDI_VST.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {BA0A76FA-458F-0B1C-02E9-ECFBF81140EC}
7 |
8 |
9 | {FE955B6B-68AC-AA07-70D8-2413F6DB65C8}
10 |
11 |
12 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61}
13 |
14 |
15 |
16 |
17 | JUCE Modules\juce_audio_plugin_client
18 |
19 |
20 | JUCE Modules\juce_audio_plugin_client
21 |
22 |
23 | JUCE Library Code
24 |
25 |
26 |
27 |
28 |
29 | JUCE Library Code
30 |
31 |
32 |
33 |
34 | JUCE Library Code
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/Builds/VisualStudio2022/ShowMIDI_VST3.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {68760A18-ED41-41C7-2560-F3A65E9AD133}
7 |
8 |
9 | {BA0A76FA-458F-0B1C-02E9-ECFBF81140EC}
10 |
11 |
12 | {FE955B6B-68AC-AA07-70D8-2413F6DB65C8}
13 |
14 |
15 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61}
16 |
17 |
18 |
19 |
20 | JUCE Modules\juce_audio_plugin_client\VST3
21 |
22 |
23 | JUCE Modules\juce_audio_plugin_client\VST3
24 |
25 |
26 | JUCE Modules\juce_audio_plugin_client
27 |
28 |
29 | JUCE Modules\juce_audio_plugin_client
30 |
31 |
32 | JUCE Library Code
33 |
34 |
35 |
36 |
37 |
38 | JUCE Library Code
39 |
40 |
41 |
42 |
43 | JUCE Library Code
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/Builds/VisualStudio2022/ShowMIDI_VST3ManifestHelper.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | JUCE Library Code
10 |
11 |
12 |
13 |
14 | JUCE Library Code
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Builds/VisualStudio2022/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/VisualStudio2022/icon.ico
--------------------------------------------------------------------------------
/Builds/VisualStudio2022/resources.rc:
--------------------------------------------------------------------------------
1 | #pragma code_page(65001)
2 |
3 | #ifdef JUCE_USER_DEFINED_RC_FILE
4 | #include JUCE_USER_DEFINED_RC_FILE
5 | #else
6 |
7 | #undef WIN32_LEAN_AND_MEAN
8 | #define WIN32_LEAN_AND_MEAN
9 | #include
10 |
11 | VS_VERSION_INFO VERSIONINFO
12 | FILEVERSION 1,0,1,0
13 | BEGIN
14 | BLOCK "StringFileInfo"
15 | BEGIN
16 | BLOCK "040904E4"
17 | BEGIN
18 | VALUE "CompanyName", "Uwyn\0"
19 | VALUE "LegalCopyright", "©2023 Uwyn LLC\0"
20 | VALUE "FileDescription", "ShowMIDI\0"
21 | VALUE "FileVersion", "1.0.1\0"
22 | VALUE "ProductName", "ShowMIDI\0"
23 | VALUE "ProductVersion", "1.0.1\0"
24 | END
25 | END
26 |
27 | BLOCK "VarFileInfo"
28 | BEGIN
29 | VALUE "Translation", 0x409, 1252
30 | END
31 | END
32 |
33 | #endif
34 |
35 | IDI_ICON1 ICON DISCARDABLE "icon.ico"
36 | IDI_ICON2 ICON DISCARDABLE "icon.ico"
--------------------------------------------------------------------------------
/Builds/VisualStudio2022/showmidi.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio Version 17
4 |
5 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShowMIDI - Standalone Plugin", "ShowMIDI_StandalonePlugin.vcxproj", "{2B4F9D8C-0172-A8B9-CE6A-A38A58226832}"
6 | ProjectSection(ProjectDependencies) = postProject
7 | {A34E9471-D4CC-86F7-7BFE-6B029AD9E991} = {A34E9471-D4CC-86F7-7BFE-6B029AD9E991}
8 | EndProjectSection
9 | EndProject
10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShowMIDI - VST", "ShowMIDI_VST.vcxproj", "{1FC1894E-F35C-AC8A-08E3-3017498ED029}"
11 | ProjectSection(ProjectDependencies) = postProject
12 | {A34E9471-D4CC-86F7-7BFE-6B029AD9E991} = {A34E9471-D4CC-86F7-7BFE-6B029AD9E991}
13 | EndProjectSection
14 | EndProject
15 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShowMIDI - VST3", "ShowMIDI_VST3.vcxproj", "{4DDDB4C1-B624-AEE2-D2A5-B7B55FF21687}"
16 | ProjectSection(ProjectDependencies) = postProject
17 | {A34E9471-D4CC-86F7-7BFE-6B029AD9E991} = {A34E9471-D4CC-86F7-7BFE-6B029AD9E991}
18 | {56E0C9E0-23F9-584B-A4D0-272AC6BD51E4} = {56E0C9E0-23F9-584B-A4D0-272AC6BD51E4}
19 | EndProjectSection
20 | EndProject
21 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShowMIDI - LV2 Plugin", "ShowMIDI_LV2Plugin.vcxproj", "{D992E02F-C650-25EF-7465-C0912FE66ECF}"
22 | ProjectSection(ProjectDependencies) = postProject
23 | {A34E9471-D4CC-86F7-7BFE-6B029AD9E991} = {A34E9471-D4CC-86F7-7BFE-6B029AD9E991}
24 | {AA384ABD-77F9-8A67-6540-43791D7F3919} = {AA384ABD-77F9-8A67-6540-43791D7F3919}
25 | EndProjectSection
26 | EndProject
27 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShowMIDI - Shared Code", "ShowMIDI_SharedCode.vcxproj", "{A34E9471-D4CC-86F7-7BFE-6B029AD9E991}"
28 | EndProject
29 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShowMIDI - LV2 Manifest Helper", "ShowMIDI_LV2ManifestHelper.vcxproj", "{AA384ABD-77F9-8A67-6540-43791D7F3919}"
30 | EndProject
31 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShowMIDI - VST3 Manifest Helper", "ShowMIDI_VST3ManifestHelper.vcxproj", "{56E0C9E0-23F9-584B-A4D0-272AC6BD51E4}"
32 | EndProject
33 | Global
34 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
35 | Debug|x64 = Debug|x64
36 | Release|x64 = Release|x64
37 | EndGlobalSection
38 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
39 | {1FC1894E-F35C-AC8A-08E3-3017498ED029}.Debug|x64.ActiveCfg = Debug|x64
40 | {1FC1894E-F35C-AC8A-08E3-3017498ED029}.Debug|x64.Build.0 = Debug|x64
41 | {1FC1894E-F35C-AC8A-08E3-3017498ED029}.Release|x64.ActiveCfg = Release|x64
42 | {1FC1894E-F35C-AC8A-08E3-3017498ED029}.Release|x64.Build.0 = Release|x64
43 | {4DDDB4C1-B624-AEE2-D2A5-B7B55FF21687}.Debug|x64.ActiveCfg = Debug|x64
44 | {4DDDB4C1-B624-AEE2-D2A5-B7B55FF21687}.Debug|x64.Build.0 = Debug|x64
45 | {4DDDB4C1-B624-AEE2-D2A5-B7B55FF21687}.Release|x64.ActiveCfg = Release|x64
46 | {4DDDB4C1-B624-AEE2-D2A5-B7B55FF21687}.Release|x64.Build.0 = Release|x64
47 | {2B4F9D8C-0172-A8B9-CE6A-A38A58226832}.Debug|x64.ActiveCfg = Debug|x64
48 | {2B4F9D8C-0172-A8B9-CE6A-A38A58226832}.Debug|x64.Build.0 = Debug|x64
49 | {2B4F9D8C-0172-A8B9-CE6A-A38A58226832}.Release|x64.ActiveCfg = Release|x64
50 | {2B4F9D8C-0172-A8B9-CE6A-A38A58226832}.Release|x64.Build.0 = Release|x64
51 | {D992E02F-C650-25EF-7465-C0912FE66ECF}.Debug|x64.ActiveCfg = Debug|x64
52 | {D992E02F-C650-25EF-7465-C0912FE66ECF}.Debug|x64.Build.0 = Debug|x64
53 | {D992E02F-C650-25EF-7465-C0912FE66ECF}.Release|x64.ActiveCfg = Release|x64
54 | {D992E02F-C650-25EF-7465-C0912FE66ECF}.Release|x64.Build.0 = Release|x64
55 | {A34E9471-D4CC-86F7-7BFE-6B029AD9E991}.Debug|x64.ActiveCfg = Debug|x64
56 | {A34E9471-D4CC-86F7-7BFE-6B029AD9E991}.Debug|x64.Build.0 = Debug|x64
57 | {A34E9471-D4CC-86F7-7BFE-6B029AD9E991}.Release|x64.ActiveCfg = Release|x64
58 | {A34E9471-D4CC-86F7-7BFE-6B029AD9E991}.Release|x64.Build.0 = Release|x64
59 | {AA384ABD-77F9-8A67-6540-43791D7F3919}.Debug|x64.ActiveCfg = Debug|x64
60 | {AA384ABD-77F9-8A67-6540-43791D7F3919}.Debug|x64.Build.0 = Debug|x64
61 | {AA384ABD-77F9-8A67-6540-43791D7F3919}.Release|x64.ActiveCfg = Release|x64
62 | {AA384ABD-77F9-8A67-6540-43791D7F3919}.Release|x64.Build.0 = Release|x64
63 | {56E0C9E0-23F9-584B-A4D0-272AC6BD51E4}.Debug|x64.ActiveCfg = Debug|x64
64 | {56E0C9E0-23F9-584B-A4D0-272AC6BD51E4}.Debug|x64.Build.0 = Debug|x64
65 | {56E0C9E0-23F9-584B-A4D0-272AC6BD51E4}.Release|x64.ActiveCfg = Release|x64
66 | {56E0C9E0-23F9-584B-A4D0-272AC6BD51E4}.Release|x64.Build.0 = Release|x64
67 | EndGlobalSection
68 | GlobalSection(SolutionProperties) = preSolution
69 | HideSolutionNode = FALSE
70 | EndGlobalSection
71 | EndGlobal
72 |
--------------------------------------------------------------------------------
/Builds/iOS/AUv3_AppExtension.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.icloud-container-identifiers
6 |
7 | iCloud.$(CFBundleIdentifier)
8 |
9 | com.apple.developer.icloud-services
10 |
11 | CloudDocuments
12 |
13 | com.apple.developer.ubiquity-container-identifiers
14 |
15 | iCloud.$(CFBundleIdentifier)
16 |
17 | com.apple.security.application-groups
18 |
19 | group.com.uwyn.showmidi
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Builds/iOS/All.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.icloud-container-identifiers
6 |
7 | iCloud.$(CFBundleIdentifier)
8 |
9 | com.apple.developer.icloud-services
10 |
11 | CloudDocuments
12 |
13 | com.apple.developer.ubiquity-container-identifiers
14 |
15 | iCloud.$(CFBundleIdentifier)
16 |
17 | com.apple.security.application-groups
18 |
19 | group.com.uwyn.showmidi
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Builds/iOS/Icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/Icon.icns
--------------------------------------------------------------------------------
/Builds/iOS/Info-AUv3_AppExtension.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDisplayName
6 | ShowMIDI
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | com.uwyn.showmidi.showmidiAUv3
11 | CFBundleName
12 | ShowMIDI
13 | CFBundlePackageType
14 | XPC!
15 | CFBundleShortVersionString
16 | 1.0.1
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 22
21 | ITSAppUsesNonExemptEncryption
22 |
23 | LSRequiresIPhoneOS
24 |
25 | NSExtension
26 |
27 | NSExtensionAttributes
28 |
29 | AudioComponents
30 |
31 |
32 | description
33 | Visualize MIDI activity
34 | factoryFunction
35 | ShowMIDIAUFactoryAUv3
36 | manufacturer
37 | Uwyn
38 | name
39 | Uwyn: ShowMIDI
40 | sandboxSafe
41 |
42 | subtype
43 | shmi
44 | tags
45 |
46 | Effects
47 | size:{296, 600}
48 | MIDI
49 |
50 | type
51 | aumi
52 | version
53 | 65537
54 |
55 |
56 |
57 | NSExtensionPointIdentifier
58 | com.apple.AudioUnit-UI
59 | NSExtensionPrincipalClass
60 | ShowMIDIAUFactoryAUv3
61 |
62 | NSHighResolutionCapable
63 |
64 | NSHumanReadableCopyright
65 | ©2023 Uwyn LLC
66 | UILaunchStoryboardName
67 | LaunchScreen
68 | UISupportsDocumentBrowser
69 |
70 | UIViewControllerBasedStatusBarAppearance
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/Builds/iOS/Info-Standalone_Plugin.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ITSAppUsesNonExemptEncryption
7 |
8 | LSRequiresIPhoneOS
9 |
10 | UIViewControllerBasedStatusBarAppearance
11 |
12 | UILaunchStoryboardName
13 | LaunchScreen
14 | CFBundleExecutable
15 | ${EXECUTABLE_NAME}
16 | CFBundleIdentifier
17 | com.uwyn.showmidi
18 | CFBundleName
19 | ShowMIDI
20 | CFBundleDisplayName
21 | ShowMIDI
22 | CFBundlePackageType
23 | APPL
24 | CFBundleSignature
25 | ????
26 | CFBundleShortVersionString
27 | 1.0.1
28 | CFBundleVersion
29 | 22
30 | NSHumanReadableCopyright
31 | ©2023 Uwyn LLC
32 | NSHighResolutionCapable
33 |
34 | UIFileSharingEnabled
35 |
36 | UISupportsDocumentBrowser
37 |
38 | UIRequiresFullScreen
39 |
40 | UISupportedInterfaceOrientations
41 |
42 | UIInterfaceOrientationLandscapeLeft
43 | UIInterfaceOrientationLandscapeRight
44 | UIInterfaceOrientationPortrait
45 | UIInterfaceOrientationPortraitUpsideDown
46 |
47 | UIBackgroundModes
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Builds/iOS/Shared_Code.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.icloud-container-identifiers
6 |
7 | iCloud.$(CFBundleIdentifier)
8 |
9 | com.apple.developer.icloud-services
10 |
11 | CloudDocuments
12 |
13 | com.apple.developer.ubiquity-container-identifiers
14 |
15 | iCloud.$(CFBundleIdentifier)
16 |
17 | com.apple.security.application-groups
18 |
19 | group.com.uwyn.showmidi
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI.xcodeproj/xcshareddata/xcschemes/ShowMIDI - AUv3 AppExtension.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
10 |
16 |
22 |
23 |
24 |
30 |
36 |
37 |
38 |
39 |
40 |
46 |
47 |
59 |
61 |
67 |
68 |
69 |
70 |
78 |
80 |
86 |
87 |
88 |
89 |
91 |
92 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI.xcodeproj/xcshareddata/xcschemes/ShowMIDI - Standalone Plugin.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
42 |
44 |
50 |
51 |
52 |
53 |
59 |
61 |
67 |
68 |
69 |
70 |
72 |
73 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "idiom": "iphone",
5 | "size": "20x20",
6 | "filename": "Icon-Notification-20@2x.png",
7 | "scale": "2x"
8 | },
9 | {
10 | "idiom": "iphone",
11 | "size": "20x20",
12 | "filename": "Icon-Notification-20@3x.png",
13 | "scale": "3x"
14 | },
15 | {
16 | "idiom": "iphone",
17 | "size": "29x29",
18 | "filename": "Icon-29.png",
19 | "scale": "1x"
20 | },
21 | {
22 | "idiom": "iphone",
23 | "size": "29x29",
24 | "filename": "Icon-29@2x.png",
25 | "scale": "2x"
26 | },
27 | {
28 | "idiom": "iphone",
29 | "size": "29x29",
30 | "filename": "Icon-29@3x.png",
31 | "scale": "3x"
32 | },
33 | {
34 | "idiom": "iphone",
35 | "size": "40x40",
36 | "filename": "Icon-Spotlight-40@2x.png",
37 | "scale": "2x"
38 | },
39 | {
40 | "idiom": "iphone",
41 | "size": "40x40",
42 | "filename": "Icon-Spotlight-40@3x.png",
43 | "scale": "3x"
44 | },
45 | {
46 | "idiom": "iphone",
47 | "size": "60x60",
48 | "filename": "Icon-60@2x.png",
49 | "scale": "2x"
50 | },
51 | {
52 | "idiom": "iphone",
53 | "size": "60x60",
54 | "filename": "Icon-@3x.png",
55 | "scale": "3x"
56 | },
57 | {
58 | "idiom": "ipad",
59 | "size": "20x20",
60 | "filename": "Icon-Notifications-20.png",
61 | "scale": "1x"
62 | },
63 | {
64 | "idiom": "ipad",
65 | "size": "20x20",
66 | "filename": "Icon-Notifications-20@2x.png",
67 | "scale": "2x"
68 | },
69 | {
70 | "idiom": "ipad",
71 | "size": "29x29",
72 | "filename": "Icon-Small-1.png",
73 | "scale": "1x"
74 | },
75 | {
76 | "idiom": "ipad",
77 | "size": "29x29",
78 | "filename": "Icon-Small@2x-1.png",
79 | "scale": "2x"
80 | },
81 | {
82 | "idiom": "ipad",
83 | "size": "40x40",
84 | "filename": "Icon-Spotlight-40.png",
85 | "scale": "1x"
86 | },
87 | {
88 | "idiom": "ipad",
89 | "size": "40x40",
90 | "filename": "Icon-Spotlight-40@2x-1.png",
91 | "scale": "2x"
92 | },
93 | {
94 | "idiom": "ipad",
95 | "size": "76x76",
96 | "filename": "Icon-76.png",
97 | "scale": "1x"
98 | },
99 | {
100 | "idiom": "ipad",
101 | "size": "76x76",
102 | "filename": "Icon-76@2x.png",
103 | "scale": "2x"
104 | },
105 | {
106 | "idiom": "ipad",
107 | "size": "83.5x83.5",
108 | "filename": "Icon-83.5@2x.png",
109 | "scale": "2x"
110 | },
111 | {
112 | "idiom": "ios-marketing",
113 | "size": "1024x1024",
114 | "filename": "Icon-AppStore-1024.png",
115 | "scale": "1x"
116 | }
117 | ],
118 | "info": {
119 | "version": 1,
120 | "author": "xcode"
121 | }
122 | }
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-29.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-@3x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-AppStore-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-AppStore-1024.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Notification-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Notification-20@2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Notification-20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Notification-20@3x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Notifications-20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Notifications-20.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Notifications-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Notifications-20@2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Small-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Small-1.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "orientation": "portrait",
5 | "idiom": "iphone",
6 | "extent": "full-screen",
7 | "minimum-system-version": "7.0",
8 | "scale": "2x",
9 | "filename": "LaunchImage-iphone-2x.png"
10 | },
11 | {
12 | "orientation": "portrait",
13 | "idiom": "iphone",
14 | "extent": "full-screen",
15 | "minimum-system-version": "7.0",
16 | "scale": "2x",
17 | "filename": "LaunchImage-iphone-retina4.png",
18 | "subtype": "retina4"
19 | },
20 | {
21 | "orientation": "portrait",
22 | "idiom": "ipad",
23 | "extent": "full-screen",
24 | "minimum-system-version": "7.0",
25 | "scale": "1x",
26 | "filename": "LaunchImage-ipad-portrait-1x.png"
27 | },
28 | {
29 | "orientation": "landscape",
30 | "idiom": "ipad",
31 | "extent": "full-screen",
32 | "minimum-system-version": "7.0",
33 | "scale": "1x",
34 | "filename": "LaunchImage-ipad-landscape-1x.png"
35 | },
36 | {
37 | "orientation": "portrait",
38 | "idiom": "ipad",
39 | "extent": "full-screen",
40 | "minimum-system-version": "7.0",
41 | "scale": "2x",
42 | "filename": "LaunchImage-ipad-portrait-2x.png"
43 | },
44 | {
45 | "orientation": "landscape",
46 | "idiom": "ipad",
47 | "extent": "full-screen",
48 | "minimum-system-version": "7.0",
49 | "scale": "2x",
50 | "filename": "LaunchImage-ipad-landscape-2x.png"
51 | }
52 | ],
53 | "info": {
54 | "version": 1,
55 | "author": "xcode"
56 | }
57 | }
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-landscape-1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-landscape-1x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-landscape-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-landscape-2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-portrait-1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-portrait-1x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-portrait-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-ipad-portrait-2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-iphone-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-iphone-2x.png
--------------------------------------------------------------------------------
/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-iphone-retina4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Builds/iOS/ShowMIDI/Images.xcassets/LaunchImage.launchimage/LaunchImage-iphone-retina4.png
--------------------------------------------------------------------------------
/Builds/iOS/Standalone_Plugin.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.icloud-container-identifiers
6 |
7 | iCloud.$(CFBundleIdentifier)
8 |
9 | com.apple.developer.icloud-services
10 |
11 | CloudDocuments
12 |
13 | com.apple.developer.ubiquity-container-identifiers
14 |
15 | iCloud.$(CFBundleIdentifier)
16 |
17 | com.apple.security.application-groups
18 |
19 | group.com.uwyn.showmidi
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.15)
2 |
3 | # To build a CLAP you need to do the following in addition to editing this file
4 | #
5 | # - First do the native build of at least the ShowMIDI_shared target on your platform as Debug or Release
6 | # - Then do `cmake -Bbuild_clap -DCMAKE_BUILD_TYPE=Debug` or Release of course
7 | # - Then do `cmake --build build_clap --config Debug` or Release
8 | #
9 | # This will result in build_clap/ShowMIDI_artefacts/Debug/ShowMIDI.clap (or Release).
10 | #
11 | # For this to work a couple of things need to be configured
12 |
13 | # Next adjust these paths to point to your JUCE and the current checkout of ClapJuce Extensions
14 | set(PATH_TO_JUCE "$ENV{PATH_TO_JUCE}")
15 | set(PATH_TO_CLAP_EXTENSIONS libs/clap-juce-extensions)
16 |
17 | # Make sure to set the same C++ version as you have set in the Projucer
18 | set(CMAKE_CXX_STANDARD 17)
19 |
20 | # Make sure to set the same MacOS deployment target as you have set in the Projucer
21 | set(CMAKE_OSX_DEPLOYMENT_TARGET "11.7" CACHE STRING "Minimum OS X deployment target")
22 |
23 | # If the Projucer is using "static runtime" for Visual Studio:
24 | #set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" CACHE STRING "Runtime")
25 | set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded" CACHE STRING "Runtime")
26 |
27 | # This bypasses XCode signing and is appropriate if you sign after a build. Comment it out if you want to use
28 | # xcode signing.
29 | set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO")
30 | set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO")
31 |
32 | project(ShowMIDI VERSION 1.0.0)
33 |
34 | # define the exporter types used in your Projucer configuration
35 | if (APPLE)
36 | set(JUCER_GENERATOR "Xcode")
37 | elseif (WIN32)
38 | set(JUCER_GENERATOR "VisualStudio2022")
39 | else () # Linux
40 | set(JUCER_GENERATOR "LinuxMakefile")
41 | endif ()
42 |
43 | include(${PATH_TO_CLAP_EXTENSIONS}/cmake/JucerClap.cmake)
44 | create_jucer_clap_target(
45 | TARGET ShowMIDI
46 | PLUGIN_NAME "ShowMIDI"
47 | BINARY_NAME "ShowMIDI"
48 |
49 | # You will want to check all this information
50 | MANUFACTURER_NAME "Uwyn"
51 | MANUFACTURER_CODE Uwyn
52 | PLUGIN_CODE shmi
53 | VERSION_STRING "$ENV{RELEASE_VERSION}"
54 | CLAP_ID "com.uwyn.showmidi.clap"
55 | CLAP_FEATURES note-effect utility
56 | CLAP_MANUAL_URL "https://www.uwyn.com"
57 | CLAP_SUPPORT_URL "https://www.uwyn.com"
58 | EDITOR_NEEDS_KEYBOARD_FOCUS TRUE
59 | )
60 |
61 |
--------------------------------------------------------------------------------
/Design/icon.afdesign:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/icon.afdesign
--------------------------------------------------------------------------------
/Design/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/icon.png
--------------------------------------------------------------------------------
/Design/logo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/logo.pdf
--------------------------------------------------------------------------------
/Design/play-pause.afdesign:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/play-pause.afdesign
--------------------------------------------------------------------------------
/Design/showmidi-0.5.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/showmidi-0.5.0.png
--------------------------------------------------------------------------------
/Design/showmidi-0.8.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/showmidi-0.8.0.png
--------------------------------------------------------------------------------
/Design/showmidi-0.9.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/showmidi-0.9.0.png
--------------------------------------------------------------------------------
/Design/showmidi-1.0.0-announcement.afdesign:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/showmidi-1.0.0-announcement.afdesign
--------------------------------------------------------------------------------
/Design/showmidi-1.0.0-graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/showmidi-1.0.0-graph.png
--------------------------------------------------------------------------------
/Design/showmidi-1.0.0-line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/showmidi-1.0.0-line.png
--------------------------------------------------------------------------------
/Design/showmidi.afdesign:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/showmidi.afdesign
--------------------------------------------------------------------------------
/Design/showmidi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/showmidi.png
--------------------------------------------------------------------------------
/Design/wizard_image1.afphoto:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Design/wizard_image1.afphoto
--------------------------------------------------------------------------------
/Fonts/JetBrainsMono-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Fonts/JetBrainsMono-Italic.ttf
--------------------------------------------------------------------------------
/Fonts/JetBrainsMono-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Fonts/JetBrainsMono-Regular.ttf
--------------------------------------------------------------------------------
/Fonts/JetBrainsMono-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Fonts/JetBrainsMono-SemiBold.ttf
--------------------------------------------------------------------------------
/Fonts/JetBrainsMono-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Fonts/JetBrainsMono-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/Installers/Assets/wizard_icon1.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_icon1.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_icon2.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_icon2.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_icon3.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_icon3.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_icon4.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_icon4.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_icon5.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_icon5.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_icon6.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_icon6.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_icon7.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_icon7.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_image1.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_image1.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_image2.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_image2.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_image3.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_image3.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_image4.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_image4.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_image5.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_image5.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_image6.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_image6.bmp
--------------------------------------------------------------------------------
/Installers/Assets/wizard_image7.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Installers/Assets/wizard_image7.bmp
--------------------------------------------------------------------------------
/Installers/uninstall.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | APP="ShowMIDI"
4 |
5 | rm -f -Rf "/Users/$USER/Applications/$APP.app";
6 | rm -f -Rf "/Applications/$APP.app";
7 |
8 | rm -f -Rf "/Users/$USER/Library/Audio/Plug-Ins/Components/$APP.component";
9 | rm -f -Rf "/Library/Audio/Plug-Ins/Components/$APP.component";
10 |
11 | rm -f -Rf "/Users/$USER/Library/Audio/Plug-Ins/VST/$APP.vst";
12 | rm -f -Rf "/Library/Audio/Plug-Ins/VST/$APP.vst";
13 |
14 | rm -f -Rf "/Users/$USER/Library/Audio/Plug-Ins/VST3/$APP.vst3";
15 | rm -f -Rf "/Library/Audio/Plug-Ins/VST3/$APP.vst3";
16 |
17 | exit 0
18 |
--------------------------------------------------------------------------------
/Interface/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/Interface/Base.lproj/launch-screen-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gbevin/ShowMIDI/fcf58a47a39cebeec697a732ae745ab5ad334cbc/Interface/Base.lproj/launch-screen-logo@2x.png
--------------------------------------------------------------------------------
/JuceLibraryCode/BinaryData.h:
--------------------------------------------------------------------------------
1 | /* =========================================================================================
2 |
3 | This is an auto-generated file: Any edits you make may be overwritten!
4 |
5 | */
6 |
7 | #pragma once
8 |
9 | namespace BinaryData
10 | {
11 | extern const char* appiconios_png;
12 | const int appiconios_pngSize = 39031;
13 |
14 | extern const char* appicon_png;
15 | const int appicon_pngSize = 87300;
16 |
17 | extern const char* bar_svg;
18 | const int bar_svgSize = 1174;
19 |
20 | extern const char* close_svg;
21 | const int close_svgSize = 1087;
22 |
23 | extern const char* collapsed_svg;
24 | const int collapsed_svgSize = 864;
25 |
26 | extern const char* expanded_svg;
27 | const int expanded_svgSize = 825;
28 |
29 | extern const char* graph_svg;
30 | const int graph_svgSize = 1196;
31 |
32 | extern const char* help_svg;
33 | const int help_svgSize = 1676;
34 |
35 | extern const char* hidden_svg;
36 | const int hidden_svgSize = 1148;
37 |
38 | extern const char* pause_svg;
39 | const int pause_svgSize = 919;
40 |
41 | extern const char* play_svg;
42 | const int play_svgSize = 1128;
43 |
44 | extern const char* reset_svg;
45 | const int reset_svgSize = 1510;
46 |
47 | extern const char* settings_svg;
48 | const int settings_svgSize = 2022;
49 |
50 | extern const char* visible_svg;
51 | const int visible_svgSize = 1504;
52 |
53 | extern const char* JetBrainsMonoItalic_ttf;
54 | const int JetBrainsMonoItalic_ttfSize = 276840;
55 |
56 | extern const char* JetBrainsMonoRegular_ttf;
57 | const int JetBrainsMonoRegular_ttfSize = 273900;
58 |
59 | extern const char* JetBrainsMonoSemiBold_ttf;
60 | const int JetBrainsMonoSemiBold_ttfSize = 277092;
61 |
62 | extern const char* JetBrainsMonoSemiBoldItalic_ttf;
63 | const int JetBrainsMonoSemiBoldItalic_ttfSize = 279828;
64 |
65 | // Number of elements in the namedResourceList and originalFileNames arrays.
66 | const int namedResourceListSize = 18;
67 |
68 | // Points to the start of a list of resource names.
69 | extern const char* namedResourceList[];
70 |
71 | // Points to the start of a list of resource filenames.
72 | extern const char* originalFilenames[];
73 |
74 | // If you provide the name of one of the binary resource variables above, this function will
75 | // return the corresponding data and its size (or a null pointer if the name isn't found).
76 | const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes);
77 |
78 | // If you provide the name of one of the binary resource variables above, this function will
79 | // return the corresponding original, non-mangled filename (or a null pointer if the name isn't found).
80 | const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8);
81 | }
82 |
--------------------------------------------------------------------------------
/JuceLibraryCode/JuceHeader.h:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | This is the header file that your files should include in order to get all the
7 | JUCE library headers. You should avoid including the JUCE headers directly in
8 | your own source files, because that wouldn't pick up the correct configuration
9 | options for your app.
10 |
11 | */
12 |
13 | #pragma once
14 |
15 | #include "AppConfig.h"
16 |
17 | #include
18 | #include
19 | #include
20 | #include
21 | #include
22 | #include
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 | #include
29 |
30 | #include "BinaryData.h"
31 |
32 | #if defined (JUCE_PROJUCER_VERSION) && JUCE_PROJUCER_VERSION < JUCE_VERSION
33 | /** If you've hit this error then the version of the Projucer that was used to generate this project is
34 | older than the version of the JUCE modules being included. To fix this error, re-save your project
35 | using the latest version of the Projucer or, if you aren't using the Projucer to manage your project,
36 | remove the JUCE_PROJUCER_VERSION define.
37 | */
38 | #error "This project was last saved using an outdated version of the Projucer! Re-save this project with the latest version to fix this error."
39 | #endif
40 |
41 | #if ! DONT_SET_USING_JUCE_NAMESPACE
42 | // If your code uses a lot of JUCE classes, then this will obviously save you
43 | // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
44 | using namespace juce;
45 | #endif
46 |
47 | #if ! JUCE_DONT_DECLARE_PROJECTINFO
48 | namespace ProjectInfo
49 | {
50 | const char* const projectName = "ShowMIDI";
51 | const char* const companyName = "Uwyn";
52 | const char* const versionString = "1.0.1";
53 | const int versionNumber = 0x10001;
54 | }
55 | #endif
56 |
--------------------------------------------------------------------------------
/JuceLibraryCode/JuceLV2Defines.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #ifndef JucePlugin_LV2URI
4 | #define JucePlugin_LV2URI "https://www.uwyn.com/plugins/ShowMIDI"
5 | #endif
6 |
--------------------------------------------------------------------------------
/JuceLibraryCode/ReadMe.txt:
--------------------------------------------------------------------------------
1 |
2 | Important Note!!
3 | ================
4 |
5 | The purpose of this folder is to contain files that are auto-generated by the Projucer,
6 | and ALL files in this folder will be mercilessly DELETED and completely re-written whenever
7 | the Projucer saves your project.
8 |
9 | Therefore, it's a bad idea to make any manual changes to the files in here, or to
10 | put any of your own files in here if you don't want to lose them. (Of course you may choose
11 | to add the folder's contents to your version-control system so that you can re-merge your own
12 | modifications after the Projucer has saved its changes).
13 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_basics.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_basics.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_devices.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_devices.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_formats.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_formats.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_AAX.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_AAX.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_AAX_utils.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_ARA.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_AUv3.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_LV2.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_LV2.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_Standalone.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_Unity.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_VST2.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_plugin_client_VST3.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_processors.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_processors.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_processors_ara.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_utils.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_audio_utils.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_core.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_core.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_data_structures.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_data_structures.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_events.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_events.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_graphics.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_graphics.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_gui_basics.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_gui_basics.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_gui_extra.cpp:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/include_juce_gui_extra.mm:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMPORTANT! This file is auto-generated each time you save your
4 | project - if you alter its contents, your changes may be overwritten!
5 |
6 | */
7 |
8 | #include "AppConfig.h"
9 | #include
10 |
--------------------------------------------------------------------------------
/JuceLibraryCode/modules/juce_audio_devices/native/oboe/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.4.1)
2 |
3 | # Set the name of the project and store it in PROJECT_NAME. Also set the following variables:
4 | # PROJECT_SOURCE_DIR (usually the root directory where Oboe has been cloned e.g.)
5 | # PROJECT_BINARY_DIR (usually the containing project's binary directory,
6 | # e.g. ${OBOE_HOME}/samples/RhythmGame/.externalNativeBuild/cmake/ndkExtractorDebug/x86/oboe-bin)
7 | project(oboe)
8 |
9 | set (oboe_sources
10 | src/aaudio/AAudioLoader.cpp
11 | src/aaudio/AudioStreamAAudio.cpp
12 | src/common/AudioSourceCaller.cpp
13 | src/common/AudioStream.cpp
14 | src/common/AudioStreamBuilder.cpp
15 | src/common/DataConversionFlowGraph.cpp
16 | src/common/FilterAudioStream.cpp
17 | src/common/FixedBlockAdapter.cpp
18 | src/common/FixedBlockReader.cpp
19 | src/common/FixedBlockWriter.cpp
20 | src/common/LatencyTuner.cpp
21 | src/common/SourceFloatCaller.cpp
22 | src/common/SourceI16Caller.cpp
23 | src/common/SourceI24Caller.cpp
24 | src/common/SourceI32Caller.cpp
25 | src/common/Utilities.cpp
26 | src/common/QuirksManager.cpp
27 | src/fifo/FifoBuffer.cpp
28 | src/fifo/FifoController.cpp
29 | src/fifo/FifoControllerBase.cpp
30 | src/fifo/FifoControllerIndirect.cpp
31 | src/flowgraph/FlowGraphNode.cpp
32 | src/flowgraph/ChannelCountConverter.cpp
33 | src/flowgraph/ClipToRange.cpp
34 | src/flowgraph/ManyToMultiConverter.cpp
35 | src/flowgraph/MonoToMultiConverter.cpp
36 | src/flowgraph/MultiToMonoConverter.cpp
37 | src/flowgraph/RampLinear.cpp
38 | src/flowgraph/SampleRateConverter.cpp
39 | src/flowgraph/SinkFloat.cpp
40 | src/flowgraph/SinkI16.cpp
41 | src/flowgraph/SinkI24.cpp
42 | src/flowgraph/SinkI32.cpp
43 | src/flowgraph/SourceFloat.cpp
44 | src/flowgraph/SourceI16.cpp
45 | src/flowgraph/SourceI24.cpp
46 | src/flowgraph/SourceI32.cpp
47 | src/flowgraph/resampler/IntegerRatio.cpp
48 | src/flowgraph/resampler/LinearResampler.cpp
49 | src/flowgraph/resampler/MultiChannelResampler.cpp
50 | src/flowgraph/resampler/PolyphaseResampler.cpp
51 | src/flowgraph/resampler/PolyphaseResamplerMono.cpp
52 | src/flowgraph/resampler/PolyphaseResamplerStereo.cpp
53 | src/flowgraph/resampler/SincResampler.cpp
54 | src/flowgraph/resampler/SincResamplerStereo.cpp
55 | src/opensles/AudioInputStreamOpenSLES.cpp
56 | src/opensles/AudioOutputStreamOpenSLES.cpp
57 | src/opensles/AudioStreamBuffered.cpp
58 | src/opensles/AudioStreamOpenSLES.cpp
59 | src/opensles/EngineOpenSLES.cpp
60 | src/opensles/OpenSLESUtilities.cpp
61 | src/opensles/OutputMixerOpenSLES.cpp
62 | src/common/StabilizedCallback.cpp
63 | src/common/Trace.cpp
64 | src/common/Version.cpp
65 | )
66 |
67 | add_library(oboe ${oboe_sources})
68 |
69 | # Specify directories which the compiler should look for headers
70 | target_include_directories(oboe
71 | PRIVATE src
72 | PUBLIC include)
73 |
74 | # JUCE CHANGE STARTS HERE
75 |
76 | # This comment provided for Apache License compliance. We've removed the extra warnings flags and
77 | # the `-Werror` option, to avoid cases where compilers produce unexpected errors and fail the build.
78 | # We've also removed the explicit `-std=c++17` compile option, and replaced it with a more
79 | # cmake-friendly way of specifying the language standard.
80 |
81 | target_compile_options(oboe PRIVATE -Ofast)
82 | set_target_properties(oboe PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED TRUE CXX_EXTENSIONS FALSE)
83 |
84 | # JUCE CHANGE ENDS HERE
85 |
86 | # Enable logging of D,V for debug builds
87 | target_compile_definitions(oboe PUBLIC $<$:OBOE_ENABLE_LOGGING=1>)
88 |
89 | target_link_libraries(oboe PRIVATE log OpenSLES)
90 |
91 | # When installing oboe put the libraries in the lib/ folder e.g. lib/arm64-v8a
92 | install(TARGETS oboe
93 | LIBRARY DESTINATION lib/${ANDROID_ABI}
94 | ARCHIVE DESTINATION lib/${ANDROID_ABI})
95 |
96 | # Also install the headers
97 | install(DIRECTORY include/oboe DESTINATION include)
98 |
--------------------------------------------------------------------------------
/Scripts/auv3_aum_size.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | SCRIPT_DIR="$1"
3 | if [ -e /usr/libexec/PlistBuddy ]
4 | then
5 | /usr/libexec/PlistBuddy -c "add :NSExtension:NSExtensionAttributes:AudioComponents:0:tags:1 string 'size:{296, 600}'" $SCRIPT_DIR/Builds/iOS/Info-AUv3_AppExtension.plist
6 | fi
7 |
--------------------------------------------------------------------------------
/Scripts/build-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [ $# -eq 0 ]; then
4 | echo "The release version is required as an argument"
5 | exit 1
6 | fi
7 |
8 | PROJECT_DIR=$PWD
9 |
10 | export RELEASE_VERSION="$1"
11 | export PATH_TO_JUCE="$PROJECT_DIR/JUCE"
12 |
13 | rm -rfv Builds/LinuxMakefile/build/
14 |
15 | pushd Builds/LinuxMakefile
16 | make CONFIG=Release
17 | popd
18 |
19 | cmake -BBuilds/LinuxMakefile/build/clap -DCMAKE_BUILD_TYPE=Release
20 | pushd Builds/LinuxMakefile
21 | cmake --build build/clap --config Release
22 |
23 | pushd build
24 | STAGE_DIR="ShowMIDI-$RELEASE_VERSION"
25 | mkdir -p $STAGE_DIR/vst $STAGE_DIR/vst3 $STAGE_DIR/clap $STAGE_DIR/lv2
26 | mv ShowMIDI $STAGE_DIR
27 | mv ShowMIDI.so $STAGE_DIR/vst
28 | mv ShowMIDI.vst3 $STAGE_DIR/vst3
29 | mv clap/ShowMIDI_artefacts/Release/ShowMIDI.clap $STAGE_DIR/clap
30 | mv ShowMIDI.lv2 $STAGE_DIR/lv2
31 | cp $PROJECT_DIR/*.md $STAGE_DIR
32 |
33 | ARCHIVE_FILE="$PROJECT_DIR/Installers/ShowMIDI-Linux-Ubuntu-x64-$RELEASE_VERSION.tar.bz2"
34 | tar cvp $STAGE_DIR | bzip2 > $ARCHIVE_FILE
35 | echo "Finished building `realpath $ARCHIVE_FILE`"
36 |
37 | popd
38 |
39 | popd
--------------------------------------------------------------------------------
/Scripts/build-macos.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [ $# -eq 0 ]; then
4 | echo "The release version is required as an argument"
5 | exit 1
6 | fi
7 |
8 | PROJECT_DIR=$PWD
9 |
10 | export RELEASE_VERSION="$1"
11 | export PATH_TO_JUCE="$PROJECT_DIR/JUCE"
12 |
13 | SIGN_ID="Developer ID Application: Uwyn, LLC (AGZT8GVS7G)"
14 | BUILD_DIR=$PWD/Builds/MacOSX/build
15 |
16 | rm -rfv $BUILD_DIR
17 |
18 | # build release artifacts
19 | echo "Building all ProJucer artifacts"
20 | xcodebuild -project ./Builds/MacOSX/showmidi.xcodeproj -destination "generic/platform=macOS,name=Any Mac" -config Release SYMROOT=build -scheme "ShowMIDI - All"
21 |
22 | echo "Building CLAP plugin"
23 | cmake -BBuilds/MacOSX/build/clap -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
24 | cmake --build $BUILD_DIR/clap --config Release
25 |
26 | # sign each individual artifact
27 | echo "Codesigning all artifacts"
28 | codesign -f -s "$SIGN_ID" Builds/MacOSX/build/Release/ShowMIDI.app --deep --strict --timestamp --options=runtime
29 | codesign -f -s "$SIGN_ID" Builds/MacOSX/build/Release/ShowMIDI.appex --deep --strict --timestamp --options=runtime
30 | codesign -f -s "$SIGN_ID" Builds/MacOSX/build/Release/ShowMIDI.component --deep --strict --timestamp --options=runtime
31 | codesign -f -s "$SIGN_ID" Builds/MacOSX/build/Release/ShowMIDI.vst --deep --strict --timestamp --options=runtime
32 | codesign -f -s "$SIGN_ID" Builds/MacOSX/build/Release/ShowMIDI.vst3 --deep --strict --timestamp --options=runtime
33 | codesign -f -s "$SIGN_ID" Builds/MacOSX/build/Release/ShowMIDI.lv2 --deep --strict --timestamp --options=runtime
34 | codesign -f -s "$SIGN_ID" Builds/MacOSX/build/Release/ShowMIDI.lv2/ShowMIDI --deep --strict --timestamp --options=runtime
35 | codesign -f -s "$SIGN_ID" Builds/MacOSX/build/clap/ShowMIDI_artefacts/Release/ShowMIDI.clap --deep --strict --timestamp --options=runtime
36 |
37 | # update packager file with version number and generate it in the build
38 | # directory, updating relevant paths
39 | echo "Generating installer packages project"
40 | sed "s/REPLACE_VERSION/$RELEASE_VERSION/g" Installers/ShowMIDI.pkgproj | \
41 | sed "s/Builds\/MacOSX/..\/..\/Builds\/MacOSX/g" > $BUILD_DIR/ShowMIDI_versioned.pkgproj
42 | # copy other files that are needed by the installer to the new location
43 | cp Installers/uninstall.sh $BUILD_DIR
44 | cp Installers/gpl-3.0.txt $BUILD_DIR
45 |
46 | # build the installer package in the build directory
47 | echo "Building installer package"
48 | /usr/local/bin/packagesbuild --project $BUILD_DIR/ShowMIDI_versioned.pkgproj -v
49 | mv $BUILD_DIR/ShowMIDI.pkg $BUILD_DIR/ShowMIDI-${RELEASE_VERSION}.pkg
50 |
51 | ARCHIVE_FILE="$PROJECT_DIR/Installers/ShowMIDI-macOS-${RELEASE_VERSION}.zip"
52 | pushd "$BUILD_DIR"
53 |
54 | PKG_FILE="ShowMIDI-${RELEASE_VERSION}.pkg"
55 |
56 | # Notarization
57 | echo "Notarizating installer"
58 | xcrun notarytool submit "${PKG_FILE}" --keychain-profile "notary-uwyn.com" --wait
59 | xcrun stapler staple "${PKG_FILE}"
60 | spctl --assess -vv --type install "${PKG_FILE}"
61 |
62 | echo "Creating zip archive of installer"
63 | zip -r "${ARCHIVE_FILE}" "${PKG_FILE}"
64 | popd
65 |
66 | echo "Finished building `realpath $ARCHIVE_FILE`"
67 |
--------------------------------------------------------------------------------
/Scripts/build-windows.ps1:
--------------------------------------------------------------------------------
1 | param (
2 | [Parameter(Mandatory=$true)][string]$version
3 | )
4 |
5 | $curDir = Get-Location
6 |
7 | Write-Output "Setting up development environment with Visuals Studio 2022"
8 | Import-Module "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
9 | Enter-VsDevShell -VsInstallPath "C:\Program Files\Microsoft Visual Studio\2022\Community\"
10 |
11 | $Env:RELEASE_VERSION = "$version"
12 | $Env:PATH_TO_JUCE = "$curDir\JUCE"
13 |
14 | Write-Output "Changing location to $curDir"
15 | Set-Location $curDir
16 |
17 | $signId = "Open Source Developer, Geert Bevin"
18 | $buildLocation = "Builds\VisualStudio2022\x64"
19 |
20 | Write-Output "Deleting previous build from $buildLocation"
21 | Remove-Item -LiteralPath $buildLocation -Force -Recurse
22 |
23 | Write-Output "Building project"
24 | MSBuild.exe .\Builds\VisualStudio2022\showmidi.sln /p:Configuration=Release /p:PreferredToolArchitecture=x64 /p:Platform=x64 /clp:ErrorsOnly
25 |
26 | Write-Output "Building CLAP plugin"
27 | cmake -B"$buildLocation\clap" -DCMAKE_BUILD_TYPE=Release
28 | cmake --build "$buildLocation\clap" --config Release
29 |
30 | Write-Output "Codesigning all artifacts"
31 |
32 | & signtool sign /n "$signId" /t http://time.certum.pl/ /fd sha1 /v "$buildLocation\Release\Standalone Plugin\ShowMIDI.exe"
33 | & signtool sign /n "$signId" /t http://time.certum.pl/ /fd sha1 /v "$buildLocation\Release\VST\ShowMIDI.dll"
34 | & signtool sign /n "$signId" /t http://time.certum.pl/ /fd sha1 /v "$buildLocation\Release\VST3\ShowMIDI.vst3\Contents\x86_64-win\ShowMIDI.vst3"
35 | & signtool sign /n "$signId" /t http://time.certum.pl/ /fd sha1 /v "$buildLocation\Release\LV2 Plugin\ShowMIDI.lv2\ShowMIDI.dll"
36 | & signtool sign /n "$signId" /t http://time.certum.pl/ /fd sha1 /v "$buildLocation\clap\ShowMIDI_artefacts\Release\ShowMIDI.clap"
37 |
38 | Write-Output "Building installer"
39 | & 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' /DPWD="$curDir" /DPATH=./ /DVERSION="$Env:RELEASE_VERSION" Installers\ShowMIDI.iss
40 |
41 | Write-Output "Code signing installer"
42 |
43 | & signtool sign /n "$signId" /t http://time.certum.pl/ /fd sha1 /v "$curDir\Installers\ShowMIDI-Windows-$Env:RELEASE_VERSION.exe"
--------------------------------------------------------------------------------
/Source/AboutComponent.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "AboutComponent.h"
19 |
20 | #include "MidiDeviceComponent.h"
21 | #include "SidebarComponent.h"
22 |
23 | namespace showmidi
24 | {
25 | AboutComponent::AboutComponent(Theme& theme) : theme_(theme)
26 | {
27 | websiteButton_ = std::make_unique("https://uwyn.com");
28 | closeButton_ = std::make_unique("close");
29 |
30 | websiteButton_->addListener(this);
31 | closeButton_->addListener(this);
32 |
33 | addAndMakeVisible(websiteButton_.get());
34 | addAndMakeVisible(closeButton_.get());
35 |
36 | updateDimensions();
37 | resized();
38 | }
39 |
40 | void AboutComponent::paint(Graphics& g)
41 | {
42 | g.fillAll(theme_.colorBackground);
43 |
44 | g.setColour(theme_.colorData);
45 | g.drawRect(Rectangle{0, 0, getWidth(), getHeight()});
46 |
47 | g.setFont(theme_.fontLabel());
48 | g.drawText(ProjectInfo::projectName,
49 | 0, theme_.linePosition(1),
50 | getWidth(), theme_.labelHeight(),
51 | Justification::centred, true);
52 | g.drawText(ProjectInfo::versionString,
53 | 0, theme_.linePosition(2),
54 | getWidth(), theme_.labelHeight(),
55 | Justification::centred, true);
56 |
57 | g.setColour(theme_.colorData.withAlpha(0.7f));
58 | g.setFont(theme_.fontData());
59 | websiteButton_->drawName(g, Justification::centred);
60 |
61 | // close button
62 |
63 | g.setColour(theme_.colorController);
64 | g.setFont(theme_.fontLabel());
65 | closeButton_->drawName(g, Justification::centred);
66 | }
67 |
68 | void AboutComponent::resized()
69 | {
70 | websiteButton_->setBoundsForTouch(0, theme_.linePosition(4),
71 | getWidth(), theme_.labelHeight());
72 | closeButton_->setBoundsForTouch(0, getHeight() - theme_.linePosition(1) - theme_.labelHeight(),
73 | getWidth(), theme_.labelHeight());
74 | }
75 |
76 | void AboutComponent::buttonClicked(Button* buttonThatWasClicked)
77 | {
78 | if (buttonThatWasClicked == websiteButton_.get())
79 | {
80 | URL(websiteButton_->getName()).launchInDefaultBrowser();
81 | }
82 | else if (buttonThatWasClicked == closeButton_.get())
83 | {
84 | setVisible(false);
85 | }
86 | }
87 |
88 | void AboutComponent::updateDimensions()
89 | {
90 | setSize(MidiDeviceComponent::getStandardWidth() - SidebarComponent::X_SETTINGS * 2, theme_.linePosition(8));
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/Source/AboutComponent.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include "JuceHeader.h"
21 |
22 | #include "PaintedButton.h"
23 | #include "Theme.h"
24 |
25 | namespace showmidi
26 | {
27 | class AboutComponent : public Component, public Button::Listener
28 | {
29 | public:
30 | AboutComponent(Theme&);
31 |
32 | void paint(Graphics&) override;
33 | void resized() override;
34 |
35 | void buttonClicked(Button*) override;
36 |
37 | void updateDimensions();
38 |
39 | private:
40 | Theme& theme_;
41 |
42 | std::unique_ptr websiteButton_;
43 | std::unique_ptr closeButton_;
44 |
45 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AboutComponent)
46 | };
47 | }
48 |
--------------------------------------------------------------------------------
/Source/DetectDevice.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | namespace showmidi
21 | {
22 | bool isiPhone();
23 | }
24 |
--------------------------------------------------------------------------------
/Source/DetectDevice.mm:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "DetectDevice.h"
19 |
20 | #define JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED = 1
21 | #include "juce_core/system/juce_TargetPlatform.h"
22 |
23 | #if JUCE_IOS
24 | #import
25 | #endif
26 |
27 | namespace showmidi
28 | {
29 | bool isiPhone()
30 | {
31 | #if JUCE_IOS
32 | return [UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone;
33 | #endif
34 | return false;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Source/DeviceListener.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "DeviceListener.h"
19 |
20 | namespace showmidi
21 | {
22 | DeviceListener::DeviceListener() { }
23 | DeviceListener::~DeviceListener() { }
24 |
25 | void DeviceListeners::broadcastPauseChange(bool state)
26 | {
27 | call([state] (DeviceListener& l) { l.pauseChanged(state); });
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Source/DeviceListener.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include "JuceHeader.h"
21 |
22 | namespace showmidi
23 | {
24 | class DeviceListener
25 | {
26 | public:
27 | DeviceListener();
28 | virtual ~DeviceListener();
29 |
30 | virtual void pauseChanged(bool) = 0;
31 | };
32 |
33 | class DeviceListeners : public ListenerList
34 | {
35 | public:
36 | void broadcastPauseChange(bool);
37 | };
38 | }
39 |
--------------------------------------------------------------------------------
/Source/DeviceManager.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "DeviceListener.h"
23 |
24 | namespace showmidi
25 | {
26 | class DeviceManager
27 | {
28 | public:
29 | virtual ~DeviceManager() {};
30 |
31 | virtual bool isPaused() = 0;
32 | virtual void togglePaused() = 0;
33 | virtual DeviceListeners& getDeviceListeners() = 0;
34 | virtual void resetChannelData() = 0;
35 | };
36 | }
37 |
--------------------------------------------------------------------------------
/Source/Main.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include
19 |
20 | #include "ShowMidiApplication.h"
21 |
22 | ApplicationCommandManager* commandManager = 0;
23 | JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wmissing-prototypes")
24 | JUCEApplicationBase* juce_CreateApplication() { return new showmidi::ShowMidiApplication(); }
25 | void* juce_GetIOSCustomDelegateClass() { return nullptr; }
26 | JUCE_END_IGNORE_WARNINGS_GCC_LIKE
27 |
--------------------------------------------------------------------------------
/Source/MainLayoutComponent.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "DeviceManager.h"
23 | #include "SettingsManager.h"
24 |
25 | namespace showmidi
26 | {
27 | enum MainLayoutType
28 | {
29 | layoutStandalone = 1,
30 | layoutPlugin
31 | };
32 |
33 | class MainLayoutComponent : public Component, public FileDragAndDropTarget
34 | {
35 | public:
36 | MainLayoutComponent(SettingsManager*, DeviceManager*, MainLayoutType, Component*);
37 | virtual ~MainLayoutComponent();
38 |
39 | bool isInterestedInFileDrag(const StringArray&);
40 | void filesDropped(const StringArray&, int, int);
41 |
42 | void resized();
43 |
44 | int getSidebarWidth();
45 |
46 | struct Pimpl;
47 | private:
48 | std::unique_ptr pimpl_;
49 |
50 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainLayoutComponent)
51 | };
52 | }
53 |
--------------------------------------------------------------------------------
/Source/MidiDeviceComponent.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "SettingsManager.h"
23 | #include "Theme.h"
24 |
25 | namespace showmidi
26 | {
27 | class MidiDeviceComponent : public Component, public FileDragAndDropTarget
28 | {
29 | public:
30 | MidiDeviceComponent(SettingsManager*, const String&);
31 | MidiDeviceComponent(SettingsManager*, const MidiDeviceInfo&);
32 | ~MidiDeviceComponent() override;
33 |
34 | static int getStandardWidth();
35 | int getVisibleHeight() const;
36 |
37 | void render();
38 | void paint(Graphics&) override;
39 | void resized() override;
40 | void setPaused(bool);
41 | void resetChannelData();
42 |
43 | void handleIncomingMidiMessage(const MidiMessage&);
44 |
45 | bool isInterestedInFileDrag(const StringArray&) override;
46 | void filesDropped(const StringArray&, int, int) override;
47 |
48 | struct Pimpl;
49 | private:
50 | std::unique_ptr pimpl_;
51 |
52 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MidiDeviceComponent)
53 | };
54 | }
55 |
--------------------------------------------------------------------------------
/Source/MidiDeviceInfoComparator.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | namespace showmidi
21 | {
22 | class MidiDeviceInfoComparator
23 | {
24 | public:
25 | static int compareElements(MidiDeviceInfo& first, MidiDeviceInfo& second)
26 | {
27 | return (first.name.toLowerCase() < second.name.toLowerCase()) ? -1 : ((second.name.toLowerCase() < first.name.toLowerCase()) ? 1 : 0);
28 | }
29 | };
30 | }
31 |
--------------------------------------------------------------------------------
/Source/MidiDevicesListener.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "MidiDevicesListener.h"
19 |
20 | namespace showmidi
21 | {
22 | MidiDevicesListener::MidiDevicesListener() { }
23 | MidiDevicesListener::~MidiDevicesListener() { }
24 |
25 | void MidiDevicesListeners::broadcast()
26 | {
27 | call([] (MidiDevicesListener& l) { l.refreshMidiDevices(); });
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Source/MidiDevicesListener.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include "JuceHeader.h"
21 |
22 | namespace showmidi
23 | {
24 | class MidiDevicesListener
25 | {
26 | public:
27 | MidiDevicesListener();
28 | virtual ~MidiDevicesListener();
29 |
30 | virtual void refreshMidiDevices() = 0;
31 | };
32 |
33 | class MidiDevicesListeners : public ListenerList
34 | {
35 | public:
36 | void broadcast();
37 | };
38 | }
39 |
--------------------------------------------------------------------------------
/Source/PaintedButton.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "AboutComponent.h"
19 |
20 | #include "PaintedButton.h"
21 |
22 | namespace showmidi
23 | {
24 | PaintedButton::PaintedButton() : Button({})
25 | {
26 | }
27 |
28 | PaintedButton::PaintedButton(const String& name) : Button(name)
29 | {
30 | }
31 |
32 | void PaintedButton::paintButton(Graphics&, bool, bool)
33 | {
34 | // no-op
35 | }
36 |
37 | void PaintedButton::setBoundsForTouch(int x, int y, int w, int h)
38 | {
39 | auto bounds = Rectangle {x, y, w, h};
40 | Component::setBounds(bounds.expanded(DEFAULT_TOUCH_OUTSET));
41 | }
42 |
43 | Rectangle PaintedButton::getBoundsForDrawing()
44 | {
45 | return getBounds().reduced(DEFAULT_TOUCH_OUTSET).toFloat();
46 | }
47 |
48 | void PaintedButton::drawName(Graphics& g, Justification justificationType)
49 | {
50 | auto bounds = getBounds().reduced(DEFAULT_TOUCH_OUTSET);
51 | g.drawText(getName(),
52 | bounds.getX(), bounds.getY(),
53 | bounds.getWidth(), bounds.getHeight(),
54 | justificationType);
55 | }
56 |
57 | void PaintedButton::drawDrawable(Graphics& g, Drawable& drawable)
58 | {
59 | auto bounds = getBounds().reduced(DEFAULT_TOUCH_OUTSET);
60 | drawable.drawAt(g, (float)bounds.getX(), (float)bounds.getY(), 1.0f);
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/Source/PaintedButton.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include "JuceHeader.h"
21 |
22 | #include "Theme.h"
23 |
24 | namespace showmidi
25 | {
26 | class PaintedButton : public Button
27 | {
28 | public:
29 | PaintedButton();
30 | PaintedButton(const String&);
31 |
32 | void paintButton(Graphics&, bool, bool) override;
33 |
34 | void setBoundsForTouch(int, int, int, int);
35 | Rectangle getBoundsForDrawing();
36 |
37 | void drawName(Graphics&, Justification);
38 | void drawDrawable(Graphics&, Drawable&);
39 |
40 | private:
41 | void setBounds(Rectangle);
42 | void setBounds(int, int, int, int);
43 |
44 | static constexpr int DEFAULT_TOUCH_OUTSET { 12 };
45 |
46 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PaintedButton)
47 | };
48 | }
49 |
--------------------------------------------------------------------------------
/Source/PluginEditor.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "PluginProcessor.h"
23 |
24 | namespace showmidi
25 | {
26 | class ShowMIDIPluginAudioProcessorEditor : public AudioProcessorEditor
27 | {
28 | public:
29 | ShowMIDIPluginAudioProcessorEditor(ShowMIDIPluginAudioProcessor*);
30 | ~ShowMIDIPluginAudioProcessorEditor() override;
31 |
32 | void handleIncomingMidiMessage(const MidiMessage&);
33 |
34 | void paint(Graphics&) override;
35 | void resized() override;
36 |
37 | struct Pimpl;
38 | private:
39 | std::unique_ptr pimpl_;
40 |
41 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ShowMIDIPluginAudioProcessorEditor)
42 | };
43 | }
44 |
--------------------------------------------------------------------------------
/Source/PluginProcessor.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "PluginProcessor.h"
19 |
20 | #include "PluginEditor.h"
21 |
22 | namespace showmidi
23 | {
24 | ShowMIDIPluginAudioProcessor::ShowMIDIPluginAudioProcessor() : AudioProcessor(BusesProperties())
25 | {
26 | }
27 |
28 | ShowMIDIPluginAudioProcessor::~ShowMIDIPluginAudioProcessor()
29 | {
30 | }
31 |
32 | const String ShowMIDIPluginAudioProcessor::getName() const
33 | {
34 | return JucePlugin_Name;
35 | }
36 |
37 | bool ShowMIDIPluginAudioProcessor::acceptsMidi() const
38 | {
39 | return true;
40 | }
41 |
42 | bool ShowMIDIPluginAudioProcessor::producesMidi() const
43 | {
44 | return true;
45 | }
46 |
47 | bool ShowMIDIPluginAudioProcessor::isMidiEffect() const
48 | {
49 | return true;
50 | }
51 |
52 | double ShowMIDIPluginAudioProcessor::getTailLengthSeconds() const
53 | {
54 | return 0.0;
55 | }
56 |
57 | int ShowMIDIPluginAudioProcessor::getNumPrograms()
58 | {
59 | return 1;
60 | }
61 |
62 | int ShowMIDIPluginAudioProcessor::getCurrentProgram()
63 | {
64 | return 0;
65 | }
66 |
67 | void ShowMIDIPluginAudioProcessor::setCurrentProgram(int)
68 | {
69 | }
70 |
71 | const String ShowMIDIPluginAudioProcessor::getProgramName(int)
72 | {
73 | return {};
74 | }
75 |
76 | void ShowMIDIPluginAudioProcessor::changeProgramName(int, const String&)
77 | {
78 | }
79 |
80 | void ShowMIDIPluginAudioProcessor::prepareToPlay(double, int)
81 | {
82 | }
83 |
84 | void ShowMIDIPluginAudioProcessor::releaseResources()
85 | {
86 | }
87 |
88 | void ShowMIDIPluginAudioProcessor::processBlock(AudioBuffer&, MidiBuffer& midiMessages)
89 | {
90 | ScopedNoDenormals noDenormals;
91 |
92 | for (const MidiMessageMetadata metadata : midiMessages)
93 | {
94 | auto editor = (ShowMIDIPluginAudioProcessorEditor*)getActiveEditor();
95 | if (editor != nullptr)
96 | {
97 | editor->handleIncomingMidiMessage(metadata.getMessage());
98 | }
99 | }
100 | }
101 |
102 | bool ShowMIDIPluginAudioProcessor::hasEditor() const
103 | {
104 | return true;
105 | }
106 |
107 | AudioProcessorEditor* ShowMIDIPluginAudioProcessor::createEditor()
108 | {
109 | return new ShowMIDIPluginAudioProcessorEditor(this);
110 | }
111 |
112 | void ShowMIDIPluginAudioProcessor::getStateInformation(MemoryBlock& destData)
113 | {
114 | settings_.storeTheme();
115 |
116 | auto& state = settings_.getValueTree();
117 | if (auto xml_state = state.createXml())
118 | {
119 | copyXmlToBinary(*xml_state, destData);
120 | }
121 | }
122 |
123 | void ShowMIDIPluginAudioProcessor::setStateInformation(const void* data, int sizeInBytes)
124 | {
125 | if (auto xml_state = getXmlFromBinary(data, sizeInBytes))
126 | {
127 | auto state = ValueTree::fromXml(*xml_state);
128 | settings_.copyValueTree(state);
129 | }
130 | }
131 |
132 | PluginSettings& ShowMIDIPluginAudioProcessor::getSettings()
133 | {
134 | return settings_;
135 | }
136 | }
137 |
138 | AudioProcessor* JUCE_CALLTYPE createPluginFilter()
139 | {
140 | return new showmidi::ShowMIDIPluginAudioProcessor();
141 | }
142 |
--------------------------------------------------------------------------------
/Source/PluginProcessor.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "PluginSettings.h"
23 |
24 | namespace showmidi
25 | {
26 | class ShowMIDIPluginAudioProcessor : public AudioProcessor
27 | {
28 | public:
29 | ShowMIDIPluginAudioProcessor();
30 | ~ShowMIDIPluginAudioProcessor() override;
31 |
32 | void prepareToPlay(double sampleRate, int samplesPerBlock) override;
33 | void releaseResources() override;
34 |
35 | void processBlock(AudioBuffer&, MidiBuffer&) override;
36 |
37 | AudioProcessorEditor* createEditor() override;
38 | bool hasEditor() const override;
39 |
40 | const String getName() const override;
41 |
42 | bool acceptsMidi() const override;
43 | bool producesMidi() const override;
44 | bool isMidiEffect() const override;
45 | double getTailLengthSeconds() const override;
46 |
47 | int getNumPrograms() override;
48 | int getCurrentProgram() override;
49 | void setCurrentProgram(int index) override;
50 | const String getProgramName(int index) override;
51 | void changeProgramName(int index, const String& newName) override;
52 |
53 | void getStateInformation(MemoryBlock& destData) override;
54 | void setStateInformation(const void* data, int sizeInBytes) override;
55 |
56 | PluginSettings& getSettings();
57 |
58 | private:
59 | PluginSettings settings_;
60 |
61 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ShowMIDIPluginAudioProcessor)
62 | };
63 | }
64 |
--------------------------------------------------------------------------------
/Source/PluginSettings.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "Settings.h"
23 |
24 | namespace showmidi
25 | {
26 | class PluginSettings : public Settings
27 | {
28 | public:
29 | PluginSettings();
30 | ~PluginSettings();
31 |
32 | Visualization getVisualization();
33 | void setVisualization(Visualization);
34 |
35 | int getOctaveMiddleC();
36 | void setOctaveMiddleC(int);
37 |
38 | NoteFormat getNoteFormat();
39 | void setNoteFormat(NoteFormat);
40 |
41 | NumberFormat getNumberFormat();
42 | void setNumberFormat(NumberFormat);
43 |
44 | int getTimeoutDelay();
45 | void setTimeoutDelay(int);
46 |
47 | WindowPosition getWindowPosition();
48 | void setWindowPosition(WindowPosition);
49 |
50 | int getControlGraphHeight();
51 | void setControlGraphHeight(int);
52 |
53 | Theme& getTheme();
54 | void storeTheme();
55 |
56 | bool isMidiDeviceVisible(const String&);
57 | void setMidiDeviceVisible(const String&, bool);
58 |
59 | ValueTree& getValueTree();
60 | void copyValueTree(ValueTree&);
61 |
62 | private:
63 | ValueTree settings_ { ProjectInfo::projectName };
64 | Theme theme_;
65 |
66 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PluginSettings)
67 | };
68 | }
69 |
--------------------------------------------------------------------------------
/Source/PopupColourSelector.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "PopupColourSelector.h"
19 |
20 | namespace showmidi
21 | {
22 | PopupColourSelector::PopupColourSelector(const Value& colour) : colourValue_(colour)
23 | {
24 | addAndMakeVisible(&selector_);
25 | selector_.setName("Colour");
26 | selector_.setCurrentColour(getColour());
27 | selector_.addChangeListener(this);
28 |
29 | colourValue_.addListener(this);
30 | setSize(300, 400);
31 | }
32 |
33 | void PopupColourSelector::resized()
34 | {
35 | selector_.setBounds (getLocalBounds());
36 | }
37 |
38 | Colour PopupColourSelector::getColour() const
39 | {
40 | return Colour::fromString(colourValue_.toString());
41 | }
42 |
43 | void PopupColourSelector::setColour(const Colour &newColour)
44 | {
45 | if (getColour() != newColour)
46 | {
47 | colourValue_ = newColour.toDisplayString(true);
48 | }
49 | }
50 |
51 | void PopupColourSelector::changeListenerCallback(ChangeBroadcaster *)
52 | {
53 | if (selector_.getCurrentColour() != getColour())
54 | {
55 | setColour(selector_.getCurrentColour());
56 | }
57 | }
58 |
59 | void PopupColourSelector::valueChanged(Value &)
60 | {
61 | selector_.setCurrentColour(getColour());
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/Source/PopupColourSelector.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include "JuceHeader.h"
21 |
22 | namespace showmidi
23 | {
24 | class PopupColourSelector : public Component, public ChangeListener, public Value::Listener
25 | {
26 | public:
27 | PopupColourSelector(const Value&);
28 |
29 | void resized();
30 | Colour getColour() const;
31 | void setColour(const Colour &);
32 | void changeListenerCallback(ChangeBroadcaster*);
33 | void valueChanged(Value&);
34 |
35 | private:
36 | ColourSelector selector_;
37 | Value colourValue_;
38 | };
39 | }
40 |
--------------------------------------------------------------------------------
/Source/PortListComponent.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "SettingsManager.h"
23 |
24 | namespace showmidi
25 | {
26 | class PortListComponent : public Component
27 | {
28 | public:
29 | PortListComponent(SettingsManager*);
30 | ~PortListComponent() override;
31 |
32 | int getVisibleHeight() const;
33 |
34 | void paint(Graphics&) override;
35 |
36 | struct Pimpl;
37 | private:
38 | std::unique_ptr pimpl_;
39 |
40 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PortListComponent)
41 | };
42 | }
43 |
--------------------------------------------------------------------------------
/Source/PropertiesSettings.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "Settings.h"
23 |
24 | namespace showmidi
25 | {
26 | class PropertiesSettings : public Settings
27 | {
28 | public:
29 | static const String VISUALIZATION;
30 | static const String OCTAVE_MIDDLE_C;
31 | static const String NOTE_FORMAT;
32 | static const String NUMBER_FORMAT;
33 | static const String TIMEOUT_DELAY;
34 | static const String WINDOW_POSITION;
35 | static const String CONTROL_GRAPH_HEIGHT;
36 | static const String MIDI_DEVICE_VISIBLE_PREFIX;
37 | static const String THEME;
38 |
39 | PropertiesSettings();
40 | ~PropertiesSettings();
41 |
42 | Visualization getVisualization();
43 | void setVisualization(Visualization);
44 |
45 | int getOctaveMiddleC();
46 | void setOctaveMiddleC(int);
47 |
48 | NoteFormat getNoteFormat();
49 | void setNoteFormat(NoteFormat);
50 |
51 | NumberFormat getNumberFormat();
52 | void setNumberFormat(NumberFormat);
53 |
54 | int getTimeoutDelay();
55 | void setTimeoutDelay(int);
56 |
57 | WindowPosition getWindowPosition();
58 | void setWindowPosition(WindowPosition);
59 |
60 | int getControlGraphHeight();
61 | void setControlGraphHeight(int);
62 |
63 | Theme& getTheme();
64 | void storeTheme();
65 |
66 | bool isMidiDeviceVisible(const String&);
67 | void setMidiDeviceVisible(const String&, bool);
68 |
69 | void flush();
70 |
71 | private:
72 | std::unique_ptr propertyFile_;
73 |
74 | PropertiesFile& getGlobalProperties();
75 | void updateGlobalProps();
76 | void reload();
77 |
78 | Theme theme_;
79 |
80 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PropertiesSettings)
81 | };
82 | }
83 |
--------------------------------------------------------------------------------
/Source/Settings.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "Theme.h"
23 |
24 | namespace showmidi
25 | {
26 | enum Visualization
27 | {
28 | visualizationBar = 1,
29 | visualizationGraph
30 | };
31 |
32 | enum NoteFormat
33 | {
34 | formatName = 1,
35 | formatNumber
36 | };
37 |
38 | enum NumberFormat
39 | {
40 | formatDecimal = 1,
41 | formatHexadecimal
42 | };
43 |
44 | enum WindowPosition
45 | {
46 | windowRegular = 1,
47 | windowAlwaysOnTop
48 | };
49 |
50 | class Settings
51 | {
52 | public:
53 | static constexpr Visualization DEFAULT_VISUALIZATION { visualizationBar };
54 | static constexpr int DEFAULT_OCTAVE_MIDDLE_C { 3 };
55 | static constexpr NoteFormat DEFAULT_NOTE_FORMAT { formatName };
56 | static constexpr NumberFormat DEFAULT_NUMBER_FORMAT { formatDecimal };
57 | static constexpr int DEFAULT_TIMEOUT_DELAY { 2 };
58 | static constexpr int DEFAULT_CONTROL_GRAPH_HEIGHT { 1 };
59 | static constexpr WindowPosition DEFAULT_WINDOW_POSITION { windowRegular };
60 |
61 | Settings() {};
62 | virtual ~Settings() {};
63 |
64 | virtual Visualization getVisualization() = 0;
65 | virtual void setVisualization(Visualization) = 0;
66 |
67 | virtual int getOctaveMiddleC() = 0;
68 | virtual void setOctaveMiddleC(int) = 0;
69 |
70 | virtual NoteFormat getNoteFormat() = 0;
71 | virtual void setNoteFormat(NoteFormat) = 0;
72 |
73 | virtual NumberFormat getNumberFormat() = 0;
74 | virtual void setNumberFormat(NumberFormat) = 0;
75 |
76 | virtual int getTimeoutDelay() = 0;
77 | virtual void setTimeoutDelay(int) = 0;
78 |
79 | virtual WindowPosition getWindowPosition() = 0;
80 | virtual void setWindowPosition(WindowPosition) = 0;
81 |
82 | virtual int getControlGraphHeight() = 0;
83 | virtual void setControlGraphHeight(int) = 0;
84 |
85 | virtual Theme& getTheme() = 0;
86 | virtual void storeTheme() = 0;
87 |
88 | virtual bool isMidiDeviceVisible(const String&) = 0;
89 | virtual void setMidiDeviceVisible(const String&, bool) = 0;
90 | };
91 | }
92 |
--------------------------------------------------------------------------------
/Source/SettingsComponent.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include "JuceHeader.h"
21 |
22 | #include "SettingsManager.h"
23 |
24 | namespace showmidi
25 | {
26 | class SettingsComponent : public Component
27 | {
28 | public:
29 | SettingsComponent(SettingsManager*);
30 | ~SettingsComponent();
31 |
32 | void paint(Graphics&) override;
33 | void resized() override;
34 |
35 | void updateDimensions();
36 |
37 | struct Pimpl;
38 | private:
39 | std::unique_ptr pimpl_;
40 |
41 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsComponent)
42 | };
43 | }
44 |
--------------------------------------------------------------------------------
/Source/SettingsManager.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "MidiDevicesListener.h"
23 | #include "Settings.h"
24 |
25 | namespace showmidi
26 | {
27 | class SettingsManager
28 | {
29 | public:
30 | virtual ~SettingsManager() {};
31 |
32 | virtual bool isPlugin() = 0;
33 | virtual Component* getTopLevelComponent() = 0;
34 |
35 | virtual Settings& getSettings() = 0;
36 | virtual void applySettings() = 0;
37 | virtual void storeSettings() = 0;
38 |
39 | virtual MidiDevicesListeners& getMidiDevicesListeners() = 0;
40 | };
41 | }
42 |
--------------------------------------------------------------------------------
/Source/ShowMidiApplication.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "ShowMidiApplication.h"
19 |
20 | #include "StandaloneWindow.h"
21 |
22 | namespace showmidi
23 | {
24 | struct ShowMidiApplication::Pimpl : public Timer
25 | {
26 | Pimpl()
27 | {
28 | // poll for MIDI devices refresh
29 | startTimerHz(5);
30 | }
31 |
32 | ~Pimpl()
33 | {
34 | stopTimer();
35 | }
36 |
37 | void timerCallback()
38 | {
39 | midiDevicesListeners_.broadcast();
40 | }
41 |
42 | void setWindowTitle(const String& title)
43 | {
44 | if (mainWindow_ != nullptr)
45 | {
46 | mainWindow_->setName(title);
47 | }
48 | }
49 |
50 | void setWindowWidthForMainLayout(int width)
51 | {
52 | if (mainWindow_ != nullptr)
53 | {
54 | #if JUCE_IOS
55 | mainWindow_->updatePosition();
56 | #else
57 | width += mainWindow_->getSidebarWidth();
58 | mainWindow_->setSize(width, mainWindow_->getHeight());
59 | #endif
60 | }
61 | }
62 |
63 | void storeSettings()
64 | {
65 | settings_.storeTheme();
66 | settings_.flush();
67 |
68 | mainWindow_->repaint();
69 | }
70 |
71 | UwynLookAndFeel lookAndFeel_;
72 | std::unique_ptr mainWindow_;
73 | PropertiesSettings settings_;
74 | MidiDevicesListeners midiDevicesListeners_;
75 |
76 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Pimpl)
77 | };
78 |
79 | const String ShowMidiApplication::getApplicationName()
80 | {
81 | return ProjectInfo::projectName;
82 | }
83 |
84 | const String ShowMidiApplication::getApplicationVersion()
85 | {
86 | return ProjectInfo::versionString;
87 | }
88 |
89 | bool ShowMidiApplication::moreThanOneInstanceAllowed()
90 | {
91 | return true;
92 | }
93 |
94 | UwynLookAndFeel& ShowMidiApplication::getLookAndFeel()
95 | {
96 | return pimpl_->lookAndFeel_;
97 | }
98 |
99 | void ShowMidiApplication::initialise(const String&)
100 | {
101 | pimpl_->mainWindow_.reset(new StandaloneWindow(getApplicationName()));
102 |
103 | applySettings();
104 | }
105 |
106 | void ShowMidiApplication::shutdown()
107 | {
108 | pimpl_->mainWindow_ = nullptr;
109 | }
110 |
111 | void ShowMidiApplication::systemRequestedQuit()
112 | {
113 | quit();
114 | }
115 |
116 | void ShowMidiApplication::anotherInstanceStarted(const String&)
117 | {
118 | }
119 |
120 | bool ShowMidiApplication::isPlugin()
121 | {
122 | return false;
123 | }
124 |
125 | Component* ShowMidiApplication::getTopLevelComponent()
126 | {
127 | return nullptr;
128 | }
129 |
130 | Settings& ShowMidiApplication::getSettings()
131 | {
132 | return pimpl_->settings_;
133 | }
134 |
135 | void ShowMidiApplication::applySettings()
136 | {
137 | pimpl_->mainWindow_->setAlwaysOnTop(pimpl_->settings_.getWindowPosition() == WindowPosition::windowAlwaysOnTop);
138 | pimpl_->mainWindow_->repaint();
139 | }
140 |
141 | MidiDevicesListeners& ShowMidiApplication::getMidiDevicesListeners()
142 | {
143 | return pimpl_->midiDevicesListeners_;
144 | }
145 |
146 | ShowMidiApplication::ShowMidiApplication() : pimpl_(new Pimpl())
147 | {
148 | Desktop::getInstance().setDefaultLookAndFeel(&pimpl_->lookAndFeel_);
149 | }
150 |
151 | void ShowMidiApplication::setWindowTitle(const String& title) { pimpl_->setWindowTitle(title); }
152 | void ShowMidiApplication::setWindowWidthForMainLayout(int width) { pimpl_->setWindowWidthForMainLayout(width); }
153 | void ShowMidiApplication::storeSettings() { pimpl_->storeSettings(); }
154 | }
155 |
--------------------------------------------------------------------------------
/Source/ShowMidiApplication.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "MidiDevicesListener.h"
23 | #include "PropertiesSettings.h"
24 | #include "SettingsManager.h"
25 | #include "UwynLookAndFeel.h"
26 |
27 | #define SMApp ShowMidiApplication::getInstance()
28 |
29 | namespace showmidi
30 | {
31 | class StandaloneWindow;
32 |
33 | class ShowMidiApplication : public JUCEApplication, public SettingsManager
34 | {
35 | public:
36 | ShowMidiApplication();
37 |
38 | inline static bool hasInstance()
39 | {
40 | return JUCEApplication::getInstance() != nullptr;
41 | }
42 |
43 | inline static ShowMidiApplication& getInstance()
44 | {
45 | ShowMidiApplication* const app = dynamic_cast(JUCEApplication::getInstance());
46 | jassert (app != nullptr);
47 | return *app;
48 | }
49 |
50 | const String getApplicationName() override;
51 | const String getApplicationVersion() override;
52 | bool moreThanOneInstanceAllowed() override;
53 | UwynLookAndFeel& getLookAndFeel();
54 |
55 | void initialise(const String& commandLine) override;
56 | void shutdown() override;
57 | void systemRequestedQuit() override;
58 | void anotherInstanceStarted(const String& commandLine) override;
59 |
60 | void setWindowTitle(const String&);
61 | void setWindowWidthForMainLayout(int);
62 |
63 | bool isPlugin() override;
64 | Component* getTopLevelComponent() override;
65 | Settings& getSettings() override;
66 | void applySettings() override;
67 | void storeSettings() override;
68 |
69 | MidiDevicesListeners& getMidiDevicesListeners() override;
70 |
71 | struct Pimpl;
72 | private:
73 | std::unique_ptr pimpl_;
74 | };
75 | }
76 |
--------------------------------------------------------------------------------
/Source/SidebarComponent.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "DeviceManager.h"
23 | #include "SettingsManager.h"
24 |
25 | namespace showmidi
26 | {
27 | enum SidebarType
28 | {
29 | sidebarExpandable = 1,
30 | sidebarFixed
31 | };
32 |
33 | class SidebarListener
34 | {
35 | public:
36 | SidebarListener();
37 | virtual ~SidebarListener();
38 |
39 | virtual void sidebarChangedWidth() = 0;
40 | };
41 |
42 | class SidebarComponent : public Component
43 | {
44 | public:
45 | static constexpr int X_COLLAPSED = 14;
46 | static constexpr int Y_COLLAPSED = 13;
47 |
48 | static constexpr int X_EXPANDED = 12;
49 | static constexpr int Y_EXPANDED = 13;
50 |
51 | static constexpr int X_SETTINGS = 11;
52 | static constexpr int Y_SETTINGS = 11;
53 |
54 | static constexpr int X_PLAY_COLLAPSED = 12;
55 | static constexpr int Y_PLAY_COLLAPSED = 44;
56 |
57 | static constexpr int X_PLAY_EXPANDED = 40;
58 | static constexpr int Y_PLAY_EXPANDED = 11;
59 |
60 | static constexpr int X_VISUALIZATION_COLLAPSED = 12;
61 | static constexpr int Y_VISUALIZATION_COLLAPSED = 78;
62 |
63 | static constexpr int X_VISUALIZATION_EXPANDED = 68;
64 | static constexpr int Y_VISUALIZATION_EXPANDED = 11;
65 |
66 | static constexpr int X_RESET_COLLAPSED = 11;
67 | static constexpr int Y_RESET_COLLAPSED = 46;
68 |
69 | static constexpr int X_RESET_EXPANDED = 39;
70 | static constexpr int Y_RESET_EXPANDED = 11;
71 |
72 | static constexpr int X_HELP = 11;
73 | static constexpr int Y_HELP = 12;
74 |
75 | SidebarComponent(SettingsManager*, DeviceManager*, SidebarType, SidebarListener*);
76 | ~SidebarComponent() override;
77 |
78 | void setup();
79 |
80 | void paint(Graphics&) override;
81 |
82 | void resized() override;
83 |
84 | int getActiveWidth();
85 |
86 | void updateSettings();
87 |
88 | struct Pimpl;
89 | private:
90 | std::unique_ptr pimpl_;
91 |
92 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SidebarComponent)
93 | };
94 | }
95 |
--------------------------------------------------------------------------------
/Source/StandaloneDevicesComponent.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | #include "DeviceManager.h"
23 | #include "Theme.h"
24 |
25 | namespace showmidi
26 | {
27 | class StandaloneDevicesComponent : public Component, public DeviceManager
28 | {
29 | public:
30 | StandaloneDevicesComponent();
31 | ~StandaloneDevicesComponent() override;
32 |
33 | void paint(Graphics&) override;
34 |
35 | bool isPaused() override;
36 | void togglePaused() override;
37 | DeviceListeners& getDeviceListeners() override;
38 | void resetChannelData() override;
39 |
40 | struct Pimpl;
41 | private:
42 | std::unique_ptr pimpl_;
43 |
44 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (StandaloneDevicesComponent)
45 | };
46 | }
47 |
--------------------------------------------------------------------------------
/Source/StandaloneWindow.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "StandaloneWindow.h"
19 |
20 | #include "StandaloneDevicesComponent.h"
21 | #include "StandaloneDevicesComponent.h"
22 | #include "MainLayoutComponent.h"
23 | #include "MidiDeviceComponent.h"
24 | #include "SidebarComponent.h"
25 | #include "ShowMidiApplication.h"
26 |
27 | namespace showmidi
28 | {
29 | struct StandaloneWindow::Pimpl
30 | {
31 | Pimpl(StandaloneWindow* owner) : owner_(owner)
32 | {
33 | main_ = std::make_unique();
34 | layout_ = std::make_unique(&SMApp, main_.get(), MainLayoutType::layoutStandalone, main_.get());
35 | owner_->setUsingNativeTitleBar(true);
36 |
37 | owner_->setContentNonOwned(layout_.get(), true);
38 | #if JUCE_IOS
39 | owner_->setFullScreen(true);
40 | #else
41 | owner_->setResizable(true, true);
42 | owner_->centreWithSize(owner_->getWidth(), owner_->getHeight());
43 | #endif
44 | }
45 |
46 | ~Pimpl()
47 | {
48 | owner_->clearContentComponent();
49 | }
50 |
51 | void closeButtonPressed()
52 | {
53 | JUCEApplication::getInstance()->systemRequestedQuit();
54 | }
55 |
56 | StandaloneWindow* const owner_;
57 | std::unique_ptr main_;
58 | std::unique_ptr layout_;
59 |
60 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Pimpl)
61 | };
62 |
63 | StandaloneWindow::StandaloneWindow(String name) :
64 | DocumentWindow(name, SMApp.getSettings().getTheme().colorBackground, DocumentWindow::allButtons),
65 | pimpl_(new Pimpl(this))
66 | {
67 | updatePosition();
68 | setVisible(true);
69 | }
70 |
71 | StandaloneWindow::~StandaloneWindow() = default;
72 |
73 | void StandaloneWindow::updatePosition()
74 | {
75 | #if JUCE_IOS
76 | auto display = Desktop::getInstance().getDisplays().getPrimaryDisplay();
77 | auto& user_area = display->userArea;
78 | auto& safe_insets = display->safeAreaInsets;
79 | setBounds(user_area.getX() + safe_insets.getLeft(), user_area.getY() + safe_insets.getTop(),
80 | user_area.getWidth() - safe_insets.getLeftAndRight(), user_area.getHeight() - safe_insets.getTopAndBottom());
81 | if (pimpl_.get() && isVisible())
82 | {
83 | pimpl_->layout_->setBounds(0, 0, getWidth(), getHeight());
84 | pimpl_->layout_->resized();
85 | }
86 | #endif
87 | }
88 |
89 | void StandaloneWindow::moved()
90 | {
91 | DocumentWindow::moved();
92 |
93 | updatePosition();
94 | };
95 |
96 | void StandaloneWindow::resized()
97 | {
98 | DocumentWindow::resized();
99 |
100 | if (pimpl_.get() && isVisible())
101 | {
102 | pimpl_->layout_->setBounds(0, 0, getWidth(), getHeight());
103 | }
104 | };
105 |
106 | void StandaloneWindow::closeButtonPressed() { pimpl_->closeButtonPressed(); }
107 | int StandaloneWindow::getSidebarWidth() { return pimpl_->layout_->getSidebarWidth(); }
108 | }
109 |
--------------------------------------------------------------------------------
/Source/StandaloneWindow.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | namespace showmidi
23 | {
24 | class StandaloneWindow : public DocumentWindow
25 | {
26 | public:
27 | StandaloneWindow(String name);
28 | ~StandaloneWindow();
29 |
30 | void updatePosition();
31 | void moved() override;
32 | void resized() override;
33 | void closeButtonPressed() override;
34 |
35 | int getSidebarWidth();
36 |
37 | struct Pimpl;
38 | private:
39 | std::unique_ptr pimpl_;
40 |
41 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (StandaloneWindow)
42 | };
43 | }
44 |
--------------------------------------------------------------------------------
/Source/Theme.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | namespace showmidi
23 | {
24 | struct Theme
25 | {
26 | static constexpr int MIDI_DEVICE_SPACING = 2;
27 | static constexpr int SCROLLBAR_THICKNESS = 8;
28 |
29 | static Theme getDefault();
30 |
31 | int lineHeight();
32 | int linePosition(float);
33 | int getSidebarExpandedWidth();
34 |
35 | Font fontLabel();
36 | int labelHeight();
37 | Font fontData();
38 | int dataHeight();
39 |
40 | String generateXml();
41 | void parseXml(const String&);
42 |
43 | void randomize();
44 | void reset();
45 |
46 | static String convertSvgColor(const String&);
47 |
48 | Colour colorBackground;
49 | Colour colorSidebar;
50 | Colour colorSeperator;
51 | Colour colorTrack;
52 | Colour colorLabel;
53 | Colour colorData;
54 | Colour colorPositive;
55 | Colour colorNegative;
56 | Colour colorController;
57 | };
58 |
59 | static const Theme THEME_DARK =
60 | {
61 | Colour(0xFF29272B), // colorBackground
62 | Colour(0xFF201E21), // colorSidebar
63 | Colour(0xFF66606B), // colorSeperator
64 | Colour(0xFF201E21), // colorTrack
65 | Colour(0xFF66606B), // colorLabel
66 | Colour(0xFFFFFFFF), // colorData
67 | Colour(0xFF66ADF3), // colorPositive
68 | Colour(0xFFD8414E), // colorNegative
69 | Colour(0xFFFFAB2B) // colorController
70 | };
71 |
72 | static const Theme THEME_LIGHT =
73 | {
74 | Colour(0xFFF2F2F2), // colorBackground
75 | Colour(0xFFFFFFFF), // colorSidebar
76 | Colour(0xFFA0A0A0), // colorSeperator
77 | Colour(0xFFFFFFFF), // colorTrack
78 | Colour(0xFFA0A0A0), // colorLabel
79 | Colour(0xFF222222), // colorData
80 | Colour(0xFF66ADF3), // colorPositive
81 | Colour(0xFFD8414E), // colorNegative
82 | Colour(0xFFFFAB2B) // colorController
83 | };
84 | }
85 |
--------------------------------------------------------------------------------
/Source/UwynLookAndFeel.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #include "UwynLookAndFeel.h"
19 |
20 | using namespace showmidi;
21 |
22 | struct UwynLookAndFeel::Pimpl
23 | {
24 | Pimpl() :
25 | jetbrainMono_(Typeface::createSystemTypefaceFor(BinaryData::JetBrainsMonoRegular_ttf, BinaryData::JetBrainsMonoRegular_ttfSize)),
26 | jetbrainMonoItalic_(Typeface::createSystemTypefaceFor(BinaryData::JetBrainsMonoItalic_ttf, BinaryData::JetBrainsMonoItalic_ttfSize)),
27 | jetbrainMonoSemiBold_(Typeface::createSystemTypefaceFor(BinaryData::JetBrainsMonoSemiBold_ttf, BinaryData::JetBrainsMonoSemiBold_ttfSize)),
28 | jetbrainMonoSemiBoldItalic_(Typeface::createSystemTypefaceFor(BinaryData::JetBrainsMonoSemiBoldItalic_ttf, BinaryData::JetBrainsMonoSemiBoldItalic_ttfSize))
29 | {
30 | }
31 |
32 | Typeface::Ptr getTypefaceForFont(const Font& font)
33 | {
34 | bool bold = font.getTypefaceStyle().toLowerCase().contains("bold") || font.isBold();
35 | bool italic = font.getTypefaceStyle().toLowerCase().contains("italic") || font.isItalic();
36 | if (bold)
37 | {
38 | if (italic)
39 | {
40 | return jetbrainMonoSemiBoldItalic_;
41 | }
42 | else
43 | {
44 | return jetbrainMonoSemiBold_;
45 | }
46 | }
47 |
48 | if (italic)
49 | {
50 | return jetbrainMonoItalic_;
51 | }
52 | else
53 | {
54 | return jetbrainMono_;
55 | }
56 | }
57 |
58 | Typeface::Ptr jetbrainMono_;
59 | Typeface::Ptr jetbrainMonoItalic_;
60 | Typeface::Ptr jetbrainMonoSemiBold_;
61 | Typeface::Ptr jetbrainMonoSemiBoldItalic_;
62 | };
63 |
64 | UwynLookAndFeel::UwynLookAndFeel() : pimpl_(new Pimpl())
65 | {
66 | setColourScheme(getDarkColourScheme());
67 |
68 | setColour(TextEditor::focusedOutlineColourId, Colour(0x00000000));
69 | setColour(TextEditor::outlineColourId, Colour(0x00000000));
70 | setColour(ComboBox::outlineColourId, Colour(0x00000000));
71 | setColour(ComboBox::buttonColourId, Colour(0xff2e2e2e));
72 | setColour(TextButton::buttonColourId, Colour(0xff2e2e2e));
73 | setColour(ScrollBar::thumbColourId, Colour(0xff999999));
74 | setColour(ScrollBar::trackColourId, Colour(0xff666666));
75 | setColour(AlertWindow::backgroundColourId, Colour(0xff1e1e1e));
76 | setColour(AlertWindow::outlineColourId, Colour(0xff2e2e2e));
77 | }
78 |
79 | UwynLookAndFeel::~UwynLookAndFeel() = default;
80 |
81 | Typeface::Ptr UwynLookAndFeel::getTypefaceForFont(const Font& font)
82 | {
83 | Typeface::Ptr r = pimpl_->getTypefaceForFont(font);
84 | if (r)
85 | {
86 | return r;
87 | }
88 | return LookAndFeel::getTypefaceForFont(font);
89 | }
90 |
91 | LookAndFeel_V4::ColourScheme UwynLookAndFeel::getDarkColourScheme()
92 | {
93 | return {
94 | 0xff1e1e1e, 0xff323232, 0xff1e1e1e,
95 | 0xff989898, 0xffffffff, 0xffa2a2a2,
96 | 0xffffffff, 0xff4f4f4f, 0xffffffff };
97 | }
98 |
--------------------------------------------------------------------------------
/Source/UwynLookAndFeel.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of ShowMIDI.
3 | * Copyright (command) 2023 Uwyn LLC. https://www.uwyn.com
4 | *
5 | * ShowMIDI is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * ShowMIDI is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 | #pragma once
19 |
20 | #include
21 |
22 | namespace showmidi
23 | {
24 | class UwynLookAndFeel : public LookAndFeel_V4
25 | {
26 | public:
27 | UwynLookAndFeel();
28 | virtual ~UwynLookAndFeel();
29 |
30 | Typeface::Ptr getTypefaceForFont(const Font& font) override;
31 |
32 | LookAndFeel_V4::ColourScheme getDarkColourScheme();
33 |
34 | struct Pimpl;
35 | private:
36 | std::unique_ptr pimpl_;
37 |
38 | UwynLookAndFeel(const UwynLookAndFeel &);
39 | const UwynLookAndFeel& operator= (const UwynLookAndFeel &);
40 | };
41 | }
42 |
--------------------------------------------------------------------------------
/Themes/bstation.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Themes/classic light.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Themes/darcula.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Themes/dark.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Themes/disco.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Themes/light.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Themes/mouha.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/vst2_readme.txt:
--------------------------------------------------------------------------------
1 | Put the vst2 SDK in this folder and name it:
2 | vst2
3 |
--------------------------------------------------------------------------------