├── .clang-format ├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── CPackLists.txt ├── DEVELOPER-NOTES.md ├── JUCE-targets.cmake ├── LICENSE ├── README.md ├── appveyor.yml ├── cmake ├── ADLMIDI.cmake ├── ConfigureFile.cmake ├── GNUWarnings.cmake ├── JUCE.cmake ├── LinkHelpers.cmake ├── PrecompiledHeader.cmake └── SystemOption.cmake ├── docs ├── manual │ ├── LICENSE │ ├── LICENSE.CC-BY-SA-4.0 │ ├── LICENSE.LAL-1.3 │ ├── Makefile │ ├── en │ │ ├── Makefile │ │ ├── manual.html │ │ └── manual.txt │ ├── fr │ │ ├── Makefile │ │ ├── manual.html │ │ └── manual.txt │ └── resources │ │ ├── adsr.svg │ │ ├── algo2op.png │ │ ├── algo4op.png │ │ ├── algorithm.png │ │ ├── arpeggio-no.opus │ │ ├── arpeggio-yes.opus │ │ ├── chip.png │ │ ├── emoji_u1f4a1.png │ │ ├── emoji_u1f4c2.png │ │ ├── emulators.png │ │ ├── global.png │ │ ├── misc.png │ │ ├── operator.png │ │ ├── screen.png │ │ ├── tuning.png │ │ └── voices4op.png └── screen.png ├── project ├── adl │ ├── ADLplug.jucer │ ├── JuceLibraryCode │ │ ├── AppConfig.h │ │ ├── JuceHeader.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_AU.r │ │ ├── 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_RTAS.r │ │ ├── include_juce_audio_plugin_client_RTAS_1.cpp │ │ ├── include_juce_audio_plugin_client_RTAS_2.cpp │ │ ├── include_juce_audio_plugin_client_RTAS_3.cpp │ │ ├── include_juce_audio_plugin_client_RTAS_4.cpp │ │ ├── include_juce_audio_plugin_client_RTAS_utils.cpp │ │ ├── include_juce_audio_plugin_client_RTAS_utils.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_VST3.cpp │ │ ├── include_juce_audio_plugin_client_VST_utils.mm │ │ ├── include_juce_audio_plugin_client_utils.cpp │ │ ├── include_juce_audio_processors.cpp │ │ ├── include_juce_audio_processors.mm │ │ ├── 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 │ └── juce │ │ └── Builds │ │ ├── LinuxMakefile │ │ └── Makefile │ │ ├── MacOSX │ │ ├── ADLplug.entitlements │ │ ├── ADLplug.xcodeproj │ │ │ └── project.pbxproj │ │ ├── Info-AAX.plist │ │ ├── Info-AU.plist │ │ ├── Info-AUv3_AppExtension.plist │ │ ├── Info-RTAS.plist │ │ ├── Info-Standalone_Plugin.plist │ │ ├── Info-VST.plist │ │ ├── Info-VST3.plist │ │ └── RecentFilesMenuTemplate.nib │ │ └── VisualStudio2017 │ │ ├── ADLplug.sln │ │ ├── ADLplug_AAX.vcxproj │ │ ├── ADLplug_AAX.vcxproj.filters │ │ ├── ADLplug_RTAS.vcxproj │ │ ├── ADLplug_RTAS.vcxproj.filters │ │ ├── ADLplug_SharedCode.vcxproj │ │ ├── ADLplug_SharedCode.vcxproj.filters │ │ ├── ADLplug_StandalonePlugin.vcxproj │ │ ├── ADLplug_StandalonePlugin.vcxproj.filters │ │ ├── ADLplug_VST.vcxproj │ │ ├── ADLplug_VST.vcxproj.filters │ │ ├── ADLplug_VST3.vcxproj │ │ ├── ADLplug_VST3.vcxproj.filters │ │ └── resources.rc └── opn │ ├── JuceLibraryCode │ ├── AppConfig.h │ ├── JuceHeader.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_AU.r │ ├── 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_RTAS.r │ ├── include_juce_audio_plugin_client_RTAS_1.cpp │ ├── include_juce_audio_plugin_client_RTAS_2.cpp │ ├── include_juce_audio_plugin_client_RTAS_3.cpp │ ├── include_juce_audio_plugin_client_RTAS_4.cpp │ ├── include_juce_audio_plugin_client_RTAS_utils.cpp │ ├── include_juce_audio_plugin_client_RTAS_utils.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_VST3.cpp │ ├── include_juce_audio_plugin_client_VST_utils.mm │ ├── include_juce_audio_plugin_client_utils.cpp │ ├── include_juce_audio_processors.cpp │ ├── include_juce_audio_processors.mm │ ├── 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 │ ├── OPNplug.jucer │ └── juce │ └── Builds │ ├── LinuxMakefile │ └── Makefile │ ├── MacOSX │ ├── Info-AAX.plist │ ├── Info-AU.plist │ ├── Info-AUv3_AppExtension.plist │ ├── Info-RTAS.plist │ ├── Info-Standalone_Plugin.plist │ ├── Info-VST.plist │ ├── Info-VST3.plist │ ├── OPNplug.entitlements │ ├── OPNplug.xcodeproj │ │ └── project.pbxproj │ └── RecentFilesMenuTemplate.nib │ └── VisualStudio2017 │ ├── OPNplug.sln │ ├── OPNplug_AAX.vcxproj │ ├── OPNplug_AAX.vcxproj.filters │ ├── OPNplug_RTAS.vcxproj │ ├── OPNplug_RTAS.vcxproj.filters │ ├── OPNplug_SharedCode.vcxproj │ ├── OPNplug_SharedCode.vcxproj.filters │ ├── OPNplug_StandalonePlugin.vcxproj │ ├── OPNplug_StandalonePlugin.vcxproj.filters │ ├── OPNplug_VST.vcxproj │ ├── OPNplug_VST.vcxproj.filters │ ├── OPNplug_VST3.vcxproj │ ├── OPNplug_VST3.vcxproj.filters │ └── resources.rc ├── resources ├── application │ ├── ADLplug-32.png │ ├── ADLplug-96.png │ ├── ADLplug.desktop │ ├── ADLplug.icns │ ├── ADLplug.ico │ ├── ADLplug.png │ ├── ADLplug.rc │ ├── OPNplug-32.png │ ├── OPNplug-96.png │ ├── OPNplug.desktop │ ├── OPNplug.icns │ ├── OPNplug.ico │ ├── OPNplug.png │ └── OPNplug.rc ├── au │ ├── ADLplug-1.0.0.rsrc │ └── OPNplug-1.0.0.rsrc ├── configuration │ ├── ADLplug.ini │ └── OPNplug.ini ├── lv2 │ ├── ADLplug.lv2 │ │ ├── ADLplug.ttl │ │ └── manifest.ttl.in │ ├── OPNplug.lv2 │ │ ├── OPNplug.ttl │ │ └── manifest.ttl.in │ └── README ├── opl3 │ └── banks.pak ├── opn2 │ └── banks.pak ├── patch │ ├── juce-enable-mingw-directwrite.patch │ ├── juce-enable-mingw-vst3.patch │ ├── juce-gcc9.patch │ ├── juce-mingw-missing-api.patch │ ├── juce-mingw-vst-main.patch │ ├── juce-pthread-priority.patch │ ├── juce-win32-lmms-workaround.patch │ └── juce-x11-badwindow.patch ├── resources.yml └── ui │ ├── adl.png │ ├── adl.svg │ ├── adlmidi.png │ ├── adlmidi.svg │ ├── cores │ ├── Cafe.png │ ├── DOSBox.png │ ├── Gens.png │ ├── MAME.png │ ├── Neko.png │ ├── Nuked.png │ ├── Nuked.svg │ ├── Nuked2.png │ ├── Nuked2.svg │ └── Rad.png │ ├── fonts │ ├── Mono-Bold.ttf.gz │ ├── Mono-BoldItalic.ttf.gz │ ├── Mono-Italic.ttf.gz │ ├── Mono-Regular.ttf.gz │ ├── Sans-Bold.ttf.gz │ ├── Sans-BoldItalic.ttf.gz │ ├── Sans-Italic.ttf.gz │ ├── Sans-Regular.ttf.gz │ ├── Serif-Bold.ttf.gz │ ├── Serif-BoldItalic.ttf.gz │ ├── Serif-Italic.ttf.gz │ └── Serif-Regular.ttf.gz │ ├── knob-skin.knob │ ├── knob-skin.png │ ├── noto-emoji │ ├── LICENSE │ ├── emoji_u1f4a1.png │ ├── emoji_u1f4be.png │ ├── emoji_u1f4c2.png │ ├── emoji_u1f4dd.png │ ├── emoji_u2328.png │ └── emoji_u2795.png │ ├── opn.png │ ├── opn.svg │ ├── opnmidi.png │ ├── opnmidi.svg │ ├── slider-skin.knob │ └── slider-skin.png ├── scripts └── run-lv2.sh ├── sources ├── adl │ ├── chip_settings.h │ ├── instrument.h │ ├── measurer.h │ ├── player.h │ └── wopx_file.h ├── bank_manager.cc ├── bank_manager.h ├── configuration.cc ├── configuration.h ├── definitions.h ├── dsp │ ├── dc_filter.h │ └── vu_monitor.h ├── jack_main.cc ├── jack_main.h ├── link │ ├── LV2.def │ ├── VST2-32.def │ ├── VST2-64.def │ └── VST3.def ├── messages.cc ├── messages.h ├── midi │ ├── insnames.cc │ └── insnames.h ├── nothing.cc ├── opl3 │ ├── adl │ │ ├── chip_settings.cc │ │ ├── chip_settings.h │ │ ├── instrument.cc │ │ ├── instrument.h │ │ ├── instrument_properties.cc │ │ ├── measurer │ │ │ ├── chips │ │ │ │ ├── dosbox │ │ │ │ │ ├── dbopl.cpp │ │ │ │ │ └── dbopl.h │ │ │ │ ├── dosbox_opl3.cpp │ │ │ │ ├── dosbox_opl3.h │ │ │ │ ├── opl_chip_base.h │ │ │ │ └── opl_chip_base.tcc │ │ │ ├── measurer.cpp │ │ │ └── measurer.h │ │ ├── player.cc │ │ └── player.h │ ├── parameter_block.cc │ ├── parameter_block.h │ └── ui │ │ ├── about_component.cc │ │ ├── about_component.h │ │ ├── components │ │ ├── algorithm_help.cc │ │ ├── algorithm_help.h │ │ ├── algorithms.h │ │ ├── opl3_waves.cc │ │ └── opl3_waves.h │ │ ├── main_component.cc │ │ ├── main_component.h │ │ ├── operator_editor.cc │ │ └── operator_editor.h ├── opn2 │ ├── adl │ │ ├── chip_settings.cc │ │ ├── chip_settings.h │ │ ├── instrument.cc │ │ ├── instrument.h │ │ ├── instrument_properties.cc │ │ ├── measurer │ │ │ ├── chips │ │ │ │ ├── mame │ │ │ │ │ ├── mame_ym2612fm.cpp │ │ │ │ │ ├── mame_ym2612fm.h │ │ │ │ │ └── mamedef.h │ │ │ │ ├── mame_opn2.cpp │ │ │ │ ├── mame_opn2.h │ │ │ │ ├── opn_chip_base.h │ │ │ │ └── opn_chip_base.tcc │ │ │ ├── measurer.cpp │ │ │ └── measurer.h │ │ ├── player.cc │ │ └── player.h │ ├── parameter_block.cc │ ├── parameter_block.h │ └── ui │ │ ├── about_component.cc │ │ ├── about_component.h │ │ ├── components │ │ ├── algorithm_help.cc │ │ ├── algorithm_help.h │ │ ├── algorithms.h │ │ ├── ssgeg_waves.cc │ │ └── ssgeg_waves.h │ │ ├── main_component.cc │ │ ├── main_component.h │ │ ├── operator_editor.cc │ │ └── operator_editor.h ├── parameter_block.h ├── parameter_block.tcc ├── pch │ ├── ADLplug_core.cc │ └── ADLplug_core.h ├── plugin_editor.cc ├── plugin_editor.h ├── plugin_processor.cc ├── plugin_processor.h ├── plugin_state.cc ├── plugin_state.h ├── plugin_version.h ├── resources.cc ├── resources.h ├── ui │ ├── components │ │ ├── algorithm_component.cc │ │ ├── algorithm_component.h │ │ ├── indicator_NxM.cc │ │ ├── indicator_NxM.h │ │ ├── info_display.h │ │ ├── knob_component.cc │ │ ├── knob_component.h │ │ ├── midi_keyboard_ex.cc │ │ ├── midi_keyboard_ex.h │ │ ├── new_program_editor.cc │ │ ├── new_program_editor.h │ │ ├── program_name_editor.cc │ │ ├── program_name_editor.h │ │ ├── styled_knobs.cc │ │ ├── styled_knobs.h │ │ ├── vu_meter.cc │ │ ├── vu_meter.h │ │ ├── wave_label.cc │ │ ├── wave_label.h │ │ └── waves.h │ ├── generic_main_component.h │ ├── generic_main_component.tcc │ ├── look_and_feel.cc │ ├── look_and_feel.h │ ├── main_component.h │ └── utility │ │ ├── graphics.cc │ │ ├── graphics.h │ │ ├── image.cc │ │ ├── image.h │ │ ├── key_maps.cc │ │ ├── key_maps.h │ │ ├── knobman_skin.cc │ │ └── knobman_skin.h ├── utility │ ├── counting_bitset.h │ ├── counting_bitset.tcc │ ├── field_bitops.h │ ├── functional_timer.h │ ├── midi.cc │ ├── midi.h │ ├── pak.cc │ ├── pak.h │ ├── parameter_ex.h │ ├── parameter_ex.tcc │ ├── processor_ex.h │ ├── rt_checker.cc │ ├── rt_checker.h │ ├── semaphore.h │ ├── simple_fifo.cc │ └── simple_fifo.h ├── worker.cc └── worker.h ├── thirdparty ├── folly │ ├── LICENSE.txt │ └── folly │ │ └── AtomicBitSet.h ├── nonlib │ └── nsm.h ├── vst3sdk │ ├── LICENSE.txt │ ├── base │ │ ├── LICENSE.txt │ │ ├── source │ │ │ ├── baseiids.cpp │ │ │ ├── classfactoryhelpers.h │ │ │ ├── fbuffer.cpp │ │ │ ├── fbuffer.h │ │ │ ├── fcleanup.h │ │ │ ├── fcommandline.h │ │ │ ├── fdebug.cpp │ │ │ ├── fdebug.h │ │ │ ├── fdynlib.cpp │ │ │ ├── fdynlib.h │ │ │ ├── fobject.cpp │ │ │ ├── fobject.h │ │ │ ├── fstdmethods.h │ │ │ ├── fstreamer.cpp │ │ │ ├── fstreamer.h │ │ │ ├── fstring.cpp │ │ │ ├── fstring.h │ │ │ ├── hexbinary.h │ │ │ ├── timer.cpp │ │ │ ├── timer.h │ │ │ ├── updatehandler.cpp │ │ │ └── updatehandler.h │ │ └── thread │ │ │ ├── include │ │ │ ├── fcondition.h │ │ │ └── flock.h │ │ │ └── source │ │ │ ├── fcondition.cpp │ │ │ └── flock.cpp │ ├── pluginterfaces │ │ ├── LICENSE.txt │ │ ├── base │ │ │ ├── conststringtable.cpp │ │ │ ├── conststringtable.h │ │ │ ├── coreiids.cpp │ │ │ ├── doc.h │ │ │ ├── falignpop.h │ │ │ ├── falignpush.h │ │ │ ├── fplatform.h │ │ │ ├── fstrdefs.h │ │ │ ├── ftypes.h │ │ │ ├── funknown.cpp │ │ │ ├── funknown.h │ │ │ ├── futils.h │ │ │ ├── fvariant.h │ │ │ ├── geoconstants.h │ │ │ ├── ibstream.h │ │ │ ├── icloneable.h │ │ │ ├── ierrorcontext.h │ │ │ ├── ipersistent.h │ │ │ ├── ipluginbase.h │ │ │ ├── istringresult.h │ │ │ ├── iupdatehandler.h │ │ │ ├── keycodes.h │ │ │ ├── pluginbasefwd.h │ │ │ ├── smartpointer.h │ │ │ ├── ucolorspec.h │ │ │ ├── ustring.cpp │ │ │ └── ustring.h │ │ ├── gui │ │ │ ├── iplugview.h │ │ │ └── iplugviewcontentscalesupport.h │ │ ├── test │ │ │ └── itest.h │ │ └── vst │ │ │ ├── ivstattributes.h │ │ │ ├── ivstaudioprocessor.h │ │ │ ├── ivstautomationstate.h │ │ │ ├── ivstchannelcontextinfo.h │ │ │ ├── ivstcomponent.h │ │ │ ├── ivstcontextmenu.h │ │ │ ├── ivsteditcontroller.h │ │ │ ├── ivstevents.h │ │ │ ├── ivsthostapplication.h │ │ │ ├── ivstinterappaudio.h │ │ │ ├── ivstmessage.h │ │ │ ├── ivstmidicontrollers.h │ │ │ ├── ivstnoteexpression.h │ │ │ ├── ivstparameterchanges.h │ │ │ ├── ivstplugview.h │ │ │ ├── ivstprefetchablesupport.h │ │ │ ├── ivstprocesscontext.h │ │ │ ├── ivstrepresentation.h │ │ │ ├── ivstunits.h │ │ │ ├── vstpresetkeys.h │ │ │ ├── vstpshpack4.h │ │ │ ├── vstspeaker.h │ │ │ └── vsttypes.h │ └── public.sdk │ │ ├── LICENSE.txt │ │ └── source │ │ ├── common │ │ ├── memorystream.cpp │ │ ├── memorystream.h │ │ ├── pluginview.cpp │ │ └── pluginview.h │ │ ├── main │ │ ├── dllmain.cpp │ │ ├── linuxmain.cpp │ │ ├── macexport.exp │ │ ├── macmain.cpp │ │ ├── pluginfactoryvst3.cpp │ │ ├── pluginfactoryvst3.h │ │ └── winexport.def │ │ ├── vst │ │ ├── hosting │ │ │ ├── eventlist.cpp │ │ │ ├── eventlist.h │ │ │ ├── hostclasses.cpp │ │ │ ├── hostclasses.h │ │ │ ├── module.cpp │ │ │ ├── module.h │ │ │ ├── module_linux.cpp │ │ │ ├── module_mac.mm │ │ │ ├── module_win32.cpp │ │ │ ├── optional.h │ │ │ ├── parameterchanges.cpp │ │ │ ├── parameterchanges.h │ │ │ ├── plugprovider.cpp │ │ │ ├── plugprovider.h │ │ │ ├── processdata.cpp │ │ │ ├── processdata.h │ │ │ ├── stringconvert.cpp │ │ │ ├── stringconvert.h │ │ │ └── uid.h │ │ ├── utility │ │ │ └── ringbuffer.h │ │ ├── vstaudioeffect.cpp │ │ ├── vstaudioeffect.h │ │ ├── vstaudioprocessoralgo.h │ │ ├── vstbus.cpp │ │ ├── vstbus.h │ │ ├── vstbypassprocessor.cpp │ │ ├── vstbypassprocessor.h │ │ ├── vstcomponent.cpp │ │ ├── vstcomponent.h │ │ ├── vstcomponentbase.cpp │ │ ├── vstcomponentbase.h │ │ ├── vsteditcontroller.cpp │ │ ├── vsteditcontroller.h │ │ ├── vstguieditor.cpp │ │ ├── vstguieditor.h │ │ ├── vstinitiids.cpp │ │ ├── vstnoteexpressiontypes.cpp │ │ ├── vstnoteexpressiontypes.h │ │ ├── vstparameters.cpp │ │ ├── vstparameters.h │ │ ├── vstpresetfile.cpp │ │ ├── vstpresetfile.h │ │ ├── vstrepresentation.cpp │ │ ├── vstrepresentation.h │ │ ├── vstsinglecomponenteffect.cpp │ │ ├── vstsinglecomponenteffect.h │ │ └── vstspeakerarray.h │ │ └── vst3stdsdk.cpp ├── wopl │ ├── LICENSE │ └── wopl │ │ ├── wopl_file.c │ │ └── wopl_file.h └── wopn │ ├── LICENSE │ └── wopn │ ├── wopn_file.c │ └── wopn_file.h └── tools ├── AUrez.cc ├── AUrez.dat ├── lv2_ttl_generator.c ├── make-fonts.sh ├── make-icons.sh ├── pak-banks.sh └── resource_compiler.cc /.clang-format: -------------------------------------------------------------------------------- 1 | AccessModifierOffset: -4 2 | AlignEscapedNewlinesLeft: true 3 | AlignTrailingComments: false 4 | AllowAllParametersOfDeclarationOnNextLine: false 5 | AllowShortFunctionsOnASingleLine: false 6 | AllowShortIfStatementsOnASingleLine: false 7 | AllowShortLoopsOnASingleLine: false 8 | AlwaysBreakBeforeMultilineStrings: false 9 | AlwaysBreakTemplateDeclarations: false 10 | BinPackArguments: true 11 | BinPackParameters: true 12 | BreakBeforeBinaryOperators: false 13 | BreakBeforeBraces: Stroustrup 14 | BreakBeforeTernaryOperators: false 15 | BreakConstructorInitializers: BeforeComma 16 | ColumnLimit: 80 17 | CommentPragmas: '' 18 | ConstructorInitializerAllOnOneLineOrOnePerLine: false 19 | ConstructorInitializerIndentWidth: 4 20 | ContinuationIndentWidth: 4 21 | Cpp11BracedListStyle: true 22 | DerivePointerBinding: false 23 | IndentCaseLabels: false 24 | IndentFunctionDeclarationAfterType: false 25 | IndentWidth: 4 26 | Language: Cpp 27 | MaxEmptyLinesToKeep: 2 28 | NamespaceIndentation: Inner 29 | ObjCSpaceAfterProperty: true 30 | ObjCSpaceBeforeProtocolList: true 31 | PenaltyBreakBeforeFirstCallParameter: 100 32 | PenaltyBreakComment: 100 33 | PenaltyBreakFirstLessLess: 0 34 | PenaltyBreakString: 100 35 | PenaltyExcessCharacter: 1 36 | PenaltyReturnTypeOnItsOwnLine: 20 37 | PointerBindsToType: false 38 | SortIncludes: false 39 | SpaceBeforeParens: ControlStatements 40 | SpaceInEmptyParentheses: false 41 | SpacesBeforeTrailingComments: 2 42 | SpacesInAngles: false 43 | SpacesInCStyleCastParentheses: false 44 | SpacesInContainerLiterals: false 45 | SpacesInParentheses: false 46 | Standard: Cpp11 47 | TabWidth: 4 48 | UseTab: Never 49 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /.cache/ 3 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "thirdparty/libADLMIDI"] 2 | path = thirdparty/libADLMIDI 3 | url = https://github.com/Wohlstand/libADLMIDI.git 4 | [submodule "thirdparty/JUCE"] 5 | path = thirdparty/JUCE 6 | url = https://github.com/jpcima/JUCE.git 7 | [submodule "thirdparty/fmt"] 8 | path = thirdparty/fmt 9 | url = https://github.com/fmtlib/fmt.git 10 | [submodule "thirdparty/libOPNMIDI"] 11 | path = thirdparty/libOPNMIDI 12 | url = https://github.com/Wohlstand/libOPNMIDI.git 13 | [submodule "thirdparty/simpleini"] 14 | path = thirdparty/simpleini 15 | url = https://github.com/jpcima/simpleini.git 16 | -------------------------------------------------------------------------------- /CPackLists.txt: -------------------------------------------------------------------------------- 1 | # -*- cmake -*- 2 | 3 | set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}") 4 | set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") 5 | set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") 6 | set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") 7 | set(CPACK_PACKAGE_VENDOR "${PROJECT_VENDOR}") 8 | set(CPACK_PACKAGE_CONTACT "${PROJECT_CONTACT}") 9 | 10 | set(CPACK_DEBIAN_PACKAGE_NAME "${ADLplug_NAME}") 11 | set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE}") 12 | set(CPACK_DEBIAN_PACKAGE_RELEASE "0jpc1") 13 | set(CPACK_DEBIAN_PACKAGE_SECTION "sound") 14 | set(CPACK_DEBIAN_COMPRESSION_TYPE "xz") 15 | set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "FM Yamaha ${ADLplug_CHIP} synthesizer plugin") 16 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$" OR 17 | CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") 18 | set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386") 19 | elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") 20 | set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") 21 | endif() 22 | string(TOLOWER "${CPACK_DEBIAN_PACKAGE_NAME}" CPACK_DEBIAN_FILE_NAME) 23 | set(CPACK_DEBIAN_FILE_NAME "${CPACK_DEBIAN_FILE_NAME}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") 24 | set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) 25 | 26 | include(CPack) 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Boost Software License - Version 1.0 - August 17th, 2003 2 | 3 | Permission is hereby granted, free of charge, to any person or organization 4 | obtaining a copy of the software and accompanying documentation covered by 5 | this license (the "Software") to use, reproduce, display, distribute, 6 | execute, and transmit the Software, and to prepare derivative works of the 7 | Software, and to permit third-parties to whom the Software is furnished to 8 | do so, all subject to the following: 9 | 10 | The copyright notices in the Software and this entire statement, including 11 | the above license grant, this restriction and the following disclaimer, 12 | must be included in all copies of the Software, in whole or in part, and 13 | all derivative works of the Software, unless such copies or derivative 14 | works are solely in the form of machine-executable object code generated by 15 | a source language processor. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 20 | SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 21 | FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 22 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /cmake/ADLMIDI.cmake: -------------------------------------------------------------------------------- 1 | # ADLMIDI 2 | 3 | set(WITH_MIDI_SEQUENCER OFF CACHE STRING "" FORCE) 4 | set(WITH_MUS_SUPPORT OFF CACHE STRING "" FORCE) 5 | set(WITH_XMI_SUPPORT OFF CACHE STRING "" FORCE) 6 | set(WITH_EMBEDDED_BANKS OFF CACHE STRING "" FORCE) 7 | 8 | set(libADLMIDI_STATIC ON CACHE STRING "" FORCE) 9 | set(libADLMIDI_SHARED OFF CACHE STRING "" FORCE) 10 | add_subdirectory("${PROJECT_SOURCE_DIR}/thirdparty/libADLMIDI" EXCLUDE_FROM_ALL) 11 | target_compile_definitions(ADLMIDI_static PRIVATE "ADLMIDI_EXPORT=") 12 | target_compile_definitions(ADLMIDI_static PUBLIC "ADLMIDI_UNSTABLE_API=") 13 | 14 | set(libOPNMIDI_STATIC ON CACHE STRING "" FORCE) 15 | set(libOPNMIDI_SHARED OFF CACHE STRING "" FORCE) 16 | add_subdirectory("${PROJECT_SOURCE_DIR}/thirdparty/libOPNMIDI" EXCLUDE_FROM_ALL) 17 | target_compile_definitions(OPNMIDI_static PRIVATE "OPNMIDI_EXPORT=") 18 | target_compile_definitions(OPNMIDI_static PUBLIC "OPNMIDI_UNSTABLE_API=") 19 | -------------------------------------------------------------------------------- /cmake/ConfigureFile.cmake: -------------------------------------------------------------------------------- 1 | # ConfigureFile.cmake -- cmake -P script to run configure_file 2 | 3 | if(NOT CONFIGURE_FILE_INPUT) 4 | message(FATAL_ERROR "required variable CONFIGURE_FILE_INPUT not given") 5 | endif() 6 | if(NOT CONFIGURE_FILE_OUTPUT) 7 | message(FATAL_ERROR "required variable CONFIGURE_FILE_OUTPUT not given") 8 | endif() 9 | configure_file("${CONFIGURE_FILE_INPUT}" "${CONFIGURE_FILE_OUTPUT}") 10 | -------------------------------------------------------------------------------- /cmake/GNUWarnings.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Warnings for GCC and Clang 3 | # 4 | # 5 | # Usage example: 6 | # enable_gnu_warning("all") 7 | # disable_gnu_warning("unused-parameter") 8 | # 9 | 10 | include(CheckCCompilerFlag) 11 | include(CheckCXXCompilerFlag) 12 | 13 | macro(enable_gnu_warning ID) 14 | if (CMAKE_C_COMPILER_ID MATCHES GNU OR 15 | CMAKE_C_COMPILER_ID MATCHES Clang) 16 | check_c_compiler_flag("-W${ID}" _test) 17 | if(_test) 18 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -W${ID}") 19 | endif() 20 | endif() 21 | if (CMAKE_CXX_COMPILER_ID MATCHES GNU OR 22 | CMAKE_CXX_COMPILER_ID MATCHES Clang) 23 | check_cxx_compiler_flag("-W${ID}" _test) 24 | if(_test) 25 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W${ID}") 26 | endif() 27 | endif() 28 | unset(_test) 29 | endmacro() 30 | 31 | macro(disable_gnu_warning ID) 32 | enable_gnu_warning("no-${ID}") 33 | endmacro() 34 | -------------------------------------------------------------------------------- /cmake/JUCE.cmake: -------------------------------------------------------------------------------- 1 | # JUCE support stuff 2 | 3 | if(NOT JUCE_ROOT_DIR) 4 | message(FATAL_ERROR "define JUCE_ROOT_DIR before including JUCE.cmake") 5 | endif() 6 | if(NOT JUCE_PROJECT_DIR) 7 | message(FATAL_ERROR "define JUCE_PROJECT_DIR before including JUCE.cmake") 8 | endif() 9 | 10 | if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") 11 | set(JUCE_MODULE_SOURCE_SUFFIX ".mm") 12 | else() 13 | set(JUCE_MODULE_SOURCE_SUFFIX ".cpp") 14 | endif() 15 | 16 | macro(add_juce_module NAME) 17 | set(_sources ${ARGN}) 18 | if(NOT _sources) 19 | set(_sources "${JUCE_PROJECT_DIR}/JuceLibraryCode/include_${NAME}${JUCE_MODULE_SOURCE_SUFFIX}") 20 | endif() 21 | add_library("${NAME}" STATIC "${_sources}") 22 | target_include_directories("${NAME}" PUBLIC "${JUCE_ROOT_DIR}/modules") 23 | set_property(TARGET "${NAME}" PROPERTY POSITION_INDEPENDENT_CODE ON) 24 | unset(_sources) 25 | endmacro() 26 | -------------------------------------------------------------------------------- /cmake/LinkHelpers.cmake: -------------------------------------------------------------------------------- 1 | # Link helpers 2 | 3 | macro(require_symbols TARGET) 4 | if(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND NOT MINGW) 5 | message(WARNING "TODO: implement Windows linker flags") 6 | else() 7 | foreach(_symbol ${ARGN}) 8 | if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") 9 | set(_symbol "_${_symbol}") 10 | endif() 11 | set_property(TARGET "${TARGET}" APPEND_STRING 12 | PROPERTY LINK_FLAGS " -Wl,-u,${_symbol}") 13 | endforeach() 14 | endif() 15 | endmacro() 16 | 17 | macro(static_link_mingw_crt TARGET) 18 | if(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND MINGW) 19 | # forces the static link of standard libraries 20 | set_property(TARGET "${TARGET}" APPEND_STRING 21 | PROPERTY LINK_FLAGS " -static-libgcc -static-libstdc++") 22 | endif() 23 | endmacro() 24 | 25 | macro(target_link_static_threads TARGET) 26 | if(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND MINGW) 27 | # use a statically link winpthread 28 | target_link_libraries("${TARGET}" PRIVATE "-Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive,-Bdynamic") 29 | else() 30 | set(THREADS_PREFER_PTHREAD_FLAG TRUE) 31 | find_package(Threads REQUIRED) 32 | target_link_libraries("${TARGET}" PRIVATE ${CMAKE_THREAD_LIBS_INIT}) 33 | endif() 34 | endmacro() 35 | -------------------------------------------------------------------------------- /cmake/SystemOption.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Options which take different default values depending on system 3 | # 4 | # 5 | # Usage example: 6 | # system_option(QUUX ON "Windows" OFF "Darwin" OFF) 7 | # 8 | 9 | macro(system_option NAME DESCRIPTION VALUE) 10 | set(_args ${ARGN}) 11 | set(_value "${VALUE}") 12 | while(_args) 13 | list(GET _args 0 _system) 14 | list(REMOVE_AT _args 0) 15 | if(CMAKE_SYSTEM_NAME STREQUAL "${_system}") 16 | list(GET _args 0 _value) 17 | endif() 18 | list(REMOVE_AT _args 0) 19 | unset(_system) 20 | endwhile() 21 | option("${NAME}" "${DESCRIPTION}" "${_value}") 22 | unset(_args) 23 | unset(_value) 24 | endmacro() 25 | -------------------------------------------------------------------------------- /docs/manual/LICENSE: -------------------------------------------------------------------------------- 1 | This manual is published under a dual license: at your choice, you may use and 2 | distribute it under the terms of either the Free Art License 1.3 (LAL-1.3), or 3 | the Creative Commons Attribution-ShareAlike 4.0 International (CC-BY-SA-4.0). 4 | 5 | - http://artlibre.org/ 6 | - https://creativecommons.org/licenses/by-sa/4.0/ 7 | -------------------------------------------------------------------------------- /docs/manual/Makefile: -------------------------------------------------------------------------------- 1 | 2 | PREFIX = /usr/local 3 | DOCDIR = $(PREFIX)/share/doc 4 | LANGS = fr en 5 | 6 | all: 7 | $(foreach lang,$(LANGS),$(MAKE) -C $(lang);) 8 | 9 | clean: 10 | $(foreach lang,$(LANGS),$(MAKE) -C $(lang) clean;) 11 | 12 | install: 13 | install -d $(DESTDIR)$(DOCDIR)/ADLplug/manual/ 14 | cp -rf resources $(DESTDIR)$(DOCDIR)/ADLplug/manual/ 15 | $(foreach lang,$(LANGS),install -D $(lang)/manual.html $(DESTDIR)$(DOCDIR)/ADLplug/manual/$(lang)/manual.html;) 16 | -------------------------------------------------------------------------------- /docs/manual/en/Makefile: -------------------------------------------------------------------------------- 1 | 2 | ADOC = asciidoctor 3 | ADOCFLAGS = 4 | 5 | all: 6 | $(ADOC) $(ADOCFLAGS) manual.txt 7 | 8 | clean: 9 | rm -f manual.html 10 | 11 | auto: 12 | while true; do $(ADOC) $(ADOCFLAGS) manual.txt; \ 13 | inotifywait -q -e close_write manual.txt; done 14 | -------------------------------------------------------------------------------- /docs/manual/fr/Makefile: -------------------------------------------------------------------------------- 1 | 2 | ADOC = asciidoctor 3 | ADOCFLAGS = -a docdate="$(shell date "+%d/%m/%Y")" -a doctime="$(shell date "+%R %Z")" 4 | 5 | all: 6 | $(ADOC) $(ADOCFLAGS) manual.txt 7 | 8 | clean: 9 | rm -f manual.html 10 | 11 | auto: 12 | while true; do $(ADOC) $(ADOCFLAGS) manual.txt; \ 13 | inotifywait -q -e close_write manual.txt; done 14 | -------------------------------------------------------------------------------- /docs/manual/resources/algo2op.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/algo2op.png -------------------------------------------------------------------------------- /docs/manual/resources/algo4op.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/algo4op.png -------------------------------------------------------------------------------- /docs/manual/resources/algorithm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/algorithm.png -------------------------------------------------------------------------------- /docs/manual/resources/arpeggio-no.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/arpeggio-no.opus -------------------------------------------------------------------------------- /docs/manual/resources/arpeggio-yes.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/arpeggio-yes.opus -------------------------------------------------------------------------------- /docs/manual/resources/chip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/chip.png -------------------------------------------------------------------------------- /docs/manual/resources/emoji_u1f4a1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/emoji_u1f4a1.png -------------------------------------------------------------------------------- /docs/manual/resources/emoji_u1f4c2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/emoji_u1f4c2.png -------------------------------------------------------------------------------- /docs/manual/resources/emulators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/emulators.png -------------------------------------------------------------------------------- /docs/manual/resources/global.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/global.png -------------------------------------------------------------------------------- /docs/manual/resources/misc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/misc.png -------------------------------------------------------------------------------- /docs/manual/resources/operator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/operator.png -------------------------------------------------------------------------------- /docs/manual/resources/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/screen.png -------------------------------------------------------------------------------- /docs/manual/resources/tuning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/tuning.png -------------------------------------------------------------------------------- /docs/manual/resources/voices4op.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/manual/resources/voices4op.png -------------------------------------------------------------------------------- /docs/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/docs/screen.png -------------------------------------------------------------------------------- /project/adl/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 | 31 | #if ! DONT_SET_USING_JUCE_NAMESPACE 32 | // If your code uses a lot of JUCE classes, then this will obviously save you 33 | // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. 34 | using namespace juce; 35 | #endif 36 | 37 | #if ! JUCE_DONT_DECLARE_PROJECTINFO 38 | namespace ProjectInfo 39 | { 40 | const char* const projectName = "ADLplug"; 41 | const char* const companyName = ""; 42 | const char* const versionString = "1.0.2"; 43 | const int versionNumber = 0x10002; 44 | } 45 | #endif 46 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_AU.r: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_RTAS.r: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_1.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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_2.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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_3.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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_4.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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_VST_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 | -------------------------------------------------------------------------------- /project/adl/JuceLibraryCode/include_juce_audio_plugin_client_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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/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 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/MacOSX/ADLplug.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/MacOSX/Info-AAX.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.ADLplug 12 | CFBundleName 13 | ADLplug 14 | CFBundleDisplayName 15 | ADLplug 16 | CFBundlePackageType 17 | TDMw 18 | CFBundleSignature 19 | PTul 20 | CFBundleShortVersionString 21 | 1.0.0 22 | CFBundleVersion 23 | 1.0.0 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/MacOSX/Info-AU.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.ADLplug 12 | CFBundleName 13 | ADLplug 14 | CFBundleDisplayName 15 | ADLplug 16 | CFBundlePackageType 17 | BNDL 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | AudioComponents 29 | 30 | 31 | name 32 | Jean Pierre Cimalando: ADLplug 33 | description 34 | ADLplug 35 | factoryFunction 36 | ADLplugAUFactory 37 | manufacturer 38 | JPCm 39 | type 40 | aumu 41 | subtype 42 | ADLM 43 | version 44 | 65538 45 | resourceUsage 46 | 47 | network.client 48 | 49 | temporary-exception.files.all.read-write 50 | 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/MacOSX/Info-AUv3_AppExtension.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.ADLplug.ADLplugAUv3 12 | CFBundleName 13 | ADLplug 14 | CFBundleDisplayName 15 | ADLplug 16 | CFBundlePackageType 17 | XPC! 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | NSExtension 29 | 30 | NSExtensionPrincipalClass 31 | ADLplugAUFactoryAUv3 32 | NSExtensionPointIdentifier 33 | com.apple.AudioUnit-UI 34 | NSExtensionAttributes 35 | 36 | AudioComponents 37 | 38 | 39 | name 40 | Jean Pierre Cimalando: ADLplug 41 | description 42 | ADLplug 43 | factoryFunction 44 | ADLplugAUFactoryAUv3 45 | manufacturer 46 | JPCm 47 | type 48 | aumu 49 | subtype 50 | ADLM 51 | version 52 | 65538 53 | sandboxSafe 54 | 55 | tags 56 | 57 | Synth 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/MacOSX/Info-RTAS.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.ADLplug 12 | CFBundleName 13 | ADLplug 14 | CFBundleDisplayName 15 | ADLplug 16 | CFBundlePackageType 17 | TDMw 18 | CFBundleSignature 19 | PTul 20 | CFBundleShortVersionString 21 | 1.0.0 22 | CFBundleVersion 23 | 1.0.0 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/MacOSX/Info-Standalone_Plugin.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.ADLplug 12 | CFBundleName 13 | ADLplug 14 | CFBundleDisplayName 15 | ADLplug 16 | CFBundlePackageType 17 | APPL 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/MacOSX/Info-VST.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.ADLplug 12 | CFBundleName 13 | ADLplug 14 | CFBundleDisplayName 15 | ADLplug 16 | CFBundlePackageType 17 | BNDL 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/MacOSX/Info-VST3.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.ADLplug 12 | CFBundleName 13 | ADLplug 14 | CFBundleDisplayName 15 | ADLplug 16 | CFBundlePackageType 17 | BNDL 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/MacOSX/RecentFilesMenuTemplate.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/project/adl/juce/Builds/MacOSX/RecentFilesMenuTemplate.nib -------------------------------------------------------------------------------- /project/adl/juce/Builds/VisualStudio2017/ADLplug_AAX.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/VisualStudio2017/ADLplug_RTAS.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | JUCE Library Code 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | JUCE Library Code 21 | 22 | 23 | JUCE Library Code 24 | 25 | 26 | JUCE Library Code 27 | 28 | 29 | 30 | 31 | 32 | JUCE Library Code 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/VisualStudio2017/ADLplug_StandalonePlugin.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/VisualStudio2017/ADLplug_VST.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/VisualStudio2017/ADLplug_VST3.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /project/adl/juce/Builds/VisualStudio2017/resources.rc: -------------------------------------------------------------------------------- 1 | #ifdef JUCE_USER_DEFINED_RC_FILE 2 | #include JUCE_USER_DEFINED_RC_FILE 3 | #else 4 | 5 | #undef WIN32_LEAN_AND_MEAN 6 | #define WIN32_LEAN_AND_MEAN 7 | #include 8 | 9 | VS_VERSION_INFO VERSIONINFO 10 | FILEVERSION 1,0,2,0 11 | BEGIN 12 | BLOCK "StringFileInfo" 13 | BEGIN 14 | BLOCK "040904E4" 15 | BEGIN 16 | VALUE "FileDescription", "ADLplug\0" 17 | VALUE "FileVersion", "1.0.2\0" 18 | VALUE "ProductName", "ADLplug\0" 19 | VALUE "ProductVersion", "1.0.2\0" 20 | END 21 | END 22 | 23 | BLOCK "VarFileInfo" 24 | BEGIN 25 | VALUE "Translation", 0x409, 1252 26 | END 27 | END 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /project/opn/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 | 31 | #if ! DONT_SET_USING_JUCE_NAMESPACE 32 | // If your code uses a lot of JUCE classes, then this will obviously save you 33 | // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. 34 | using namespace juce; 35 | #endif 36 | 37 | #if ! JUCE_DONT_DECLARE_PROJECTINFO 38 | namespace ProjectInfo 39 | { 40 | const char* const projectName = "OPNplug"; 41 | const char* const companyName = ""; 42 | const char* const versionString = "1.0.2"; 43 | const int versionNumber = 0x10002; 44 | } 45 | #endif 46 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_AU.r: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_RTAS.r: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_1.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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_2.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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_3.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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_4.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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_RTAS_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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_VST_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 | -------------------------------------------------------------------------------- /project/opn/JuceLibraryCode/include_juce_audio_plugin_client_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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/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 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/MacOSX/Info-AAX.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.OPNplug 12 | CFBundleName 13 | OPNplug 14 | CFBundleDisplayName 15 | OPNplug 16 | CFBundlePackageType 17 | TDMw 18 | CFBundleSignature 19 | PTul 20 | CFBundleShortVersionString 21 | 1.0.0 22 | CFBundleVersion 23 | 1.0.0 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/MacOSX/Info-AU.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.OPNplug 12 | CFBundleName 13 | OPNplug 14 | CFBundleDisplayName 15 | OPNplug 16 | CFBundlePackageType 17 | BNDL 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | AudioComponents 29 | 30 | 31 | name 32 | Jean Pierre Cimalando: OPNplug 33 | description 34 | OPNplug 35 | factoryFunction 36 | OPNplugAUFactory 37 | manufacturer 38 | JPCm 39 | type 40 | aumu 41 | subtype 42 | OPNM 43 | version 44 | 65538 45 | resourceUsage 46 | 47 | network.client 48 | 49 | temporary-exception.files.all.read-write 50 | 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/MacOSX/Info-AUv3_AppExtension.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.OPNplug.OPNplugAUv3 12 | CFBundleName 13 | OPNplug 14 | CFBundleDisplayName 15 | OPNplug 16 | CFBundlePackageType 17 | XPC! 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | NSExtension 29 | 30 | NSExtensionPrincipalClass 31 | OPNplugAUFactoryAUv3 32 | NSExtensionPointIdentifier 33 | com.apple.AudioUnit-UI 34 | NSExtensionAttributes 35 | 36 | AudioComponents 37 | 38 | 39 | name 40 | Jean Pierre Cimalando: OPNplug 41 | description 42 | OPNplug 43 | factoryFunction 44 | OPNplugAUFactoryAUv3 45 | manufacturer 46 | JPCm 47 | type 48 | aumu 49 | subtype 50 | OPNM 51 | version 52 | 65538 53 | sandboxSafe 54 | 55 | tags 56 | 57 | Synth 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/MacOSX/Info-RTAS.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.OPNplug 12 | CFBundleName 13 | OPNplug 14 | CFBundleDisplayName 15 | OPNplug 16 | CFBundlePackageType 17 | TDMw 18 | CFBundleSignature 19 | PTul 20 | CFBundleShortVersionString 21 | 1.0.0 22 | CFBundleVersion 23 | 1.0.0 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/MacOSX/Info-Standalone_Plugin.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.OPNplug 12 | CFBundleName 13 | OPNplug 14 | CFBundleDisplayName 15 | OPNplug 16 | CFBundlePackageType 17 | APPL 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/MacOSX/Info-VST.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.OPNplug 12 | CFBundleName 13 | OPNplug 14 | CFBundleDisplayName 15 | OPNplug 16 | CFBundlePackageType 17 | BNDL 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/MacOSX/Info-VST3.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleExecutable 7 | ${EXECUTABLE_NAME} 8 | CFBundleIconFile 9 | 10 | CFBundleIdentifier 11 | jpcima.OPNplug 12 | CFBundleName 13 | OPNplug 14 | CFBundleDisplayName 15 | OPNplug 16 | CFBundlePackageType 17 | BNDL 18 | CFBundleSignature 19 | ???? 20 | CFBundleShortVersionString 21 | 1.0.2 22 | CFBundleVersion 23 | 1.0.2 24 | NSHumanReadableCopyright 25 | 26 | NSHighResolutionCapable 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/MacOSX/OPNplug.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/MacOSX/RecentFilesMenuTemplate.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/project/opn/juce/Builds/MacOSX/RecentFilesMenuTemplate.nib -------------------------------------------------------------------------------- /project/opn/juce/Builds/VisualStudio2017/OPNplug_AAX.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/VisualStudio2017/OPNplug_RTAS.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | JUCE Library Code 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | JUCE Library Code 21 | 22 | 23 | JUCE Library Code 24 | 25 | 26 | JUCE Library Code 27 | 28 | 29 | 30 | 31 | 32 | JUCE Library Code 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/VisualStudio2017/OPNplug_StandalonePlugin.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/VisualStudio2017/OPNplug_VST.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/VisualStudio2017/OPNplug_VST3.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61} 7 | 8 | 9 | 10 | 11 | JUCE Library Code 12 | 13 | 14 | 15 | 16 | 17 | JUCE Library Code 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /project/opn/juce/Builds/VisualStudio2017/resources.rc: -------------------------------------------------------------------------------- 1 | #ifdef JUCE_USER_DEFINED_RC_FILE 2 | #include JUCE_USER_DEFINED_RC_FILE 3 | #else 4 | 5 | #undef WIN32_LEAN_AND_MEAN 6 | #define WIN32_LEAN_AND_MEAN 7 | #include 8 | 9 | VS_VERSION_INFO VERSIONINFO 10 | FILEVERSION 1,0,2,0 11 | BEGIN 12 | BLOCK "StringFileInfo" 13 | BEGIN 14 | BLOCK "040904E4" 15 | BEGIN 16 | VALUE "FileDescription", "OPNplug\0" 17 | VALUE "FileVersion", "1.0.2\0" 18 | VALUE "ProductName", "OPNplug\0" 19 | VALUE "ProductVersion", "1.0.2\0" 20 | END 21 | END 22 | 23 | BLOCK "VarFileInfo" 24 | BEGIN 25 | VALUE "Translation", 0x409, 1252 26 | END 27 | END 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /resources/application/ADLplug-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/ADLplug-32.png -------------------------------------------------------------------------------- /resources/application/ADLplug-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/ADLplug-96.png -------------------------------------------------------------------------------- /resources/application/ADLplug.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=ADLplug 3 | Name[fr]=ADLplug 4 | Comment=FM Yamaha OPL3 synthesizer for ADLMIDI 5 | Comment[fr]=Synthétiseur FM Yamaha OPL3 pour ADLMIDI 6 | TryExec=ADLplug 7 | Exec=ADLplug 8 | Icon=ADLplug 9 | Type=Application 10 | Categories=AudioVideo;Audio;Music;Midi 11 | -------------------------------------------------------------------------------- /resources/application/ADLplug.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/ADLplug.icns -------------------------------------------------------------------------------- /resources/application/ADLplug.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/ADLplug.ico -------------------------------------------------------------------------------- /resources/application/ADLplug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/ADLplug.png -------------------------------------------------------------------------------- /resources/application/ADLplug.rc: -------------------------------------------------------------------------------- 1 | 1 ICON "ADLplug.ico" 2 | -------------------------------------------------------------------------------- /resources/application/OPNplug-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/OPNplug-32.png -------------------------------------------------------------------------------- /resources/application/OPNplug-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/OPNplug-96.png -------------------------------------------------------------------------------- /resources/application/OPNplug.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=OPNplug 3 | Name[fr]=OPNplug 4 | Comment=FM Yamaha OPN2 synthesizer for OPNMIDI 5 | Comment[fr]=Synthétiseur FM Yamaha OPN2 pour OPNMIDI 6 | TryExec=OPNplug 7 | Exec=OPNplug 8 | Icon=OPNplug 9 | Type=Application 10 | Categories=AudioVideo;Audio;Music;Midi 11 | -------------------------------------------------------------------------------- /resources/application/OPNplug.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/OPNplug.icns -------------------------------------------------------------------------------- /resources/application/OPNplug.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/OPNplug.ico -------------------------------------------------------------------------------- /resources/application/OPNplug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/application/OPNplug.png -------------------------------------------------------------------------------- /resources/application/OPNplug.rc: -------------------------------------------------------------------------------- 1 | 1 ICON "OPNplug.ico" 2 | -------------------------------------------------------------------------------- /resources/au/ADLplug-1.0.0.rsrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/au/ADLplug-1.0.0.rsrc -------------------------------------------------------------------------------- /resources/au/OPNplug-1.0.0.rsrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/au/OPNplug-1.0.0.rsrc -------------------------------------------------------------------------------- /resources/configuration/ADLplug.ini: -------------------------------------------------------------------------------- 1 | 2 | # the version of the file specification 3 | configuration-version = 1 4 | 5 | 6 | [paths] 7 | 8 | # the last directory in which instruments have been accessed 9 | last-instrument-directory = 10 | 11 | 12 | [piano] 13 | 14 | # the default key layout 15 | layout = qwerty 16 | 17 | # the QWERTY key map 18 | keymap:qwerty = zsxdcvgbhnjmq2w3er5t6y7ui9o0p 19 | 20 | # the QWERTZ key map 21 | keymap:qwertz = ysxdcvgbhnjmq2w3er5t6z7ui9o0p 22 | 23 | # the AZERTY key map 24 | keymap:azerty = wsxdcvgbhnj,aéz"er(t-yèuiçoàp 25 | -------------------------------------------------------------------------------- /resources/configuration/OPNplug.ini: -------------------------------------------------------------------------------- 1 | 2 | # the version of the file specification 3 | configuration-version = 1 4 | 5 | 6 | [paths] 7 | 8 | # the last directory in which instruments have been accessed 9 | last-instrument-directory = 10 | 11 | 12 | [piano] 13 | 14 | # the default key layout 15 | layout = qwerty 16 | 17 | # the QWERTY key map 18 | keymap:qwerty = zsxdcvgbhnjmq2w3er5t6y7ui9o0p 19 | 20 | # the QWERTZ key map 21 | keymap:qwertz = ysxdcvgbhnjmq2w3er5t6z7ui9o0p 22 | 23 | # the AZERTY key map 24 | keymap:azerty = wsxdcvgbhnj,aéz"er(t-yèuiçoàp 25 | -------------------------------------------------------------------------------- /resources/lv2/ADLplug.lv2/manifest.ttl.in: -------------------------------------------------------------------------------- 1 | @prefix lv2: . 2 | @prefix pset: . 3 | @prefix rdf: . 4 | @prefix rdfs: . 5 | @prefix ui: . 6 | 7 | 8 | a lv2:Plugin ; 9 | lv2:binary ; 10 | rdfs:seeAlso . 11 | 12 | 13 | a ; 14 | ui:binary ; 15 | lv2:requiredFeature ; 16 | lv2:extensionData . 17 | 18 | 19 | a @LV2_UI_CLASS@ ; 20 | ui:binary ; 21 | lv2:requiredFeature ; 22 | lv2:optionalFeature ui:noUserResize ; 23 | lv2:extensionData . 24 | -------------------------------------------------------------------------------- /resources/lv2/OPNplug.lv2/manifest.ttl.in: -------------------------------------------------------------------------------- 1 | @prefix lv2: . 2 | @prefix pset: . 3 | @prefix rdf: . 4 | @prefix rdfs: . 5 | @prefix ui: . 6 | 7 | 8 | a lv2:Plugin ; 9 | lv2:binary ; 10 | rdfs:seeAlso . 11 | 12 | 13 | a ; 14 | ui:binary ; 15 | lv2:requiredFeature ; 16 | lv2:extensionData . 17 | 18 | 19 | a @LV2_UI_CLASS@ ; 20 | ui:binary ; 21 | lv2:requiredFeature ; 22 | lv2:optionalFeature ui:noUserResize ; 23 | lv2:extensionData . 24 | -------------------------------------------------------------------------------- /resources/lv2/README: -------------------------------------------------------------------------------- 1 | 2 | These manifests are produced by lv2-ttl-generator. 3 | Do not edit them! 4 | -------------------------------------------------------------------------------- /resources/opl3/banks.pak: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/opl3/banks.pak -------------------------------------------------------------------------------- /resources/opn2/banks.pak: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/opn2/banks.pak -------------------------------------------------------------------------------- /resources/patch/juce-enable-mingw-directwrite.patch: -------------------------------------------------------------------------------- 1 | diff --git a/modules/juce_core/native/juce_win32_ComSmartPtr.h b/modules/juce_core/native/juce_win32_ComSmartPtr.h 2 | index 3c06d6d41..83902482f 100644 3 | --- a/modules/juce_core/native/juce_win32_ComSmartPtr.h 4 | +++ b/modules/juce_core/native/juce_win32_ComSmartPtr.h 5 | @@ -23,22 +23,20 @@ 6 | namespace juce 7 | { 8 | 9 | -#if JUCE_MINGW || (! (defined (_MSC_VER) || defined (__uuidof))) 10 | - #ifdef __uuidof 11 | - #undef __uuidof 12 | - #endif 13 | - 14 | - template struct UUIDGetter { static CLSID get() { jassertfalse; return {}; } }; 15 | - #define __uuidof(x) UUIDGetter::get() 16 | - 17 | - template <> 18 | - struct UUIDGetter<::IUnknown> 19 | - { 20 | - static CLSID get() { return { 0, 0, 0, { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } }; } 21 | - }; 22 | - 23 | - #define JUCE_DECLARE_UUID_GETTER(name, uuid) \ 24 | - template <> struct UUIDGetter { static CLSID get() { return uuidFromString (uuid); } }; 25 | +#if JUCE_MINGW 26 | + template const GUID& juce_uuidof(); 27 | +} 28 | +template const GUID& __mingw_uuidof() 29 | +{ 30 | + return juce::juce_uuidof(); 31 | +} 32 | +namespace juce { 33 | + #define JUCE_DECLARE_UUID_GETTER(name, uuid) \ 34 | + template<> const GUID& juce_uuidof() \ 35 | + { \ 36 | + static const CLSID id = uuidFromString (uuid); \ 37 | + return id; \ 38 | + }; 39 | 40 | #define JUCE_COMCLASS(name, guid) \ 41 | struct name; \ 42 | diff --git a/modules/juce_graphics/juce_graphics.cpp b/modules/juce_graphics/juce_graphics.cpp 43 | index 4b2bd3217..092231e55 100644 44 | --- a/modules/juce_graphics/juce_graphics.cpp 45 | +++ b/modules/juce_graphics/juce_graphics.cpp 46 | @@ -48,11 +48,6 @@ 47 | // get rid of some warnings in Window's own headers 48 | JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4458) 49 | 50 | - #if JUCE_MINGW && JUCE_USE_DIRECTWRITE 51 | - #warning "DirectWrite not currently implemented with mingw..." 52 | - #undef JUCE_USE_DIRECTWRITE 53 | - #endif 54 | - 55 | #if JUCE_USE_DIRECTWRITE || JUCE_DIRECT2D 56 | /* If you hit a compile error trying to include these files, you may need to update 57 | your version of the Windows SDK to the latest one. The DirectWrite and Direct2D 58 | -------------------------------------------------------------------------------- /resources/patch/juce-enable-mingw-vst3.patch: -------------------------------------------------------------------------------- 1 | diff --git a/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h b/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h 2 | index 6bea84307..7542785f1 100644 3 | --- a/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h 4 | +++ b/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h 5 | @@ -73,7 +73,7 @@ 6 | #define JucePlugin_Build_RTAS 0 7 | #endif 8 | 9 | -#if ! (defined (_MSC_VER) || defined (__APPLE_CPP__) || defined (__APPLE_CC__) || defined (LINUX) || defined (__linux__)) 10 | +#if ! (defined (_MSC_VER) || defined(__MINGW32__) || defined (__APPLE_CPP__) || defined (__APPLE_CC__) || defined (LINUX) || defined (__linux__)) 11 | #undef JucePlugin_Build_VST3 12 | #define JucePlugin_Build_VST3 0 13 | #endif 14 | -------------------------------------------------------------------------------- /resources/patch/juce-mingw-missing-api.patch: -------------------------------------------------------------------------------- 1 | diff --git a/modules/juce_gui_basics/juce_gui_basics.cpp b/modules/juce_gui_basics/juce_gui_basics.cpp 2 | index 12a815f6b..e805b49dd 100644 3 | --- a/modules/juce_gui_basics/juce_gui_basics.cpp 4 | +++ b/modules/juce_gui_basics/juce_gui_basics.cpp 5 | @@ -88,6 +88,11 @@ 6 | #pragma comment (lib, "D2d1.lib") 7 | #endif 8 | #endif 9 | + 10 | + #if JUCE_MINGW 11 | + // NOTE(jpc): Windows API which might be missing from system headers 12 | + LWSTDAPI IUnknown_GetWindow(IUnknown* unk, HWND* phwnd); 13 | + #endif 14 | #endif 15 | 16 | #include 17 | -------------------------------------------------------------------------------- /resources/patch/juce-mingw-vst-main.patch: -------------------------------------------------------------------------------- 1 | diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp 2 | index b7e9c7ca4..03f039bb4 100644 3 | --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp 4 | +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp 5 | @@ -2223,7 +2223,7 @@ namespace 6 | return pluginEntryPoint (audioMaster); 7 | } 8 | 9 | - #if ! defined (JUCE_64BIT) && JUCE_MSVC // (can't compile this on win64, but it's not needed anyway with VST2.4) 10 | + #if ! defined (JUCE_64BIT) && JUCE_WINDOWS // (can't compile this on win64, but it's not needed anyway with VST2.4) 11 | extern "C" __declspec (dllexport) int main (Vst2::VstHostCallback audioMaster) 12 | { 13 | PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST; 14 | -------------------------------------------------------------------------------- /resources/patch/juce-pthread-priority.patch: -------------------------------------------------------------------------------- 1 | diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h 2 | index 3786b2caa..b4290e2d5 100644 3 | --- a/modules/juce_core/native/juce_posix_SharedCode.h 4 | +++ b/modules/juce_core/native/juce_posix_SharedCode.h 5 | @@ -1013,7 +1013,7 @@ bool Thread::setThreadPriority (void* handle, int priority) 6 | if (pthread_getschedparam ((pthread_t) handle, &policy, ¶m) != 0) 7 | return false; 8 | 9 | - policy = priority == 0 ? SCHED_OTHER : SCHED_RR; 10 | + policy = priority < 9 ? SCHED_OTHER : SCHED_RR; 11 | 12 | const int minPriority = sched_get_priority_min (policy); 13 | const int maxPriority = sched_get_priority_max (policy); 14 | -------------------------------------------------------------------------------- /resources/patch/juce-win32-lmms-workaround.patch: -------------------------------------------------------------------------------- 1 | diff --git a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp 2 | index c21682211..59a970357 100644 3 | --- a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp 4 | +++ b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp 5 | @@ -4065,6 +4065,7 @@ bool offerKeyMessageToJUCEWindow (MSG& m) { return HWNDComponentPeer::offerKey 6 | //============================================================================== 7 | bool JUCE_CALLTYPE Process::isForegroundProcess() 8 | { 9 | +#if 0 10 | if (auto fg = GetForegroundWindow()) 11 | { 12 | DWORD processID = 0; 13 | @@ -4072,6 +4073,7 @@ bool JUCE_CALLTYPE Process::isForegroundProcess() 14 | 15 | return processID == GetCurrentProcessId(); 16 | } 17 | +#endif 18 | 19 | return true; 20 | } 21 | -------------------------------------------------------------------------------- /resources/patch/juce-x11-badwindow.patch: -------------------------------------------------------------------------------- 1 | diff --git a/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp b/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp 2 | index ab9b9496b..0357deac6 100644 3 | --- a/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp 4 | +++ b/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp 5 | @@ -1500,6 +1500,9 @@ public: 6 | ScopedXLock xlock (display); 7 | XGetInputFocus (display, &focusedWindow, &revert); 8 | 9 | + if (focusedWindow == PointerRoot) 10 | + return false; 11 | + 12 | return isParentWindowOf (focusedWindow); 13 | } 14 | 15 | -------------------------------------------------------------------------------- /resources/ui/adl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/adl.png -------------------------------------------------------------------------------- /resources/ui/adlmidi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/adlmidi.png -------------------------------------------------------------------------------- /resources/ui/cores/Cafe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/cores/Cafe.png -------------------------------------------------------------------------------- /resources/ui/cores/DOSBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/cores/DOSBox.png -------------------------------------------------------------------------------- /resources/ui/cores/Gens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/cores/Gens.png -------------------------------------------------------------------------------- /resources/ui/cores/MAME.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/cores/MAME.png -------------------------------------------------------------------------------- /resources/ui/cores/Neko.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/cores/Neko.png -------------------------------------------------------------------------------- /resources/ui/cores/Nuked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/cores/Nuked.png -------------------------------------------------------------------------------- /resources/ui/cores/Nuked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/ui/cores/Nuked2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/cores/Nuked2.png -------------------------------------------------------------------------------- /resources/ui/cores/Rad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/cores/Rad.png -------------------------------------------------------------------------------- /resources/ui/fonts/Mono-Bold.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Mono-Bold.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Mono-BoldItalic.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Mono-BoldItalic.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Mono-Italic.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Mono-Italic.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Mono-Regular.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Mono-Regular.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Sans-Bold.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Sans-Bold.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Sans-BoldItalic.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Sans-BoldItalic.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Sans-Italic.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Sans-Italic.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Sans-Regular.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Sans-Regular.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Serif-Bold.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Serif-Bold.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Serif-BoldItalic.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Serif-BoldItalic.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Serif-Italic.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Serif-Italic.ttf.gz -------------------------------------------------------------------------------- /resources/ui/fonts/Serif-Regular.ttf.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/fonts/Serif-Regular.ttf.gz -------------------------------------------------------------------------------- /resources/ui/knob-skin.knob: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/knob-skin.knob -------------------------------------------------------------------------------- /resources/ui/knob-skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/knob-skin.png -------------------------------------------------------------------------------- /resources/ui/noto-emoji/emoji_u1f4a1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/noto-emoji/emoji_u1f4a1.png -------------------------------------------------------------------------------- /resources/ui/noto-emoji/emoji_u1f4be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/noto-emoji/emoji_u1f4be.png -------------------------------------------------------------------------------- /resources/ui/noto-emoji/emoji_u1f4c2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/noto-emoji/emoji_u1f4c2.png -------------------------------------------------------------------------------- /resources/ui/noto-emoji/emoji_u1f4dd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/noto-emoji/emoji_u1f4dd.png -------------------------------------------------------------------------------- /resources/ui/noto-emoji/emoji_u2328.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/noto-emoji/emoji_u2328.png -------------------------------------------------------------------------------- /resources/ui/noto-emoji/emoji_u2795.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/noto-emoji/emoji_u2795.png -------------------------------------------------------------------------------- /resources/ui/opn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/opn.png -------------------------------------------------------------------------------- /resources/ui/opnmidi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/opnmidi.png -------------------------------------------------------------------------------- /resources/ui/slider-skin.knob: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/slider-skin.knob -------------------------------------------------------------------------------- /resources/ui/slider-skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/resources/ui/slider-skin.png -------------------------------------------------------------------------------- /scripts/run-lv2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | test -z "$JALV" && JALV=jalv.gtk3 4 | 5 | absdir() { 6 | old=`pwd`; cd "$1"; new=`pwd`; cd "$old"; echo "$new" 7 | } 8 | 9 | build_location="`dirname "$0"`/../build" 10 | export LV2_PATH=`absdir "$build_location/lv2"` 11 | exec "$JALV" "https://github.com/jpcima/ADLplug" 12 | -------------------------------------------------------------------------------- /sources/adl/chip_settings.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | #if defined(ADLPLUG_OPL3) 9 | #include "../opl3/adl/chip_settings.h" 10 | #elif defined(ADLPLUG_OPN2) 11 | #include "../opn2/adl/chip_settings.h" 12 | #endif 13 | -------------------------------------------------------------------------------- /sources/adl/instrument.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | #if defined(ADLPLUG_OPL3) 9 | #include "../opl3/adl/instrument.h" 10 | #elif defined(ADLPLUG_OPN2) 11 | #include "../opn2/adl/instrument.h" 12 | #endif 13 | -------------------------------------------------------------------------------- /sources/adl/measurer.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | #if defined(ADLPLUG_OPL3) 9 | #include "../opl3/adl/measurer/measurer.h" 10 | #elif defined(ADLPLUG_OPN2) 11 | #include "../opn2/adl/measurer/measurer.h" 12 | #endif 13 | -------------------------------------------------------------------------------- /sources/adl/player.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | #if defined(ADLPLUG_OPL3) 9 | #include "../opl3/adl/player.h" 10 | #elif defined(ADLPLUG_OPN2) 11 | #include "../opn2/adl/player.h" 12 | #endif 13 | -------------------------------------------------------------------------------- /sources/adl/wopx_file.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | #if defined(ADLPLUG_OPL3) 9 | #include 10 | #elif defined(ADLPLUG_OPN2) 11 | #include 12 | #endif 13 | 14 | struct WOPx { 15 | 16 | #if defined(ADLPLUG_OPL3) 17 | 18 | #define WOPx_BANK_FORMAT "WOPL" 19 | #define WOPx_BANK_SUFFIX "wopl" 20 | #define WOPx_INST_FORMAT "OPLI" 21 | #define WOPx_INST_SUFFIX "opli" 22 | 23 | enum { 24 | Ins_IsBlank = WOPL_Ins_IsBlank, 25 | }; 26 | 27 | typedef WOPLInstrument Instrument; 28 | typedef WOPLBank Bank; 29 | typedef WOPIFile InstrumentFile; 30 | typedef WOPLFile BankFile; 31 | 32 | static constexpr auto &LoadBankFromMem = WOPL_LoadBankFromMem; 33 | static constexpr auto &LoadInstFromMem = WOPL_LoadInstFromMem; 34 | static constexpr auto &CalculateBankFileSize = WOPL_CalculateBankFileSize; 35 | static constexpr auto &CalculateInstFileSize = WOPL_CalculateInstFileSize; 36 | static constexpr auto &SaveBankToMem = WOPL_SaveBankToMem; 37 | static constexpr auto &SaveInstToMem = WOPL_SaveInstToMem; 38 | 39 | typedef WOPLFile_Deleter BankFile_Deleter; 40 | typedef WOPLFile_Ptr BankFile_Ptr; 41 | 42 | #elif defined(ADLPLUG_OPN2) 43 | 44 | #define WOPx_BANK_FORMAT "WOPN" 45 | #define WOPx_BANK_SUFFIX "wopn" 46 | #define WOPx_INST_FORMAT "OPNI" 47 | #define WOPx_INST_SUFFIX "opni" 48 | 49 | enum { 50 | Ins_IsBlank = WOPN_Ins_IsBlank, 51 | }; 52 | 53 | typedef WOPNInstrument Instrument; 54 | typedef WOPNBank Bank; 55 | typedef OPNIFile InstrumentFile; 56 | typedef WOPNFile BankFile; 57 | 58 | static constexpr auto &LoadBankFromMem = WOPN_LoadBankFromMem; 59 | static constexpr auto &LoadInstFromMem = WOPN_LoadInstFromMem; 60 | static constexpr auto &CalculateBankFileSize = WOPN_CalculateBankFileSize; 61 | static constexpr auto &CalculateInstFileSize = WOPN_CalculateInstFileSize; 62 | static constexpr auto &SaveBankToMem = WOPN_SaveBankToMem; 63 | static constexpr auto &SaveInstToMem = WOPN_SaveInstToMem; 64 | 65 | typedef WOPNFile_Deleter BankFile_Deleter; 66 | typedef WOPNFile_Ptr BankFile_Ptr; 67 | 68 | #endif 69 | 70 | }; 71 | -------------------------------------------------------------------------------- /sources/configuration.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include 8 | 9 | class Configuration { 10 | public: 11 | static File system_file_path(); 12 | static File user_file_path(); 13 | 14 | Configuration(); 15 | ~Configuration(); 16 | bool load_default(); 17 | bool save_default(); 18 | bool load_file(const File &file); 19 | bool save_file(const File &file); 20 | 21 | void set_string(const char *section, const char *key, const char *value); 22 | const char *get_string(const char *section, const char *key, const char *default_value) const; 23 | 24 | private: 25 | struct Opaque_Ini; 26 | typedef std::unique_ptr Opaque_Ini_Ptr; 27 | Opaque_Ini_Ptr ini_; 28 | }; 29 | -------------------------------------------------------------------------------- /sources/definitions.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | // bank slors to reserve in the synthesizer 9 | static constexpr unsigned bank_reserve_size = 64; 10 | 11 | // maximum program notifications in a cycle 12 | static constexpr unsigned max_program_notifications = 32; 13 | 14 | // maximum program measurement requests in a cycle 15 | static constexpr unsigned max_program_measurements = 32; 16 | 17 | // maximum interval between midi processing cycles 18 | static constexpr unsigned midi_interval_max = 256; 19 | -------------------------------------------------------------------------------- /sources/dsp/dc_filter.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include 8 | 9 | struct Dc_Filter { 10 | void cutoff(double f); 11 | double process(double in); 12 | double b0_ = 0; 13 | double p_ = 0; 14 | double last_in_ = 0; 15 | double last_out_ = 0; 16 | }; 17 | 18 | inline void Dc_Filter::cutoff(double f) 19 | { 20 | double wn = M_PI * f; 21 | double b0 = b0_ = 1.0 / (1.0 + wn); 22 | p_ = (1.0 - wn) * b0; 23 | } 24 | 25 | inline double Dc_Filter::process(double in) 26 | { 27 | in *= b0_; 28 | double out = (in - last_in_) + p_ * last_out_; 29 | last_in_ = in; 30 | last_out_ = out; 31 | return out; 32 | } 33 | -------------------------------------------------------------------------------- /sources/dsp/vu_monitor.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include 8 | 9 | struct Vu_Monitor 10 | { 11 | double p_ = 0; 12 | double mem_ = 0; 13 | void release(double t); // t = fs * release time 14 | double process(double x); 15 | }; 16 | 17 | inline void Vu_Monitor::release(double t) 18 | { 19 | p_ = exp(-1.0 / t); 20 | } 21 | 22 | inline double Vu_Monitor::process(double x) 23 | { 24 | double y; 25 | double ax = fabs(x); 26 | double p = p_; 27 | if (ax > mem_) 28 | y = ax; 29 | else 30 | y = p * mem_ + (1.0 - p) * ax; 31 | mem_ = y; 32 | return y; 33 | } 34 | -------------------------------------------------------------------------------- /sources/link/LV2.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | lv2_generate_ttl 3 | lv2_descriptor 4 | lv2ui_descriptor 5 | -------------------------------------------------------------------------------- /sources/link/VST2-32.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | VSTPluginMain 3 | main 4 | -------------------------------------------------------------------------------- /sources/link/VST2-64.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | VSTPluginMain 3 | -------------------------------------------------------------------------------- /sources/link/VST3.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | InitDll 3 | ExitDll 4 | GetPluginFactory 5 | -------------------------------------------------------------------------------- /sources/messages.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "messages.h" 7 | 8 | namespace Messages { 9 | 10 | Buffered_Message read(Simple_Fifo &fifo) noexcept 11 | { 12 | Buffered_Message msg; 13 | msg.header = (Message_Header *)fifo.read(sizeof(Message_Header), msg.offset); 14 | if (!msg.header || !fifo.read_padding(msg.offset)) 15 | return Buffered_Message{}; 16 | msg.data = (uint8_t *)fifo.read(msg.header->size, msg.offset); 17 | if (!msg.data || !fifo.read_padding(msg.offset)) 18 | return Buffered_Message{}; 19 | return msg; 20 | } 21 | 22 | void finish_read(Simple_Fifo &fifo, const Buffered_Message &msg) noexcept 23 | { 24 | fifo.finish_read(msg.offset); 25 | } 26 | 27 | Buffered_Message write(Simple_Fifo &fifo, const Message_Header &hdr) noexcept 28 | { 29 | Buffered_Message msg; 30 | msg.header = (Message_Header *)fifo.write(sizeof(Message_Header), msg.offset); 31 | if (!msg.header || !fifo.write_padding(msg.offset)) 32 | return Buffered_Message{}; 33 | *msg.header = hdr; 34 | msg.data = fifo.write(msg.header->size, msg.offset); 35 | if (!msg.data || !fifo.write_padding(msg.offset)) 36 | return Buffered_Message{}; 37 | return msg; 38 | } 39 | 40 | void finish_write(Simple_Fifo &fifo, Buffered_Message &msg) noexcept 41 | { 42 | fifo.finish_write(msg.offset); 43 | } 44 | 45 | } // namespace Messages 46 | -------------------------------------------------------------------------------- /sources/midi/insnames.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include 8 | 9 | enum class Midi_Spec { 10 | GM, GS, SC88, MT32, XG, 11 | }; 12 | 13 | const char *midi_spec_name(Midi_Spec spec); 14 | 15 | struct Midi_Program_Ex { 16 | Midi_Program_Ex() 17 | {} 18 | Midi_Program_Ex(Midi_Spec spec, const char *name) 19 | : spec(spec), name(name) {} 20 | Midi_Spec spec {}; 21 | const char *name = nullptr; 22 | }; 23 | 24 | class Midi_Db { 25 | public: 26 | void init(); 27 | 28 | const char *inst(unsigned id7) 29 | { return midi_inst_[id7]; } 30 | const Midi_Program_Ex &perc(unsigned id7) 31 | { return midi_perc_[id7]; } 32 | const Midi_Program_Ex *find_ex( 33 | unsigned msb, unsigned lsb, unsigned pgm); 34 | private: 35 | const char *midi_inst_[128]; 36 | Midi_Program_Ex midi_perc_[128]; 37 | std::unordered_map midi_ex_; 38 | void init_midi_inst(); 39 | void init_midi_perc(); 40 | void init_midi_ex(); 41 | }; 42 | 43 | extern Midi_Db midi_db; 44 | -------------------------------------------------------------------------------- /sources/nothing.cc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jpcima/ADLplug/a488abedf1783c61cb4f0caa689f1b01bf9aa17d/sources/nothing.cc -------------------------------------------------------------------------------- /sources/opl3/adl/chip_settings.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | 9 | struct Emulator_Defaults; 10 | Emulator_Defaults &get_emulator_defaults(); 11 | 12 | struct Emulator_Defaults { 13 | StringArray choices; 14 | std::unique_ptr images; 15 | unsigned default_index = 0; 16 | }; 17 | 18 | struct Chip_Settings { 19 | unsigned emulator = 0; 20 | unsigned chip_count = 2; 21 | unsigned fourop_count = 0; 22 | 23 | PropertySet to_properties() const; 24 | static Chip_Settings from_properties(const PropertySet &set); 25 | }; 26 | 27 | inline bool operator==(const Chip_Settings &a, const Chip_Settings &b) 28 | { 29 | return a.emulator == b.emulator && a.chip_count == b.chip_count && a.fourop_count == b.fourop_count; 30 | } 31 | 32 | inline bool operator!=(const Chip_Settings &a, const Chip_Settings &b) 33 | { 34 | return !operator==(a, b); 35 | } 36 | -------------------------------------------------------------------------------- /sources/opl3/adl/measurer/chips/dosbox_opl3.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Interfaces over Yamaha OPL3 (YMF262) chip emulators 3 | * 4 | * Copyright (C) 2017-2018 Vitaly Novichkov (Wohlstand) 5 | * 6 | * This library is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * This library is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this library; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef DOSBOX_OPL3_H 22 | #define DOSBOX_OPL3_H 23 | 24 | #include "opl_chip_base.h" 25 | 26 | namespace ADL { 27 | 28 | class DosBoxOPL3 final : public OPLChipBaseBufferedT 29 | { 30 | void *m_chip; 31 | public: 32 | DosBoxOPL3(); 33 | ~DosBoxOPL3() override; 34 | 35 | bool canRunAtPcmRate() const override { return true; } 36 | void setRate(uint32_t rate) override; 37 | void reset() override; 38 | void writeReg(uint16_t addr, uint8_t data) override; 39 | void nativePreGenerate() override {} 40 | void nativePostGenerate() override {} 41 | void nativeGenerateN(int16_t *output, size_t frames) override; 42 | const char *emulatorName() override; 43 | }; 44 | 45 | } // namespace ADL 46 | 47 | #endif // DOSBOX_OPL3_H 48 | -------------------------------------------------------------------------------- /sources/opl3/adl/measurer/measurer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * OPL Bank Editor by Wohlstand, a free tool for music bank editing 3 | * Copyright (c) 2016-2018 Vitaly Novichkov 4 | * 5 | * This program 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 | * any later version. 9 | * 10 | * This program 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 | 19 | #pragma once 20 | #include 21 | struct Instrument; 22 | 23 | namespace Measurer 24 | { 25 | struct DurationInfo 26 | { 27 | unsigned long peak_amplitude_time; 28 | double peak_amplitude_value; 29 | double quarter_amplitude_time; 30 | double begin_amplitude; 31 | double interval; 32 | double keyoff_out_time; 33 | unsigned long ms_sound_kon; 34 | unsigned long ms_sound_koff; 35 | bool nosound; 36 | }; 37 | 38 | void ComputeDurations(const Instrument &in, DurationInfo &result); 39 | }; 40 | -------------------------------------------------------------------------------- /sources/opl3/ui/components/algorithms.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | namespace Algorithms { 9 | 10 | static const char16_t algorithm_2fm[] = 11 | u"┌┐\n" 12 | u"│1\n" 13 | u"└┤\n" 14 | u" 2"; 15 | 16 | static const char16_t algorithm_2am[] = 17 | u"┌┐ \n" 18 | u"│1 2\n" 19 | u"└┴─┘\n"; 20 | 21 | static const char16_t algorithm_4fmfm[] = 22 | u"┌┐\n" 23 | u"│1\n" 24 | u"└┤\n" 25 | u" 2\n" 26 | u" │\n" 27 | u" 3\n" 28 | u" │\n" 29 | u" 4"; 30 | 31 | static const char16_t algorithm_4amfm[] = 32 | u" \n" 33 | u" 2\n" 34 | u" │\n" 35 | u" 3\n" 36 | u"┌┐ │\n" 37 | u"│1 4\n" 38 | u"└┴─┘"; 39 | 40 | static const char16_t algorithm_4fmam[] = 41 | u"┌┐ \n" 42 | u"│1 3\n" 43 | u"└┤ │\n" 44 | u" 2 4\n" 45 | u" └─┘"; 46 | 47 | static const char16_t algorithm_4amam[] = 48 | u" \n" 49 | u" 2 \n" 50 | u"┌┐ │ \n" 51 | u"│1 3 4\n" 52 | u"└┴─┴─┘"; 53 | 54 | } // namespace Algorithms 55 | -------------------------------------------------------------------------------- /sources/opl3/ui/components/opl3_waves.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "ui/components/waves.h" 8 | 9 | class OPL3_Waves : public Waves 10 | { 11 | public: 12 | unsigned wave_count() const override { return 8; } 13 | double compute_wave(unsigned wave, double phase) const override; 14 | }; 15 | -------------------------------------------------------------------------------- /sources/opn2/adl/chip_settings.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | 9 | struct Emulator_Defaults; 10 | Emulator_Defaults &get_emulator_defaults(); 11 | 12 | struct Emulator_Defaults { 13 | StringArray choices; 14 | std::unique_ptr images; 15 | unsigned default_index = 0; 16 | }; 17 | 18 | struct Chip_Settings { 19 | unsigned emulator = 0; 20 | unsigned chip_count = 2; 21 | unsigned chip_type = 0; 22 | 23 | PropertySet to_properties() const; 24 | static Chip_Settings from_properties(const PropertySet &set); 25 | }; 26 | 27 | inline bool operator==(const Chip_Settings &a, const Chip_Settings &b) 28 | { 29 | return a.emulator == b.emulator && a.chip_count == b.chip_count && a.chip_type == b.chip_type; 30 | } 31 | 32 | inline bool operator!=(const Chip_Settings &a, const Chip_Settings &b) 33 | { 34 | return !operator==(a, b); 35 | } 36 | -------------------------------------------------------------------------------- /sources/opn2/adl/measurer/chips/mame/mamedef.h: -------------------------------------------------------------------------------- 1 | #ifndef MAMEDEF_H_ 2 | #define MAMEDEF_H_ 3 | 4 | /* typedefs to use MAME's (U)INTxx types (copied from MAME\src\ods\odscomm.h) */ 5 | /* 8-bit values */ 6 | typedef unsigned char UINT8; 7 | typedef signed char INT8; 8 | 9 | /* 16-bit values */ 10 | typedef unsigned short UINT16; 11 | typedef signed short INT16; 12 | 13 | /* 32-bit values */ 14 | #ifndef _WINDOWS_H 15 | typedef unsigned int UINT32; 16 | typedef signed int INT32; 17 | #endif 18 | 19 | /* 64-bit values */ 20 | #ifndef _WINDOWS_H 21 | #ifdef _MSC_VER 22 | typedef signed __int64 INT64; 23 | typedef unsigned __int64 UINT64; 24 | #else 25 | __extension__ typedef unsigned long long UINT64; 26 | __extension__ typedef signed long long INT64; 27 | #endif 28 | #endif 29 | 30 | /* offsets and addresses are 32-bit (for now...) */ 31 | typedef UINT32 offs_t; 32 | 33 | /* stream_sample_t is used to represent a single sample in a sound stream */ 34 | typedef INT16 stream_sample_t; 35 | 36 | #if defined(VGM_BIG_ENDIAN) 37 | #define BYTE_XOR_BE(x) (x) 38 | #elif defined(VGM_LITTLE_ENDIAN) 39 | #define BYTE_XOR_BE(x) ((x) ^ 0x01) 40 | #else 41 | /* don't define BYTE_XOR_BE so that it throws an error when compiling */ 42 | #endif 43 | 44 | #if defined(_MSC_VER) 45 | //#define INLINE static __forceinline 46 | #define INLINE static __inline 47 | #elif defined(__GNUC__) 48 | #define INLINE static __inline__ 49 | #else 50 | #define INLINE static inline 51 | #endif 52 | 53 | #ifndef M_PI 54 | #define M_PI 3.14159265358979323846 55 | #endif 56 | 57 | #ifdef _DEBUG 58 | #define logerror printf 59 | #else 60 | #define logerror 61 | #endif 62 | 63 | typedef void (*SRATE_CALLBACK)(void*, UINT32); 64 | 65 | #endif /* __MAMEDEF_H__ */ 66 | -------------------------------------------------------------------------------- /sources/opn2/adl/measurer/chips/mame_opn2.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Interfaces over Yamaha OPN2 (YM2612) chip emulators 3 | * 4 | * Copyright (C) 2017-2018 Vitaly Novichkov (Wohlstand) 5 | * 6 | * This library is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * This library is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this library; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #include "mame_opn2.h" 22 | #include "mame/mame_ym2612fm.h" 23 | #include 24 | #include 25 | 26 | namespace OPN { 27 | 28 | MameOPN2::MameOPN2() 29 | { 30 | chip = NULL; 31 | setRate(m_rate, m_clock); 32 | } 33 | 34 | MameOPN2::~MameOPN2() 35 | { 36 | ym2612_shutdown(chip); 37 | } 38 | 39 | void MameOPN2::setRate(uint32_t rate, uint32_t clock) 40 | { 41 | OPNChipBaseT::setRate(rate, clock); 42 | if(chip) 43 | ym2612_shutdown(chip); 44 | uint32_t chipRate = isRunningAtPcmRate() ? rate : static_cast(nativeRate); 45 | chip = ym2612_init(NULL, (int)clock, (int)chipRate, NULL, NULL); 46 | ym2612_reset_chip(chip); 47 | } 48 | 49 | void MameOPN2::reset() 50 | { 51 | OPNChipBaseT::reset(); 52 | ym2612_reset_chip(chip); 53 | } 54 | 55 | void MameOPN2::writeReg(uint32_t port, uint16_t addr, uint8_t data) 56 | { 57 | ym2612_write(chip, 0 + (int)(port) * 2, (uint8_t)addr); 58 | ym2612_write(chip, 1 + (int)(port) * 2, data); 59 | } 60 | 61 | void MameOPN2::nativePreGenerate() 62 | { 63 | void *chip = this->chip; 64 | ym2612_pre_generate(chip); 65 | } 66 | 67 | void MameOPN2::nativeGenerate(int16_t *frame) 68 | { 69 | void *chip = this->chip; 70 | ym2612_generate_one_native(chip, frame); 71 | } 72 | 73 | const char *MameOPN2::emulatorName() 74 | { 75 | return "MAME YM2612"; 76 | } 77 | 78 | } // namespace OPN 79 | -------------------------------------------------------------------------------- /sources/opn2/adl/measurer/chips/mame_opn2.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Interfaces over Yamaha OPN2 (YM2612) chip emulators 3 | * 4 | * Copyright (C) 2017-2018 Vitaly Novichkov (Wohlstand) 5 | * 6 | * This library is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * This library is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this library; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef MAME_OPN2_H 22 | #define MAME_OPN2_H 23 | 24 | #include "opn_chip_base.h" 25 | 26 | namespace OPN { 27 | 28 | class MameOPN2 final : public OPNChipBaseT 29 | { 30 | void *chip; 31 | public: 32 | MameOPN2(); 33 | ~MameOPN2() override; 34 | 35 | bool canRunAtPcmRate() const override { return true; } 36 | void setRate(uint32_t rate, uint32_t clock) override; 37 | void reset() override; 38 | void writeReg(uint32_t port, uint16_t addr, uint8_t data) override; 39 | void nativePreGenerate() override; 40 | void nativePostGenerate() override {} 41 | void nativeGenerate(int16_t *frame) override; 42 | const char *emulatorName() override; 43 | }; 44 | 45 | } // namespace OPN 46 | 47 | #endif // MAME_OPN2_H 48 | -------------------------------------------------------------------------------- /sources/opn2/adl/measurer/measurer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * OPN2 Bank Editor by Wohlstand, a free tool for music bank editing 3 | * Copyright (c) 2017-2018 Vitaly Novichkov 4 | * 5 | * This program 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 | * any later version. 9 | * 10 | * This program 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 | 19 | #pragma once 20 | #include 21 | struct Instrument; 22 | 23 | namespace Measurer 24 | { 25 | struct DurationInfo 26 | { 27 | uint64_t peak_amplitude_time; 28 | double peak_amplitude_value; 29 | double quarter_amplitude_time; 30 | double begin_amplitude; 31 | double interval; 32 | double keyoff_out_time; 33 | int64_t ms_sound_kon; 34 | int64_t ms_sound_koff; 35 | bool nosound; 36 | }; 37 | void ComputeDurations(const Instrument &in, DurationInfo &result); 38 | }; 39 | -------------------------------------------------------------------------------- /sources/opn2/ui/components/algorithms.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | namespace Algorithms { 9 | 10 | static const char16_t algorithm_0[] = 11 | u"┌┐\n" 12 | u"│1\n" 13 | u"└┤\n" 14 | u" 2\n" 15 | u" │\n" 16 | u" 3\n" 17 | u" │\n" 18 | u" 4"; 19 | 20 | static const char16_t algorithm_1[] = 21 | u"┌┐\n" 22 | u"│1 2\n" 23 | u"└┤ │\n" 24 | u" 3─┘\n" 25 | u" │\n" 26 | u" 4"; 27 | 28 | static const char16_t algorithm_2[] = 29 | u"┌┐\n" 30 | u"│1 2\n" 31 | u"└┤ │\n" 32 | u" ├─3\n" 33 | u" │\n" 34 | u" 4"; 35 | 36 | static const char16_t algorithm_3[] = 37 | u"┌┐\n" 38 | u"│1 3\n" 39 | u"└┤ │\n" 40 | u" 2 │\n" 41 | u" ├─┘\n" 42 | u" 4"; 43 | 44 | static const char16_t algorithm_4[] = 45 | u"┌┐\n" 46 | u"│1 3\n" 47 | u"└┤ │\n" 48 | u" 2 4\n" 49 | u" └─┘"; 50 | 51 | static const char16_t algorithm_5[] = 52 | u"┌┐\n" 53 | u"│1\n" 54 | u"└┼─┬─┐\n" 55 | u" 2 3 4\n" 56 | u" └─┴─┘"; 57 | 58 | static const char16_t algorithm_6[] = 59 | u"┌┐\n" 60 | u"│1\n" 61 | u"└┤\n" 62 | u" 2 3 4\n" 63 | u" └─┴─┘"; 64 | 65 | static const char16_t algorithm_7[] = 66 | u"┌┐\n" 67 | u"│1 2 3 4\n" 68 | u"└┴─┴─┴─┘"; 69 | 70 | } // namespace Algorithms 71 | -------------------------------------------------------------------------------- /sources/opn2/ui/components/ssgeg_waves.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "ssgeg_waves.h" 7 | 8 | double SSGEG_Waves::compute_wave(unsigned wave, double phase) const 9 | { 10 | wave = wave & 7; 11 | 12 | const unsigned num_periods = num_periods_; 13 | 14 | if (num_periods == 0) 15 | return 0.0; 16 | 17 | phase = (phase < 0) ? 0 : phase; 18 | phase = (phase > 1) ? 1 : phase; 19 | 20 | phase *= num_periods; 21 | unsigned period = (unsigned)phase; 22 | period = (period < num_periods) ? period : (num_periods - 1); 23 | phase -= period; 24 | 25 | bool att = (wave & 4) != 0; 26 | bool alt = (wave & 2) != 0; 27 | bool hold = (wave & 1) != 0; 28 | 29 | if (period > 0 && hold) // Hold 30 | return (att ^ alt) ? 1.0 : -1.0; 31 | 32 | int dir = att ? +1 : -1; 33 | dir = (alt && (period & 1) != 0) ? -dir : dir; 34 | 35 | double d = phase * 2 - 1; 36 | return (dir == +1) ? +d : -d; 37 | } 38 | -------------------------------------------------------------------------------- /sources/opn2/ui/components/ssgeg_waves.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "ui/components/waves.h" 8 | 9 | class SSGEG_Waves : public Waves 10 | { 11 | public: 12 | unsigned wave_count() const override { return 8; } 13 | double compute_wave(unsigned wave, double phase) const override; 14 | 15 | private: 16 | unsigned num_periods_ = 4; 17 | }; 18 | -------------------------------------------------------------------------------- /sources/parameter_block.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | #include "utility/processor_ex.h" 9 | #include "utility/parameter_ex.h" 10 | #include 11 | #include 12 | 13 | struct Basic_Parameter_Block { 14 | template 15 | TypedAudioParameter *add_automatable_parameter(AudioProcessorEx &p, int tag, Arg &&... args); 16 | 17 | template 18 | TypedAudioParameter *add_parameter(AudioProcessorEx &p, int tag, Arg &&... args); 19 | 20 | template 21 | TypedAudioParameter *add_internal_parameter(AudioProcessorEx &p, int tag, Arg &&... args); 22 | 23 | int external_parameter_tag(unsigned parameter_index) const 24 | { return tag_of_external_parameter_[parameter_index]; } 25 | 26 | private: 27 | template 28 | T *do_add_parameter(AudioProcessorEx &p, int tag, Arg &&... args); 29 | 30 | template 31 | T *do_add_internal_parameter(AudioProcessorEx &p, int tag, Arg &&... args); 32 | 33 | std::vector> internal_parameters_; 34 | std::vector tag_of_external_parameter_; 35 | }; 36 | 37 | #if defined(ADLPLUG_OPL3) 38 | #include "opl3/parameter_block.h" 39 | #elif defined(ADLPLUG_OPN2) 40 | #include "opn2/parameter_block.h" 41 | #endif 42 | 43 | #include "parameter_block.tcc" 44 | -------------------------------------------------------------------------------- /sources/parameter_block.tcc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "parameter_block.h" 7 | #include 8 | 9 | template 10 | inline TypedAudioParameter *Basic_Parameter_Block::add_automatable_parameter(AudioProcessorEx &p, int tag, Arg &&... args) 11 | { 12 | TypedAudioParameter *par = do_add_parameter>(p, tag, std::forward(args)...); 13 | par->setAutomatable(true); 14 | return par; 15 | } 16 | 17 | template 18 | inline TypedAudioParameter *Basic_Parameter_Block::add_parameter(AudioProcessorEx &p, int tag, Arg &&... args) 19 | { 20 | TypedAudioParameter *par = do_add_parameter>(p, tag, std::forward(args)...); 21 | par->setAutomatable(false); 22 | return par; 23 | } 24 | 25 | template 26 | inline TypedAudioParameter *Basic_Parameter_Block::add_internal_parameter(AudioProcessorEx &p, int tag, Arg &&... args) 27 | { 28 | TypedAudioParameter *par = do_add_internal_parameter>(p, tag, std::forward(args)...); 29 | par->setAutomatable(false); 30 | return par; 31 | } 32 | 33 | template 34 | inline T *Basic_Parameter_Block::do_add_parameter(AudioProcessorEx &p, int tag, Arg &&... args) 35 | { 36 | std::unique_ptr parameter(new T(std::forward(args)...)); 37 | tag_of_external_parameter_.push_back(tag); 38 | p.addParameter(parameter.get()); 39 | parameter->setTagEx(tag); 40 | parameter->addValueChangedListenerEx(&p); 41 | return parameter.release(); 42 | } 43 | 44 | template 45 | inline T *Basic_Parameter_Block::do_add_internal_parameter(AudioProcessorEx &p, int tag, Arg &&... args) 46 | { 47 | std::unique_ptr parameter(new T(std::forward(args)...)); 48 | internal_parameters_.emplace_back(parameter.get()); 49 | parameter->setTagEx(tag); 50 | parameter->addValueChangedListenerEx(&p); 51 | return parameter.release(); 52 | } 53 | -------------------------------------------------------------------------------- /sources/pch/ADLplug_core.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "ADLplug_core.h" 7 | -------------------------------------------------------------------------------- /sources/pch/ADLplug_core.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | -------------------------------------------------------------------------------- /sources/plugin_editor.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | #include "JuceHeader.h" 9 | class AdlplugAudioProcessor; 10 | class Custom_Look_And_Feel; 11 | class Main_Component; 12 | struct Parameter_Block; 13 | class Configuration; 14 | 15 | //============================================================================== 16 | /** 17 | */ 18 | class AdlplugAudioProcessorEditor : public AudioProcessorEditor { 19 | public: 20 | AdlplugAudioProcessorEditor(AdlplugAudioProcessor &, Parameter_Block &); 21 | ~AdlplugAudioProcessorEditor(); 22 | 23 | //========================================================================== 24 | void paint(Graphics &) override; 25 | void resized() override; 26 | 27 | private: 28 | AdlplugAudioProcessor &proc_; 29 | std::unique_ptr lnf_; 30 | std::unique_ptr main_; 31 | std::unique_ptr tooltip_window_; 32 | 33 | std::unique_ptr notification_timer_; 34 | std::unique_ptr conf_; 35 | 36 | void process_notifications(); 37 | void discard_notifications(); 38 | 39 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AdlplugAudioProcessorEditor) 40 | }; 41 | -------------------------------------------------------------------------------- /sources/plugin_state.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2019. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "plugin_state.h" 7 | #include "parameter_block.h" 8 | #include "adl/chip_settings.h" 9 | #include "adl/player.h" 10 | 11 | Chip_Settings get_player_chip_settings(const Player &pl) 12 | { 13 | Chip_Settings cs; 14 | cs.emulator = pl.emulator(); 15 | cs.chip_count = pl.num_chips(); 16 | #if defined(ADLPLUG_OPL3) 17 | cs.fourop_count = pl.num_4ops(); 18 | #elif defined(ADLPLUG_OPN2) 19 | cs.chip_type = pl.chip_type(); 20 | #endif 21 | return cs; 22 | } 23 | 24 | Instrument_Global_Parameters get_player_global_parameters(const Player &pl) 25 | { 26 | Instrument_Global_Parameters gp; 27 | gp.volume_model = pl.volume_model() - 1; 28 | #if defined(ADLPLUG_OPL3) 29 | gp.deep_tremolo = pl.deep_tremolo(); 30 | gp.deep_vibrato = pl.deep_vibrato(); 31 | #elif defined(ADLPLUG_OPN2) 32 | gp.lfo_enable = pl.lfo_enabled(); 33 | gp.lfo_frequency = pl.lfo_frequency(); 34 | #endif 35 | return gp; 36 | } 37 | 38 | void set_player_chip_settings(Player &pl, const Chip_Settings &cs) 39 | { 40 | pl.set_emulator(cs.emulator); 41 | pl.set_num_chips(cs.chip_count); 42 | #if defined(ADLPLUG_OPL3) 43 | pl.set_num_4ops(cs.fourop_count); 44 | #elif defined(ADLPLUG_OPN2) 45 | pl.set_chip_type(cs.chip_type); 46 | #endif 47 | } 48 | 49 | void set_player_global_parameters(Player &pl, const Instrument_Global_Parameters &gp) 50 | { 51 | pl.set_volume_model(gp.volume_model + 1); 52 | #if defined(ADLPLUG_OPL3) 53 | pl.set_deep_tremolo(gp.deep_tremolo); 54 | pl.set_deep_vibrato(gp.deep_vibrato); 55 | #elif defined(ADLPLUG_OPN2) 56 | pl.set_lfo_enabled(gp.lfo_enable); 57 | pl.set_lfo_frequency(gp.lfo_frequency); 58 | #endif 59 | } 60 | -------------------------------------------------------------------------------- /sources/plugin_state.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2019. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include 8 | class Player; 9 | struct Parameter_Block; 10 | struct Instrument; 11 | struct Chip_Settings; 12 | struct Instrument_Global_Parameters; 13 | namespace juce { class XmlElement; } 14 | 15 | enum State_Change_Bit 16 | { 17 | Cb_ChipSettings, 18 | Cb_GlobalParameters, 19 | Cb_ActivePart, 20 | Cb_BankTitle, 21 | Cb_Instrument1, 22 | Cb_Instrument16 = Cb_Instrument1 + 15, 23 | Cb_Selection1, 24 | Cb_Selection16 = Cb_Selection1 + 15, 25 | Cb_Count, 26 | }; 27 | 28 | Chip_Settings get_player_chip_settings(const Player &pl); 29 | Instrument_Global_Parameters get_player_global_parameters(const Player &pl); 30 | void set_player_chip_settings(Player &pl, const Chip_Settings &cs); 31 | void set_player_global_parameters(Player &pl, const Instrument_Global_Parameters &gp); 32 | -------------------------------------------------------------------------------- /sources/plugin_version.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "AppConfig.h" 8 | 9 | #define ADLplug_Version JucePlugin_VersionString 10 | #define ADLplug_VersionFinal 1 11 | 12 | #if !ADLplug_VersionFinal 13 | # define ADLplug_VersionExtra "Beta 5" 14 | # define ADLplug_SemVer JucePlugin_VersionString "-beta.5" 15 | #else 16 | # define ADLplug_VersionExtra "" 17 | # define ADLplug_SemVer JucePlugin_VersionString 18 | #endif 19 | -------------------------------------------------------------------------------- /sources/resources.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include 8 | 9 | namespace Res { 10 | struct Data { 11 | const char *data; 12 | std::size_t size; 13 | }; 14 | } 15 | 16 | #if !defined(RESOURCE) 17 | #define RESOURCE(ns, x) namespace ns { extern ns::Data x; } 18 | #endif 19 | -------------------------------------------------------------------------------- /sources/ui/components/algorithm_component.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | 9 | class Algorithm_Component : public Component { 10 | public: 11 | explicit Algorithm_Component(const char16_t *algorithm) 12 | : algorithm_(algorithm) {} 13 | 14 | void scale(double s); 15 | void paint(Graphics &g) override; 16 | 17 | private: 18 | const char16_t *algorithm_ = 0; 19 | double scale_ = 24.0; 20 | }; 21 | -------------------------------------------------------------------------------- /sources/ui/components/indicator_NxM.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "ui/components/indicator_NxM.h" 7 | 8 | Indicator_NxM::Indicator_NxM(unsigned rows, unsigned cols) 9 | : rows_(rows), bits_(rows * cols) 10 | { 11 | } 12 | 13 | bool Indicator_NxM::value(unsigned row, unsigned col) 14 | { 15 | unsigned index = index_from(row, col); 16 | if (index >= bits_.size()) 17 | return false; 18 | return bits_[index]; 19 | } 20 | 21 | void Indicator_NxM::set_value(unsigned row, unsigned col, bool value) 22 | { 23 | unsigned index = index_from(row, col); 24 | if (index >= bits_.size()) 25 | return; 26 | if (bits_[index] != value) { 27 | bits_[index] = value; 28 | repaint(); 29 | } 30 | } 31 | 32 | void Indicator_NxM::paint(Graphics &g) 33 | { 34 | Rectangle bounds = getLocalBounds().toType(); 35 | LookAndFeel &lnf = getLookAndFeel(); 36 | 37 | Colour colour_on = Colour::fromRGBA(0xdf, 0xf0, 0xff, 0xff); 38 | Colour colour_off = lnf.findColour(Label::backgroundColourId); 39 | Colour colour_outline = Colour::fromRGBA(0x8e, 0x98, 0x9b, 0xff); 40 | 41 | unsigned rows = this->rows(); 42 | unsigned columns = this->columns(); 43 | if (rows == 0 || columns == 0) 44 | return; 45 | 46 | float w1 = bounds.getWidth() / columns; 47 | float h1 = bounds.getHeight() / rows; 48 | for (unsigned r = 0; r < rows; ++r) { 49 | for (unsigned c = 0; c < columns; ++c) { 50 | Point origin = 51 | bounds.getTopLeft() + Point(c * w1, r * h1); 52 | Rectangle rect(origin.getX(), origin.getY(), w1, h1); 53 | rect.reduce(1, 1); 54 | bool value = this->value(r, c); 55 | Colour colour = value ? colour_on : colour_off; 56 | g.setColour(colour); 57 | g.fillRect(rect); 58 | g.setColour(colour_outline); 59 | g.drawRect(rect); 60 | } 61 | } 62 | } 63 | 64 | unsigned Indicator_NxM::index_from(unsigned row, unsigned column) 65 | { 66 | return rows_ * column + row; 67 | } 68 | -------------------------------------------------------------------------------- /sources/ui/components/indicator_NxM.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | #include 9 | 10 | class Indicator_NxM : public Component 11 | { 12 | public: 13 | Indicator_NxM(unsigned rows, unsigned cols); 14 | 15 | bool value(unsigned row, unsigned column); 16 | void set_value(unsigned row, unsigned column, bool value); 17 | 18 | unsigned rows() const 19 | { return rows_; } 20 | unsigned columns() const 21 | { return bits_.size() / rows_; } 22 | 23 | protected: 24 | void paint(Graphics &g) override; 25 | 26 | private: 27 | unsigned rows_; 28 | std::vector bits_; 29 | unsigned index_from(unsigned row, unsigned column); 30 | }; 31 | -------------------------------------------------------------------------------- /sources/ui/components/info_display.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | 9 | class Info_Display : protected Timer { 10 | public: 11 | virtual ~Info_Display() {} 12 | 13 | void set_default_info(const String &text); 14 | void display_info(const String &text); 15 | void expire_info_in(unsigned timeout = 3000); 16 | 17 | protected: 18 | virtual void display_info_now(const String &text) = 0; 19 | 20 | private: 21 | void timerCallback() override; 22 | String default_text_; 23 | }; 24 | 25 | //============================================================================== 26 | inline void Info_Display::set_default_info(const String &text) 27 | { 28 | default_text_ = text; 29 | } 30 | 31 | inline void Info_Display::display_info(const String &text) 32 | { 33 | stopTimer(); 34 | display_info_now(text); 35 | } 36 | 37 | inline void Info_Display::expire_info_in(unsigned timeout) 38 | { 39 | startTimer(timeout); 40 | } 41 | 42 | inline void Info_Display::timerCallback() 43 | { 44 | stopTimer(); 45 | display_info_now(default_text_); 46 | } 47 | -------------------------------------------------------------------------------- /sources/ui/components/midi_keyboard_ex.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | 9 | // XXX(jpc) a hack so we don't need to link the whole `juce_audio_utils` 10 | namespace ex { 11 | #include 12 | } 13 | 14 | class Midi_Keyboard_Ex : public ex::juce::MidiKeyboardComponent { 15 | public: 16 | Midi_Keyboard_Ex(MidiKeyboardState &state, Orientation orientation); 17 | void highlight_note(unsigned note, unsigned velocity); 18 | void designate_note(int note); 19 | 20 | protected: 21 | void colourChanged() override; 22 | void drawWhiteNote(int note, Graphics &g, Rectangle area, bool is_down, bool is_over, Colour line_colour, Colour text_colour) override; 23 | void drawBlackNote(int note, Graphics &g, Rectangle area, bool is_down, bool is_over, Colour note_fill_colour) override; 24 | 25 | private: 26 | uint8_t highlight_value_[128] = {}; 27 | int designated_note_ = -1; 28 | Colour designated_note_color_; 29 | bool block_colour_changed_callback_ = false; // stops excessive repaints 30 | 31 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Midi_Keyboard_Ex); 32 | }; 33 | -------------------------------------------------------------------------------- /sources/ui/components/styled_knobs.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "ui/components/styled_knobs.h" 7 | #include "resources.h" 8 | 9 | RESOURCE(Res, knob_skin); 10 | RESOURCE(Res, slider_skin); 11 | 12 | Km_Skin_Ptr Styled_Knob_Default::skin_; 13 | 14 | Km_Skin *Styled_Knob_Default::style_skin() 15 | { 16 | if (!skin_) { 17 | Km_Skin_Ptr skin(new Km_Skin); 18 | skin->load_data(Res::knob_skin.data, Res::knob_skin.size, 64); 19 | skin_ = skin; 20 | } 21 | return skin_.get(); 22 | } 23 | 24 | //------------------------------------------------------------------------------ 25 | Km_Skin_Ptr Styled_Knob_DefaultSmall::skin_; 26 | 27 | Km_Skin *Styled_Knob_DefaultSmall::style_skin() 28 | { 29 | if (!skin_) 30 | skin_ = Styled_Knob_Default::style_skin()->scaled(0.7); 31 | return skin_.get(); 32 | } 33 | 34 | //------------------------------------------------------------------------------ 35 | Km_Skin_Ptr Styled_Slider_Default::skin_; 36 | 37 | Km_Skin *Styled_Slider_Default::style_skin() 38 | { 39 | if (!skin_) { 40 | Km_Skin_Ptr skin(new Km_Skin); 41 | skin->load_data(Res::slider_skin.data, Res::slider_skin.size, 64); 42 | skin->style = Km_LinearHorizontal; 43 | skin_ = skin; 44 | } 45 | return skin_.get(); 46 | } 47 | 48 | //------------------------------------------------------------------------------ 49 | Km_Skin_Ptr Styled_Slider_DefaultSmall::skin_; 50 | 51 | Km_Skin *Styled_Slider_DefaultSmall::style_skin() 52 | { 53 | if (!skin_) 54 | skin_ = Styled_Slider_Default::style_skin()->scaled(0.5); 55 | return skin_.get(); 56 | } 57 | 58 | //------------------------------------------------------------------------------ 59 | namespace Styled_Knobs 60 | { 61 | void release_skins() 62 | { 63 | #define RELEASE_SKIN(T) Styled_##T::release_skin(); 64 | EACH_STYLED_KNOB(RELEASE_SKIN); 65 | #undef RELEASE_SKIN 66 | } 67 | }; 68 | -------------------------------------------------------------------------------- /sources/ui/components/styled_knobs.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "ui/components/knob_component.h" 8 | #include "ui/utility/knobman_skin.h" 9 | 10 | #define EACH_STYLED_KNOB(F, ...) \ 11 | F(Knob_Default, ##__VA_ARGS__) \ 12 | F(Knob_DefaultSmall, ##__VA_ARGS__) \ 13 | F(Slider_Default, ##__VA_ARGS__) \ 14 | F(Slider_DefaultSmall, ##__VA_ARGS__) 15 | 16 | class Styled_Knob_Default : public Knob 17 | { 18 | public: 19 | Styled_Knob_Default() { set_skin(style_skin()); } 20 | static Km_Skin *style_skin(); 21 | static void release_skin() { skin_ = nullptr; } 22 | private: 23 | static Km_Skin_Ptr skin_; 24 | }; 25 | 26 | //------------------------------------------------------------------------------ 27 | class Styled_Knob_DefaultSmall : public Knob 28 | { 29 | public: 30 | Styled_Knob_DefaultSmall() { set_skin(style_skin()); } 31 | static Km_Skin *style_skin(); 32 | static void release_skin() { skin_ = nullptr; } 33 | private: 34 | static Km_Skin_Ptr skin_; 35 | }; 36 | 37 | //------------------------------------------------------------------------------ 38 | class Styled_Slider_Default : public Knob 39 | { 40 | public: 41 | Styled_Slider_Default() { set_skin(style_skin()); } 42 | static Km_Skin *style_skin(); 43 | static void release_skin() { skin_ = nullptr; } 44 | private: 45 | static Km_Skin_Ptr skin_; 46 | }; 47 | 48 | //------------------------------------------------------------------------------ 49 | class Styled_Slider_DefaultSmall : public Knob 50 | { 51 | public: 52 | Styled_Slider_DefaultSmall() { set_skin(style_skin()); } 53 | static Km_Skin *style_skin(); 54 | static void release_skin() { skin_ = nullptr; } 55 | private: 56 | static Km_Skin_Ptr skin_; 57 | }; 58 | 59 | //------------------------------------------------------------------------------ 60 | namespace Styled_Knobs 61 | { 62 | void release_skins(); 63 | }; 64 | -------------------------------------------------------------------------------- /sources/ui/components/vu_meter.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | 9 | class Vu_Meter : public Component 10 | { 11 | public: 12 | Vu_Meter(); 13 | explicit Vu_Meter(const String &name); 14 | 15 | double value() const 16 | { return value_; } 17 | void set_value(double value); 18 | 19 | bool logarithmic() const 20 | { return logarithmic_; } 21 | void set_logarithmic(bool logarithmic); 22 | 23 | void set_hue(double start, double range); 24 | void set_num_stops(unsigned num_stops); 25 | 26 | protected: 27 | void paint(Graphics &g) override; 28 | 29 | private: 30 | void update_gradient(); 31 | 32 | private: 33 | double value_ = 1.0; 34 | bool logarithmic_ = false; 35 | double hue_start_ = 0.0; 36 | double hue_range_ = 0.0; 37 | unsigned num_stops_ = 10; 38 | ColourGradient gradient_; 39 | }; 40 | -------------------------------------------------------------------------------- /sources/ui/components/wave_label.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | class Waves; 9 | 10 | class Wave_Label : public Component, 11 | public AsyncUpdater 12 | { 13 | public: 14 | explicit Wave_Label(const Waves &waves); 15 | explicit Wave_Label(const Waves &waves, const String &name); 16 | 17 | unsigned wave() const 18 | { return wave_; } 19 | void set_wave(unsigned wave, NotificationType notification); 20 | 21 | class Listener { 22 | public: 23 | virtual ~Listener() {} 24 | virtual void wave_changed(Wave_Label *k) {} 25 | }; 26 | 27 | void add_listener(Listener *l); 28 | void remove_listener(Listener *l); 29 | 30 | #if 0 31 | std::function on_wave_change; 32 | #endif 33 | 34 | protected: 35 | void handleAsyncUpdate() override; 36 | void paint(Graphics &g) override; 37 | 38 | private: 39 | const Waves &waves_; 40 | unsigned wave_ = 0; 41 | ListenerList listeners_; 42 | }; 43 | -------------------------------------------------------------------------------- /sources/ui/components/waves.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | class Waves { 9 | public: 10 | virtual ~Waves() {} 11 | virtual unsigned wave_count() const = 0; 12 | virtual double compute_wave(unsigned wave, double phase) const = 0; 13 | }; 14 | -------------------------------------------------------------------------------- /sources/ui/main_component.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | #if defined(ADLPLUG_OPL3) 9 | #include "../opl3/ui/main_component.h" 10 | #elif defined(ADLPLUG_OPN2) 11 | #include "../opn2/ui/main_component.h" 12 | #endif 13 | -------------------------------------------------------------------------------- /sources/ui/utility/graphics.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "ui/utility/graphics.h" 7 | 8 | namespace Graphics_Utils { 9 | 10 | void draw_placeholder(Graphics &g, Rectangle bounds) 11 | { 12 | g.saveState(); 13 | g.setColour(Colour::fromRGB(0xff, 0x00, 0x00)); 14 | g.drawRect(bounds); 15 | Point tl = bounds.getTopLeft(); 16 | Point tr = bounds.getTopRight(); 17 | Point bl = bounds.getBottomLeft(); 18 | Point br = bounds.getBottomRight(); 19 | g.drawLine(tl.getX(), tl.getY(), br.getX(), br.getY()); 20 | g.drawLine(tr.getX(), tr.getY(), bl.getX(), bl.getY()); 21 | g.restoreState(); 22 | } 23 | 24 | } // namespace Graphics_Utils 25 | -------------------------------------------------------------------------------- /sources/ui/utility/graphics.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | 9 | namespace Graphics_Utils { 10 | 11 | void draw_placeholder(Graphics &g, Rectangle bounds); 12 | 13 | } // namespace Graphics_Utils 14 | -------------------------------------------------------------------------------- /sources/ui/utility/image.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "ui/utility/image.h" 7 | 8 | namespace Image_Utils { 9 | 10 | Rectangle get_image_solid_area(const Image &img) 11 | { 12 | Rectangle bounds = img.getBounds(); 13 | 14 | auto col_transparent = 15 | [&](int c) -> bool { 16 | for (int r = 0, h = img.getHeight(); r < h; ++r) 17 | if (img.getPixelAt(c, r).getAlpha() > 0) 18 | return false; 19 | return true; 20 | }; 21 | auto row_transparent = 22 | [&](int r) -> bool { 23 | for (int c = 0, w = img.getWidth(); c < w; ++c) 24 | if (img.getPixelAt(c, r).getAlpha() > 0) 25 | return false; 26 | return true; 27 | }; 28 | 29 | while (bounds.getWidth() > 0 && col_transparent(bounds.getRight())) 30 | bounds.removeFromRight(1); 31 | while (bounds.getHeight() > 0 && row_transparent(bounds.getBottom())) 32 | bounds.removeFromBottom(1); 33 | 34 | int nleft = 0; 35 | int ntop = 0; 36 | while (nleft < bounds.getWidth() && col_transparent(nleft)) 37 | ++nleft; 38 | while (ntop < bounds.getHeight() && col_transparent(ntop)) 39 | ++ntop; 40 | 41 | bounds.removeFromLeft(nleft); 42 | bounds.removeFromTop(ntop); 43 | return bounds; 44 | } 45 | 46 | } // namespace Image_Utils 47 | -------------------------------------------------------------------------------- /sources/ui/utility/image.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | 9 | namespace Image_Utils { 10 | 11 | Rectangle get_image_solid_area(const Image &img); 12 | 13 | } // namespace Image_Utils 14 | -------------------------------------------------------------------------------- /sources/ui/utility/key_maps.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | #include "../components/midi_keyboard_ex.h" 9 | #include 10 | #include 11 | class Configuration; 12 | 13 | enum class Key_Layout { 14 | Qwerty, Qwertz, Azerty, 15 | Default = Qwerty, 16 | }; 17 | 18 | extern const std::array key_layout_names; 19 | extern const std::array key_layout_maps; 20 | 21 | Key_Layout set_key_layout(Midi_Keyboard_Ex &kb, Key_Layout layout, Configuration &conf); 22 | Key_Layout load_key_configuration(Midi_Keyboard_Ex &kb, Configuration &conf); 23 | void build_key_layout_menu(PopupMenu &menu, Key_Layout current); 24 | 25 | const char *name_of_key_layout(Key_Layout layout); 26 | Key_Layout key_layout_of_name(const char *name); 27 | -------------------------------------------------------------------------------- /sources/ui/utility/knobman_skin.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "ui/utility/knobman_skin.h" 7 | #include "ui/utility/image.h" 8 | #include "resources.h" 9 | #include 10 | 11 | void Km_Skin::load(const Image &img, unsigned frame_count) 12 | { 13 | std::vector &frames = this->frames; 14 | frames.resize(frame_count); 15 | if (frame_count == 0) 16 | return; 17 | 18 | int w = img.getWidth(); 19 | int h = img.getHeight(); 20 | int hframe = h / frame_count; 21 | Rectangle frame_area (0, 0, w, hframe); 22 | for (unsigned i = 0; i < frame_count; ++i) { 23 | Rectangle bounds(0, i * hframe, w, hframe); 24 | frames[i] = img.getClippedImage(bounds); 25 | } 26 | 27 | // crop transparent bounds 28 | Rectangle opaque_bounds = Image_Utils::get_image_solid_area(frames[0]); 29 | for (unsigned i = 1; i < frame_count; ++i) 30 | opaque_bounds = opaque_bounds.getUnion(Image_Utils::get_image_solid_area(frames[i])); 31 | for (unsigned i = 0; i < frame_count; ++i) 32 | frames[i] = frames[i].getClippedImage(opaque_bounds); 33 | } 34 | 35 | void Km_Skin::load_data(const char *data, unsigned size, unsigned frame_count) 36 | { 37 | Image img = ImageFileFormat::loadFrom(data, size); 38 | load(img, frame_count); 39 | } 40 | 41 | void Km_Skin::load_resource(const Res::Data &data, unsigned frame_count) 42 | { 43 | load_data(data.data, data.size, frame_count); 44 | } 45 | 46 | Km_Skin_Ptr Km_Skin::scaled(double ratio) const 47 | { 48 | Km_Skin_Ptr skin = new Km_Skin; 49 | skin->style = this->style; 50 | 51 | size_t frame_count = this->frames.size(); 52 | skin->frames.resize(frame_count); 53 | if (frame_count == 0) 54 | return skin; 55 | 56 | int orig_w = this->frames[0].getWidth(); 57 | int orig_h = this->frames[0].getHeight(); 58 | int new_w = (int)std::lround(orig_w * ratio); 59 | int new_h = (int)std::lround(orig_h * ratio); 60 | for (size_t i = 0; i < frame_count; ++i) 61 | skin->frames[i] = this->frames[i].rescaled(new_w, new_h, Graphics::highResamplingQuality); 62 | 63 | return skin; 64 | } 65 | -------------------------------------------------------------------------------- /sources/ui/utility/knobman_skin.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | #include 9 | namespace Res { struct Data; }; 10 | 11 | class Km_Skin; 12 | typedef ReferenceCountedObjectPtr Km_Skin_Ptr; 13 | 14 | enum Km_Style 15 | { 16 | Km_Rotary, 17 | Km_LinearHorizontal, 18 | }; 19 | 20 | class Km_Skin : public ReferenceCountedObject 21 | { 22 | public: 23 | Km_Style style = Km_Rotary; 24 | std::vector frames; 25 | explicit operator bool() const { return !frames.empty(); } 26 | 27 | void load(const Image &img, unsigned frame_count); 28 | void load_data(const char *data, unsigned size, unsigned frame_count); 29 | void load_resource(const Res::Data &data, unsigned frame_count); 30 | 31 | Km_Skin_Ptr scaled(double ratio) const; 32 | 33 | private: 34 | JUCE_LEAK_DETECTOR(Km_Skin); 35 | }; 36 | -------------------------------------------------------------------------------- /sources/utility/counting_bitset.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include 8 | 9 | template 10 | struct counting_bitset { 11 | constexpr counting_bitset(); 12 | 13 | counting_bitset(const counting_bitset &) = default; 14 | counting_bitset &operator=(const counting_bitset &) = default; 15 | 16 | bool operator==(const counting_bitset &o) const; 17 | bool operator!=(const counting_bitset &o) const; 18 | 19 | bool test(size_t pos) const; 20 | 21 | bool all() const; 22 | bool any() const; 23 | bool none() const; 24 | 25 | size_t count() const; 26 | 27 | counting_bitset &set(); 28 | counting_bitset &set(size_t pos, bool value = true); 29 | 30 | counting_bitset &reset(); 31 | counting_bitset &reset(size_t pos); 32 | 33 | counting_bitset &flip(); 34 | counting_bitset &flip(size_t pos); 35 | 36 | template , class Allocator = std::allocator> 37 | std::basic_string to_string(CharT zero = CharT('0'), CharT one = CharT('1')) const; 38 | 39 | private: 40 | size_t count_ = 0; 41 | std::bitset bits_; 42 | }; 43 | 44 | #include "counting_bitset.tcc" 45 | -------------------------------------------------------------------------------- /sources/utility/field_bitops.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | 8 | namespace Field_Bitops { 9 | 10 | template 11 | inline T_result get(T_field x) noexcept 12 | { 13 | return (x >> shift) & ((1u << size) - 1); 14 | } 15 | 16 | template 17 | inline void set(T_field &x, T_value v) noexcept 18 | { 19 | constexpr unsigned mask = (1u << size) - 1; 20 | x = (x & ~(T_field)(mask << shift)) | ((v & mask) << shift); 21 | } 22 | 23 | template 24 | inline T_result get_inverted(T_field x) noexcept 25 | { 26 | constexpr T_result max = ((1u << size) - 1); 27 | return max - get(x); 28 | } 29 | 30 | template 31 | inline void set_inverted(T_field &x, T_value v) noexcept 32 | { 33 | constexpr T_value max = ((1u << size) - 1); 34 | set(x, max - v); 35 | } 36 | 37 | } // namespace Field_Bitops 38 | -------------------------------------------------------------------------------- /sources/utility/functional_timer.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | #include 9 | 10 | class Functional_Timer : public Timer { 11 | public: 12 | virtual ~Functional_Timer() {} 13 | template static Timer *create(T fn); 14 | template static Timer *create1(T fn); 15 | }; 16 | 17 | template 18 | class Functional_Timer_T : public Functional_Timer { 19 | public: 20 | explicit Functional_Timer_T(T fn) : fn_(std::move(fn)) {} 21 | void timerCallback() override { fn_(); } 22 | private: 23 | T fn_; 24 | }; 25 | 26 | template 27 | Timer *Functional_Timer::create(T fn) 28 | { 29 | return new Functional_Timer_T(std::move(fn)); 30 | } 31 | 32 | template 33 | class Functional_Timer1_T : public Functional_Timer { 34 | public: 35 | explicit Functional_Timer1_T(T fn) : fn_(std::move(fn)) {} 36 | void timerCallback() override { fn_(this); } 37 | private: 38 | T fn_; 39 | }; 40 | 41 | template 42 | Timer *Functional_Timer::create1(T fn) 43 | { 44 | return new Functional_Timer1_T(std::move(fn)); 45 | } 46 | -------------------------------------------------------------------------------- /sources/utility/midi.cc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "utility/midi.h" 7 | 8 | Midi_Input_Message Midi_Input_Source::midi_cb_for_buffer_iterator(void *cbdata) 9 | { 10 | const uint8_t *data; 11 | int size, sample_pos; 12 | MidiBuffer::Iterator &it = *(MidiBuffer::Iterator *)cbdata; 13 | return it.getNextEvent(data, size, sample_pos) ? 14 | Midi_Input_Message(data, size, sample_pos) : Midi_Input_Message(); 15 | } 16 | -------------------------------------------------------------------------------- /sources/utility/midi.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | 9 | struct Midi_Input_Message 10 | { 11 | const uint8_t *data = nullptr; 12 | unsigned size = 0; 13 | int time = 0; 14 | 15 | Midi_Input_Message() 16 | {} 17 | Midi_Input_Message(const uint8_t *data, unsigned size, int time) 18 | : data(data), size(size), time(time) {} 19 | 20 | explicit operator bool() const 21 | { return data; } 22 | }; 23 | 24 | class Midi_Input_Source { 25 | public: 26 | typedef Midi_Input_Message (callback_function)(void *); 27 | 28 | explicit Midi_Input_Source(callback_function *cb, void *cbdata = nullptr) 29 | : cb_(cb), cbdata_(cbdata) {} 30 | explicit Midi_Input_Source(MidiBuffer::Iterator &iterator) 31 | : cb_(&midi_cb_for_buffer_iterator), cbdata_(&iterator) {} 32 | 33 | Midi_Input_Message get_next_event() 34 | { 35 | if (have_next_) 36 | have_next_ = false; 37 | else 38 | next_ = cb_(cbdata_); 39 | return next_; 40 | } 41 | 42 | Midi_Input_Message peek_next_event() 43 | { 44 | if (!have_next_) { 45 | next_ = cb_(cbdata_); 46 | have_next_ = true; 47 | } 48 | return next_; 49 | } 50 | 51 | private: 52 | callback_function *cb_ = nullptr; 53 | void *cbdata_ = nullptr; 54 | Midi_Input_Message next_; 55 | bool have_next_ = false; 56 | static Midi_Input_Message midi_cb_for_buffer_iterator(void *cbdata); 57 | }; 58 | -------------------------------------------------------------------------------- /sources/utility/pak.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include 8 | #include 9 | #include 10 | 11 | class Pak_File_Reader { 12 | public: 13 | bool init_with_data(const uint8_t *data, uint32_t size); 14 | uint32_t entry_count() const; 15 | 16 | const std::string &name(uint32_t nth) const; 17 | std::string extract(uint32_t nth) const; 18 | 19 | private: 20 | struct Entry { 21 | uint32_t size = 0; 22 | uint32_t offset = 0; 23 | std::string name; 24 | }; 25 | 26 | const uint8_t *data_ = nullptr; 27 | uint32_t size_ = 0; 28 | 29 | std::vector entries_; 30 | size_t content_offset_ = 0; 31 | 32 | bool read_dictionary(); 33 | }; 34 | -------------------------------------------------------------------------------- /sources/utility/parameter_ex.tcc: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #include "parameter_ex.h" 7 | 8 | template 9 | void AudioParameterEx::addValueChangedListenerEx(ValueChangedListener *l) 10 | { 11 | const ScopedLock sl(listener_lock_); 12 | listeners_.addIfNotAlreadyThere(l); 13 | } 14 | 15 | template 16 | void AudioParameterEx::removeValueChangedListenerEx(ValueChangedListener *l) 17 | { 18 | const ScopedLock sl(listener_lock_); 19 | listeners_.removeFirstMatchingValue(l); 20 | } 21 | 22 | template 23 | void AudioParameterEx::invoke_value_changed_listeners() 24 | { 25 | const ScopedLock sl(listener_lock_); 26 | for (unsigned i = listeners_.size(); i-- > 0;) 27 | listeners_[i]->parameterValueChangedEx(tag_); 28 | } 29 | 30 | template 31 | int AudioParameterEx::getTagEx() const noexcept 32 | { 33 | return tag_; 34 | } 35 | 36 | template 37 | void AudioParameterEx::setTagEx(int tag) noexcept 38 | { 39 | tag_ = tag; 40 | } 41 | 42 | template 43 | void AudioParameterEx:: setAutomatable(bool automatable) 44 | { 45 | automatable_ = automatable; 46 | } 47 | 48 | template 49 | bool AudioParameterEx::isAutomatable() const 50 | { 51 | switch (automatable_) { 52 | default: 53 | return Parameter::isAutomatable(); 54 | case 0: 55 | return false; 56 | case 1: 57 | return true; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /sources/utility/processor_ex.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "parameter_ex.h" 8 | #include "JuceHeader.h" 9 | 10 | class AudioProcessorEx : public AudioProcessor, 11 | public AudioParametersEx::ValueChangedListener { 12 | public: 13 | using AudioProcessor::AudioProcessor; 14 | virtual ~AudioProcessorEx() {} 15 | }; 16 | -------------------------------------------------------------------------------- /sources/utility/rt_checker.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #ifdef ADLplug_RT_CHECKER 8 | 9 | void rt_checker_init(); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /sources/utility/simple_fifo.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | #include 9 | 10 | class Simple_Fifo 11 | { 12 | public: 13 | explicit Simple_Fifo(unsigned capacity); 14 | 15 | const uint8_t *read(unsigned length, unsigned &offset) const noexcept; 16 | bool read_padding(unsigned &offset) noexcept; 17 | void finish_read(unsigned length) noexcept 18 | { return fifo_.finishedRead(length); } 19 | 20 | uint8_t *write(unsigned length, unsigned &offset) noexcept; 21 | bool write_padding(unsigned &offset) noexcept; 22 | void finish_write(unsigned length) noexcept; 23 | 24 | unsigned get_free_space() const noexcept 25 | { return fifo_.getFreeSpace(); } 26 | unsigned get_num_ready() const noexcept 27 | { return fifo_.getNumReady(); } 28 | 29 | private: 30 | AbstractFifo fifo_; 31 | std::unique_ptr buffer_; 32 | 33 | static unsigned pad_offset(unsigned offset) 34 | { 35 | unsigned n = offset % alignof(max_align_t); 36 | return offset + (n ? (alignof(max_align_t) - n) : 0); 37 | } 38 | }; 39 | -------------------------------------------------------------------------------- /sources/worker.h: -------------------------------------------------------------------------------- 1 | // Copyright Jean Pierre Cimalando 2018. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma once 7 | #include "JuceHeader.h" 8 | #include "messages.h" 9 | #include "adl/instrument.h" 10 | #include "utility/semaphore.h" 11 | #include 12 | #include 13 | #include 14 | class AdlplugAudioProcessor; 15 | class Simple_Fifo; 16 | struct Buffered_Message; 17 | 18 | class Worker { 19 | public: 20 | explicit Worker(AdlplugAudioProcessor &proc); 21 | ~Worker(); 22 | 23 | void start_worker(); 24 | void stop_worker(); 25 | 26 | void postSemaphore() 27 | { sem_.post(); } 28 | 29 | private: 30 | void run(); 31 | 32 | private: 33 | AdlplugAudioProcessor &proc_; 34 | std::thread thread_; 35 | std::atomic quit_; 36 | Semaphore sem_; 37 | std::unordered_map measure_requests_; 38 | 39 | void dispatch_messages(); 40 | void handle_message(Buffered_Message &msg); 41 | void measure(uint32_t full_id, const Instrument &ins, Messages::Worker::MeasurementResult &body); 42 | }; 43 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/base/LICENSE.txt: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // LICENSE 3 | // (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved 4 | //----------------------------------------------------------------------------- 5 | // Redistribution and use in source and binary forms, with or without modification, 6 | // are permitted provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, 9 | // this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above copyright notice, 11 | // this list of conditions and the following disclaimer in the documentation 12 | // and/or other materials provided with the distribution. 13 | // * Neither the name of the Steinberg Media Technologies nor the names of its 14 | // contributors may be used to endorse or promote products derived from this 15 | // software without specific prior written permission. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | //----------------------------------------------------------------------------- 28 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/pluginterfaces/base/conststringtable.h: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Project : SDK Core 3 | // 4 | // Category : SDK Core Interfaces 5 | // Filename : pluginterfaces/base/conststringtable.h 6 | // Created by : Steinberg, 09/2007 7 | // Description : constant unicode string table 8 | // 9 | //----------------------------------------------------------------------------- 10 | // This file is part of a Steinberg SDK. It is subject to the license terms 11 | // in the LICENSE file found in the top-level directory of this distribution 12 | // and at www.steinberg.net/sdklicenses. 13 | // No part of the SDK, including this file, may be copied, modified, propagated, 14 | // or distributed except according to the terms contained in the LICENSE file. 15 | //----------------------------------------------------------------------------- 16 | 17 | #pragma once 18 | 19 | #include "ftypes.h" 20 | 21 | namespace Steinberg { 22 | 23 | //------------------------------------------------------------------------ 24 | /** Constant unicode string table. 25 | Used for conversion from ASCII string literals to char16. 26 | */ 27 | //------------------------------------------------------------------------ 28 | class ConstStringTable 29 | { 30 | public: 31 | static ConstStringTable* instance (); 32 | 33 | /** Returns a char16 string of a ASCII string literal*/ 34 | const char16* getString (const char8* str) const; 35 | /** Returns a char16 character of a ASCII character */ 36 | const char16 getString (const char8 str) const; 37 | 38 | protected: 39 | ConstStringTable (); 40 | ~ConstStringTable (); 41 | }; 42 | 43 | //------------------------------------------------------------------------ 44 | } // namespace Steinberg 45 | 46 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/pluginterfaces/base/coreiids.cpp: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Project : SDK Core 3 | // 4 | // Category : SDK Core Interface IID definitions 5 | // Filename : pluginterfaces/base/coreiids.cpp 6 | // Created by : Steinberg, 01/2004 7 | // Description : Basic Interface 8 | // 9 | //------------------------------------------------------------------------ 10 | // This file is part of a Steinberg SDK. It is subject to the license terms 11 | // in the LICENSE file found in the top-level directory of this distribution. 12 | // No part of the SDK, including this file, may be copied, modified, propagated, 13 | // or distributed except according to the terms contained in the LICENSE file. 14 | //------------------------------------------------------------------------ 15 | 16 | #include "pluginterfaces/base/funknown.h" 17 | #include "pluginterfaces/base/iupdatehandler.h" 18 | #include "pluginterfaces/base/icloneable.h" 19 | #include "pluginterfaces/base/ibstream.h" 20 | 21 | //------------------------------------------------------------------------ 22 | namespace Steinberg { 23 | 24 | 25 | DEF_CLASS_IID (FUnknown) 26 | 27 | DEF_CLASS_IID (ICloneable) 28 | 29 | DEF_CLASS_IID (IDependent) 30 | DEF_CLASS_IID (IUpdateHandler) 31 | 32 | DEF_CLASS_IID (IBStream) 33 | DEF_CLASS_IID (ISizeableStream) 34 | 35 | //------------------------------------------------------------------------ 36 | } // Steinberg 37 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/pluginterfaces/base/falignpop.h: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Project : SDK Core 3 | // 4 | // Category : SDK Core Interfaces 5 | // Filename : pluginterfaces/base/falignpop.h 6 | // Created by : Steinberg, 01/2004 7 | // Description : Restore alignment settings 8 | // 9 | //----------------------------------------------------------------------------- 10 | // This file is part of a Steinberg SDK. It is subject to the license terms 11 | // in the LICENSE file found in the top-level directory of this distribution 12 | // and at www.steinberg.net/sdklicenses. 13 | // No part of the SDK, including this file, may be copied, modified, propagated, 14 | // or distributed except according to the terms contained in the LICENSE file. 15 | //----------------------------------------------------------------------------- 16 | 17 | //--------------------------------------------------------------------------------------------------- 18 | #if SMTG_OS_MACOS 19 | #if TARGET_API_MAC_CARBON 20 | #if SMTG_PLATFORM_64 21 | #pragma pack(pop) 22 | #else 23 | #pragma options align=reset 24 | #endif 25 | #endif 26 | #elif defined __BORLANDC__ 27 | #pragma -a- 28 | #elif SMTG_OS_WINDOWS 29 | #pragma pack(pop) 30 | #endif 31 | //--------------------------------------------------------------------------------------------------- 32 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/pluginterfaces/base/falignpush.h: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Project : SDK Core 3 | // 4 | // Category : SDK Core Interfaces 5 | // Filename : pluginterfaces/base/falignpush.h 6 | // Created by : Steinberg, 01/2004 7 | // Description : Set alignment settings 8 | // 9 | //----------------------------------------------------------------------------- 10 | // This file is part of a Steinberg SDK. It is subject to the license terms 11 | // in the LICENSE file found in the top-level directory of this distribution 12 | // and at www.steinberg.net/sdklicenses. 13 | // No part of the SDK, including this file, may be copied, modified, propagated, 14 | // or distributed except according to the terms contained in the LICENSE file. 15 | //----------------------------------------------------------------------------- 16 | 17 | //---------------------------------------------------------------------------------------------- 18 | #if SMTG_OS_MACOS 19 | #if TARGET_API_MAC_CARBON 20 | #if SMTG_PLATFORM_64 21 | #pragma pack(push, 16) 22 | #else 23 | #pragma options align=mac68k 24 | #endif 25 | #endif 26 | #elif defined __BORLANDC__ 27 | #pragma -a8 28 | #elif SMTG_OS_WINDOWS 29 | #pragma pack(push) 30 | #if SMTG_PLATFORM_64 31 | #pragma pack(16) 32 | #else 33 | #pragma pack(8) 34 | #endif 35 | #endif 36 | //---------------------------------------------------------------------------------------------- 37 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/pluginterfaces/base/icloneable.h: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Project : SDK Core 3 | // 4 | // Category : SDK Core Interfaces 5 | // Filename : pluginterfaces/base/icloneable.h 6 | // Created by : Steinberg, 11/2007 7 | // Description : Interface for object copies 8 | // 9 | //----------------------------------------------------------------------------- 10 | // This file is part of a Steinberg SDK. It is subject to the license terms 11 | // in the LICENSE file found in the top-level directory of this distribution 12 | // and at www.steinberg.net/sdklicenses. 13 | // No part of the SDK, including this file, may be copied, modified, propagated, 14 | // or distributed except according to the terms contained in the LICENSE file. 15 | //----------------------------------------------------------------------------- 16 | 17 | #pragma once 18 | 19 | #include "funknown.h" 20 | 21 | namespace Steinberg { 22 | 23 | //------------------------------------------------------------------------ 24 | /** Interface allowing an object to be copied. 25 | [plug & host imp] \n 26 | [released: N4.12] \n 27 | */ 28 | //------------------------------------------------------------------------ 29 | class ICloneable : public FUnknown 30 | { 31 | public: 32 | //------------------------------------------------------------------------ 33 | /** Create exact copy of the object */ 34 | virtual FUnknown* PLUGIN_API clone () = 0; 35 | //------------------------------------------------------------------------ 36 | static const FUID iid; 37 | }; 38 | 39 | DECLARE_CLASS_IID (ICloneable, 0xD45406B9, 0x3A2D4443, 0x9DAD9BA9, 0x85A1454B) 40 | 41 | //------------------------------------------------------------------------ 42 | } // namespace Steinberg 43 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/pluginterfaces/base/ierrorcontext.h: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Project : SDK Core 3 | // 4 | // Category : SDK Core Interfaces 5 | // Filename : pluginterfaces/base/ierrorcontext.h 6 | // Created by : Steinberg, 02/2008 7 | // Description : Error Context Interface 8 | // 9 | //----------------------------------------------------------------------------- 10 | // This file is part of a Steinberg SDK. It is subject to the license terms 11 | // in the LICENSE file found in the top-level directory of this distribution 12 | // and at www.steinberg.net/sdklicenses. 13 | // No part of the SDK, including this file, may be copied, modified, propagated, 14 | // or distributed except according to the terms contained in the LICENSE file. 15 | //----------------------------------------------------------------------------- 16 | 17 | #pragma once 18 | 19 | #include "pluginterfaces/base/funknown.h" 20 | 21 | namespace Steinberg { 22 | 23 | class IString; 24 | 25 | //------------------------------------------------------------------------ 26 | /** Interface for error handling. 27 | [plug imp] \n 28 | [released: Sequel 2] */ 29 | //------------------------------------------------------------------------ 30 | class IErrorContext : public FUnknown 31 | { 32 | public: 33 | //------------------------------------------------------------------------ 34 | /** Tells the plug-in to not show any UI elements on errors. */ 35 | virtual void PLUGIN_API disableErrorUI (bool state) = 0; 36 | /** If an error happens and disableErrorUI was not set this should return kResultTrue if the plug-in already showed a message to the user what happened. */ 37 | virtual tresult PLUGIN_API errorMessageShown () = 0; 38 | /** Fill message with error string. The host may show this to the user. */ 39 | virtual tresult PLUGIN_API getErrorMessage (IString* message) = 0; 40 | 41 | //------------------------------------------------------------------------ 42 | static const FUID iid; 43 | }; 44 | DECLARE_CLASS_IID (IErrorContext, 0x12BCD07B, 0x7C694336, 0xB7DA77C3, 0x444A0CD0) 45 | 46 | //------------------------------------------------------------------------ 47 | } // namespace Steinberg 48 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/pluginterfaces/base/pluginbasefwd.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------ 2 | // Project : SDK Base 3 | // 4 | // Category : SDK Core Interfaces 5 | // Filename : pluginterfaces/base/pluginbasefwd.h 6 | // Created by : Steinberg, 10/2014 7 | // Description : Forward declarations for pluginterfaces base module 8 | // 9 | //----------------------------------------------------------------------------- 10 | // This file is part of a Steinberg SDK. It is subject to the license terms 11 | // in the LICENSE file found in the top-level directory of this distribution 12 | // and at www.steinberg.net/sdklicenses. 13 | // No part of the SDK, including this file, may be copied, modified, propagated, 14 | // or distributed except according to the terms contained in the LICENSE file. 15 | //----------------------------------------------------------------------------- 16 | 17 | #pragma once 18 | 19 | namespace Steinberg { 20 | 21 | class FUnknown; 22 | class FUID; 23 | 24 | template class IPtr; 25 | 26 | class ICloneable; 27 | class IDependent; 28 | class IUpdateHandler; 29 | 30 | class IBStream; 31 | 32 | } // Steinberg 33 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/pluginterfaces/vst/vstpshpack4.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------ 2 | // Project : VST SDK 3 | // 4 | // Category : Interfaces 5 | // Filename : pluginterfaces/vst/vstpshpack4.h 6 | // Created by : Steinberg, 05/2010 7 | // Description : This file turns 4 Bytes packing of structures on. The file 8 | // pluginterfaces/base/falignpop.h is the complement to this file. 9 | // 10 | //----------------------------------------------------------------------------- 11 | // This file is part of a Steinberg SDK. It is subject to the license terms 12 | // in the LICENSE file found in the top-level directory of this distribution 13 | // and at www.steinberg.net/sdklicenses. 14 | // No part of the SDK, including this file, may be copied, modified, propagated, 15 | // or distributed except according to the terms contained in the LICENSE file. 16 | //----------------------------------------------------------------------------- 17 | 18 | #pragma once 19 | 20 | //---------------------------------------------------------------------------------------------- 21 | #if defined __BORLANDC__ 22 | #pragma -a4 23 | #else 24 | #if (_MSC_VER >= 800 && !defined(_M_I86)) || defined(_PUSHPOP_SUPPORTED) 25 | #pragma warning(disable:4103) 26 | #endif 27 | 28 | #pragma pack(push) 29 | #pragma pack(4) 30 | #endif 31 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/public.sdk/LICENSE.txt: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // LICENSE 3 | // (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved 4 | //----------------------------------------------------------------------------- 5 | // Redistribution and use in source and binary forms, with or without modification, 6 | // are permitted provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, 9 | // this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above copyright notice, 11 | // this list of conditions and the following disclaimer in the documentation 12 | // and/or other materials provided with the distribution. 13 | // * Neither the name of the Steinberg Media Technologies nor the names of its 14 | // contributors may be used to endorse or promote products derived from this 15 | // software without specific prior written permission. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | //----------------------------------------------------------------------------- 28 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/public.sdk/source/main/macexport.exp: -------------------------------------------------------------------------------- 1 | _GetPluginFactory 2 | _bundleEntry 3 | _bundleExit 4 | -------------------------------------------------------------------------------- /thirdparty/vst3sdk/public.sdk/source/main/winexport.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | GetPluginFactory 3 | InitDll 4 | ExitDll 5 | -------------------------------------------------------------------------------- /tools/make-fonts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | ranges="U+0000-000FF,U+2190-21FF,U+2200-22FF,U+0370-03FF" 4 | 5 | convert_font() { 6 | pyftsubset --unicodes="$ranges" --output-file="subset-$1" "$1" 7 | #gzip -9 -c "subset-$1" > "$2" 8 | zopfli -c "subset-$1" > "$2" 9 | rm -f "subset-$1" 10 | } 11 | 12 | for style1 in Mono Sans Serif; do 13 | for style2 in Regular Bold Italic BoldItalic; do 14 | convert_font Liberation"$style1"-"$style2".ttf "$style1"-"$style2".ttf.gz 15 | done 16 | done 17 | -------------------------------------------------------------------------------- /tools/make-icons.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | for icon in ADLplug OPNplug; do 5 | for size in 32 96; do 6 | convert -resize "$size"x"$size" "$icon".png "$icon"-"$size".png 7 | optipng "$icon"-"$size".png 8 | done 9 | done 10 | -------------------------------------------------------------------------------- /tools/pak-banks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | banks=adldata/* 4 | 5 | # Compress 6 | cat $banks > _all.wopl 7 | zopfli _all.wopl 8 | 9 | # Write dictionary 10 | offset=0 11 | for bank in $banks; do 12 | filename=`basename "$bank"` 13 | filename=`echo "$filename" | sed -r 's/^[0-9]{3} //'` 14 | size=`stat -c '%s' "$bank"` 15 | printf '%.8x' "$size" | xxd -r -p 16 | printf '%.8x' "$offset" | xxd -r -p 17 | printf '%s' "$filename" 18 | printf '%.2x' 0 | xxd -r -p 19 | offset=$((offset+size)) 20 | done 21 | printf '%.8x' 0 | xxd -r -p 22 | 23 | # Write file data 24 | cat _all.wopl.gz 25 | 26 | # Clean up 27 | rm _all.wopl.gz _all.wopl 28 | --------------------------------------------------------------------------------