Skip to content

Commit a895450

Browse files
committed
Initial commit
0 parents  commit a895450

12 files changed

+699
-0
lines changed

.gitignore

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
*.a
2+
*.d
3+
*.o
4+
5+
*.exe
6+
*.dll
7+
*.dylib
8+
*.so
9+
*.zip
10+
11+
.kdev_include_paths
12+
.kdev4/
13+
.DS_Store
14+
15+
bin/*-dssi/
16+
bin/*.lv2/
17+
bin/d_*

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "dpf"]
2+
path = dpf
3+
url = git://github.com/DISTRHO/DPF.git

LICENSE

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
Simple Synth audio efffect based on DISTRHO Plugin Framework (DPF)
2+
Copyright (C) 2018 Christopher Arndt <info@chrisarndt.de>
3+
4+
Permission to use, copy, modify, and/or distribute this software for any
5+
purpose with or without fee is hereby granted, provided that the above
6+
copyright notice and this permission notice appear in all copies.
7+
8+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
10+
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14+
PERFORMANCE OF THIS SOFTWARE.

Makefile

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/make -f
2+
# Makefile for DISTRHO Plugins #
3+
# ---------------------------- #
4+
# Created by falkTX
5+
#
6+
7+
include Makefile.mk
8+
9+
all: libs plugins gen
10+
11+
# --------------------------------------------------------------
12+
13+
libs:
14+
ifeq ($(HAVE_DGL),true)
15+
$(MAKE) -C dpf/dgl
16+
endif
17+
18+
plugins: libs
19+
$(MAKE) all -C plugins/SimpleSynth
20+
21+
gen: plugins dpf/utils/lv2_ttl_generator
22+
@$(CURDIR)/dpf/utils/generate-ttl.sh
23+
ifeq ($(MACOS),true)
24+
@$(CURDIR)/dpf/utils/generate-vst-bundles.sh
25+
endif
26+
27+
dpf/utils/lv2_ttl_generator:
28+
$(MAKE) -C dpf/utils/lv2-ttl-generator
29+
30+
# --------------------------------------------------------------
31+
32+
clean:
33+
ifeq ($(HAVE_DGL),true)
34+
$(MAKE) clean -C dpf/dgl
35+
endif
36+
$(MAKE) clean -C dpf/utils/lv2-ttl-generator
37+
$(MAKE) clean -C plugins/SimpleSynth
38+
39+
# --------------------------------------------------------------
40+
41+
.PHONY: plugins

Makefile.mk

+147
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
#!/usr/bin/make -f
2+
# Makefile for DISTRHO Plugins #
3+
# ---------------------------- #
4+
# Created by falkTX
5+
#
6+
7+
AR ?= ar
8+
CC ?= gcc
9+
CXX ?= g++
10+
11+
# --------------------------------------------------------------
12+
# Fallback to Linux if no other OS defined
13+
14+
ifneq ($(HAIKU),true)
15+
ifneq ($(MACOS),true)
16+
ifneq ($(WIN32),true)
17+
LINUX=true
18+
endif
19+
endif
20+
endif
21+
22+
# --------------------------------------------------------------
23+
# Set build and link flags
24+
25+
BASE_FLAGS = -Wall -Wextra -pipe
26+
BASE_OPTS = -O2 -ffast-math -mtune=generic -msse -msse2 -fdata-sections -ffunction-sections
27+
28+
ifneq ($(MACOS),true)
29+
# MacOS doesn't support this
30+
BASE_OPTS += -mfpmath=sse
31+
endif
32+
33+
ifeq ($(MACOS),true)
34+
# MacOS linker flags
35+
LINK_OPTS = -fdata-sections -ffunction-sections -Wl,-dead_strip -Wl,-dead_strip_dylibs
36+
else
37+
# Common linker flags
38+
LINK_OPTS = -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-O1 -Wl,--as-needed -Wl,--strip-all
39+
endif
40+
41+
ifeq ($(RASPPI),true)
42+
# Raspberry-Pi optimization flags
43+
BASE_OPTS = -O2 -ffast-math -march=armv6 -mfpu=vfp -mfloat-abi=hard
44+
LINK_OPTS = -Wl,-O1 -Wl,--as-needed -Wl,--strip-all
45+
endif
46+
47+
ifeq ($(PANDORA),true)
48+
# OpenPandora optimization flags
49+
BASE_OPTS = -O2 -ffast-math -march=armv7-a -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
50+
LINK_OPTS = -Wl,-O1 -Wl,--as-needed -Wl,--strip-all
51+
endif
52+
53+
ifeq ($(NOOPT),true)
54+
# No optimization flags
55+
BASE_OPTS = -O2 -ffast-math -fdata-sections -ffunction-sections
56+
endif
57+
58+
ifneq ($(WIN32),true)
59+
# not needed for Windows
60+
BASE_FLAGS += -fPIC -DPIC
61+
endif
62+
63+
ifeq ($(DEBUG),true)
64+
BASE_FLAGS += -DDEBUG -O0 -g
65+
LINK_OPTS =
66+
else
67+
BASE_FLAGS += -DNDEBUG $(BASE_OPTS) -fvisibility=hidden
68+
CXXFLAGS += -fvisibility-inlines-hidden -Wno-parentheses
69+
endif
70+
71+
BUILD_C_FLAGS = $(BASE_FLAGS) -std=c99 -std=gnu99 $(CFLAGS)
72+
BUILD_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x -std=gnu++0x $(CXXFLAGS) $(CPPFLAGS)
73+
LINK_FLAGS = $(LINK_OPTS) -Wl,--no-undefined $(LDFLAGS)
74+
75+
ifeq ($(MACOS),true)
76+
# No C++11 support
77+
BUILD_CXX_FLAGS = $(BASE_FLAGS) $(CXXFLAGS) $(CPPFLAGS)
78+
LINK_FLAGS = $(LINK_OPTS) $(LDFLAGS)
79+
endif
80+
81+
# --------------------------------------------------------------
82+
# Check for optional libs
83+
84+
ifeq ($(LINUX),true)
85+
HAVE_DGL = $(shell pkg-config --exists gl x11 && echo true)
86+
HAVE_JACK = $(shell pkg-config --exists jack && echo true)
87+
HAVE_LIBLO = $(shell pkg-config --exists liblo && echo true)
88+
endif
89+
90+
ifeq ($(MACOS),true)
91+
HAVE_DGL = true
92+
endif
93+
94+
ifeq ($(WIN32),true)
95+
HAVE_DGL = true
96+
endif
97+
98+
# --------------------------------------------------------------
99+
# Set libs stuff
100+
101+
ifeq ($(HAVE_DGL),true)
102+
103+
ifeq ($(LINUX),true)
104+
DGL_FLAGS = $(shell pkg-config --cflags gl x11)
105+
DGL_LIBS = $(shell pkg-config --libs gl x11)
106+
endif
107+
108+
ifeq ($(MACOS),true)
109+
DGL_LIBS = -framework OpenGL -framework Cocoa
110+
endif
111+
112+
ifeq ($(WIN32),true)
113+
DGL_LIBS = -lopengl32 -lgdi32
114+
endif
115+
116+
endif # HAVE_DGL
117+
118+
# --------------------------------------------------------------
119+
# Set app extension
120+
121+
ifeq ($(WIN32),true)
122+
APP_EXT = .exe
123+
endif
124+
125+
# --------------------------------------------------------------
126+
# Set shared lib extension
127+
128+
LIB_EXT = .so
129+
130+
ifeq ($(MACOS),true)
131+
LIB_EXT = .dylib
132+
endif
133+
134+
ifeq ($(WIN32),true)
135+
LIB_EXT = .dll
136+
endif
137+
138+
# --------------------------------------------------------------
139+
# Set shared library CLI arg
140+
141+
SHARED = -shared
142+
143+
ifeq ($(MACOS),true)
144+
SHARED = -dynamiclib
145+
endif
146+
147+
# --------------------------------------------------------------

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Simple Synth
2+
3+
A simple sawtooth wave synthesizer

dpf

Submodule dpf added at dee2b4a

plugins/Makefile.mk

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
#!/usr/bin/make -f
2+
# Makefile for DISTRHO Plugins #
3+
# ---------------------------- #
4+
# Created by falkTX
5+
#
6+
7+
# NAME, OBJS_DSP and OBJS_UI have been defined before
8+
9+
include ../../Makefile.mk
10+
11+
ifeq ($(OBJS_UI),)
12+
HAVE_DGL = false
13+
endif
14+
15+
# --------------------------------------------------------------
16+
# Basic setup
17+
18+
TARGET_DIR = ../../bin
19+
20+
BUILD_C_FLAGS += -I.
21+
BUILD_CXX_FLAGS += -I. -I../../dpf/distrho -I../../dpf/dgl
22+
23+
ifeq ($(HAVE_DGL),true)
24+
BASE_FLAGS += -DHAVE_DGL
25+
endif
26+
27+
ifeq ($(HAVE_JACK),true)
28+
BASE_FLAGS += -DHAVE_JACK
29+
endif
30+
31+
ifeq ($(HAVE_LIBLO),true)
32+
BASE_FLAGS += -DHAVE_LIBLO
33+
endif
34+
35+
# --------------------------------------------------------------
36+
# Set plugin binary file targets
37+
38+
jack = $(TARGET_DIR)/$(NAME)$(APP_EXT)
39+
ladspa_dsp = $(TARGET_DIR)/$(NAME)-ladspa$(LIB_EXT)
40+
dssi_dsp = $(TARGET_DIR)/$(NAME)-dssi$(LIB_EXT)
41+
dssi_ui = $(TARGET_DIR)/$(NAME)-dssi/$(NAME)_ui$(APP_EXT)
42+
lv2 = $(TARGET_DIR)/$(NAME).lv2/$(NAME)$(LIB_EXT)
43+
lv2_dsp = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_dsp$(LIB_EXT)
44+
lv2_ui = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_ui$(LIB_EXT)
45+
vst = $(TARGET_DIR)/$(NAME)-vst$(LIB_EXT)
46+
47+
# --------------------------------------------------------------
48+
# Set distrho code files
49+
50+
DISTRHO_PLUGIN_FILES = ../../dpf/distrho/DistrhoPluginMain.cpp
51+
52+
ifeq ($(HAVE_DGL),true)
53+
DISTRHO_UI_FILES = ../../dpf/distrho/DistrhoUIMain.cpp ../../dpf/libdgl.a
54+
endif
55+
56+
# --------------------------------------------------------------
57+
# Handle plugins without UI
58+
59+
ifneq ($(HAVE_DGL),true)
60+
dssi_ui =
61+
lv2_ui =
62+
DISTRHO_UI_FILES =
63+
DGL_LIBS =
64+
OBJS_UI =
65+
endif
66+
67+
# --------------------------------------------------------------
68+
# all needs to be first
69+
70+
all:
71+
72+
# --------------------------------------------------------------
73+
# Common
74+
75+
%.c.o: %.c
76+
$(CC) $< $(BUILD_C_FLAGS) -MD -MP -c -o $@
77+
78+
%.cpp.o: %.cpp
79+
$(CXX) $< $(BUILD_CXX_FLAGS) -MD -MP -c -o $@
80+
81+
clean:
82+
rm -f *.d *.o
83+
rm -rf $(TARGET_DIR)/$(NAME) $(TARGET_DIR)/$(NAME)-* $(TARGET_DIR)/$(NAME).lv2/
84+
85+
# --------------------------------------------------------------
86+
# JACK
87+
88+
jack: $(jack)
89+
90+
$(jack): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES)
91+
mkdir -p $(shell dirname $@)
92+
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --cflags --libs jack) -DDISTRHO_PLUGIN_TARGET_JACK -o $@
93+
94+
# --------------------------------------------------------------
95+
# LADSPA
96+
97+
ladspa: $(ladspa_dsp)
98+
99+
$(ladspa_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES)
100+
mkdir -p $(shell dirname $@)
101+
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LADSPA -o $@
102+
103+
# --------------------------------------------------------------
104+
# DSSI
105+
106+
dssi: $(dssi_dsp) $(dssi_ui)
107+
dssi_dsp: $(dssi_dsp)
108+
dssi_ui: $(dssi_ui)
109+
110+
$(dssi_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES)
111+
mkdir -p $(shell dirname $@)
112+
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_DSSI -o $@
113+
114+
$(dssi_ui): $(OBJS_UI) $(DISTRHO_UI_FILES)
115+
mkdir -p $(shell dirname $@)
116+
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --cflags --libs liblo) -DDISTRHO_PLUGIN_TARGET_DSSI -o $@
117+
118+
# --------------------------------------------------------------
119+
# LV2
120+
121+
lv2_one: $(lv2)
122+
lv2_dsp: $(lv2_dsp)
123+
lv2_sep: $(lv2_dsp) $(lv2_ui)
124+
125+
$(lv2): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES)
126+
mkdir -p $(shell dirname $@)
127+
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@
128+
129+
$(lv2_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES)
130+
mkdir -p $(shell dirname $@)
131+
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@
132+
133+
$(lv2_ui): $(OBJS_UI) $(DISTRHO_UI_FILES)
134+
mkdir -p $(shell dirname $@)
135+
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@
136+
137+
# --------------------------------------------------------------
138+
# VST
139+
140+
vst: $(vst)
141+
142+
$(vst): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES)
143+
mkdir -p $(shell dirname $@)
144+
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_VST -o $@
145+
146+
# --------------------------------------------------------------
147+
148+
-include $(OBJS_DSP:%.o=%.d)
149+
ifeq ($(HAVE_DGL),true)
150+
-include $(OBJS_UI:%.o=%.d)
151+
endif
152+
153+
# --------------------------------------------------------------

0 commit comments

Comments
 (0)