mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Added BLOCKS module
This commit is contained in:
parent
01380b12d6
commit
76b3689a48
219 changed files with 69419 additions and 10 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -52,5 +52,6 @@ profile
|
||||||
**/CodeBlocks/*.depend
|
**/CodeBlocks/*.depend
|
||||||
**/CodeBlocks/*.layout
|
**/CodeBlocks/*.layout
|
||||||
**/Builds/AndroidStudio
|
**/Builds/AndroidStudio
|
||||||
doxygen/doc
|
**/doxygen/doc
|
||||||
|
**/doxygen/build
|
||||||
extras/Projucer/JUCECompileEngine.dylib
|
extras/Projucer/JUCECompileEngine.dylib
|
||||||
|
|
|
||||||
108
examples/BLOCKS/BlocksDrawing/BlocksDrawing.jucer
Normal file
108
examples/BLOCKS/BlocksDrawing/BlocksDrawing.jucer
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<JUCERPROJECT id="aa4reI" name="BlocksDrawing" projectType="guiapp" version="1.0.0"
|
||||||
|
bundleIdentifier="com.yourcompany.BlocksDrawing" includeBinaryInAppConfig="1"
|
||||||
|
jucerVersion="4.2.4">
|
||||||
|
<MAINGROUP id="yXiPIx" name="BlocksDrawing">
|
||||||
|
<GROUP id="{092A4D5B-31E2-5D03-9B41-81C10EC447E8}" name="Source">
|
||||||
|
<FILE id="yiP4mu" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/>
|
||||||
|
<FILE id="RyfWDq" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>
|
||||||
|
</GROUP>
|
||||||
|
</MAINGROUP>
|
||||||
|
<EXPORTFORMATS>
|
||||||
|
<XCODE_MAC targetFolder="Builds/MacOSX" extraCompilerFlags="">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksDrawing"/>
|
||||||
|
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksDrawing"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</XCODE_MAC>
|
||||||
|
<VS2015 targetFolder="Builds/VisualStudio2015">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="1" optimisation="1" targetName="BlocksDrawing"/>
|
||||||
|
<CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="0" optimisation="3" targetName="BlocksDrawing"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</VS2015>
|
||||||
|
<VS2013 targetFolder="Builds/VisualStudio2013">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="1" optimisation="1" targetName="BlocksDrawing"/>
|
||||||
|
<CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="0" optimisation="3" targetName="BlocksDrawing"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</VS2013>
|
||||||
|
<LINUX_MAKE targetFolder="Builds/LinuxMakefile">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksDrawing"/>
|
||||||
|
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksDrawing"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</LINUX_MAKE>
|
||||||
|
</EXPORTFORMATS>
|
||||||
|
<MODULES>
|
||||||
|
<MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_blocks_basics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
</MODULES>
|
||||||
|
<JUCEOPTIONS/>
|
||||||
|
</JUCERPROJECT>
|
||||||
154
examples/BLOCKS/BlocksDrawing/Builds/LinuxMakefile/Makefile
Normal file
154
examples/BLOCKS/BlocksDrawing/Builds/LinuxMakefile/Makefile
Normal file
|
|
@ -0,0 +1,154 @@
|
||||||
|
# Automatically generated makefile, created by the Projucer
|
||||||
|
# Don't edit this file! Your changes will be overwritten when you re-save the Projucer project!
|
||||||
|
|
||||||
|
# (this disables dependency generation if multiple architectures are set)
|
||||||
|
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)
|
||||||
|
|
||||||
|
ifndef STRIP
|
||||||
|
STRIP=strip
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef AR
|
||||||
|
AR=ar
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef CONFIG
|
||||||
|
CONFIG=Debug
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG),Debug)
|
||||||
|
JUCE_BINDIR := build
|
||||||
|
JUCE_LIBDIR := build
|
||||||
|
JUCE_OBJDIR := build/intermediate/Debug
|
||||||
|
JUCE_OUTDIR := build
|
||||||
|
|
||||||
|
ifeq ($(TARGET_ARCH),)
|
||||||
|
TARGET_ARCH := -march=native
|
||||||
|
endif
|
||||||
|
|
||||||
|
JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules
|
||||||
|
JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0
|
||||||
|
JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11
|
||||||
|
JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt
|
||||||
|
|
||||||
|
TARGET := BlocksDrawing
|
||||||
|
BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
|
||||||
|
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG),Release)
|
||||||
|
JUCE_BINDIR := build
|
||||||
|
JUCE_LIBDIR := build
|
||||||
|
JUCE_OBJDIR := build/intermediate/Release
|
||||||
|
JUCE_OUTDIR := build
|
||||||
|
|
||||||
|
ifeq ($(TARGET_ARCH),)
|
||||||
|
TARGET_ARCH := -march=native
|
||||||
|
endif
|
||||||
|
|
||||||
|
JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules
|
||||||
|
JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3
|
||||||
|
JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11
|
||||||
|
JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt
|
||||||
|
|
||||||
|
TARGET := BlocksDrawing
|
||||||
|
BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
|
||||||
|
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
OBJECTS := \
|
||||||
|
$(JUCE_OBJDIR)/Main_90ebc5c2.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_core_75b14332.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_events_d2be882c.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_graphics_9c18891e.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
|
||||||
|
$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)
|
||||||
|
@echo Linking BlocksDrawing
|
||||||
|
-@mkdir -p $(JUCE_BINDIR)
|
||||||
|
-@mkdir -p $(JUCE_LIBDIR)
|
||||||
|
-@mkdir -p $(JUCE_OUTDIR)
|
||||||
|
@$(BLDCMD)
|
||||||
|
|
||||||
|
check-pkg-config:
|
||||||
|
@command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }
|
||||||
|
@pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@echo Cleaning BlocksDrawing
|
||||||
|
@$(CLEANCMD)
|
||||||
|
|
||||||
|
strip:
|
||||||
|
@echo Stripping BlocksDrawing
|
||||||
|
-@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling Main.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_audio_basics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_audio_devices.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_audio_formats.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o: ../../JuceLibraryCode/juce_blocks_basics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_blocks_basics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_core.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_data_structures.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_events.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_graphics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_gui_basics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_gui_extra.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_opengl.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
-include $(OBJECTS:%.o=%.d)
|
||||||
File diff suppressed because it is too large
Load diff
29
examples/BLOCKS/BlocksDrawing/Builds/MacOSX/Info-App.plist
Normal file
29
examples/BLOCKS/BlocksDrawing/Builds/MacOSX/Info-App.plist
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>BlocksDrawing</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>BlocksDrawing</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0.0</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0.0</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
BIN
examples/BLOCKS/BlocksDrawing/Builds/MacOSX/RecentFilesMenuTemplate.nib
generated
Normal file
BIN
examples/BLOCKS/BlocksDrawing/Builds/MacOSX/RecentFilesMenuTemplate.nib
generated
Normal file
Binary file not shown.
|
|
@ -0,0 +1,19 @@
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual Studio 2013
|
||||||
|
Project("{0D7965A3-BED9-ABF7-CBD9-0D3743DA1577}") = "BlocksDrawing", "BlocksDrawing.vcxproj", "{83D60C30-1484-EABF-FDB3-14C39E5DD976}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{83D60C30-1484-EABF-FDB3-14C39E5DD976}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{83D60C30-1484-EABF-FDB3-14C39E5DD976}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{83D60C30-1484-EABF-FDB3-14C39E5DD976}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{83D60C30-1484-EABF-FDB3-14C39E5DD976}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,29 @@
|
||||||
|
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#include JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#else
|
||||||
|
|
||||||
|
#undef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 1,0,0,0
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904E4"
|
||||||
|
BEGIN
|
||||||
|
VALUE "FileDescription", "BlocksDrawing\0"
|
||||||
|
VALUE "FileVersion", "1.0.0\0"
|
||||||
|
VALUE "ProductName", "BlocksDrawing\0"
|
||||||
|
VALUE "ProductVersion", "1.0.0\0"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1252
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual Studio 2015
|
||||||
|
Project("{0D7965A3-BED9-ABF7-CBD9-0D3743DA1577}") = "BlocksDrawing", "BlocksDrawing.vcxproj", "{83D60C30-1484-EABF-FDB3-14C39E5DD976}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{83D60C30-1484-EABF-FDB3-14C39E5DD976}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{83D60C30-1484-EABF-FDB3-14C39E5DD976}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{83D60C30-1484-EABF-FDB3-14C39E5DD976}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{83D60C30-1484-EABF-FDB3-14C39E5DD976}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,29 @@
|
||||||
|
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#include JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#else
|
||||||
|
|
||||||
|
#undef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 1,0,0,0
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904E4"
|
||||||
|
BEGIN
|
||||||
|
VALUE "FileDescription", "BlocksDrawing\0"
|
||||||
|
VALUE "FileVersion", "1.0.0\0"
|
||||||
|
VALUE "ProductName", "BlocksDrawing\0"
|
||||||
|
VALUE "ProductVersion", "1.0.0\0"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1252
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,128 @@
|
||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"idiom": "iphone",
|
||||||
|
"size": "29x29",
|
||||||
|
"filename": "Icon-29.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "iphone",
|
||||||
|
"size": "29x29",
|
||||||
|
"filename": "Icon-29@2x.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "iphone",
|
||||||
|
"size": "29x29",
|
||||||
|
"filename": "Icon-29@3x.png",
|
||||||
|
"scale": "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "iphone",
|
||||||
|
"size": "40x40",
|
||||||
|
"filename": "Icon-Spotlight-40@2x.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "iphone",
|
||||||
|
"size": "40x40",
|
||||||
|
"filename": "Icon-Spotlight-40@3x.png",
|
||||||
|
"scale": "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "iphone",
|
||||||
|
"size": "57x57",
|
||||||
|
"filename": "Icon.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "iphone",
|
||||||
|
"size": "57x57",
|
||||||
|
"filename": "Icon@2x.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "iphone",
|
||||||
|
"size": "60x60",
|
||||||
|
"filename": "Icon-60@2x.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "iphone",
|
||||||
|
"size": "60x60",
|
||||||
|
"filename": "Icon-@3x.png",
|
||||||
|
"scale": "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "29x29",
|
||||||
|
"filename": "Icon-Small-1.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "29x29",
|
||||||
|
"filename": "Icon-Small@2x-1.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "40x40",
|
||||||
|
"filename": "Icon-Spotlight-40.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "40x40",
|
||||||
|
"filename": "Icon-Spotlight-40@2x-1.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "50x50",
|
||||||
|
"filename": "Icon-Small-50.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "50x50",
|
||||||
|
"filename": "Icon-Small-50@2x.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "72x72",
|
||||||
|
"filename": "Icon-72.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "72x72",
|
||||||
|
"filename": "Icon-72@2x.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "76x76",
|
||||||
|
"filename": "Icon-76.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "76x76",
|
||||||
|
"filename": "Icon-76@2x.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom": "ipad",
|
||||||
|
"size": "83.5x83.5",
|
||||||
|
"filename": "Icon-83.5@2x.png",
|
||||||
|
"scale": "2x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"version": 1,
|
||||||
|
"author": "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
{
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"orientation": "portrait",
|
||||||
|
"idiom": "iphone",
|
||||||
|
"extent": "full-screen",
|
||||||
|
"minimum-system-version": "7.0",
|
||||||
|
"scale": "2x",
|
||||||
|
"filename": "LaunchImage-iphone-2x.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"orientation": "portrait",
|
||||||
|
"idiom": "iphone",
|
||||||
|
"extent": "full-screen",
|
||||||
|
"minimum-system-version": "7.0",
|
||||||
|
"scale": "2x",
|
||||||
|
"filename": "LaunchImage-iphone-retina4.png",
|
||||||
|
"subtype": "retina4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"orientation": "portrait",
|
||||||
|
"idiom": "ipad",
|
||||||
|
"extent": "full-screen",
|
||||||
|
"minimum-system-version": "7.0",
|
||||||
|
"scale": "1x",
|
||||||
|
"filename": "LaunchImage-ipad-portrait-1x.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"orientation": "landscape",
|
||||||
|
"idiom": "ipad",
|
||||||
|
"extent": "full-screen",
|
||||||
|
"minimum-system-version": "7.0",
|
||||||
|
"scale": "1x",
|
||||||
|
"filename": "LaunchImage-ipad-landscape-1x.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"orientation": "portrait",
|
||||||
|
"idiom": "ipad",
|
||||||
|
"extent": "full-screen",
|
||||||
|
"minimum-system-version": "7.0",
|
||||||
|
"scale": "2x",
|
||||||
|
"filename": "LaunchImage-ipad-portrait-2x.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"orientation": "landscape",
|
||||||
|
"idiom": "ipad",
|
||||||
|
"extent": "full-screen",
|
||||||
|
"minimum-system-version": "7.0",
|
||||||
|
"scale": "2x",
|
||||||
|
"filename": "LaunchImage-ipad-landscape-2x.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"version": 1,
|
||||||
|
"author": "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.2 KiB |
43
examples/BLOCKS/BlocksDrawing/Builds/iOS/Info-App.plist
Normal file
43
examples/BLOCKS/BlocksDrawing/Builds/iOS/Info-App.plist
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist>
|
||||||
|
<dict>
|
||||||
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
<true/>
|
||||||
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
|
<false/>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>BlocksDrawing</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>BlocksDrawing</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0.0</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0.0</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
|
<key>UIRequiresFullScreen</key>
|
||||||
|
<true/>
|
||||||
|
<key>UIStatusBarHidden</key>
|
||||||
|
<true/>
|
||||||
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
|
<array>
|
||||||
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
|
</array>
|
||||||
|
<key>UIBackgroundModes</key>
|
||||||
|
<array/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
179
examples/BLOCKS/BlocksDrawing/JuceLibraryCode/AppConfig.h
Normal file
179
examples/BLOCKS/BlocksDrawing/JuceLibraryCode/AppConfig.h
Normal file
|
|
@ -0,0 +1,179 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
There's a section below where you can add your own custom code safely, and the
|
||||||
|
Projucer will preserve the contents of that block, but the best way to change
|
||||||
|
any of these definitions is by using the Projucer's project settings.
|
||||||
|
|
||||||
|
Any commented-out settings will assume their default values.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __JUCE_APPCONFIG_AA4REI__
|
||||||
|
#define __JUCE_APPCONFIG_AA4REI__
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// [BEGIN_USER_CODE_SECTION]
|
||||||
|
|
||||||
|
// (You can add your own code in this section, and the Projucer will not overwrite it)
|
||||||
|
|
||||||
|
// [END_USER_CODE_SECTION]
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_audio_basics 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_audio_devices 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_audio_formats 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_blocks_basics 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_core 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_data_structures 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_events 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_graphics 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_gui_basics 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_gui_extra 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_opengl 1
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
#ifndef JUCE_STANDALONE_APPLICATION
|
||||||
|
#ifdef JucePlugin_Build_Standalone
|
||||||
|
#define JUCE_STANDALONE_APPLICATION JucePlugin_Build_Standalone
|
||||||
|
#else
|
||||||
|
#define JUCE_STANDALONE_APPLICATION 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED 1
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_audio_devices flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_ASIO
|
||||||
|
//#define JUCE_ASIO
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_WASAPI
|
||||||
|
//#define JUCE_WASAPI
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_WASAPI_EXCLUSIVE
|
||||||
|
//#define JUCE_WASAPI_EXCLUSIVE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_DIRECTSOUND
|
||||||
|
//#define JUCE_DIRECTSOUND
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_ALSA
|
||||||
|
//#define JUCE_ALSA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_JACK
|
||||||
|
//#define JUCE_JACK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_ANDROID_OPENSLES
|
||||||
|
//#define JUCE_USE_ANDROID_OPENSLES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_audio_formats flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_FLAC
|
||||||
|
//#define JUCE_USE_FLAC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_OGGVORBIS
|
||||||
|
//#define JUCE_USE_OGGVORBIS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_MP3AUDIOFORMAT
|
||||||
|
//#define JUCE_USE_MP3AUDIOFORMAT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_LAME_AUDIO_FORMAT
|
||||||
|
//#define JUCE_USE_LAME_AUDIO_FORMAT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_WINDOWS_MEDIA_FORMAT
|
||||||
|
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_core flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_FORCE_DEBUG
|
||||||
|
//#define JUCE_FORCE_DEBUG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_LOG_ASSERTIONS
|
||||||
|
//#define JUCE_LOG_ASSERTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_CHECK_MEMORY_LEAKS
|
||||||
|
//#define JUCE_CHECK_MEMORY_LEAKS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||||
|
//#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_INCLUDE_ZLIB_CODE
|
||||||
|
//#define JUCE_INCLUDE_ZLIB_CODE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_CURL
|
||||||
|
//#define JUCE_USE_CURL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS
|
||||||
|
//#define JUCE_CATCH_UNHANDLED_EXCEPTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES
|
||||||
|
//#define JUCE_ALLOW_STATIC_NULL_VARIABLES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_graphics flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_COREIMAGE_LOADER
|
||||||
|
//#define JUCE_USE_COREIMAGE_LOADER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_DIRECTWRITE
|
||||||
|
//#define JUCE_USE_DIRECTWRITE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_gui_basics flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_ENABLE_REPAINT_DEBUGGING
|
||||||
|
//#define JUCE_ENABLE_REPAINT_DEBUGGING
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_XSHM
|
||||||
|
//#define JUCE_USE_XSHM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_XRENDER
|
||||||
|
//#define JUCE_USE_XRENDER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_XCURSOR
|
||||||
|
//#define JUCE_USE_XCURSOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_gui_extra flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_WEB_BROWSER
|
||||||
|
//#define JUCE_WEB_BROWSER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR
|
||||||
|
//#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __JUCE_APPCONFIG_AA4REI__
|
||||||
46
examples/BLOCKS/BlocksDrawing/JuceLibraryCode/JuceHeader.h
Normal file
46
examples/BLOCKS/BlocksDrawing/JuceLibraryCode/JuceHeader.h
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
This is the header file that your files should include in order to get all the
|
||||||
|
JUCE library headers. You should avoid including the JUCE headers directly in
|
||||||
|
your own source files, because that wouldn't pick up the correct configuration
|
||||||
|
options for your app.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __APPHEADERFILE_AA4REI__
|
||||||
|
#define __APPHEADERFILE_AA4REI__
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
|
||||||
|
#include <juce_audio_basics/juce_audio_basics.h>
|
||||||
|
#include <juce_audio_devices/juce_audio_devices.h>
|
||||||
|
#include <juce_audio_formats/juce_audio_formats.h>
|
||||||
|
#include <juce_blocks_basics/juce_blocks_basics.h>
|
||||||
|
#include <juce_core/juce_core.h>
|
||||||
|
#include <juce_data_structures/juce_data_structures.h>
|
||||||
|
#include <juce_events/juce_events.h>
|
||||||
|
#include <juce_graphics/juce_graphics.h>
|
||||||
|
#include <juce_gui_basics/juce_gui_basics.h>
|
||||||
|
#include <juce_gui_extra/juce_gui_extra.h>
|
||||||
|
#include <juce_opengl/juce_opengl.h>
|
||||||
|
|
||||||
|
|
||||||
|
#if ! DONT_SET_USING_JUCE_NAMESPACE
|
||||||
|
// If your code uses a lot of JUCE classes, then this will obviously save you
|
||||||
|
// a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
|
||||||
|
using namespace juce;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ! JUCE_DONT_DECLARE_PROJECTINFO
|
||||||
|
namespace ProjectInfo
|
||||||
|
{
|
||||||
|
const char* const projectName = "BlocksDrawing";
|
||||||
|
const char* const versionString = "1.0.0";
|
||||||
|
const int versionNumber = 0x10000;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // __APPHEADERFILE_AA4REI__
|
||||||
12
examples/BLOCKS/BlocksDrawing/JuceLibraryCode/ReadMe.txt
Normal file
12
examples/BLOCKS/BlocksDrawing/JuceLibraryCode/ReadMe.txt
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
Important Note!!
|
||||||
|
================
|
||||||
|
|
||||||
|
The purpose of this folder is to contain files that are auto-generated by the Projucer,
|
||||||
|
and ALL files in this folder will be mercilessly DELETED and completely re-written whenever
|
||||||
|
the Projucer saves your project.
|
||||||
|
|
||||||
|
Therefore, it's a bad idea to make any manual changes to the files in here, or to
|
||||||
|
put any of your own files in here if you don't want to lose them. (Of course you may choose
|
||||||
|
to add the folder's contents to your version-control system so that you can re-merge your own
|
||||||
|
modifications after the Projucer has saved its changes).
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_basics/juce_audio_basics.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_basics/juce_audio_basics.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_devices/juce_audio_devices.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_devices/juce_audio_devices.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_formats/juce_audio_formats.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_formats/juce_audio_formats.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_blocks_basics/juce_blocks_basics.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_core/juce_core.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_core/juce_core.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_data_structures/juce_data_structures.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_data_structures/juce_data_structures.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_events/juce_events.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_events/juce_events.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_graphics/juce_graphics.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_graphics/juce_graphics.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_gui_basics/juce_gui_basics.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_gui_basics/juce_gui_basics.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_gui_extra/juce_gui_extra.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_gui_extra/juce_gui_extra.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_opengl/juce_opengl.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_opengl/juce_opengl.mm>
|
||||||
62
examples/BLOCKS/BlocksDrawing/Source/Main.cpp
Normal file
62
examples/BLOCKS/BlocksDrawing/Source/Main.cpp
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file was auto-generated!
|
||||||
|
|
||||||
|
It contains the basic startup code for a Juce application.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../JuceLibraryCode/JuceHeader.h"
|
||||||
|
#include "MainComponent.h"
|
||||||
|
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
class BlocksDrawingApplication : public JUCEApplication
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
BlocksDrawingApplication() {}
|
||||||
|
|
||||||
|
const String getApplicationName() override { return ProjectInfo::projectName; }
|
||||||
|
const String getApplicationVersion() override { return ProjectInfo::versionString; }
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
void initialise (const String& /*commandLine*/) override { mainWindow = new MainWindow (getApplicationName()); }
|
||||||
|
void shutdown() override { mainWindow = nullptr; }
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
class MainWindow : public DocumentWindow
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MainWindow (String name) : DocumentWindow (name,
|
||||||
|
Colours::lightgrey,
|
||||||
|
DocumentWindow::allButtons)
|
||||||
|
{
|
||||||
|
setUsingNativeTitleBar (true);
|
||||||
|
setContentOwned (new MainComponent(), true);
|
||||||
|
|
||||||
|
centreWithSize (getWidth(), getHeight());
|
||||||
|
setResizable (true, true);
|
||||||
|
setVisible (true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void closeButtonPressed() override
|
||||||
|
{
|
||||||
|
JUCEApplication::getInstance()->systemRequestedQuit();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
TooltipWindow tooltipWindow;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow)
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
ScopedPointer<MainWindow> mainWindow;
|
||||||
|
};
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
START_JUCE_APPLICATION (BlocksDrawingApplication)
|
||||||
379
examples/BLOCKS/BlocksDrawing/Source/MainComponent.h
Normal file
379
examples/BLOCKS/BlocksDrawing/Source/MainComponent.h
Normal file
|
|
@ -0,0 +1,379 @@
|
||||||
|
|
||||||
|
#ifndef MAINCOMPONENT_H_INCLUDED
|
||||||
|
#define MAINCOMPONENT_H_INCLUDED
|
||||||
|
|
||||||
|
#include "../JuceLibraryCode/JuceHeader.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
A struct that handles the setup and layout of the DrumPadGridProgram
|
||||||
|
*/
|
||||||
|
struct ColourGrid
|
||||||
|
{
|
||||||
|
ColourGrid (int cols, int rows)
|
||||||
|
: numColumns (cols),
|
||||||
|
numRows (rows)
|
||||||
|
{
|
||||||
|
constructGridFillArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Creates a GridFill object for each pad in the grid and sets its colour
|
||||||
|
and fill before adding it to an array of GridFill objects
|
||||||
|
*/
|
||||||
|
void constructGridFillArray()
|
||||||
|
{
|
||||||
|
gridFillArray.clear();
|
||||||
|
|
||||||
|
int counter = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < numColumns; ++i)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < numRows; ++j)
|
||||||
|
{
|
||||||
|
DrumPadGridProgram::GridFill fill;
|
||||||
|
Colour colourToUse = colourArray.getUnchecked (counter);
|
||||||
|
|
||||||
|
fill.colour = colourToUse.withBrightness (colourToUse == currentColour ? 1.0 : 0.1);
|
||||||
|
|
||||||
|
if (colourToUse == Colours::black)
|
||||||
|
fill.fillType = DrumPadGridProgram::GridFill::FillType::hollow;
|
||||||
|
else
|
||||||
|
fill.fillType = DrumPadGridProgram::GridFill::FillType::filled;
|
||||||
|
|
||||||
|
gridFillArray.add (fill);
|
||||||
|
|
||||||
|
if (++counter == colourArray.size())
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Sets which colour should be active for a given touch co-ordinate. Returns
|
||||||
|
true if the colour has changed
|
||||||
|
*/
|
||||||
|
bool setActiveColourForTouch (int x, int y)
|
||||||
|
{
|
||||||
|
bool colourHasChanged = false;
|
||||||
|
|
||||||
|
int xindex = x / 5;
|
||||||
|
int yindex = y / 5;
|
||||||
|
|
||||||
|
Colour newColour = colourArray.getUnchecked ((yindex * 3) + xindex);
|
||||||
|
if (currentColour != newColour)
|
||||||
|
{
|
||||||
|
currentColour = newColour;
|
||||||
|
constructGridFillArray();
|
||||||
|
colourHasChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return colourHasChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
int numColumns, numRows;
|
||||||
|
float width, height;
|
||||||
|
|
||||||
|
Array<DrumPadGridProgram::GridFill> gridFillArray;
|
||||||
|
Array<Colour> colourArray = { Colours::white, Colours::red, Colours::green, Colours::blue, Colours::hotpink,
|
||||||
|
Colours::orange, Colours::magenta, Colours::cyan, Colours::black };
|
||||||
|
Colour currentColour = Colours::hotpink;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ColourGrid)
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
The main component
|
||||||
|
*/
|
||||||
|
class MainComponent : public Component,
|
||||||
|
public TopologySource::Listener,
|
||||||
|
private TouchSurface::Listener,
|
||||||
|
private ControlButton::Listener,
|
||||||
|
private Timer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MainComponent() : layout (3, 3)
|
||||||
|
{
|
||||||
|
setSize (600, 400);
|
||||||
|
|
||||||
|
activeLeds.clear();
|
||||||
|
|
||||||
|
// Register MainContentComponent as a listener to the PhysicalTopologySource object
|
||||||
|
topologySource.addListener (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
~MainComponent()
|
||||||
|
{
|
||||||
|
if (activeBlock != nullptr)
|
||||||
|
detachActiveBlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void paint (Graphics& g) override
|
||||||
|
{
|
||||||
|
g.fillAll (Colours::lightgrey);
|
||||||
|
}
|
||||||
|
|
||||||
|
void resized() override {}
|
||||||
|
|
||||||
|
/** Overridden from TopologySource::Listener. Called when the topology changes */
|
||||||
|
void topologyChanged() override
|
||||||
|
{
|
||||||
|
// Reset the activeBlock object
|
||||||
|
if (activeBlock != nullptr)
|
||||||
|
detachActiveBlock();
|
||||||
|
|
||||||
|
// Get the array of currently connected Block objects from the PhysicalTopologySource
|
||||||
|
Block::Array blocks = topologySource.getCurrentTopology().blocks;
|
||||||
|
|
||||||
|
// Iterate over the array of Block objects
|
||||||
|
for (auto b : blocks)
|
||||||
|
{
|
||||||
|
// Find the first Lightpad
|
||||||
|
if (b->getType() == Block::Type::lightPadBlock)
|
||||||
|
{
|
||||||
|
activeBlock = b;
|
||||||
|
|
||||||
|
// Register MainContentComponent as a listener to the touch surface
|
||||||
|
if (auto surface = activeBlock->getTouchSurface())
|
||||||
|
surface->addListener (this);
|
||||||
|
|
||||||
|
// Register MainContentComponent as a listener to any buttons
|
||||||
|
for (auto button : activeBlock->getButtons())
|
||||||
|
button->addListener (this);
|
||||||
|
|
||||||
|
// Get the LEDGrid object from the Lightpad and set its program to the program for the current mode
|
||||||
|
if (auto grid = activeBlock->getLEDGrid())
|
||||||
|
{
|
||||||
|
// Work out scale factors to translate X and Y touches to LED indexes
|
||||||
|
scaleX = (float) (grid->getNumColumns() - 1) / activeBlock->getWidth();
|
||||||
|
scaleY = (float) (grid->getNumRows() - 1) / activeBlock->getHeight();
|
||||||
|
|
||||||
|
setLEDProgram (grid);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
/** Overridden from TouchSurface::Listener. Called when a Touch is received on the Lightpad */
|
||||||
|
void touchChanged (TouchSurface&, const TouchSurface::Touch& touch) override
|
||||||
|
{
|
||||||
|
// Translate X and Y touch events to LED indexes
|
||||||
|
int xLed = roundToInt (touch.x * scaleX);
|
||||||
|
int yLed = roundToInt (touch.y * scaleY);
|
||||||
|
|
||||||
|
if (currentMode == colourPalette)
|
||||||
|
{
|
||||||
|
if (layout.setActiveColourForTouch (xLed, yLed))
|
||||||
|
colourPaletteProgram->setGridFills (layout.numColumns, layout.numRows, layout.gridFillArray);
|
||||||
|
}
|
||||||
|
else if (currentMode == canvas)
|
||||||
|
{
|
||||||
|
drawLEDs ((uint32) xLed, (uint32) yLed, touch.z, layout.currentColour);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Overridden from ControlButton::Listener. Called when a button on the Lightpad is pressed */
|
||||||
|
void buttonPressed (ControlButton&, Block::Timestamp) override {};
|
||||||
|
|
||||||
|
/** Overridden from ControlButton::Listener. Called when a button on the Lightpad is released */
|
||||||
|
void buttonReleased (ControlButton&, Block::Timestamp) override
|
||||||
|
{
|
||||||
|
if (currentMode == canvas)
|
||||||
|
{
|
||||||
|
// Wait 500ms to see if there is a second press
|
||||||
|
if (! isTimerRunning())
|
||||||
|
startTimer (500);
|
||||||
|
else
|
||||||
|
doublePress = true;
|
||||||
|
}
|
||||||
|
else if (currentMode == colourPalette)
|
||||||
|
{
|
||||||
|
// Switch to canvas mode and set the LEDGrid program
|
||||||
|
currentMode = canvas;
|
||||||
|
setLEDProgram (activeBlock->getLEDGrid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void timerCallback() override
|
||||||
|
{
|
||||||
|
if (doublePress)
|
||||||
|
{
|
||||||
|
// Clear the LED grid
|
||||||
|
for (uint32 x = 0; x < 15; ++x)
|
||||||
|
for (uint32 y = 0; y < 15; ++ y)
|
||||||
|
canvasProgram->setLED (x, y, Colours::black);
|
||||||
|
|
||||||
|
// Clear the ActiveLED array
|
||||||
|
activeLeds.clear();
|
||||||
|
|
||||||
|
// Reset the doublePress flag
|
||||||
|
doublePress = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Switch to colour palette mode and set the LEDGrid program
|
||||||
|
currentMode = colourPalette;
|
||||||
|
setLEDProgram (activeBlock->getLEDGrid());
|
||||||
|
}
|
||||||
|
|
||||||
|
stopTimer();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Removes TouchSurface and ControlButton listeners and sets activeBlock to nullptr */
|
||||||
|
void detachActiveBlock()
|
||||||
|
{
|
||||||
|
if (auto surface = activeBlock->getTouchSurface())
|
||||||
|
surface->removeListener (this);
|
||||||
|
|
||||||
|
for (auto button : activeBlock->getButtons())
|
||||||
|
button->removeListener (this);
|
||||||
|
|
||||||
|
activeBlock = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Sets the LEDGrid Program for the selected mode */
|
||||||
|
void setLEDProgram (LEDGrid* grid)
|
||||||
|
{
|
||||||
|
if (currentMode == canvas)
|
||||||
|
{
|
||||||
|
// Create a new BitmapLEDProgram for the LEDGrid
|
||||||
|
canvasProgram = new BitmapLEDProgram (*grid);
|
||||||
|
|
||||||
|
// Set the LEDGrid program
|
||||||
|
grid->setProgram (canvasProgram);
|
||||||
|
|
||||||
|
// Redraw any previously drawn LEDs
|
||||||
|
redrawLEDs();
|
||||||
|
}
|
||||||
|
else if (currentMode == colourPalette)
|
||||||
|
{
|
||||||
|
// Create a new DrumPadGridProgram for the LEDGrid
|
||||||
|
colourPaletteProgram = new DrumPadGridProgram (*grid);
|
||||||
|
|
||||||
|
// Set the LEDGrid program
|
||||||
|
grid->setProgram (colourPaletteProgram);
|
||||||
|
|
||||||
|
// Setup the grid layout
|
||||||
|
colourPaletteProgram->setGridFills (layout.numColumns, layout.numRows, layout.gridFillArray);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Sets an LED on the Lightpad for a given touch co-ordinate and pressure */
|
||||||
|
void drawLEDs (uint32 x0, uint32 y0, float z, Colour drawColour)
|
||||||
|
{
|
||||||
|
// Check if the activeLeds array already contains an ActiveLED object for this LED
|
||||||
|
int index = -1;
|
||||||
|
for (int i = 0; i < activeLeds.size(); ++i)
|
||||||
|
{
|
||||||
|
if (activeLeds.getReference(i).occupies (x0, y0))
|
||||||
|
{
|
||||||
|
index = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the colour is black then just set the LED to black and return
|
||||||
|
if (drawColour == Colours::black)
|
||||||
|
{
|
||||||
|
if (index != -1)
|
||||||
|
{
|
||||||
|
canvasProgram->setLED (x0, y0, Colours::black);
|
||||||
|
activeLeds.remove (index);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there is no ActiveLED obejct for this LED then create one,
|
||||||
|
// add it to the array, set the LED on the Block and return
|
||||||
|
if (index == -1)
|
||||||
|
{
|
||||||
|
ActiveLED led;
|
||||||
|
led.x = x0;
|
||||||
|
led.y = y0;
|
||||||
|
led.colour = drawColour;
|
||||||
|
led.brightness = z;
|
||||||
|
|
||||||
|
activeLeds.add (led);
|
||||||
|
canvasProgram->setLED (led.x, led.y, led.colour.withBrightness (led.brightness));
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the ActiveLED object for this LED
|
||||||
|
ActiveLED currentLed = activeLeds.getReference (index);
|
||||||
|
|
||||||
|
// If the LED colour is the same as the draw colour, add the brightnesses together.
|
||||||
|
// If it is different, blend the colours
|
||||||
|
if (currentLed.colour == drawColour)
|
||||||
|
currentLed.brightness = jmin (currentLed.brightness + z, 1.0f);
|
||||||
|
else
|
||||||
|
currentLed.colour = currentLed.colour.interpolatedWith (drawColour, z);
|
||||||
|
|
||||||
|
|
||||||
|
// Set the LED on the Block and change the ActiveLED object in the activeLeds array
|
||||||
|
canvasProgram->setLED (currentLed.x, currentLed.y, currentLed.colour.withBrightness (currentLed.brightness));
|
||||||
|
activeLeds.set (index, currentLed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Redraws the LEDs on the Lightpad from the activeLeds array */
|
||||||
|
void redrawLEDs()
|
||||||
|
{
|
||||||
|
// Iterate over the activeLeds array and set the LEDs on the Block
|
||||||
|
for (auto led : activeLeds)
|
||||||
|
canvasProgram->setLED (led.x, led.y, led.colour.withBrightness (led.brightness));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
A struct that represents an active LED on the Lightpad.
|
||||||
|
Has a position, colour and brightness.
|
||||||
|
*/
|
||||||
|
struct ActiveLED
|
||||||
|
{
|
||||||
|
uint32 x;
|
||||||
|
uint32 y;
|
||||||
|
Colour colour;
|
||||||
|
float brightness;
|
||||||
|
|
||||||
|
/** Returns true if this LED occupies the given co-ordiantes */
|
||||||
|
bool occupies (uint32 xPos, uint32 yPos) const
|
||||||
|
{
|
||||||
|
if (xPos == x && yPos == y)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Array<ActiveLED> activeLeds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
enum for the two modes
|
||||||
|
*/
|
||||||
|
enum DisplayMode
|
||||||
|
{
|
||||||
|
colourPalette = 0,
|
||||||
|
canvas
|
||||||
|
};
|
||||||
|
DisplayMode currentMode = colourPalette;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
BitmapLEDProgram* canvasProgram;
|
||||||
|
DrumPadGridProgram* colourPaletteProgram;
|
||||||
|
|
||||||
|
ColourGrid layout;
|
||||||
|
PhysicalTopologySource topologySource;
|
||||||
|
Block::Ptr activeBlock;
|
||||||
|
|
||||||
|
float scaleX = 0.0;
|
||||||
|
float scaleY = 0.0;
|
||||||
|
|
||||||
|
bool doublePress = false;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // MAINCOMPONENT_H_INCLUDED
|
||||||
113
examples/BLOCKS/BlocksMonitor/BlocksMonitor.jucer
Normal file
113
examples/BLOCKS/BlocksMonitor/BlocksMonitor.jucer
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<JUCERPROJECT id="X7eXs7" name="BlocksMonitor" projectType="guiapp" version="1.0.0"
|
||||||
|
bundleIdentifier="com.yourcompany.BlocksInfo" includeBinaryInAppConfig="1"
|
||||||
|
jucerVersion="4.2.4">
|
||||||
|
<MAINGROUP id="msZ9DB" name="BlocksMonitor">
|
||||||
|
<GROUP id="{2C318C74-6596-8102-3CA6-602595447F25}" name="Source">
|
||||||
|
<FILE id="Tw2mMp" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>
|
||||||
|
<FILE id="lyGFuY" name="BlockComponents.h" compile="0" resource="0"
|
||||||
|
file="Source/BlockComponents.h"/>
|
||||||
|
<FILE id="bXevSG" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/>
|
||||||
|
</GROUP>
|
||||||
|
</MAINGROUP>
|
||||||
|
<EXPORTFORMATS>
|
||||||
|
<XCODE_MAC targetFolder="Builds/MacOSX" extraCompilerFlags="">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksMonitor"/>
|
||||||
|
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksMonitor"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</XCODE_MAC>
|
||||||
|
<VS2013 targetFolder="Builds/VisualStudio2013">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="1" optimisation="1" targetName="BlocksMonitor"/>
|
||||||
|
<CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="0" optimisation="3" targetName="BlocksMonitor"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</VS2013>
|
||||||
|
<VS2015 targetFolder="Builds/VisualStudio2015">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="1" optimisation="1" targetName="BlocksMonitor"/>
|
||||||
|
<CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="0" optimisation="3" targetName="BlocksMonitor"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</VS2015>
|
||||||
|
<LINUX_MAKE targetFolder="Builds/LinuxMakefile">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksMonitor"/>
|
||||||
|
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksMonitor"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</LINUX_MAKE>
|
||||||
|
</EXPORTFORMATS>
|
||||||
|
<MODULES>
|
||||||
|
<MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_blocks_basics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
</MODULES>
|
||||||
|
<JUCEOPTIONS/>
|
||||||
|
<LIVE_SETTINGS>
|
||||||
|
<OSX/>
|
||||||
|
</LIVE_SETTINGS>
|
||||||
|
</JUCERPROJECT>
|
||||||
154
examples/BLOCKS/BlocksMonitor/Builds/LinuxMakefile/Makefile
Normal file
154
examples/BLOCKS/BlocksMonitor/Builds/LinuxMakefile/Makefile
Normal file
|
|
@ -0,0 +1,154 @@
|
||||||
|
# Automatically generated makefile, created by the Projucer
|
||||||
|
# Don't edit this file! Your changes will be overwritten when you re-save the Projucer project!
|
||||||
|
|
||||||
|
# (this disables dependency generation if multiple architectures are set)
|
||||||
|
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)
|
||||||
|
|
||||||
|
ifndef STRIP
|
||||||
|
STRIP=strip
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef AR
|
||||||
|
AR=ar
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef CONFIG
|
||||||
|
CONFIG=Debug
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG),Debug)
|
||||||
|
JUCE_BINDIR := build
|
||||||
|
JUCE_LIBDIR := build
|
||||||
|
JUCE_OBJDIR := build/intermediate/Debug
|
||||||
|
JUCE_OUTDIR := build
|
||||||
|
|
||||||
|
ifeq ($(TARGET_ARCH),)
|
||||||
|
TARGET_ARCH := -march=native
|
||||||
|
endif
|
||||||
|
|
||||||
|
JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules
|
||||||
|
JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0
|
||||||
|
JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11
|
||||||
|
JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt
|
||||||
|
|
||||||
|
TARGET := BlocksMonitor
|
||||||
|
BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
|
||||||
|
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG),Release)
|
||||||
|
JUCE_BINDIR := build
|
||||||
|
JUCE_LIBDIR := build
|
||||||
|
JUCE_OBJDIR := build/intermediate/Release
|
||||||
|
JUCE_OUTDIR := build
|
||||||
|
|
||||||
|
ifeq ($(TARGET_ARCH),)
|
||||||
|
TARGET_ARCH := -march=native
|
||||||
|
endif
|
||||||
|
|
||||||
|
JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules
|
||||||
|
JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3
|
||||||
|
JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11
|
||||||
|
JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt
|
||||||
|
|
||||||
|
TARGET := BlocksMonitor
|
||||||
|
BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
|
||||||
|
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
OBJECTS := \
|
||||||
|
$(JUCE_OBJDIR)/Main_90ebc5c2.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_core_75b14332.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_events_d2be882c.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_graphics_9c18891e.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
|
||||||
|
$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)
|
||||||
|
@echo Linking BlocksMonitor
|
||||||
|
-@mkdir -p $(JUCE_BINDIR)
|
||||||
|
-@mkdir -p $(JUCE_LIBDIR)
|
||||||
|
-@mkdir -p $(JUCE_OUTDIR)
|
||||||
|
@$(BLDCMD)
|
||||||
|
|
||||||
|
check-pkg-config:
|
||||||
|
@command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }
|
||||||
|
@pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@echo Cleaning BlocksMonitor
|
||||||
|
@$(CLEANCMD)
|
||||||
|
|
||||||
|
strip:
|
||||||
|
@echo Stripping BlocksMonitor
|
||||||
|
-@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling Main.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_audio_basics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_audio_devices.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_audio_formats.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o: ../../JuceLibraryCode/juce_blocks_basics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_blocks_basics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_core.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_data_structures.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_events.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_graphics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_gui_basics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_gui_extra.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_opengl.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
-include $(OBJECTS:%.o=%.d)
|
||||||
File diff suppressed because it is too large
Load diff
29
examples/BLOCKS/BlocksMonitor/Builds/MacOSX/Info-App.plist
Normal file
29
examples/BLOCKS/BlocksMonitor/Builds/MacOSX/Info-App.plist
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>BlocksMonitor</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>BlocksMonitor</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0.0</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0.0</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
BIN
examples/BLOCKS/BlocksMonitor/Builds/MacOSX/RecentFilesMenuTemplate.nib
generated
Normal file
BIN
examples/BLOCKS/BlocksMonitor/Builds/MacOSX/RecentFilesMenuTemplate.nib
generated
Normal file
Binary file not shown.
|
|
@ -0,0 +1,19 @@
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual Studio 2013
|
||||||
|
Project("{2A58BC08-D4BC-752C-26E3-197C4DF6FFF2}") = "BlocksMonitor", "BlocksMonitor.vcxproj", "{C732A69E-6750-67A4-2834-8CD8A6CDC360}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{C732A69E-6750-67A4-2834-8CD8A6CDC360}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{C732A69E-6750-67A4-2834-8CD8A6CDC360}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{C732A69E-6750-67A4-2834-8CD8A6CDC360}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{C732A69E-6750-67A4-2834-8CD8A6CDC360}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,29 @@
|
||||||
|
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#include JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#else
|
||||||
|
|
||||||
|
#undef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 1,0,0,0
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904E4"
|
||||||
|
BEGIN
|
||||||
|
VALUE "FileDescription", "BlocksMonitor\0"
|
||||||
|
VALUE "FileVersion", "1.0.0\0"
|
||||||
|
VALUE "ProductName", "BlocksMonitor\0"
|
||||||
|
VALUE "ProductVersion", "1.0.0\0"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1252
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual Studio 2015
|
||||||
|
Project("{2A58BC08-D4BC-752C-26E3-197C4DF6FFF2}") = "BlocksMonitor", "BlocksMonitor.vcxproj", "{C732A69E-6750-67A4-2834-8CD8A6CDC360}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{C732A69E-6750-67A4-2834-8CD8A6CDC360}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{C732A69E-6750-67A4-2834-8CD8A6CDC360}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{C732A69E-6750-67A4-2834-8CD8A6CDC360}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{C732A69E-6750-67A4-2834-8CD8A6CDC360}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,29 @@
|
||||||
|
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#include JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#else
|
||||||
|
|
||||||
|
#undef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 1,0,0,0
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904E4"
|
||||||
|
BEGIN
|
||||||
|
VALUE "FileDescription", "BlocksMonitor\0"
|
||||||
|
VALUE "FileVersion", "1.0.0\0"
|
||||||
|
VALUE "ProductName", "BlocksMonitor\0"
|
||||||
|
VALUE "ProductVersion", "1.0.0\0"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1252
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif
|
||||||
179
examples/BLOCKS/BlocksMonitor/JuceLibraryCode/AppConfig.h
Normal file
179
examples/BLOCKS/BlocksMonitor/JuceLibraryCode/AppConfig.h
Normal file
|
|
@ -0,0 +1,179 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
There's a section below where you can add your own custom code safely, and the
|
||||||
|
Projucer will preserve the contents of that block, but the best way to change
|
||||||
|
any of these definitions is by using the Projucer's project settings.
|
||||||
|
|
||||||
|
Any commented-out settings will assume their default values.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __JUCE_APPCONFIG_X7EXS7__
|
||||||
|
#define __JUCE_APPCONFIG_X7EXS7__
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// [BEGIN_USER_CODE_SECTION]
|
||||||
|
|
||||||
|
// (You can add your own code in this section, and the Projucer will not overwrite it)
|
||||||
|
|
||||||
|
// [END_USER_CODE_SECTION]
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_audio_basics 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_audio_devices 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_audio_formats 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_blocks_basics 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_core 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_data_structures 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_events 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_graphics 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_gui_basics 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_gui_extra 1
|
||||||
|
#define JUCE_MODULE_AVAILABLE_juce_opengl 1
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
#ifndef JUCE_STANDALONE_APPLICATION
|
||||||
|
#ifdef JucePlugin_Build_Standalone
|
||||||
|
#define JUCE_STANDALONE_APPLICATION JucePlugin_Build_Standalone
|
||||||
|
#else
|
||||||
|
#define JUCE_STANDALONE_APPLICATION 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED 1
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_audio_devices flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_ASIO
|
||||||
|
//#define JUCE_ASIO
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_WASAPI
|
||||||
|
//#define JUCE_WASAPI
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_WASAPI_EXCLUSIVE
|
||||||
|
//#define JUCE_WASAPI_EXCLUSIVE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_DIRECTSOUND
|
||||||
|
//#define JUCE_DIRECTSOUND
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_ALSA
|
||||||
|
//#define JUCE_ALSA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_JACK
|
||||||
|
//#define JUCE_JACK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_ANDROID_OPENSLES
|
||||||
|
//#define JUCE_USE_ANDROID_OPENSLES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_audio_formats flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_FLAC
|
||||||
|
//#define JUCE_USE_FLAC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_OGGVORBIS
|
||||||
|
//#define JUCE_USE_OGGVORBIS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_MP3AUDIOFORMAT
|
||||||
|
//#define JUCE_USE_MP3AUDIOFORMAT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_LAME_AUDIO_FORMAT
|
||||||
|
//#define JUCE_USE_LAME_AUDIO_FORMAT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_WINDOWS_MEDIA_FORMAT
|
||||||
|
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_core flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_FORCE_DEBUG
|
||||||
|
//#define JUCE_FORCE_DEBUG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_LOG_ASSERTIONS
|
||||||
|
//#define JUCE_LOG_ASSERTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_CHECK_MEMORY_LEAKS
|
||||||
|
//#define JUCE_CHECK_MEMORY_LEAKS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||||
|
//#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_INCLUDE_ZLIB_CODE
|
||||||
|
//#define JUCE_INCLUDE_ZLIB_CODE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_CURL
|
||||||
|
//#define JUCE_USE_CURL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS
|
||||||
|
//#define JUCE_CATCH_UNHANDLED_EXCEPTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES
|
||||||
|
//#define JUCE_ALLOW_STATIC_NULL_VARIABLES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_graphics flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_COREIMAGE_LOADER
|
||||||
|
//#define JUCE_USE_COREIMAGE_LOADER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_DIRECTWRITE
|
||||||
|
//#define JUCE_USE_DIRECTWRITE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_gui_basics flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_ENABLE_REPAINT_DEBUGGING
|
||||||
|
//#define JUCE_ENABLE_REPAINT_DEBUGGING
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_XSHM
|
||||||
|
//#define JUCE_USE_XSHM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_XRENDER
|
||||||
|
//#define JUCE_USE_XRENDER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_USE_XCURSOR
|
||||||
|
//#define JUCE_USE_XCURSOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// juce_gui_extra flags:
|
||||||
|
|
||||||
|
#ifndef JUCE_WEB_BROWSER
|
||||||
|
//#define JUCE_WEB_BROWSER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR
|
||||||
|
//#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __JUCE_APPCONFIG_X7EXS7__
|
||||||
46
examples/BLOCKS/BlocksMonitor/JuceLibraryCode/JuceHeader.h
Normal file
46
examples/BLOCKS/BlocksMonitor/JuceLibraryCode/JuceHeader.h
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
This is the header file that your files should include in order to get all the
|
||||||
|
JUCE library headers. You should avoid including the JUCE headers directly in
|
||||||
|
your own source files, because that wouldn't pick up the correct configuration
|
||||||
|
options for your app.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __APPHEADERFILE_X7EXS7__
|
||||||
|
#define __APPHEADERFILE_X7EXS7__
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
|
||||||
|
#include <juce_audio_basics/juce_audio_basics.h>
|
||||||
|
#include <juce_audio_devices/juce_audio_devices.h>
|
||||||
|
#include <juce_audio_formats/juce_audio_formats.h>
|
||||||
|
#include <juce_blocks_basics/juce_blocks_basics.h>
|
||||||
|
#include <juce_core/juce_core.h>
|
||||||
|
#include <juce_data_structures/juce_data_structures.h>
|
||||||
|
#include <juce_events/juce_events.h>
|
||||||
|
#include <juce_graphics/juce_graphics.h>
|
||||||
|
#include <juce_gui_basics/juce_gui_basics.h>
|
||||||
|
#include <juce_gui_extra/juce_gui_extra.h>
|
||||||
|
#include <juce_opengl/juce_opengl.h>
|
||||||
|
|
||||||
|
|
||||||
|
#if ! DONT_SET_USING_JUCE_NAMESPACE
|
||||||
|
// If your code uses a lot of JUCE classes, then this will obviously save you
|
||||||
|
// a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
|
||||||
|
using namespace juce;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ! JUCE_DONT_DECLARE_PROJECTINFO
|
||||||
|
namespace ProjectInfo
|
||||||
|
{
|
||||||
|
const char* const projectName = "BlocksMonitor";
|
||||||
|
const char* const versionString = "1.0.0";
|
||||||
|
const int versionNumber = 0x10000;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // __APPHEADERFILE_X7EXS7__
|
||||||
12
examples/BLOCKS/BlocksMonitor/JuceLibraryCode/ReadMe.txt
Normal file
12
examples/BLOCKS/BlocksMonitor/JuceLibraryCode/ReadMe.txt
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
Important Note!!
|
||||||
|
================
|
||||||
|
|
||||||
|
The purpose of this folder is to contain files that are auto-generated by the Projucer,
|
||||||
|
and ALL files in this folder will be mercilessly DELETED and completely re-written whenever
|
||||||
|
the Projucer saves your project.
|
||||||
|
|
||||||
|
Therefore, it's a bad idea to make any manual changes to the files in here, or to
|
||||||
|
put any of your own files in here if you don't want to lose them. (Of course you may choose
|
||||||
|
to add the folder's contents to your version-control system so that you can re-merge your own
|
||||||
|
modifications after the Projucer has saved its changes).
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_basics/juce_audio_basics.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_basics/juce_audio_basics.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_devices/juce_audio_devices.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_devices/juce_audio_devices.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_formats/juce_audio_formats.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_audio_formats/juce_audio_formats.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_blocks_basics/juce_blocks_basics.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_core/juce_core.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_core/juce_core.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_data_structures/juce_data_structures.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_data_structures/juce_data_structures.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_events/juce_events.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_events/juce_events.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_graphics/juce_graphics.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_graphics/juce_graphics.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_gui_basics/juce_gui_basics.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_gui_basics/juce_gui_basics.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_gui_extra/juce_gui_extra.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_gui_extra/juce_gui_extra.mm>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_opengl/juce_opengl.cpp>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
IMPORTANT! This file is auto-generated each time you save your
|
||||||
|
project - if you alter its contents, your changes may be overwritten!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "AppConfig.h"
|
||||||
|
#include <juce_opengl/juce_opengl.mm>
|
||||||
428
examples/BLOCKS/BlocksMonitor/Source/BlockComponents.h
Normal file
428
examples/BLOCKS/BlocksMonitor/Source/BlockComponents.h
Normal file
|
|
@ -0,0 +1,428 @@
|
||||||
|
|
||||||
|
#ifndef BLOCKCOMPONENTS_H_INCLUDED
|
||||||
|
#define BLOCKCOMPONENTS_H_INCLUDED
|
||||||
|
|
||||||
|
#include "../JuceLibraryCode/JuceHeader.h"
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/**
|
||||||
|
Base class that renders a Block on the screen
|
||||||
|
*/
|
||||||
|
class BlockComponent : public Component,
|
||||||
|
public SettableTooltipClient,
|
||||||
|
private TouchSurface::Listener,
|
||||||
|
private ControlButton::Listener,
|
||||||
|
private Timer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/** Constructor */
|
||||||
|
BlockComponent (Block::Ptr blockToUse)
|
||||||
|
: block (blockToUse)
|
||||||
|
{
|
||||||
|
updateStatsAndTooltip();
|
||||||
|
|
||||||
|
// Register BlockComponent as a listener to the touch surface
|
||||||
|
if (auto touchSurface = block->getTouchSurface())
|
||||||
|
touchSurface->addListener (this);
|
||||||
|
|
||||||
|
// Register BlockComponent as a listener to any buttons
|
||||||
|
for (auto button : block->getButtons())
|
||||||
|
button->addListener (this);
|
||||||
|
|
||||||
|
// If this is a Lightpad then set the grid program to be blank
|
||||||
|
if (auto grid = block->getLEDGrid())
|
||||||
|
grid->setProgram (new BitmapLEDProgram(*grid));
|
||||||
|
|
||||||
|
// If this is a Lightpad then redraw it at 25Hz
|
||||||
|
if (block->getType() == Block::lightPadBlock)
|
||||||
|
startTimerHz (25);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Destructor */
|
||||||
|
~BlockComponent()
|
||||||
|
{
|
||||||
|
// Remove any listeners
|
||||||
|
if (auto touchSurface = block->getTouchSurface())
|
||||||
|
touchSurface->removeListener (this);
|
||||||
|
|
||||||
|
for (auto button : block->getButtons())
|
||||||
|
button->removeListener (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Called periodically to update the tooltip with inforamtion about the Block */
|
||||||
|
void updateStatsAndTooltip()
|
||||||
|
{
|
||||||
|
// Get the battery level of this Block and inform any subclasses
|
||||||
|
const float batteryLevel = block->getBatteryLevel();
|
||||||
|
handleBatteryLevelUpdate (batteryLevel);
|
||||||
|
|
||||||
|
// Format the tooltip string
|
||||||
|
const String ttString = "Name = " + block->getDeviceDescription() + "\n"
|
||||||
|
+ "UID = " + String (block->uid) + "\n"
|
||||||
|
+ "Serial number = " + block->serialNumber + "\n"
|
||||||
|
+ "Battery level = " + String ((int) (batteryLevel * 100)) + "%"
|
||||||
|
+ (block->isBatteryCharging() ? "++" : "--");
|
||||||
|
|
||||||
|
// Update the tooltip string if it has changed
|
||||||
|
if (ttString != getTooltip())
|
||||||
|
setTooltip (ttString);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Subclasses should override this to paint the Block object on the screen */
|
||||||
|
virtual void paint (Graphics&) override = 0;
|
||||||
|
|
||||||
|
/** Subclasses can override this to receive button down events from the Block */
|
||||||
|
virtual void handleButtonPressed (ControlButton::ButtonFunction, uint32) {}
|
||||||
|
|
||||||
|
/** Subclasses can override this to receive button up events from the Block */
|
||||||
|
virtual void handleButtonReleased (ControlButton::ButtonFunction, uint32) {}
|
||||||
|
|
||||||
|
/** Subclasses can override this to receive touch events from the Block */
|
||||||
|
virtual void handleTouchChange (TouchSurface::Touch) {}
|
||||||
|
|
||||||
|
/** Subclasses can override this to battery level updates from the Block */
|
||||||
|
virtual void handleBatteryLevelUpdate (float) {}
|
||||||
|
|
||||||
|
/** The Block object that this class represents */
|
||||||
|
Block::Ptr block;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Returns an integer index corresponding to a physical position on the hardware
|
||||||
|
for each type of Control Block. */
|
||||||
|
static int controlButtonFunctionToIndex (ControlButton::ButtonFunction f)
|
||||||
|
{
|
||||||
|
static std::initializer_list<ControlButton::ButtonFunction> map[] =
|
||||||
|
{{ControlButton::mode, ControlButton::button0},
|
||||||
|
{ControlButton::volume, ControlButton::button1},
|
||||||
|
{ControlButton::scale, ControlButton::button2, ControlButton::click},
|
||||||
|
{ControlButton::chord, ControlButton::button3, ControlButton::snap},
|
||||||
|
{ControlButton::arp,ControlButton:: button4, ControlButton::back},
|
||||||
|
{ControlButton::sustain, ControlButton::button5, ControlButton::playOrPause},
|
||||||
|
{ControlButton::octave, ControlButton::button6, ControlButton::record},
|
||||||
|
{ControlButton::love, ControlButton::button7, ControlButton::learn},
|
||||||
|
{ControlButton::up},
|
||||||
|
{ControlButton::down}};
|
||||||
|
|
||||||
|
for (size_t i = 0; i < (sizeof (map) / sizeof (map[0])); ++i)
|
||||||
|
if (std::find (map[i].begin(), map[i].end(), f) != map[i].end())
|
||||||
|
return static_cast<int> (i);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
/** Used to call repaint() periodically */
|
||||||
|
void timerCallback() override { repaint(); }
|
||||||
|
|
||||||
|
/** Overridden from TouchSurface::Listener */
|
||||||
|
void touchChanged (TouchSurface&, const TouchSurface::Touch& t) override { handleTouchChange (t); }
|
||||||
|
|
||||||
|
/** Overridden from ControlButton::Listener */
|
||||||
|
void buttonPressed (ControlButton& b, Block::Timestamp t) override { handleButtonPressed (b.getType(), t); }
|
||||||
|
|
||||||
|
/** Overridden from ControlButton::Listener */
|
||||||
|
void buttonReleased (ControlButton& b, Block::Timestamp t) override { handleButtonReleased (b.getType(), t); }
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BlockComponent)
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Class that renders a Lightpad on the screen
|
||||||
|
*/
|
||||||
|
class LightpadComponent : public BlockComponent
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LightpadComponent (Block::Ptr blockToUse)
|
||||||
|
: BlockComponent (blockToUse)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void paint (Graphics& g) override
|
||||||
|
{
|
||||||
|
auto r = getLocalBounds().toFloat();
|
||||||
|
|
||||||
|
// clip the drawing area to only draw in the block area
|
||||||
|
{
|
||||||
|
Path clipArea;
|
||||||
|
clipArea.addRoundedRectangle (r, r.getWidth() / 20.0f);
|
||||||
|
|
||||||
|
g.reduceClipRegion (clipArea);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill a black square for the Lightpad
|
||||||
|
g.fillAll (Colours::black);
|
||||||
|
|
||||||
|
// size ration between physical and on-screen blocks
|
||||||
|
const Point<float> ratio (r.getWidth() / block->getWidth(),
|
||||||
|
r.getHeight() / block->getHeight());
|
||||||
|
const float maxCircleSize = block->getWidth() / 3.0f;
|
||||||
|
|
||||||
|
// iterate over the list of current touches and draw them on the onscreen Block
|
||||||
|
for (auto touch : touches)
|
||||||
|
{
|
||||||
|
const float circleSize = touch.touch.z * maxCircleSize;
|
||||||
|
const Point<float> touchPosition = Point<float> (touch.touch.x, touch.touch.y);
|
||||||
|
|
||||||
|
const Colour c = colourArray[touch.touch.index];
|
||||||
|
const Rectangle<float> blob =
|
||||||
|
(Rectangle<float> (circleSize, circleSize).withCentre (touchPosition)) * ratio;
|
||||||
|
|
||||||
|
const ColourGradient cg = ColourGradient (colourArray[touch.touch.index], blob.getCentreX(), blob.getCentreY(),
|
||||||
|
Colours::transparentBlack, blob.getRight(), blob.getBottom(),
|
||||||
|
true);
|
||||||
|
|
||||||
|
g.setGradientFill (cg);
|
||||||
|
g.fillEllipse (blob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleTouchChange (TouchSurface::Touch touch) override { touches.updateTouch (touch); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
/** An Array of colours to use for touches */
|
||||||
|
Array<Colour> colourArray = { Colours::red, Colours::blue, Colours::green,
|
||||||
|
Colours::yellow, Colours::white, Colours::hotpink,
|
||||||
|
Colours::mediumpurple };
|
||||||
|
|
||||||
|
/** A list of current Touch events */
|
||||||
|
TouchList<TouchSurface::Touch> touches;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LightpadComponent)
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Class that renders a Control Block on the screen
|
||||||
|
*/
|
||||||
|
class ControlBlockComponent : public BlockComponent
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ControlBlockComponent (Block::Ptr blockToUse)
|
||||||
|
: BlockComponent (blockToUse),
|
||||||
|
numLeds (block->getLEDRow()->getNumLEDs())
|
||||||
|
{
|
||||||
|
addAndMakeVisible (roundedRectangleButton);
|
||||||
|
|
||||||
|
// Display the battery level on the LEDRow
|
||||||
|
int numLedsToTurnOn = static_cast<int> (static_cast<float> (numLeds) * block->getBatteryLevel());
|
||||||
|
|
||||||
|
// add LEDs
|
||||||
|
LEDComponent* ledComponent;
|
||||||
|
for (int i = 0; i < numLeds; ++i)
|
||||||
|
{
|
||||||
|
ledComponent = new LEDComponent();
|
||||||
|
ledComponent->setOnState (i < numLedsToTurnOn);
|
||||||
|
|
||||||
|
addAndMakeVisible (leds.add (ledComponent));
|
||||||
|
}
|
||||||
|
|
||||||
|
previousNumLedsOn = numLedsToTurnOn;
|
||||||
|
|
||||||
|
// add buttons
|
||||||
|
for (int i = 0; i < 8; ++i)
|
||||||
|
addAndMakeVisible (circleButtons[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void resized() override
|
||||||
|
{
|
||||||
|
const auto r = getLocalBounds().reduced (10);
|
||||||
|
|
||||||
|
const int rowHeight = r.getHeight() / 5;
|
||||||
|
const int ledWidth = (r.getWidth() - 70) / numLeds;
|
||||||
|
const int buttonWidth = (r.getWidth() - 40) / 5;
|
||||||
|
|
||||||
|
auto row = r;
|
||||||
|
|
||||||
|
auto ledRow = row.removeFromTop (rowHeight) .withSizeKeepingCentre (r.getWidth(), ledWidth);
|
||||||
|
auto buttonRow1 = row.removeFromTop (rowHeight * 2).withSizeKeepingCentre (r.getWidth(), buttonWidth);
|
||||||
|
auto buttonRow2 = row.removeFromTop (rowHeight * 2).withSizeKeepingCentre (r.getWidth(), buttonWidth);
|
||||||
|
|
||||||
|
for (int i = 0; i < numLeds; ++i)
|
||||||
|
{
|
||||||
|
leds.getUnchecked (i)->setBounds (ledRow.removeFromLeft (ledWidth).reduced (2));
|
||||||
|
ledRow.removeFromLeft (5);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 5; ++i)
|
||||||
|
{
|
||||||
|
circleButtons[i].setBounds (buttonRow1.removeFromLeft (buttonWidth).reduced (2));
|
||||||
|
buttonRow1.removeFromLeft (10);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 5; i < 8; ++i)
|
||||||
|
{
|
||||||
|
circleButtons[i].setBounds (buttonRow2.removeFromLeft (buttonWidth).reduced (2));
|
||||||
|
buttonRow2.removeFromLeft (10);
|
||||||
|
}
|
||||||
|
|
||||||
|
roundedRectangleButton.setBounds (buttonRow2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void paint (Graphics& g) override
|
||||||
|
{
|
||||||
|
const auto r = getLocalBounds().toFloat();
|
||||||
|
|
||||||
|
// Fill a black rectangle for the Control Block
|
||||||
|
g.setColour (Colours::black);
|
||||||
|
g.fillRoundedRectangle (r, r.getWidth() / 20.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleButtonPressed (ControlButton::ButtonFunction function, uint32) override
|
||||||
|
{
|
||||||
|
displayButtonInteraction (controlButtonFunctionToIndex (function), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleButtonReleased (ControlButton::ButtonFunction function, uint32) override
|
||||||
|
{
|
||||||
|
displayButtonInteraction (controlButtonFunctionToIndex (function), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleBatteryLevelUpdate (float batteryLevel) override
|
||||||
|
{
|
||||||
|
// Update the number of LEDs that are on to represent the battery level
|
||||||
|
int numLedsOn = static_cast<int> (static_cast<float> (numLeds) * batteryLevel);
|
||||||
|
|
||||||
|
if (numLedsOn != previousNumLedsOn)
|
||||||
|
for (int i = 0; i < numLeds; ++i)
|
||||||
|
leds.getUnchecked (i)->setOnState (i < numLedsOn);
|
||||||
|
|
||||||
|
previousNumLedsOn = numLedsOn;
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
/**
|
||||||
|
Base class that renders a Control Block button
|
||||||
|
*/
|
||||||
|
struct ControlBlockSubComponent : public Component,
|
||||||
|
public TooltipClient
|
||||||
|
{
|
||||||
|
ControlBlockSubComponent (Colour componentColourToUse)
|
||||||
|
: componentColour (componentColourToUse),
|
||||||
|
onState (false)
|
||||||
|
{}
|
||||||
|
|
||||||
|
/** Subclasses should override this to paint the button on the screen */
|
||||||
|
virtual void paint (Graphics&) override = 0;
|
||||||
|
|
||||||
|
/** Sets the colour of the button */
|
||||||
|
void setColour (Colour c) { componentColour = c; }
|
||||||
|
|
||||||
|
/** Sets the on state of the button */
|
||||||
|
void setOnState (bool isOn)
|
||||||
|
{
|
||||||
|
onState = isOn;
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns the Control Block tooltip */
|
||||||
|
String getTooltip() override
|
||||||
|
{
|
||||||
|
for (Component* comp = this; comp != nullptr; comp = comp->getParentComponent())
|
||||||
|
if (SettableTooltipClient* sttc = dynamic_cast<SettableTooltipClient*> (comp))
|
||||||
|
return sttc->getTooltip();
|
||||||
|
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
Colour componentColour;
|
||||||
|
bool onState;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ControlBlockSubComponent)
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Class that renders a Control Block LED on the screen
|
||||||
|
*/
|
||||||
|
struct LEDComponent : public ControlBlockSubComponent
|
||||||
|
{
|
||||||
|
LEDComponent() : ControlBlockSubComponent (Colours::green) {}
|
||||||
|
|
||||||
|
void paint (Graphics& g) override
|
||||||
|
{
|
||||||
|
g.setColour (componentColour.withAlpha (onState ? 1.0f : 0.2f));
|
||||||
|
g.fillEllipse (getLocalBounds().toFloat());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Class that renders a Control Block single circular button on the screen
|
||||||
|
*/
|
||||||
|
struct CircleButtonComponent : public ControlBlockSubComponent
|
||||||
|
{
|
||||||
|
CircleButtonComponent() : ControlBlockSubComponent (Colours::blue) {}
|
||||||
|
|
||||||
|
void paint (Graphics& g) override
|
||||||
|
{
|
||||||
|
g.setColour (componentColour.withAlpha (onState ? 1.0f : 0.2f));
|
||||||
|
g.fillEllipse (getLocalBounds().toFloat());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Class that renders a Control Block rounded rectangular button containing two buttons
|
||||||
|
on the screen
|
||||||
|
*/
|
||||||
|
struct RoundedRectangleButtonComponent : public ControlBlockSubComponent
|
||||||
|
{
|
||||||
|
RoundedRectangleButtonComponent() : ControlBlockSubComponent (Colours::blue) {}
|
||||||
|
|
||||||
|
void paint (Graphics& g) override
|
||||||
|
{
|
||||||
|
const auto r = getLocalBounds().toFloat();
|
||||||
|
|
||||||
|
|
||||||
|
g.setColour (componentColour.withAlpha (0.2f));
|
||||||
|
g.fillRoundedRectangle (r.toFloat(), 20.0f);
|
||||||
|
g.setColour (componentColour.withAlpha (1.0f));
|
||||||
|
|
||||||
|
// is a button pressed?
|
||||||
|
if (doubleButtonOnState[0] || doubleButtonOnState[1])
|
||||||
|
{
|
||||||
|
const float semiButtonWidth = r.getWidth() / 2.0f;
|
||||||
|
const auto semiButtonBounds = r.withWidth (semiButtonWidth)
|
||||||
|
.withX (doubleButtonOnState[1] ? semiButtonWidth : 0)
|
||||||
|
.reduced (5.0f, 2.0f);
|
||||||
|
|
||||||
|
|
||||||
|
g.fillEllipse (semiButtonBounds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setPressedState (bool isPressed, int button)
|
||||||
|
{
|
||||||
|
doubleButtonOnState[button] = isPressed;
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool doubleButtonOnState[2] = {false, false};
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Displays a button press or release interaction for a button at a given index */
|
||||||
|
void displayButtonInteraction (int buttonIndex, bool isPressed)
|
||||||
|
{
|
||||||
|
if (! isPositiveAndBelow (buttonIndex, 10))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (buttonIndex >= 8)
|
||||||
|
roundedRectangleButton.setPressedState (isPressed, buttonIndex == 8);
|
||||||
|
else
|
||||||
|
circleButtons[buttonIndex].setOnState (isPressed);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
int numLeds;
|
||||||
|
OwnedArray<LEDComponent> leds;
|
||||||
|
CircleButtonComponent circleButtons[8];
|
||||||
|
RoundedRectangleButtonComponent roundedRectangleButton;
|
||||||
|
int previousNumLedsOn;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ControlBlockComponent)
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // BLOCKCOMPONENTS_H_INCLUDED
|
||||||
53
examples/BLOCKS/BlocksMonitor/Source/Main.cpp
Normal file
53
examples/BLOCKS/BlocksMonitor/Source/Main.cpp
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
|
||||||
|
#include "../JuceLibraryCode/JuceHeader.h"
|
||||||
|
#include "MainComponent.h"
|
||||||
|
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
class BlocksInfoApplication : public JUCEApplication
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
BlocksInfoApplication() {}
|
||||||
|
|
||||||
|
const String getApplicationName() override { return ProjectInfo::projectName; }
|
||||||
|
const String getApplicationVersion() override { return ProjectInfo::versionString; }
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
void initialise (const String& /*commandLine*/) override { mainWindow = new MainWindow (getApplicationName()); }
|
||||||
|
void shutdown() override { mainWindow = nullptr; }
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
class MainWindow : public DocumentWindow
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MainWindow (String name) : DocumentWindow (name,
|
||||||
|
Colours::lightgrey,
|
||||||
|
DocumentWindow::allButtons)
|
||||||
|
{
|
||||||
|
setUsingNativeTitleBar (true);
|
||||||
|
setContentOwned (new MainComponent(), true);
|
||||||
|
|
||||||
|
centreWithSize (getWidth(), getHeight());
|
||||||
|
setResizable (true, true);
|
||||||
|
setVisible (true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void closeButtonPressed() override
|
||||||
|
{
|
||||||
|
JUCEApplication::getInstance()->systemRequestedQuit();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
TooltipWindow tooltipWindow;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow)
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
ScopedPointer<MainWindow> mainWindow;
|
||||||
|
};
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
START_JUCE_APPLICATION (BlocksInfoApplication)
|
||||||
154
examples/BLOCKS/BlocksMonitor/Source/MainComponent.h
Normal file
154
examples/BLOCKS/BlocksMonitor/Source/MainComponent.h
Normal file
|
|
@ -0,0 +1,154 @@
|
||||||
|
|
||||||
|
#ifndef MAINCOMPONENT_H_INCLUDED
|
||||||
|
#define MAINCOMPONENT_H_INCLUDED
|
||||||
|
|
||||||
|
#include "../JuceLibraryCode/JuceHeader.h"
|
||||||
|
#include "BlockComponents.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
The main component where the Block components will be displayed
|
||||||
|
*/
|
||||||
|
class MainComponent : public Component,
|
||||||
|
public TopologySource::Listener,
|
||||||
|
private Timer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MainComponent()
|
||||||
|
{
|
||||||
|
setSize (600, 600);
|
||||||
|
|
||||||
|
noBlocksLabel.setText ("No BLOCKS connected...", dontSendNotification);
|
||||||
|
noBlocksLabel.setJustificationType (Justification::centred);
|
||||||
|
addAndMakeVisible (noBlocksLabel);
|
||||||
|
|
||||||
|
// Register MainComponent as a listener to the PhysicalTopologySource object
|
||||||
|
topologySource.addListener (this);
|
||||||
|
|
||||||
|
startTimer (10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void paint (Graphics& g) override
|
||||||
|
{
|
||||||
|
g.fillAll (Colours::lightgrey);
|
||||||
|
}
|
||||||
|
|
||||||
|
void resized() override
|
||||||
|
{
|
||||||
|
noBlocksLabel.setVisible (false);
|
||||||
|
const int numBlockComponents = blockComponents.size();
|
||||||
|
|
||||||
|
// If there are no currently connected Blocks then display some text on the screen
|
||||||
|
if (numBlockComponents == 0)
|
||||||
|
{
|
||||||
|
noBlocksLabel.setVisible (true);
|
||||||
|
noBlocksLabel.setBounds (0, (getHeight() / 2) - 50, getWidth(), 100);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Work out the maximum diplay area for each Block
|
||||||
|
const Rectangle<int> bounds = getLocalBounds().reduced (20);
|
||||||
|
|
||||||
|
auto squareRoot = sqrt (numBlockComponents);
|
||||||
|
int gridSize = (int)squareRoot;
|
||||||
|
|
||||||
|
if (squareRoot - gridSize > 0)
|
||||||
|
gridSize++;
|
||||||
|
|
||||||
|
int sideLength = bounds.getWidth() / gridSize;
|
||||||
|
|
||||||
|
int xCounter = 0;
|
||||||
|
int yCounter = 0;
|
||||||
|
bool hasSpaceForControlBlock = false;
|
||||||
|
Rectangle<int> lastControlBlockBounds;
|
||||||
|
|
||||||
|
for (auto block : blockComponents)
|
||||||
|
{
|
||||||
|
Rectangle<int> blockBounds;
|
||||||
|
const Block::Type type = block->block->getType();
|
||||||
|
|
||||||
|
// Can fit 2 ControlBlockComponents in the space of one LightpadBlockComponent
|
||||||
|
if (type == Block::liveBlock || type == Block::loopBlock)
|
||||||
|
{
|
||||||
|
if (hasSpaceForControlBlock)
|
||||||
|
{
|
||||||
|
blockBounds = lastControlBlockBounds.withY (lastControlBlockBounds.getY() + (int)(sideLength * 0.5));
|
||||||
|
hasSpaceForControlBlock = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
blockBounds = Rectangle<int> (bounds.getX() + (xCounter * sideLength), bounds.getY() + (yCounter * sideLength),
|
||||||
|
sideLength, (int)(sideLength * 0.5));
|
||||||
|
hasSpaceForControlBlock = true;
|
||||||
|
lastControlBlockBounds = blockBounds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
blockBounds = Rectangle<int> (bounds.getX() + (xCounter * sideLength), bounds.getY() + (yCounter * sideLength),
|
||||||
|
sideLength, sideLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
block->setBounds (blockBounds.reduced (5));
|
||||||
|
|
||||||
|
if (++xCounter >= gridSize)
|
||||||
|
{
|
||||||
|
yCounter++;
|
||||||
|
xCounter = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Overridden from TopologySource::Listener, called when the topology changes */
|
||||||
|
void topologyChanged() override
|
||||||
|
{
|
||||||
|
// Clear the array of Block components
|
||||||
|
blockComponents.clear();
|
||||||
|
|
||||||
|
// Get the array of currently connected Block objects from the PhysicalTopologySource
|
||||||
|
Block::Array blocksArray = topologySource.getCurrentTopology().blocks;
|
||||||
|
|
||||||
|
// Create a BlockComponent object for each Block object
|
||||||
|
for (auto& block : blocksArray)
|
||||||
|
if (BlockComponent* blockComponent = createBlockComponent (block))
|
||||||
|
addAndMakeVisible (blockComponents.add (blockComponent));
|
||||||
|
|
||||||
|
// Update the display
|
||||||
|
resized();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
/** Creates a BlockComponent object for a new Block and adds it to the content component */
|
||||||
|
BlockComponent* createBlockComponent (Block::Ptr newBlock)
|
||||||
|
{
|
||||||
|
const Block::Type type = newBlock->getType();
|
||||||
|
|
||||||
|
if (type == Block::lightPadBlock)
|
||||||
|
return new LightpadComponent (newBlock);
|
||||||
|
if (type == Block::loopBlock || type == Block::liveBlock)
|
||||||
|
return new ControlBlockComponent (newBlock);
|
||||||
|
|
||||||
|
// should only be connecting a Lightpad or Control Block!
|
||||||
|
jassertfalse;
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Periodically updates the displayed BlockComponent tooltips */
|
||||||
|
void timerCallback() override
|
||||||
|
{
|
||||||
|
for (auto c : blockComponents)
|
||||||
|
c->updateStatsAndTooltip();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
PhysicalTopologySource topologySource;
|
||||||
|
OwnedArray<BlockComponent> blockComponents;
|
||||||
|
|
||||||
|
Label noBlocksLabel;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // MAINCOMPONENT_H_INCLUDED
|
||||||
112
examples/BLOCKS/BlocksSynth/BlocksSynth.jucer
Normal file
112
examples/BLOCKS/BlocksSynth/BlocksSynth.jucer
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<JUCERPROJECT id="XsTycT" name="BlocksSynth" projectType="guiapp" version="1.0.0"
|
||||||
|
bundleIdentifier="com.yourcompany.BlocksSynth" includeBinaryInAppConfig="1"
|
||||||
|
jucerVersion="4.2.4">
|
||||||
|
<MAINGROUP id="onTNql" name="BlocksSynth">
|
||||||
|
<GROUP id="{0CEBC63B-4C52-E77F-CD6E-A2E65F0C9B2B}" name="Source">
|
||||||
|
<GROUP id="{06BF67F9-0F56-6AD3-00A9-443125750AAE}" name="Audio">
|
||||||
|
<FILE id="SfPbCK" name="Oscillators.h" compile="0" resource="0" file="Source/Oscillators.h"/>
|
||||||
|
<FILE id="K6DQIH" name="Audio.h" compile="0" resource="0" file="Source/Audio.h"/>
|
||||||
|
</GROUP>
|
||||||
|
<FILE id="atp2Hj" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/>
|
||||||
|
<FILE id="r82Xw7" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>
|
||||||
|
</GROUP>
|
||||||
|
</MAINGROUP>
|
||||||
|
<EXPORTFORMATS>
|
||||||
|
<XCODE_MAC targetFolder="Builds/MacOSX" extraCompilerFlags="">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksSynth"/>
|
||||||
|
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksSynth"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</XCODE_MAC>
|
||||||
|
<VS2013 targetFolder="Builds/VisualStudio2013">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="1" optimisation="1" targetName="BlocksSynth"/>
|
||||||
|
<CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="0" optimisation="3" targetName="BlocksSynth"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</VS2013>
|
||||||
|
<VS2015 targetFolder="Builds/VisualStudio2015">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="1" optimisation="1" targetName="BlocksSynth"/>
|
||||||
|
<CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||||
|
isDebug="0" optimisation="3" targetName="BlocksSynth"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</VS2015>
|
||||||
|
<LINUX_MAKE targetFolder="Builds/LinuxMakefile">
|
||||||
|
<CONFIGURATIONS>
|
||||||
|
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksSynth"/>
|
||||||
|
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksSynth"/>
|
||||||
|
</CONFIGURATIONS>
|
||||||
|
<MODULEPATHS>
|
||||||
|
<MODULEPATH id="juce_opengl" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_extra" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_gui_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_graphics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_events" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_data_structures" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_core" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_blocks_basics" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_formats" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_devices" path="../../../modules"/>
|
||||||
|
<MODULEPATH id="juce_audio_basics" path="../../../modules"/>
|
||||||
|
</MODULEPATHS>
|
||||||
|
</LINUX_MAKE>
|
||||||
|
</EXPORTFORMATS>
|
||||||
|
<MODULES>
|
||||||
|
<MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_blocks_basics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
<MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/>
|
||||||
|
</MODULES>
|
||||||
|
<JUCEOPTIONS/>
|
||||||
|
</JUCERPROJECT>
|
||||||
154
examples/BLOCKS/BlocksSynth/Builds/LinuxMakefile/Makefile
Normal file
154
examples/BLOCKS/BlocksSynth/Builds/LinuxMakefile/Makefile
Normal file
|
|
@ -0,0 +1,154 @@
|
||||||
|
# Automatically generated makefile, created by the Projucer
|
||||||
|
# Don't edit this file! Your changes will be overwritten when you re-save the Projucer project!
|
||||||
|
|
||||||
|
# (this disables dependency generation if multiple architectures are set)
|
||||||
|
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)
|
||||||
|
|
||||||
|
ifndef STRIP
|
||||||
|
STRIP=strip
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef AR
|
||||||
|
AR=ar
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef CONFIG
|
||||||
|
CONFIG=Debug
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG),Debug)
|
||||||
|
JUCE_BINDIR := build
|
||||||
|
JUCE_LIBDIR := build
|
||||||
|
JUCE_OBJDIR := build/intermediate/Debug
|
||||||
|
JUCE_OUTDIR := build
|
||||||
|
|
||||||
|
ifeq ($(TARGET_ARCH),)
|
||||||
|
TARGET_ARCH := -march=native
|
||||||
|
endif
|
||||||
|
|
||||||
|
JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules
|
||||||
|
JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0
|
||||||
|
JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11
|
||||||
|
JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt
|
||||||
|
|
||||||
|
TARGET := BlocksSynth
|
||||||
|
BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
|
||||||
|
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG),Release)
|
||||||
|
JUCE_BINDIR := build
|
||||||
|
JUCE_LIBDIR := build
|
||||||
|
JUCE_OBJDIR := build/intermediate/Release
|
||||||
|
JUCE_OUTDIR := build
|
||||||
|
|
||||||
|
ifeq ($(TARGET_ARCH),)
|
||||||
|
TARGET_ARCH := -march=native
|
||||||
|
endif
|
||||||
|
|
||||||
|
JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules
|
||||||
|
JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3
|
||||||
|
JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11
|
||||||
|
JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt
|
||||||
|
|
||||||
|
TARGET := BlocksSynth
|
||||||
|
BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
|
||||||
|
CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
OBJECTS := \
|
||||||
|
$(JUCE_OBJDIR)/Main_90ebc5c2.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_core_75b14332.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_events_d2be882c.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_graphics_9c18891e.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \
|
||||||
|
$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
|
||||||
|
$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)
|
||||||
|
@echo Linking BlocksSynth
|
||||||
|
-@mkdir -p $(JUCE_BINDIR)
|
||||||
|
-@mkdir -p $(JUCE_LIBDIR)
|
||||||
|
-@mkdir -p $(JUCE_OUTDIR)
|
||||||
|
@$(BLDCMD)
|
||||||
|
|
||||||
|
check-pkg-config:
|
||||||
|
@command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }
|
||||||
|
@pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@echo Cleaning BlocksSynth
|
||||||
|
@$(CLEANCMD)
|
||||||
|
|
||||||
|
strip:
|
||||||
|
@echo Stripping BlocksSynth
|
||||||
|
-@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling Main.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_audio_basics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_audio_devices.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_audio_formats.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o: ../../JuceLibraryCode/juce_blocks_basics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_blocks_basics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_core.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_data_structures.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_events.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_graphics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_gui_basics.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_gui_extra.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp
|
||||||
|
-@mkdir -p $(JUCE_OBJDIR)
|
||||||
|
@echo "Compiling juce_opengl.cpp"
|
||||||
|
@$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
-include $(OBJECTS:%.o=%.d)
|
||||||
File diff suppressed because it is too large
Load diff
29
examples/BLOCKS/BlocksSynth/Builds/MacOSX/Info-App.plist
Normal file
29
examples/BLOCKS/BlocksSynth/Builds/MacOSX/Info-App.plist
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>BlocksSynth</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>BlocksSynth</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0.0</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0.0</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
BIN
examples/BLOCKS/BlocksSynth/Builds/MacOSX/RecentFilesMenuTemplate.nib
generated
Normal file
BIN
examples/BLOCKS/BlocksSynth/Builds/MacOSX/RecentFilesMenuTemplate.nib
generated
Normal file
Binary file not shown.
|
|
@ -0,0 +1,19 @@
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual Studio 2013
|
||||||
|
Project("{1ADF3DE4-36E9-080C-9E5A-03B9A3DA399C}") = "BlocksSynth", "BlocksSynth.vcxproj", "{95CDA882-A3D2-8344-A1B4-E341383A631E}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{95CDA882-A3D2-8344-A1B4-E341383A631E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{95CDA882-A3D2-8344-A1B4-E341383A631E}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{95CDA882-A3D2-8344-A1B4-E341383A631E}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{95CDA882-A3D2-8344-A1B4-E341383A631E}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,29 @@
|
||||||
|
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#include JUCE_USER_DEFINED_RC_FILE
|
||||||
|
#else
|
||||||
|
|
||||||
|
#undef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 1,0,0,0
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904E4"
|
||||||
|
BEGIN
|
||||||
|
VALUE "FileDescription", "BlocksSynth\0"
|
||||||
|
VALUE "FileVersion", "1.0.0\0"
|
||||||
|
VALUE "ProductName", "BlocksSynth\0"
|
||||||
|
VALUE "ProductVersion", "1.0.0\0"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1252
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual Studio 2015
|
||||||
|
Project("{1ADF3DE4-36E9-080C-9E5A-03B9A3DA399C}") = "BlocksSynth", "BlocksSynth.vcxproj", "{95CDA882-A3D2-8344-A1B4-E341383A631E}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{95CDA882-A3D2-8344-A1B4-E341383A631E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{95CDA882-A3D2-8344-A1B4-E341383A631E}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{95CDA882-A3D2-8344-A1B4-E341383A631E}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{95CDA882-A3D2-8344-A1B4-E341383A631E}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue