@@ -292,6 +292,11 @@ PLUGIN_FILES += Fundamental/src/dr_wav.c | |||
# modules/types which are present in other plugins | |||
FUNDAMENTAL_CUSTOM = $(DRWAV) | |||
# -------------------------------------------------------------- | |||
# ZamAudio (always enabled) | |||
PLUGIN_FILES += $(wildcard ZamAudio/src/*.cpp) | |||
ifneq ($(NOPLUGINS),true) | |||
# -------------------------------------------------------------- | |||
# 21kHz | |||
@@ -1133,12 +1138,13 @@ clean: | |||
# -------------------------------------------------------------- | |||
ifeq ($(NOPLUGINS),true) | |||
PLUGIN_LIST = Cardinal Fundamental | |||
PLUGIN_LIST = Cardinal Fundamental ZamAudio | |||
RESOURCE_FILES = \ | |||
$(wildcard Cardinal/res/*.svg) \ | |||
$(wildcard Fundamental/res/*.svg) \ | |||
$(wildcard Fundamental/res/components/*.svg) \ | |||
$(wildcard ZamAudio/res/*.svg) \ | |||
Fundamental/presets | |||
else | |||
PLUGIN_LIST = $(subst /plugin.json,,$(wildcard */plugin.json)) | |||
@@ -1924,6 +1930,13 @@ $(BUILD_DIR)/WhatTheRack/%.cpp.o: WhatTheRack/%.cpp | |||
$(foreach m,$(WHATTHERACK_CUSTOM),$(call custom_module_names,$(m),WhatTheRack)) \ | |||
-DpluginInstance=pluginInstance__WhatTheRack | |||
$(BUILD_DIR)/ZamAudio/%.cpp.o: ZamAudio/%.cpp | |||
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | |||
@echo "Compiling $<" | |||
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ | |||
$(foreach m,$(ZAMAUDIO_CUSTOM),$(call custom_module_names,$(m),ZamAudio)) \ | |||
-DpluginInstance=pluginInstance__ZamAudio | |||
$(BUILD_DIR)/ZetaCarinaeModules/%.cpp.o: ZetaCarinaeModules/%.cpp | |||
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | |||
@echo "Compiling $<" | |||
@@ -0,0 +1,280 @@ | |||
GNU GENERAL PUBLIC LICENSE | |||
Version 2, June 1991 | |||
Copyright (C) 1989, 1991 Free Software Foundation, Inc., | |||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
Everyone is permitted to copy and distribute verbatim copies | |||
of this license document, but changing it is not allowed. | |||
Preamble | |||
The licenses for most software are designed to take away your | |||
freedom to share and change it. By contrast, the GNU General Public | |||
License is intended to guarantee your freedom to share and change free | |||
software--to make sure the software is free for all its users. This | |||
General Public License applies to most of the Free Software | |||
Foundation's software and to any other program whose authors commit to | |||
using it. (Some other Free Software Foundation software is covered by | |||
the GNU Lesser General Public License instead.) You can apply it to | |||
your programs, too. | |||
When we speak of free software, we are referring to freedom, not | |||
price. Our General Public Licenses are designed to make sure that you | |||
have the freedom to distribute copies of free software (and charge for | |||
this service if you wish), that you receive source code or can get it | |||
if you want it, that you can change the software or use pieces of it | |||
in new free programs; and that you know you can do these things. | |||
To protect your rights, we need to make restrictions that forbid | |||
anyone to deny you these rights or to ask you to surrender the rights. | |||
These restrictions translate to certain responsibilities for you if you | |||
distribute copies of the software, or if you modify it. | |||
For example, if you distribute copies of such a program, whether | |||
gratis or for a fee, you must give the recipients all the rights that | |||
you have. You must make sure that they, too, receive or can get the | |||
source code. And you must show them these terms so they know their | |||
rights. | |||
We protect your rights with two steps: (1) copyright the software, and | |||
(2) offer you this license which gives you legal permission to copy, | |||
distribute and/or modify the software. | |||
Also, for each author's protection and ours, we want to make certain | |||
that everyone understands that there is no warranty for this free | |||
software. If the software is modified by someone else and passed on, we | |||
want its recipients to know that what they have is not the original, so | |||
that any problems introduced by others will not reflect on the original | |||
authors' reputations. | |||
Finally, any free program is threatened constantly by software | |||
patents. We wish to avoid the danger that redistributors of a free | |||
program will individually obtain patent licenses, in effect making the | |||
program proprietary. To prevent this, we have made it clear that any | |||
patent must be licensed for everyone's free use or not licensed at all. | |||
The precise terms and conditions for copying, distribution and | |||
modification follow. | |||
GNU GENERAL PUBLIC LICENSE | |||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |||
0. This License applies to any program or other work which contains | |||
a notice placed by the copyright holder saying it may be distributed | |||
under the terms of this General Public License. The "Program", below, | |||
refers to any such program or work, and a "work based on the Program" | |||
means either the Program or any derivative work under copyright law: | |||
that is to say, a work containing the Program or a portion of it, | |||
either verbatim or with modifications and/or translated into another | |||
language. (Hereinafter, translation is included without limitation in | |||
the term "modification".) Each licensee is addressed as "you". | |||
Activities other than copying, distribution and modification are not | |||
covered by this License; they are outside its scope. The act of | |||
running the Program is not restricted, and the output from the Program | |||
is covered only if its contents constitute a work based on the | |||
Program (independent of having been made by running the Program). | |||
Whether that is true depends on what the Program does. | |||
1. You may copy and distribute verbatim copies of the Program's | |||
source code as you receive it, in any medium, provided that you | |||
conspicuously and appropriately publish on each copy an appropriate | |||
copyright notice and disclaimer of warranty; keep intact all the | |||
notices that refer to this License and to the absence of any warranty; | |||
and give any other recipients of the Program a copy of this License | |||
along with the Program. | |||
You may charge a fee for the physical act of transferring a copy, and | |||
you may at your option offer warranty protection in exchange for a fee. | |||
2. You may modify your copy or copies of the Program or any portion | |||
of it, thus forming a work based on the Program, and copy and | |||
distribute such modifications or work under the terms of Section 1 | |||
above, provided that you also meet all of these conditions: | |||
a) You must cause the modified files to carry prominent notices | |||
stating that you changed the files and the date of any change. | |||
b) You must cause any work that you distribute or publish, that in | |||
whole or in part contains or is derived from the Program or any | |||
part thereof, to be licensed as a whole at no charge to all third | |||
parties under the terms of this License. | |||
c) If the modified program normally reads commands interactively | |||
when run, you must cause it, when started running for such | |||
interactive use in the most ordinary way, to print or display an | |||
announcement including an appropriate copyright notice and a | |||
notice that there is no warranty (or else, saying that you provide | |||
a warranty) and that users may redistribute the program under | |||
these conditions, and telling the user how to view a copy of this | |||
License. (Exception: if the Program itself is interactive but | |||
does not normally print such an announcement, your work based on | |||
the Program is not required to print an announcement.) | |||
These requirements apply to the modified work as a whole. If | |||
identifiable sections of that work are not derived from the Program, | |||
and can be reasonably considered independent and separate works in | |||
themselves, then this License, and its terms, do not apply to those | |||
sections when you distribute them as separate works. But when you | |||
distribute the same sections as part of a whole which is a work based | |||
on the Program, the distribution of the whole must be on the terms of | |||
this License, whose permissions for other licensees extend to the | |||
entire whole, and thus to each and every part regardless of who wrote it. | |||
Thus, it is not the intent of this section to claim rights or contest | |||
your rights to work written entirely by you; rather, the intent is to | |||
exercise the right to control the distribution of derivative or | |||
collective works based on the Program. | |||
In addition, mere aggregation of another work not based on the Program | |||
with the Program (or with a work based on the Program) on a volume of | |||
a storage or distribution medium does not bring the other work under | |||
the scope of this License. | |||
3. You may copy and distribute the Program (or a work based on it, | |||
under Section 2) in object code or executable form under the terms of | |||
Sections 1 and 2 above provided that you also do one of the following: | |||
a) Accompany it with the complete corresponding machine-readable | |||
source code, which must be distributed under the terms of Sections | |||
1 and 2 above on a medium customarily used for software interchange; or, | |||
b) Accompany it with a written offer, valid for at least three | |||
years, to give any third party, for a charge no more than your | |||
cost of physically performing source distribution, a complete | |||
machine-readable copy of the corresponding source code, to be | |||
distributed under the terms of Sections 1 and 2 above on a medium | |||
customarily used for software interchange; or, | |||
c) Accompany it with the information you received as to the offer | |||
to distribute corresponding source code. (This alternative is | |||
allowed only for noncommercial distribution and only if you | |||
received the program in object code or executable form with such | |||
an offer, in accord with Subsection b above.) | |||
The source code for a work means the preferred form of the work for | |||
making modifications to it. For an executable work, complete source | |||
code means all the source code for all modules it contains, plus any | |||
associated interface definition files, plus the scripts used to | |||
control compilation and installation of the executable. However, as a | |||
special exception, the source code distributed need not include | |||
anything that is normally distributed (in either source or binary | |||
form) with the major components (compiler, kernel, and so on) of the | |||
operating system on which the executable runs, unless that component | |||
itself accompanies the executable. | |||
If distribution of executable or object code is made by offering | |||
access to copy from a designated place, then offering equivalent | |||
access to copy the source code from the same place counts as | |||
distribution of the source code, even though third parties are not | |||
compelled to copy the source along with the object code. | |||
4. You may not copy, modify, sublicense, or distribute the Program | |||
except as expressly provided under this License. Any attempt | |||
otherwise to copy, modify, sublicense or distribute the Program is | |||
void, and will automatically terminate your rights under this License. | |||
However, parties who have received copies, or rights, from you under | |||
this License will not have their licenses terminated so long as such | |||
parties remain in full compliance. | |||
5. You are not required to accept this License, since you have not | |||
signed it. However, nothing else grants you permission to modify or | |||
distribute the Program or its derivative works. These actions are | |||
prohibited by law if you do not accept this License. Therefore, by | |||
modifying or distributing the Program (or any work based on the | |||
Program), you indicate your acceptance of this License to do so, and | |||
all its terms and conditions for copying, distributing or modifying | |||
the Program or works based on it. | |||
6. Each time you redistribute the Program (or any work based on the | |||
Program), the recipient automatically receives a license from the | |||
original licensor to copy, distribute or modify the Program subject to | |||
these terms and conditions. You may not impose any further | |||
restrictions on the recipients' exercise of the rights granted herein. | |||
You are not responsible for enforcing compliance by third parties to | |||
this License. | |||
7. If, as a consequence of a court judgment or allegation of patent | |||
infringement or for any other reason (not limited to patent issues), | |||
conditions are imposed on you (whether by court order, agreement or | |||
otherwise) that contradict the conditions of this License, they do not | |||
excuse you from the conditions of this License. If you cannot | |||
distribute so as to satisfy simultaneously your obligations under this | |||
License and any other pertinent obligations, then as a consequence you | |||
may not distribute the Program at all. For example, if a patent | |||
license would not permit royalty-free redistribution of the Program by | |||
all those who receive copies directly or indirectly through you, then | |||
the only way you could satisfy both it and this License would be to | |||
refrain entirely from distribution of the Program. | |||
If any portion of this section is held invalid or unenforceable under | |||
any particular circumstance, the balance of the section is intended to | |||
apply and the section as a whole is intended to apply in other | |||
circumstances. | |||
It is not the purpose of this section to induce you to infringe any | |||
patents or other property right claims or to contest validity of any | |||
such claims; this section has the sole purpose of protecting the | |||
integrity of the free software distribution system, which is | |||
implemented by public license practices. Many people have made | |||
generous contributions to the wide range of software distributed | |||
through that system in reliance on consistent application of that | |||
system; it is up to the author/donor to decide if he or she is willing | |||
to distribute software through any other system and a licensee cannot | |||
impose that choice. | |||
This section is intended to make thoroughly clear what is believed to | |||
be a consequence of the rest of this License. | |||
8. If the distribution and/or use of the Program is restricted in | |||
certain countries either by patents or by copyrighted interfaces, the | |||
original copyright holder who places the Program under this License | |||
may add an explicit geographical distribution limitation excluding | |||
those countries, so that distribution is permitted only in or among | |||
countries not thus excluded. In such case, this License incorporates | |||
the limitation as if written in the body of this License. | |||
9. The Free Software Foundation may publish revised and/or new versions | |||
of the General Public License from time to time. Such new versions will | |||
be similar in spirit to the present version, but may differ in detail to | |||
address new problems or concerns. | |||
Each version is given a distinguishing version number. If the Program | |||
specifies a version number of this License which applies to it and "any | |||
later version", you have the option of following the terms and conditions | |||
either of that version or of any later version published by the Free | |||
Software Foundation. If the Program does not specify a version number of | |||
this License, you may choose any version ever published by the Free Software | |||
Foundation. | |||
10. If you wish to incorporate parts of the Program into other free | |||
programs whose distribution conditions are different, write to the author | |||
to ask for permission. For software which is copyrighted by the Free | |||
Software Foundation, write to the Free Software Foundation; we sometimes | |||
make exceptions for this. Our decision will be guided by the two goals | |||
of preserving the free status of all derivatives of our free software and | |||
of promoting the sharing and reuse of software generally. | |||
NO WARRANTY | |||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | |||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | |||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | |||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | |||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | |||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | |||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | |||
REPAIR OR CORRECTION. | |||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | |||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | |||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | |||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | |||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | |||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | |||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | |||
POSSIBILITY OF SUCH DAMAGES. | |||
END OF TERMS AND CONDITIONS |
@@ -0,0 +1,26 @@ | |||
{ | |||
"slug": "ZamAudio", | |||
"name": "ZamAudio", | |||
"version": "1.0.0", | |||
"license": "GPL-2.0-or-later", | |||
"brand": "ZamAudio", | |||
"author": "Damien Zammit and falkTX", | |||
"authorEmail": "falktx@falktx.com", | |||
"authorUrl": "http://www.zamaudio.com/", | |||
"pluginUrl": "https://github.com/DISTRHO/Cardinal", | |||
"manualUrl": "", | |||
"sourceUrl": "https://github.com/DISTRHO/Cardinal", | |||
"changelogUrl": "", | |||
"modules": [ | |||
{ | |||
"slug": "ZamComp", | |||
"name": "Compressor", | |||
"description": "A powerful mono compressor strip. Adds real beef to a kick or snare drum with the right settings.", | |||
"manualUrl": "", | |||
"tags": [ | |||
"Effect", | |||
"Compressor" | |||
] | |||
} | |||
] | |||
} |
@@ -0,0 +1,284 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
width="123.5" | |||
height="60" | |||
viewBox="0 0 123.5 60" | |||
version="1.1" | |||
id="svg239" | |||
sodipodi:docname="ADSR-bg.svg" | |||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> | |||
<metadata | |||
id="metadata243"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<sodipodi:namedview | |||
pagecolor="#ffffff" | |||
bordercolor="#666666" | |||
borderopacity="1" | |||
objecttolerance="10" | |||
gridtolerance="10" | |||
guidetolerance="10" | |||
inkscape:pageopacity="0" | |||
inkscape:pageshadow="2" | |||
inkscape:window-width="1920" | |||
inkscape:window-height="1026" | |||
id="namedview241" | |||
showgrid="false" | |||
inkscape:zoom="4.968421" | |||
inkscape:cx="76.934835" | |||
inkscape:cy="48.509326" | |||
inkscape:window-x="0" | |||
inkscape:window-y="0" | |||
inkscape:window-maximized="1" | |||
inkscape:current-layer="svg239" | |||
inkscape:pagecheckerboard="0" | |||
width="184px" /> | |||
<defs | |||
id="defs7"> | |||
<linearGradient | |||
id="b7084a32-89ea-4051-9fd3-02ae7ae97585" | |||
x1="97.500023" | |||
x2="97.500023" | |||
y2="380" | |||
gradientUnits="userSpaceOnUse"> | |||
<stop | |||
offset="0" | |||
stop-color="#ebebeb" | |||
id="stop2" /> | |||
<stop | |||
offset="1" | |||
stop-color="#e1e1e1" | |||
id="stop4" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_3_" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.01118" | |||
style="stop-color:#4C4C4C" | |||
id="stop45383" /> | |||
<stop | |||
offset="0.67017823" | |||
style="stop-color:#3b3b3b;stop-opacity:0" | |||
id="stop45385" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="linearGradient46906" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.02846069" | |||
style="stop-color:#ff8c8c;stop-opacity:1" | |||
id="stop46902" /> | |||
<stop | |||
offset="0.82481533" | |||
style="stop-color:#ff1515;stop-opacity:0" | |||
id="stop46904" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_3_-8" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.02846069" | |||
style="stop-color:#ff8c8c;stop-opacity:1" | |||
id="stop45383-7" /> | |||
<stop | |||
offset="0.67017823" | |||
style="stop-color:#ff1515;stop-opacity:0" | |||
id="stop45385-6" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_1_" | |||
gradientUnits="userSpaceOnUse" | |||
x1="518.99988" | |||
y1="-5410.3999" | |||
x2="531.99988" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.00559" | |||
style="stop-color:#303030" | |||
id="stop45369" /> | |||
<stop | |||
offset="1" | |||
style="stop-color:#222222" | |||
id="stop45371" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_2_" | |||
gradientUnits="userSpaceOnUse" | |||
x1="519.68744" | |||
y1="-5410.3999" | |||
x2="531.31134" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.01118" | |||
style="stop-color:#636363" | |||
id="stop45376" /> | |||
<stop | |||
offset="1" | |||
style="stop-color:#2B2B2B" | |||
id="stop45378" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_3_-3" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.01118" | |||
style="stop-color:#4C4C4C" | |||
id="stop45383-1" /> | |||
<stop | |||
offset="1" | |||
style="stop-color:#3B3B3B" | |||
id="stop45385-69" /> | |||
</linearGradient> | |||
</defs> | |||
<g | |||
id="b1950596-670b-4466-898f-d443ae332145" | |||
data-name="components" | |||
inkscape:groupmode="layer" | |||
style="display:none" | |||
transform="translate(0,-93)"> | |||
<circle | |||
id="b021da4b-0fe8-4f1e-b32d-9e773df7a5e4" | |||
data-name="1x2#LEDButton" | |||
cx="25.521191" | |||
cy="238" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="f46b8a42-c463-489b-805b-fbe2a1576bce" | |||
data-name="Trig#LEDButton" | |||
cx="169.47881" | |||
cy="237.75993" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="b6107851-233c-454f-b435-4825b228afd5" | |||
data-name="In1#PJ301MPort" | |||
cx="25.521191" | |||
cy="334" | |||
r="5" | |||
style="fill:#00ff00" /> | |||
<circle | |||
id="e1c8f715-a579-4785-b3bc-4ce088c7be9e" | |||
data-name="Trig#PJ301MPort" | |||
cx="169.47881" | |||
cy="334" | |||
r="5" | |||
style="fill:#00ff00" /> | |||
<circle | |||
id="ed578b6f-7e3c-4b50-85b1-604681a2f39e" | |||
data-name="Out2#PJ301MPort" | |||
cx="133.50073" | |||
cy="334" | |||
r="5" | |||
style="fill:#0000ff" /> | |||
<circle | |||
id="b3b89114-537e-4df6-9608-ee818c8b7742" | |||
data-name="In2#PJ301MPort" | |||
cx="97.507553" | |||
cy="334" | |||
r="5" | |||
style="fill:#00ff00" /> | |||
<circle | |||
id="a8fe9c8d-13ee-4090-a75f-7c992ddf15f2" | |||
data-name="Out1#PJ301MPort" | |||
cx="61.51437" | |||
cy="334" | |||
r="5" | |||
style="fill:#0000ff" /> | |||
<circle | |||
id="bfcd5dca-3188-4901-91c1-93258e888f7e" | |||
data-name="Ofst2#RoundBlackKnob" | |||
cx="121.49648" | |||
cy="285.87146" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="e88686ae-5b33-4183-b27d-2e9e655e5bc8" | |||
data-name="Time#RoundBlackKnob" | |||
cx="25.521191" | |||
cy="285.88263" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="b7cebf3e-0520-412a-9c27-5920e30994e0" | |||
data-name="Ofst1#RoundBlackKnob" | |||
cx="73.515839" | |||
cy="285.79443" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="a60159ac-1f78-454c-bfed-737ee7e4a0fc" | |||
data-name="Gain2#RoundBlackKnob" | |||
cx="121.49648" | |||
cy="237.84641" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="a66a76d3-ef14-4827-8a1d-ad97abf66302" | |||
data-name="Gain1#RoundBlackKnob" | |||
cx="73.515839" | |||
cy="237.84641" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="ac97f6fd-53ce-44fc-93d6-5d500818a3cb" | |||
data-name="Thers#RoundBlackKnob" | |||
cx="169.47881" | |||
cy="285.87146" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<rect | |||
id="f07b4a9d-18ee-4999-88d5-97c10d878f46" | |||
data-name="Screen" | |||
x="3.9999999e-05" | |||
y="38.5" | |||
width="194.99995" | |||
height="165" | |||
style="fill:#ffff00" /> | |||
</g> | |||
<rect | |||
style="opacity:0.5;fill:#000000;stroke-width:0.54168189" | |||
id="rect38031" | |||
width="123.5" | |||
height="60" | |||
x="7.1054274e-15" | |||
y="0" /> | |||
</svg> |
@@ -0,0 +1,282 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
width="184" | |||
height="153" | |||
viewBox="0 0 184 153" | |||
version="1.1" | |||
id="svg239" | |||
sodipodi:docname="Scope-bg.svg" | |||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> | |||
<metadata | |||
id="metadata243"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<sodipodi:namedview | |||
pagecolor="#ffffff" | |||
bordercolor="#666666" | |||
borderopacity="1" | |||
objecttolerance="10" | |||
gridtolerance="10" | |||
guidetolerance="10" | |||
inkscape:pageopacity="0" | |||
inkscape:pageshadow="2" | |||
inkscape:window-width="1920" | |||
inkscape:window-height="1026" | |||
id="namedview241" | |||
showgrid="false" | |||
inkscape:zoom="4.968421" | |||
inkscape:cx="71.097971" | |||
inkscape:cy="77.89492" | |||
inkscape:window-x="0" | |||
inkscape:window-y="0" | |||
inkscape:window-maximized="1" | |||
inkscape:current-layer="svg239" | |||
inkscape:pagecheckerboard="0" | |||
width="184px" /> | |||
<defs | |||
id="defs7"> | |||
<linearGradient | |||
id="b7084a32-89ea-4051-9fd3-02ae7ae97585" | |||
x1="97.500023" | |||
x2="97.500023" | |||
y2="380" | |||
gradientUnits="userSpaceOnUse"> | |||
<stop | |||
offset="0" | |||
stop-color="#ebebeb" | |||
id="stop2" /> | |||
<stop | |||
offset="1" | |||
stop-color="#e1e1e1" | |||
id="stop4" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_3_" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.01118" | |||
style="stop-color:#4C4C4C" | |||
id="stop45383" /> | |||
<stop | |||
offset="0.67017823" | |||
style="stop-color:#3b3b3b;stop-opacity:0" | |||
id="stop45385" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="linearGradient46906" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.02846069" | |||
style="stop-color:#ff8c8c;stop-opacity:1" | |||
id="stop46902" /> | |||
<stop | |||
offset="0.82481533" | |||
style="stop-color:#ff1515;stop-opacity:0" | |||
id="stop46904" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_3_-8" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.02846069" | |||
style="stop-color:#ff8c8c;stop-opacity:1" | |||
id="stop45383-7" /> | |||
<stop | |||
offset="0.67017823" | |||
style="stop-color:#ff1515;stop-opacity:0" | |||
id="stop45385-6" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_1_" | |||
gradientUnits="userSpaceOnUse" | |||
x1="518.99988" | |||
y1="-5410.3999" | |||
x2="531.99988" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.00559" | |||
style="stop-color:#303030" | |||
id="stop45369" /> | |||
<stop | |||
offset="1" | |||
style="stop-color:#222222" | |||
id="stop45371" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_2_" | |||
gradientUnits="userSpaceOnUse" | |||
x1="519.68744" | |||
y1="-5410.3999" | |||
x2="531.31134" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.01118" | |||
style="stop-color:#636363" | |||
id="stop45376" /> | |||
<stop | |||
offset="1" | |||
style="stop-color:#2B2B2B" | |||
id="stop45378" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_3_-3" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.01118" | |||
style="stop-color:#4C4C4C" | |||
id="stop45383-1" /> | |||
<stop | |||
offset="1" | |||
style="stop-color:#3B3B3B" | |||
id="stop45385-69" /> | |||
</linearGradient> | |||
</defs> | |||
<g | |||
id="b1950596-670b-4466-898f-d443ae332145" | |||
data-name="components" | |||
inkscape:groupmode="layer" | |||
style="display:none"> | |||
<circle | |||
id="b021da4b-0fe8-4f1e-b32d-9e773df7a5e4" | |||
data-name="1x2#LEDButton" | |||
cx="25.521191" | |||
cy="238" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="f46b8a42-c463-489b-805b-fbe2a1576bce" | |||
data-name="Trig#LEDButton" | |||
cx="169.47881" | |||
cy="237.75993" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="b6107851-233c-454f-b435-4825b228afd5" | |||
data-name="In1#PJ301MPort" | |||
cx="25.521191" | |||
cy="334" | |||
r="5" | |||
style="fill:#00ff00" /> | |||
<circle | |||
id="e1c8f715-a579-4785-b3bc-4ce088c7be9e" | |||
data-name="Trig#PJ301MPort" | |||
cx="169.47881" | |||
cy="334" | |||
r="5" | |||
style="fill:#00ff00" /> | |||
<circle | |||
id="ed578b6f-7e3c-4b50-85b1-604681a2f39e" | |||
data-name="Out2#PJ301MPort" | |||
cx="133.50073" | |||
cy="334" | |||
r="5" | |||
style="fill:#0000ff" /> | |||
<circle | |||
id="b3b89114-537e-4df6-9608-ee818c8b7742" | |||
data-name="In2#PJ301MPort" | |||
cx="97.507553" | |||
cy="334" | |||
r="5" | |||
style="fill:#00ff00" /> | |||
<circle | |||
id="a8fe9c8d-13ee-4090-a75f-7c992ddf15f2" | |||
data-name="Out1#PJ301MPort" | |||
cx="61.51437" | |||
cy="334" | |||
r="5" | |||
style="fill:#0000ff" /> | |||
<circle | |||
id="bfcd5dca-3188-4901-91c1-93258e888f7e" | |||
data-name="Ofst2#RoundBlackKnob" | |||
cx="121.49648" | |||
cy="285.87146" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="e88686ae-5b33-4183-b27d-2e9e655e5bc8" | |||
data-name="Time#RoundBlackKnob" | |||
cx="25.521191" | |||
cy="285.88263" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="b7cebf3e-0520-412a-9c27-5920e30994e0" | |||
data-name="Ofst1#RoundBlackKnob" | |||
cx="73.515839" | |||
cy="285.79443" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="a60159ac-1f78-454c-bfed-737ee7e4a0fc" | |||
data-name="Gain2#RoundBlackKnob" | |||
cx="121.49648" | |||
cy="237.84641" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="a66a76d3-ef14-4827-8a1d-ad97abf66302" | |||
data-name="Gain1#RoundBlackKnob" | |||
cx="73.515839" | |||
cy="237.84641" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<circle | |||
id="ac97f6fd-53ce-44fc-93d6-5d500818a3cb" | |||
data-name="Thers#RoundBlackKnob" | |||
cx="169.47881" | |||
cy="285.87146" | |||
r="5" | |||
style="fill:#ff0000" /> | |||
<rect | |||
id="f07b4a9d-18ee-4999-88d5-97c10d878f46" | |||
data-name="Screen" | |||
x="3.9999999e-05" | |||
y="38.5" | |||
width="194.99995" | |||
height="165" | |||
style="fill:#ffff00" /> | |||
</g> | |||
<rect | |||
style="opacity:0.5;fill:#000000;stroke-width:1.05582" | |||
id="rect38031" | |||
width="184" | |||
height="153" | |||
x="3.0239114e-08" | |||
y="0" /> | |||
</svg> |
@@ -0,0 +1,181 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
inkscape:version="1.1.2 (b8e25be833, 2022-02-05)" | |||
sodipodi:docname="button-off.svg" | |||
id="svg482" | |||
viewBox="0 0 21 21" | |||
version="1.1" | |||
height="21" | |||
width="21" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:dc="http://purl.org/dc/elements/1.1/"> | |||
<metadata | |||
id="metadata488"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<defs | |||
id="defs486"> | |||
<filter | |||
style="color-interpolation-filters:sRGB" | |||
inkscape:label="Blur" | |||
id="filter11719" | |||
x="-0.99368435" | |||
y="-0.26762569" | |||
width="2.9873686" | |||
height="1.5352514"> | |||
<feGaussianBlur | |||
stdDeviation="1 1" | |||
result="fbSourceGraphic" | |||
id="feGaussianBlur11717" /> | |||
<feColorMatrix | |||
result="fbSourceGraphicAlpha" | |||
in="fbSourceGraphic" | |||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" | |||
id="feColorMatrix11739" /> | |||
<feGaussianBlur | |||
id="feGaussianBlur11741" | |||
stdDeviation="1 1" | |||
result="blur" | |||
in="fbSourceGraphic" /> | |||
</filter> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient37080" | |||
id="linearGradient37082" | |||
x1="-232.25456" | |||
y1="299.27383" | |||
x2="-232.25456" | |||
y2="330.86893" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(0.78954663,0,0,0.78954663,215.50746,-17.33085)" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient37080"> | |||
<stop | |||
style="stop-color:#b4b4b4;stop-opacity:1;" | |||
offset="0" | |||
id="stop37076" /> | |||
<stop | |||
style="stop-color:#363636;stop-opacity:1" | |||
offset="1" | |||
id="stop37078" /> | |||
</linearGradient> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient35196" | |||
id="linearGradient35198" | |||
x1="-231.22639" | |||
y1="302.84546" | |||
x2="-231.22639" | |||
y2="310.48096" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(0.76269909,0,0,0.76269909,209.84084,-8.183545)" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient35196"> | |||
<stop | |||
style="stop-color:#b6b6b6;stop-opacity:1;" | |||
offset="0" | |||
id="stop35192" /> | |||
<stop | |||
style="stop-color:#b6b6b6;stop-opacity:0;" | |||
offset="1" | |||
id="stop35194" /> | |||
</linearGradient> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#SVGID_3_" | |||
id="linearGradient35891" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(0.7474591,0,0,-0.76269909,206.30478,471.27202)" | |||
x1="-231.22639" | |||
y1="302.84546" | |||
x2="-231.22639" | |||
y2="310.48096" /> | |||
<linearGradient | |||
id="SVGID_3_" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.01118" | |||
style="stop-color:#4C4C4C" | |||
id="stop45383" /> | |||
<stop | |||
offset="0.67017823" | |||
style="stop-color:#3b3b3b;stop-opacity:0" | |||
id="stop45385" /> | |||
</linearGradient> | |||
</defs> | |||
<sodipodi:namedview | |||
inkscape:current-layer="svg482" | |||
inkscape:window-maximized="1" | |||
inkscape:window-y="-8" | |||
inkscape:window-x="-8" | |||
inkscape:cy="12.218467" | |||
inkscape:cx="21.166697" | |||
inkscape:zoom="13.913366" | |||
showgrid="false" | |||
id="namedview484" | |||
inkscape:window-height="1147" | |||
inkscape:window-width="1920" | |||
inkscape:pageshadow="2" | |||
inkscape:pageopacity="0" | |||
guidetolerance="10" | |||
gridtolerance="10" | |||
objecttolerance="10" | |||
borderopacity="1" | |||
bordercolor="#666666" | |||
pagecolor="#ffffff" | |||
inkscape:pagecheckerboard="0" | |||
showguides="false" | |||
width="21px" /> | |||
<g | |||
id="g49369" | |||
transform="matrix(0.88696203,0,0,0.88684469,-18.33356,-194.44726)"> | |||
<ellipse | |||
style="fill:url(#linearGradient37082);fill-opacity:1;stroke:#bcbcbc;stroke-width:0.770784;stroke-opacity:0" | |||
id="path31482" | |||
cx="32.508244" | |||
cy="231.09558" | |||
rx="11.452789" | |||
ry="11.452791" /> | |||
<g | |||
id="g48930" | |||
transform="translate(-0.40254211,-0.40254211)"> | |||
<ellipse | |||
style="fill:#7d7d7d;fill-opacity:1;stroke:#5a5a5a;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
id="path31482-8" | |||
cx="32.910786" | |||
cy="231.49812" | |||
rx="9.4297218" | |||
ry="9.4297228" /> | |||
<path | |||
id="path31482-8-4" | |||
style="fill:url(#linearGradient35198);fill-opacity:1;stroke:none;stroke-width:0.63463;stroke-opacity:1" | |||
d="m 32.911035,222.37502 c -5.207687,1.5e-4 -9.429318,4.22178 -9.429463,9.42947 0.0038,0.51129 0.04912,1.02144 0.135562,1.52539 0.746614,-4.55386 4.679243,-9.42379 9.293901,-9.42946 4.610134,0.002 8.543023,4.86226 9.298377,9.4101 0.08393,-0.49769 0.127767,-1.00133 0.131093,-1.50603 -1.45e-4,-5.2077 -4.221776,-9.42933 -9.42947,-9.42947 z" | |||
sodipodi:nodetypes="ccccccc" /> | |||
<path | |||
id="path31482-8-4-3" | |||
style="fill:url(#linearGradient35891);fill-opacity:1;stroke:none;stroke-width:0.628257;stroke-opacity:1" | |||
d="m 32.910318,240.71344 c -5.103624,-1.4e-4 -9.240901,-4.22177 -9.241045,-9.42946 0.0038,-0.5113 0.0482,-1.02144 0.132854,-1.5254 0.731695,4.55387 4.585744,9.4238 9.108191,9.42947 4.518016,-0.002 8.372323,-4.86226 9.112584,-9.4101 0.08226,0.49769 0.125212,1.00132 0.128476,1.50603 -1.45e-4,5.2077 -4.137421,9.42933 -9.24106,9.42946 z" | |||
sodipodi:nodetypes="ccccccc" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,265 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
inkscape:version="1.1.2 (b8e25be833, 2022-02-05)" | |||
sodipodi:docname="button-on.svg" | |||
id="svg482" | |||
viewBox="0 0 21 21" | |||
version="1.1" | |||
height="21" | |||
width="21" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:dc="http://purl.org/dc/elements/1.1/"> | |||
<metadata | |||
id="metadata488"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<defs | |||
id="defs486"> | |||
<filter | |||
style="color-interpolation-filters:sRGB" | |||
inkscape:label="Blur" | |||
id="filter11719" | |||
x="-0.99368435" | |||
y="-0.26762569" | |||
width="2.9873686" | |||
height="1.5352514"> | |||
<feGaussianBlur | |||
stdDeviation="1 1" | |||
result="fbSourceGraphic" | |||
id="feGaussianBlur11717" /> | |||
<feColorMatrix | |||
result="fbSourceGraphicAlpha" | |||
in="fbSourceGraphic" | |||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" | |||
id="feColorMatrix11739" /> | |||
<feGaussianBlur | |||
id="feGaussianBlur11741" | |||
stdDeviation="1 1" | |||
result="blur" | |||
in="fbSourceGraphic" /> | |||
</filter> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient37080"> | |||
<stop | |||
style="stop-color:#b4b4b4;stop-opacity:1;" | |||
offset="0" | |||
id="stop37076" /> | |||
<stop | |||
style="stop-color:#363636;stop-opacity:1" | |||
offset="1" | |||
id="stop37078" /> | |||
</linearGradient> | |||
<linearGradient | |||
id="SVGID_3_" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.01118" | |||
style="stop-color:#4C4C4C" | |||
id="stop45383" /> | |||
<stop | |||
offset="0.67017823" | |||
style="stop-color:#3b3b3b;stop-opacity:0" | |||
id="stop45385" /> | |||
</linearGradient> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient37080" | |||
id="linearGradient37082-1" | |||
x1="-232.25456" | |||
y1="299.27383" | |||
x2="-232.25456" | |||
y2="330.86893" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(0.76269909,0,0,0.76269909,297.68734,-8.480881)" /> | |||
<radialGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient46906" | |||
id="radialGradient46708" | |||
cx="120.91078" | |||
cy="231.49812" | |||
fx="120.91078" | |||
fy="231.49812" | |||
r="11.063352" | |||
gradientTransform="matrix(1.327123,-0.06240382,0.06836846,1.4539713,-55.379868,-97.54824)" | |||
gradientUnits="userSpaceOnUse" /> | |||
<linearGradient | |||
id="linearGradient46906" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.02846069" | |||
style="stop-color:#ff8c8c;stop-opacity:1" | |||
id="stop46902" /> | |||
<stop | |||
offset="0.82481533" | |||
style="stop-color:#ff1515;stop-opacity:0" | |||
id="stop46904" /> | |||
</linearGradient> | |||
<radialGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient42688" | |||
id="radialGradient42690" | |||
cx="98.532845" | |||
cy="-227.29176" | |||
fx="98.532845" | |||
fy="-227.29176" | |||
r="9.7470369" | |||
gradientTransform="matrix(0.85811327,2.333979e-5,-2.184581e-5,0.80318546,14.377611,-44.273096)" | |||
gradientUnits="userSpaceOnUse" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient42688"> | |||
<stop | |||
style="stop-color:#ff3f02;stop-opacity:1" | |||
offset="0" | |||
id="stop42684" /> | |||
<stop | |||
style="stop-color:#d20b0b;stop-opacity:1" | |||
offset="1" | |||
id="stop42686" /> | |||
</linearGradient> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient43796" | |||
id="linearGradient39845" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(0.65448201,0,0,-0.65448201,252.80153,435.88064)" | |||
x1="-231.22639" | |||
y1="302.84546" | |||
x2="-231.22639" | |||
y2="310.48096" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient43796"> | |||
<stop | |||
style="stop-color:#af0000;stop-opacity:1" | |||
offset="0" | |||
id="stop43792" /> | |||
<stop | |||
style="stop-color:#e40000;stop-opacity:0.73387098" | |||
offset="1" | |||
id="stop43794" /> | |||
</linearGradient> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#SVGID_3_-8" | |||
id="linearGradient35891-5" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(0.64140438,0,0,0.65448201,249.76719,24.453587)" | |||
x1="-231.22639" | |||
y1="302.84546" | |||
x2="-227.9951" | |||
y2="310.74484" /> | |||
<linearGradient | |||
id="SVGID_3_-8" | |||
gradientUnits="userSpaceOnUse" | |||
x1="520.13452" | |||
y1="-5410.3999" | |||
x2="530.86426" | |||
y2="-5410.3999" | |||
gradientTransform="rotate(90,-2442.45,-2960.45)"> | |||
<stop | |||
offset="0.02846069" | |||
style="stop-color:#ff8c8c;stop-opacity:1" | |||
id="stop45383-7" /> | |||
<stop | |||
offset="0.67017823" | |||
style="stop-color:#ff1515;stop-opacity:0" | |||
id="stop45385-6" /> | |||
</linearGradient> | |||
</defs> | |||
<sodipodi:namedview | |||
inkscape:current-layer="svg482" | |||
inkscape:window-maximized="1" | |||
inkscape:window-y="-8" | |||
inkscape:window-x="-8" | |||
inkscape:cy="12.218467" | |||
inkscape:cx="21.166697" | |||
inkscape:zoom="13.913366" | |||
showgrid="false" | |||
id="namedview484" | |||
inkscape:window-height="1147" | |||
inkscape:window-width="1920" | |||
inkscape:pageshadow="2" | |||
inkscape:pageopacity="0" | |||
guidetolerance="10" | |||
gridtolerance="10" | |||
objecttolerance="10" | |||
borderopacity="1" | |||
bordercolor="#666666" | |||
pagecolor="#ffffff" | |||
inkscape:pagecheckerboard="0" | |||
showguides="false" | |||
width="21px" /> | |||
<g | |||
id="g54006" | |||
transform="translate(-90.475548,-219.72194)"> | |||
<g | |||
id="g49811" | |||
transform="matrix(0.91818221,0,0,0.9168486,-10.042581,17.957957)"> | |||
<ellipse | |||
style="fill:url(#linearGradient37082-1);fill-opacity:1;stroke:#bcbcbc;stroke-width:0.744574;stroke-opacity:0" | |||
id="path31482-4" | |||
cx="120.91078" | |||
cy="231.49812" | |||
rx="11.063352" | |||
ry="11.063354" /> | |||
<ellipse | |||
style="fill:url(#radialGradient46708);fill-opacity:1;stroke:none;stroke-width:0.744574;stroke-opacity:1" | |||
id="path31482-4-9" | |||
cx="120.91078" | |||
cy="231.49812" | |||
rx="11.063352" | |||
ry="11.063354" /> | |||
</g> | |||
<ellipse | |||
style="fill:#a81212;fill-opacity:1;stroke:#f12121;stroke-width:0.858113;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
id="path31482-8-8" | |||
cx="100.97555" | |||
cy="-230.20668" | |||
rx="8.0917673" | |||
ry="8.0917683" | |||
transform="scale(1,-1)" /> | |||
<ellipse | |||
style="fill:url(#radialGradient42690);fill-opacity:1;stroke:none;stroke-width:0.544584;stroke-opacity:1" | |||
id="path31482-8-8-3" | |||
cx="100.97555" | |||
cy="-230.20668" | |||
rx="8.0917673" | |||
ry="8.0917683" | |||
transform="scale(1,-1)" /> | |||
<path | |||
id="path31482-8-4-8" | |||
style="fill:url(#linearGradient39845);fill-opacity:1;stroke:none;stroke-width:0.544584;stroke-opacity:1" | |||
d="m 100.97576,238.03534 c -4.468777,-1.2e-4 -8.091412,-3.62276 -8.091541,-8.09155 0.0034,-0.43874 0.04213,-0.87651 0.116326,-1.30895 0.640684,3.90772 4.015325,8.08667 7.975215,8.09154 3.95602,-0.002 7.33089,-4.17237 7.97906,-8.07493 0.072,0.42707 0.10964,0.85925 0.11249,1.29234 -1.2e-4,4.4688 -3.62275,8.09143 -8.09155,8.09155 z" | |||
sodipodi:nodetypes="ccccccc" /> | |||
<path | |||
id="path31482-8-4-3-4" | |||
style="fill:url(#linearGradient35891-5);fill-opacity:1;stroke:none;stroke-width:0.539115;stroke-opacity:1" | |||
d="m 100.97515,222.29891 c -4.379489,1.2e-4 -7.929734,3.62275 -7.929863,8.09154 0.0034,0.43875 0.04136,0.87651 0.114009,1.30897 0.627872,-3.90774 3.935083,-8.08669 7.815854,-8.09156 3.87697,0.002 7.1844,4.17237 7.81963,8.07493 0.0706,-0.42707 0.10744,-0.85924 0.11025,-1.29234 -1.3e-4,-4.4688 -3.55038,-8.09143 -7.92988,-8.09154 z" | |||
sodipodi:nodetypes="ccccccc" /> | |||
</g> | |||
</svg> |
@@ -0,0 +1,119 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" | |||
sodipodi:docname="knob-marker-small.svg" | |||
id="svg482" | |||
viewBox="0 0 18 18" | |||
version="1.1" | |||
height="18" | |||
width="18"> | |||
<metadata | |||
id="metadata488"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<defs | |||
id="defs486"> | |||
<filter | |||
style="color-interpolation-filters:sRGB" | |||
inkscape:label="Blur" | |||
id="filter11719" | |||
x="-0.99368435" | |||
y="-0.26762569" | |||
width="2.9873686" | |||
height="1.5352514"> | |||
<feGaussianBlur | |||
stdDeviation="1 1" | |||
result="fbSourceGraphic" | |||
id="feGaussianBlur11717" /> | |||
<feColorMatrix | |||
result="fbSourceGraphicAlpha" | |||
in="fbSourceGraphic" | |||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" | |||
id="feColorMatrix11739" /> | |||
<feGaussianBlur | |||
id="feGaussianBlur11741" | |||
stdDeviation="1 1" | |||
result="blur" | |||
in="fbSourceGraphic" /> | |||
</filter> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient13644" | |||
id="linearGradient4715" | |||
x1="31.340908" | |||
y1="16.595808" | |||
x2="31.486288" | |||
y2="32.426929" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(0.26692307,0,0,0.20312283,-0.89463872,51.904862)" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient13644"> | |||
<stop | |||
style="stop-color:#ffffff;stop-opacity:1;" | |||
offset="0" | |||
id="stop13640" /> | |||
<stop | |||
style="stop-color:#bcbcbc;stop-opacity:0.81451613" | |||
offset="1" | |||
id="stop13642" /> | |||
</linearGradient> | |||
</defs> | |||
<sodipodi:namedview | |||
inkscape:current-layer="g1249" | |||
inkscape:window-maximized="1" | |||
inkscape:window-y="0" | |||
inkscape:window-x="1920" | |||
inkscape:cy="21.142003" | |||
inkscape:cx="-21.040359" | |||
inkscape:zoom="4.9191177" | |||
showgrid="false" | |||
id="namedview484" | |||
inkscape:window-height="1026" | |||
inkscape:window-width="1920" | |||
inkscape:pageshadow="2" | |||
inkscape:pageopacity="0" | |||
guidetolerance="10" | |||
gridtolerance="10" | |||
objecttolerance="10" | |||
borderopacity="1" | |||
bordercolor="#666666" | |||
pagecolor="#ffffff" | |||
inkscape:pagecheckerboard="0" | |||
showguides="false" /> | |||
<g | |||
id="g1249" | |||
transform="rotate(0.07311286,39101.24,237.28666)"> | |||
<circle | |||
style="opacity:0.7;fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.2647059" | |||
id="path877" | |||
cx="8.7405167" | |||
cy="58.88422" | |||
r="9" /> | |||
<rect | |||
style="opacity:0.84294888;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4715);stroke-width:0.06770288;stroke-opacity:1" | |||
id="rect822-8" | |||
width="1.2223203" | |||
height="6.431324" | |||
x="7.509778" | |||
y="52.060192" | |||
rx="0.50608361" | |||
transform="matrix(0.99997051,-0.00767917,0.0123337,0.99992394,0,0)" /> | |||
</g> | |||
</svg> |
@@ -0,0 +1,144 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" | |||
sodipodi:docname="knob-marker.svg" | |||
id="svg482" | |||
viewBox="0 0 68.0 68.0" | |||
version="1.1" | |||
height="68.0" | |||
width="68.0"> | |||
<metadata | |||
id="metadata488"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<defs | |||
id="defs486"> | |||
<filter | |||
style="color-interpolation-filters:sRGB" | |||
inkscape:label="Blur" | |||
id="filter11719" | |||
x="-0.99368436" | |||
y="-0.2676257" | |||
width="2.9873687" | |||
height="1.5352514"> | |||
<feGaussianBlur | |||
stdDeviation="1 1" | |||
result="fbSourceGraphic" | |||
id="feGaussianBlur11717" /> | |||
<feColorMatrix | |||
result="fbSourceGraphicAlpha" | |||
in="fbSourceGraphic" | |||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" | |||
id="feColorMatrix11739" /> | |||
<feGaussianBlur | |||
id="feGaussianBlur11741" | |||
stdDeviation="1 1" | |||
result="blur" | |||
in="fbSourceGraphic" /> | |||
</filter> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient16137-0" | |||
id="linearGradient16139-1" | |||
x1="50.164425" | |||
y1="70.256355" | |||
x2="50.31778" | |||
y2="79.224106" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(0.95156674,0,0,1.5456938,-16.442542,-90.055995)" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient16137-0"> | |||
<stop | |||
style="stop-color:#ffffff;stop-opacity:1" | |||
offset="0" | |||
id="stop16133-0" /> | |||
<stop | |||
style="stop-color:#838383;stop-opacity:0.23790321" | |||
offset="0.93217719" | |||
id="stop4677" /> | |||
<stop | |||
style="stop-color:#bcbcbc;stop-opacity:0.81451613" | |||
offset="1" | |||
id="stop16135-4" /> | |||
</linearGradient> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient13644" | |||
id="linearGradient4715" | |||
x1="31.340908" | |||
y1="16.595808" | |||
x2="31.486288" | |||
y2="32.426929" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(1.0037676,0,0,0.87557877,-0.16673027,4.007879)" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient13644"> | |||
<stop | |||
style="stop-color:#ffffff;stop-opacity:1;" | |||
offset="0" | |||
id="stop13640" /> | |||
<stop | |||
style="stop-color:#bcbcbc;stop-opacity:0.81451613" | |||
offset="1" | |||
id="stop13642" /> | |||
</linearGradient> | |||
</defs> | |||
<sodipodi:namedview | |||
inkscape:current-layer="g1249" | |||
inkscape:window-maximized="1" | |||
inkscape:window-y="0" | |||
inkscape:window-x="1920" | |||
inkscape:cy="21.142003" | |||
inkscape:cx="-21.040359" | |||
inkscape:zoom="4.9191177" | |||
showgrid="false" | |||
id="namedview484" | |||
inkscape:window-height="1026" | |||
inkscape:window-width="1920" | |||
inkscape:pageshadow="2" | |||
inkscape:pageopacity="0" | |||
guidetolerance="10" | |||
gridtolerance="10" | |||
objecttolerance="10" | |||
borderopacity="1" | |||
bordercolor="#666666" | |||
pagecolor="#ffffff" | |||
inkscape:pagecheckerboard="0" | |||
showguides="false" /> | |||
<g | |||
id="g1249" | |||
transform="rotate(0.07311286,-81.860689,262.28855)"> | |||
<circle | |||
style="opacity:0.7;fill:#ffffff;fill-opacity:0;stroke:none" | |||
id="path877" | |||
cx="33.708595" | |||
cy="33.852341" | |||
r="34" /> | |||
<rect | |||
style="opacity:0.84294888;fill:url(#linearGradient16139-1);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4715);stroke-width:0.27258307;stroke-opacity:1" | |||
id="rect822-8" | |||
width="4.5965509" | |||
height="27.722786" | |||
x="31.438185" | |||
y="4.677423" | |||
rx="1.9031335" | |||
transform="matrix(0.99996288,-0.0086159,0.01092257,0.99994035,0,0)" /> | |||
</g> | |||
</svg> |
@@ -0,0 +1,158 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" | |||
sodipodi:docname="knob-small.svg" | |||
id="svg482" | |||
viewBox="0 0 18 18" | |||
version="1.1" | |||
height="18" | |||
width="18"> | |||
<metadata | |||
id="metadata488"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<defs | |||
id="defs486"> | |||
<filter | |||
style="color-interpolation-filters:sRGB" | |||
inkscape:label="Blur" | |||
id="filter11719" | |||
x="-0.99368435" | |||
y="-0.26762569" | |||
width="2.9873686" | |||
height="1.5352514"> | |||
<feGaussianBlur | |||
stdDeviation="1 1" | |||
result="fbSourceGraphic" | |||
id="feGaussianBlur11717" /> | |||
<feColorMatrix | |||
result="fbSourceGraphicAlpha" | |||
in="fbSourceGraphic" | |||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" | |||
id="feColorMatrix11739" /> | |||
<feGaussianBlur | |||
id="feGaussianBlur11741" | |||
stdDeviation="1 1" | |||
result="blur" | |||
in="fbSourceGraphic" /> | |||
</filter> | |||
<radialGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient24066" | |||
id="radialGradient24132" | |||
cx="51.804565" | |||
cy="85.892349" | |||
fx="51.804565" | |||
fy="85.892349" | |||
r="24.152542" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(-1.6952603,0.2112972,-0.17603912,-1.3256536,136.94264,67.21025)" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient24066"> | |||
<stop | |||
style="stop-color:#2f2f2f;stop-opacity:1" | |||
offset="0" | |||
id="stop24062" /> | |||
<stop | |||
style="stop-color:#1d1d1d;stop-opacity:1" | |||
offset="1" | |||
id="stop24064" /> | |||
</linearGradient> | |||
</defs> | |||
<sodipodi:namedview | |||
inkscape:current-layer="svg482" | |||
inkscape:window-maximized="1" | |||
inkscape:window-y="0" | |||
inkscape:window-x="0" | |||
inkscape:cy="10.236928" | |||
inkscape:cx="4.3404384" | |||
inkscape:zoom="39.352942" | |||
showgrid="false" | |||
id="namedview484" | |||
inkscape:window-height="1026" | |||
inkscape:window-width="1920" | |||
inkscape:pageshadow="2" | |||
inkscape:pageopacity="0" | |||
guidetolerance="10" | |||
gridtolerance="10" | |||
objecttolerance="10" | |||
borderopacity="1" | |||
bordercolor="#666666" | |||
pagecolor="#ffffff" | |||
inkscape:pagecheckerboard="0" | |||
showguides="false" /> | |||
<circle | |||
style="fill:#5d5c5a;fill-opacity:1;stroke:#070707;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
id="path456-2" | |||
cx="9" | |||
cy="9" | |||
r="8.4999237" /> | |||
<g | |||
id="g842" | |||
transform="matrix(0.21875,0,0,0.21875,-21.24078,-0.43927557)"> | |||
<g | |||
id="g864" | |||
transform="matrix(0.96035426,0,0,0.99127088,105.59152,7.7555619)" | |||
style="fill:#2c2c2c;fill-opacity:1"> | |||
<g | |||
id="g855" | |||
style="fill:#2c2c2c;fill-opacity:1"> | |||
<ellipse | |||
ry="32.281792" | |||
rx="33.321037" | |||
transform="scale(1,-1)" | |||
cy="-35.707104" | |||
cx="34" | |||
id="path456" | |||
style="fill:#2c2c2c;fill-opacity:1;stroke-width:1.35792994" /> | |||
</g> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="opacity:0.878205;mix-blend-mode:normal;fill:#2c2c2c;fill-opacity:1;stroke:none;stroke-width:1.36478996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="M 34.131755,31.780031 1.2942961,41.561829 c 0,0 1.9576083,12.271466 16.4538939,22.45606 z" | |||
id="path18669" | |||
sodipodi:nodetypes="cccc" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="opacity:0.0320513;mix-blend-mode:normal;fill:#2c2c2c;fill-opacity:1;stroke:none;stroke-width:1.05869997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="M 34.131755,31.780031 65.90155,44.378942 c 0,0 4.386063,-11.046817 -2.313018,-23.110502 z" | |||
id="path18669-3-4-8" | |||
sodipodi:nodetypes="cccc" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="mix-blend-mode:normal;fill:#2c2c2c;fill-opacity:1;stroke:none;stroke-width:1.36478996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="m 33.204008,31.780031 33.244045,9.83262 c 0,0 -3.685568,15.47326 -16.860468,22.405238 z" | |||
id="path18669-6" | |||
sodipodi:nodetypes="cccc" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="opacity:0.08333327;mix-blend-mode:normal;fill:#2c2c2c;fill-opacity:1;stroke:none;stroke-width:1.05869997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="M 33.204008,31.780031 33.862132,3.834848 c 0,0 -10.271784,-1.792207 -20.730755,6.872143 z" | |||
id="path18669-3" | |||
sodipodi:nodetypes="cccc" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="opacity:0.05448722;mix-blend-mode:normal;fill:#2c2c2c;fill-opacity:1;stroke:none;stroke-width:1.05869997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="M 31.799254,32.120058 17.78411,7.545209 c 0,0 -10.845503,4.915169 -14.937735,16.884839 z" | |||
id="path18669-3-4" | |||
sodipodi:nodetypes="cccc" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,229 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" | |||
sodipodi:docname="knob.svg" | |||
id="svg482" | |||
viewBox="0 0 68.0 68.0" | |||
version="1.1" | |||
height="68.0" | |||
width="68.0"> | |||
<metadata | |||
id="metadata488"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<defs | |||
id="defs486"> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient4713"> | |||
<stop | |||
style="stop-color:#ffffff;stop-opacity:1;" | |||
offset="0" | |||
id="stop4709" /> | |||
<stop | |||
style="stop-color:#bcbcbc;stop-opacity:0" | |||
offset="1" | |||
id="stop4711" /> | |||
</linearGradient> | |||
<filter | |||
style="color-interpolation-filters:sRGB" | |||
inkscape:label="Blur" | |||
id="filter11719" | |||
x="-0.99368436" | |||
y="-0.2676257" | |||
width="2.9873687" | |||
height="1.5352514"> | |||
<feGaussianBlur | |||
stdDeviation="1 1" | |||
result="fbSourceGraphic" | |||
id="feGaussianBlur11717" /> | |||
<feColorMatrix | |||
result="fbSourceGraphicAlpha" | |||
in="fbSourceGraphic" | |||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" | |||
id="feColorMatrix11739" /> | |||
<feGaussianBlur | |||
id="feGaussianBlur11741" | |||
stdDeviation="1 1" | |||
result="blur" | |||
in="fbSourceGraphic" /> | |||
</filter> | |||
<radialGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient24066" | |||
id="radialGradient24132" | |||
cx="51.804565" | |||
cy="85.892349" | |||
fx="51.804565" | |||
fy="85.892349" | |||
r="24.152542" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(-1.6952603,0.2112972,-0.17603912,-1.3256536,136.94264,67.21025)" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
id="linearGradient24066"> | |||
<stop | |||
style="stop-color:#2f2f2f;stop-opacity:1" | |||
offset="0" | |||
id="stop24062" /> | |||
<stop | |||
style="stop-color:#1d1d1d;stop-opacity:1" | |||
offset="1" | |||
id="stop24064" /> | |||
</linearGradient> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient24066" | |||
id="linearGradient5680" | |||
x1="52.848896" | |||
y1="90.113304" | |||
x2="40.298508" | |||
y2="89.553993" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(1.448863,0,0,1.2855948,-41.104753,-77.41381)" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient24066" | |||
id="linearGradient6621" | |||
gradientUnits="userSpaceOnUse" | |||
x1="52.848896" | |||
y1="90.113304" | |||
x2="40.298508" | |||
y2="89.553993" | |||
gradientTransform="matrix(-1.448863,0,0,1.2855948,108.44051,-77.413806)" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient4713" | |||
id="linearGradient10878" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(-1.0200958,-0.57631897,0.52025295,-0.80484715,47.186991,135.0227)" | |||
x1="34.025845" | |||
y1="101.32399" | |||
x2="47.959541" | |||
y2="91.020355" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient4713" | |||
id="linearGradient7942" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(-0.33164439,1.123722,-0.90137562,-0.32552121,126.98526,1.076045)" | |||
x1="34.025845" | |||
y1="101.32399" | |||
x2="47.959541" | |||
y2="91.020355" /> | |||
<linearGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient4713" | |||
id="linearGradient9420" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(0.3127234,1.1291338,-0.93717832,0.20034686,95.16075,-43.530311)" | |||
x1="34.025845" | |||
y1="101.32399" | |||
x2="47.959541" | |||
y2="91.020355" /> | |||
<radialGradient | |||
inkscape:collect="always" | |||
xlink:href="#linearGradient24066" | |||
id="radialGradient852" | |||
gradientUnits="userSpaceOnUse" | |||
gradientTransform="matrix(-1.6952603,0.2112972,-0.17603912,-1.3256536,136.94264,67.21025)" | |||
cx="51.804565" | |||
cy="85.892349" | |||
fx="51.804565" | |||
fy="85.892349" | |||
r="24.152542" /> | |||
</defs> | |||
<sodipodi:namedview | |||
inkscape:current-layer="svg482" | |||
inkscape:window-maximized="1" | |||
inkscape:window-y="0" | |||
inkscape:window-x="0" | |||
inkscape:cy="33.69687" | |||
inkscape:cx="14.984364" | |||
inkscape:zoom="9.8382354" | |||
showgrid="false" | |||
id="namedview484" | |||
inkscape:window-height="1026" | |||
inkscape:window-width="1920" | |||
inkscape:pageshadow="2" | |||
inkscape:pageopacity="0" | |||
guidetolerance="10" | |||
gridtolerance="10" | |||
objecttolerance="10" | |||
borderopacity="1" | |||
bordercolor="#666666" | |||
pagecolor="#ffffff" | |||
inkscape:pagecheckerboard="0" | |||
showguides="false" /> | |||
<ellipse | |||
style="fill:#5d5c5a;fill-opacity:1;stroke:#070707;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
id="path456-2" | |||
cx="34" | |||
cy="34" | |||
rx="32.999985" | |||
ry="32.999989" /> | |||
<g | |||
id="g842" | |||
transform="matrix(0.9375,0,0,0.9375,-95.603342,-6.4540382)"> | |||
<g | |||
id="g864" | |||
transform="matrix(0.96035426,0,0,0.99127088,105.59152,7.7555619)"> | |||
<g | |||
id="g855"> | |||
<ellipse | |||
ry="32.281792" | |||
rx="33.321037" | |||
transform="scale(1,-1)" | |||
cy="-35.707104" | |||
cx="34" | |||
id="path456" | |||
style="fill:url(#radialGradient852);fill-opacity:1;stroke-width:1.35792994" /> | |||
</g> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="opacity:0.878205;mix-blend-mode:normal;fill:url(#linearGradient5680);fill-opacity:1;stroke:none;stroke-width:1.36478996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="M 34.131755,31.780031 1.2942961,41.561829 c 0,0 1.9576083,12.271466 16.4538939,22.45606 z" | |||
id="path18669" | |||
sodipodi:nodetypes="cccc" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="opacity:0.0320513;mix-blend-mode:normal;fill:url(#linearGradient10878);fill-opacity:1;stroke:none;stroke-width:1.05869997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="M 34.131755,31.780031 65.90155,44.378942 c 0,0 4.386063,-11.046817 -2.313018,-23.110502 z" | |||
id="path18669-3-4-8" | |||
sodipodi:nodetypes="cccc" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="mix-blend-mode:normal;fill:url(#linearGradient6621);fill-opacity:1;stroke:none;stroke-width:1.36478996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="m 33.204008,31.780031 33.244045,9.83262 c 0,0 -3.685568,15.47326 -16.860468,22.405238 z" | |||
id="path18669-6" | |||
sodipodi:nodetypes="cccc" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="opacity:0.08333327;mix-blend-mode:normal;fill:url(#linearGradient7942);fill-opacity:1;stroke:none;stroke-width:1.05869997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="M 33.204008,31.780031 33.862132,3.834848 c 0,0 -10.271784,-1.792207 -20.730755,6.872143 z" | |||
id="path18669-3" | |||
sodipodi:nodetypes="cccc" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
style="opacity:0.05448722;mix-blend-mode:normal;fill:url(#linearGradient9420);fill-opacity:1;stroke:none;stroke-width:1.05869997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
d="M 31.799254,32.120058 17.78411,7.545209 c 0,0 -10.845503,4.915169 -14.937735,16.884839 z" | |||
id="path18669-3-4" | |||
sodipodi:nodetypes="cccc" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,121 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
width="22" | |||
height="22" | |||
viewBox="0 0 5.8208332 5.8208335" | |||
version="1.1" | |||
id="svg977" | |||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" | |||
sodipodi:docname="jack.svg"> | |||
<defs | |||
id="defs971" /> | |||
<sodipodi:namedview | |||
id="base" | |||
pagecolor="#ffffff" | |||
bordercolor="#666666" | |||
borderopacity="1.0" | |||
inkscape:pageopacity="0.0" | |||
inkscape:pageshadow="2" | |||
inkscape:zoom="15.839192" | |||
inkscape:cx="8.23175" | |||
inkscape:cy="6.3766653" | |||
inkscape:document-units="mm" | |||
inkscape:current-layer="layer1" | |||
showgrid="false" | |||
units="px" | |||
inkscape:window-width="1920" | |||
inkscape:window-height="1026" | |||
inkscape:window-x="0" | |||
inkscape:window-y="0" | |||
inkscape:window-maximized="1" /> | |||
<metadata | |||
id="metadata974"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
inkscape:label="Layer 1" | |||
inkscape:groupmode="layer" | |||
id="layer1" | |||
transform="translate(0,-291.17915)"> | |||
<g | |||
id="JACKS-97-7-6-0-6" | |||
transform="matrix(0.26458333,0,0,-0.26458333,1.095e-6,296.99998)"> | |||
<g | |||
id="g45078-1-5-2-7-9"> | |||
<g | |||
id="layer1_2_-9-3-3-15-4" | |||
transform="translate(-88.611154,-119.19859)"> | |||
<g | |||
id="g45059-1-9-9-8-6"> | |||
<circle | |||
cx="99.611153" | |||
cy="130.19856" | |||
r="10.75" | |||
id="circle45055-2-1-9-9-9" | |||
style="fill:#bababa" /> | |||
<path | |||
d="m 99.61115,119.69856 c 5.78973,0 10.5,4.71029 10.5,10.5 0,5.78972 -4.71027,10.5 -10.5,10.5 -5.78973,0 -10.5,-4.71028 -10.5,-10.5 0,-5.78971 4.71026,-10.5 10.5,-10.5 m 0,-0.5 c -6.07513,0 -11,4.92487 -11,11 0,6.07513 4.92487,11 11,11 6.07513,0 11,-4.92487 11,-11 0,-6.07512 -4.92487,-11 -11,-11 z" | |||
id="path45057-4-5-0-9-1" | |||
inkscape:connector-curvature="0" | |||
style="fill:#848484" /> | |||
</g> | |||
<g | |||
id="g45073-2-6-7-8-7"> | |||
<g | |||
id="g45065-1-8-8-7-0"> | |||
<circle | |||
cx="99.611153" | |||
cy="130.19856" | |||
r="7.9760699" | |||
id="circle45061-5-2-6-8-6" | |||
style="fill:#303030" /> | |||
<path | |||
d="m 99.61115,122.47253 c 4.267,0 7.72604,3.45906 7.72604,7.72604 0,4.26697 -3.45905,7.72604 -7.72604,7.72604 -4.26697,0 -7.72604,-3.45909 -7.72604,-7.72604 -1e-5,-4.26698 3.45906,-7.72604 7.72604,-7.72604 m 0,-0.5 c -4.53586,0 -8.22604,3.6902 -8.22604,8.22604 0,4.53583 3.69019,8.22604 8.22604,8.22604 4.53585,0 8.22604,-3.6902 8.22604,-8.22604 0,-4.53584 -3.69019,-8.22604 -8.22604,-8.22604 z" | |||
id="path45063-5-9-6-57-2" | |||
inkscape:connector-curvature="0" | |||
style="fill:#848484" /> | |||
</g> | |||
<g | |||
id="g45071-8-4-2-6-26"> | |||
<circle | |||
cx="99.611153" | |||
cy="130.19856" | |||
r="7.4760699" | |||
id="circle45067-0-1-6-3-8" | |||
style="fill:#494949" /> | |||
<path | |||
d="m 99.61115,122.97253 c 3.98444,0 7.22604,3.24159 7.22604,7.22604 0,3.98444 -3.24161,7.22604 -7.22604,7.22604 -3.98443,0 -7.22604,-3.24159 -7.22604,-7.22604 0,-3.98445 3.2416,-7.22604 7.22604,-7.22604 m 0,-0.5 c -4.26697,0 -7.72604,3.45906 -7.72604,7.72604 0,4.26697 3.45908,7.72604 7.72604,7.72604 4.267,0 7.72604,-3.45909 7.72604,-7.72604 0,-4.26698 -3.45905,-7.72604 -7.72604,-7.72604 z" | |||
id="path45069-9-4-9-3-4" | |||
inkscape:connector-curvature="0" | |||
style="fill:#1e1e1e" /> | |||
</g> | |||
</g> | |||
<circle | |||
stroke-miterlimit="10" | |||
cx="99.611153" | |||
cy="130.19856" | |||
r="4.5340099" | |||
id="circle45075-8-8-5-8-7" | |||
style="stroke:#1e1e1e;stroke-width:0.5;stroke-miterlimit:10" /> | |||
</g> | |||
</g> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,195 @@ | |||
/* | |||
* ZamComp mono compressor for Cardinal | |||
* Copyright (C) 2014-2019 Damien Zammit <damien@zamaudio.com> | |||
* Copyright (C) 2022 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
* published by the Free Software Foundation; either version 2 of | |||
* the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* For a full copy of the GNU General Public License see the LICENSE file. | |||
*/ | |||
#include "plugin.hpp" | |||
#include "widgets.hpp" | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
struct ZamAudioCompModule : Module { | |||
enum ParamIds { | |||
PARAM_ATTACK, | |||
PARAM_RELEASE, | |||
PARAM_THRESHOLD, | |||
PARAM_RATIO, | |||
PARAM_KNEE, | |||
PARAM_SLEW, | |||
PARAM_MAKEUP, | |||
NUM_PARAMS | |||
}; | |||
enum InputIds { | |||
AUDIO_INPUT, | |||
SIDECHAIN_INPUT, | |||
NUM_INPUTS | |||
}; | |||
enum OutputIds { | |||
AUDIO_OUTPUT, | |||
NUM_OUTPUTS | |||
}; | |||
enum LightIds { | |||
OUTLEVEL, | |||
GAINREDUCTION, | |||
NUM_LIGHTS | |||
}; | |||
float gainred,outlevel; //lights | |||
float oldL_yl, oldL_y1, oldL_yg; //temp | |||
static inline float | |||
sanitize_denormal(float v) { | |||
if(!std::isnormal(v)) | |||
return 0.f; | |||
return v; | |||
} | |||
static inline float | |||
from_dB(float gdb) { | |||
return (expf(0.05f*gdb*logf(10.f))); | |||
} | |||
static inline float | |||
to_dB(float g) { | |||
return (20.f*log10f(g)); | |||
} | |||
ZamAudioCompModule() | |||
{ | |||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | |||
configParam(PARAM_ATTACK, 0.1f, 100.f, 10.f, "Attack", " ms"); | |||
configParam(PARAM_RELEASE, 1.f, 500.f, 80.f, "Release", " ms"); | |||
configParam(PARAM_THRESHOLD, -80.f, 0.f, 0.f, "Threshold", " db"); | |||
configParam(PARAM_RATIO, 1.f, 20.f, 4.f, "Ratio"); | |||
configParam(PARAM_KNEE, 0.f, 8.f, 0.f, "Knee", " dB"); | |||
configParam(PARAM_SLEW, 1.f, 150.f, 1.f, "Slew"); | |||
configParam(PARAM_MAKEUP, 0.f, 30.f, 0.f, "Makeup", " dB"); | |||
configInput(AUDIO_INPUT, "Audio"); | |||
configInput(SIDECHAIN_INPUT, "Sidechain"); | |||
configOutput(AUDIO_OUTPUT, "Audio"); | |||
configLight(OUTLEVEL, "Output Level"); | |||
configLight(GAINREDUCTION, "Gain Reduction"); | |||
gainred = 0.0f; | |||
outlevel = -45.0f; | |||
oldL_yl = oldL_y1 = oldL_yg = 0.f; | |||
} | |||
void process(const ProcessArgs& args) override | |||
{ | |||
const float attack = params[PARAM_ATTACK].getValue(); | |||
const float release = params[PARAM_RELEASE].getValue(); | |||
const float thresdb = params[PARAM_THRESHOLD].getValue(); | |||
const float ratio = params[PARAM_RATIO].getValue(); | |||
const float knee = params[PARAM_KNEE].getValue(); | |||
const float slewfactor = params[PARAM_SLEW].getValue(); | |||
const float makeup = params[PARAM_MAKEUP].getValue(); | |||
const float srate = args.sampleRate; | |||
const float width = (6.f * knee) + 0.01; | |||
const float slewwidth = 1.8f; | |||
const float release_coeff = exp(-1000.f/(release * srate)); | |||
// const float gain = std::pow(params[0].getValue(), 2.f); | |||
const float in0 = inputs[AUDIO_INPUT].getVoltageSum() * 0.1f; | |||
const float in = inputs[SIDECHAIN_INPUT].isConnected() | |||
? inputs[SIDECHAIN_INPUT].getVoltageSum() * 0.1f | |||
: in0; | |||
const float Lxg = sanitize_denormal(in == 0.f ? -160.f : to_dB(fabsf(in))); | |||
const float checkwidth = 2.f*fabsf(Lxg-thresdb); | |||
bool attslew = false; | |||
float Lyg; | |||
if (2.f*(Lxg-thresdb) < -width) { | |||
Lyg = Lxg; | |||
} else if (checkwidth <= width) { | |||
Lyg = thresdb + (Lxg-thresdb)/ratio; | |||
Lyg = sanitize_denormal(Lyg); | |||
if (checkwidth <= slewwidth) { | |||
if (Lyg >= oldL_yg) { | |||
attslew = true; | |||
} | |||
} | |||
} else if (2.f*(Lxg-thresdb) > width) { | |||
Lyg = thresdb + (Lxg-thresdb)/ratio; | |||
Lyg = sanitize_denormal(Lyg); | |||
} else { | |||
Lyg = Lxg + (1.f/ratio-1.f)*(Lxg-thresdb+width/2.f)*(Lxg-thresdb+width/2.f)/(2.f*width); | |||
} | |||
const float attack_coeff = attslew | |||
? exp(-1000.f/((attack + 2.0*(slewfactor - 1)) * srate)) | |||
: exp(-1000.f/(attack * srate)); | |||
// Don't slew on release | |||
const float Lxl = Lxg - Lyg; | |||
const float Lyl = sanitize_denormal(Lxl < oldL_yl ? release_coeff * oldL_yl + (1.f-release_coeff)*Lxl | |||
: Lxl > oldL_yl ? attack_coeff * oldL_yl+(1.f-attack_coeff)*Lxl : Lxl); | |||
const float Lgain = from_dB(-Lyl); | |||
const float out = in0 * Lgain * from_dB(makeup); | |||
outputs[AUDIO_OUTPUT].setVoltage(out * 10.0f); | |||
oldL_yl = Lyl; | |||
oldL_yg = Lyg; | |||
gainred = Lyl; | |||
// const float max = (fabsf(out) > max) ? fabsf(outputs[0][i]) : sanitize_denormal(max); | |||
// outlevel = (max == 0.f) ? -45.f : to_dB(max); // relative to - thresdb; | |||
} | |||
}; | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
struct ZamAudioCompModuleWidget : ZamAudioModuleWidget { | |||
typedef FundamentalBlackKnob<36> BigKnob; | |||
ZamAudioCompModule* const module; | |||
ZamAudioCompModuleWidget(ZamAudioCompModule* const m) | |||
: ZamAudioModuleWidget(), | |||
module(m) | |||
{ | |||
setModule(module); | |||
setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/ZamComp.svg"))); | |||
addInput(createInput<PJ301MPort>(Vec(32, 280), m, ZamAudioCompModule::AUDIO_INPUT)); | |||
addInput(createInput<PJ301MPort>(Vec(32, 310), m, ZamAudioCompModule::SIDECHAIN_INPUT)); | |||
addOutput(createOutput<PJ301MPort>(Vec(100, 310), m, ZamAudioCompModule::AUDIO_OUTPUT)); | |||
const float scale = 0.8f; | |||
addParam(createParamCentered<BigKnob>(Vec(45.75f * scale, 121.25f * scale), m, ZamAudioCompModule::PARAM_ATTACK)); | |||
addParam(createParamCentered<BigKnob>(Vec(127.75f * scale, 121.25f * scale), m, ZamAudioCompModule::PARAM_RELEASE)); | |||
addParam(createParamCentered<BigKnob>(Vec(48.25f * scale, 208.f * scale), m, ZamAudioCompModule::PARAM_THRESHOLD)); | |||
addParam(createParamCentered<BigKnob>(Vec(130.75f * scale, 208.f * scale), m, ZamAudioCompModule::PARAM_RATIO)); | |||
addParam(createParamCentered<BigKnob>(Vec(48.25f * scale, 305.f * scale), m, ZamAudioCompModule::PARAM_KNEE)); | |||
addParam(createParamCentered<BigKnob>(Vec(130.75f * scale, 305.f * scale), m, ZamAudioCompModule::PARAM_SLEW)); | |||
} | |||
}; | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
Model* modelZamComp = createModel<ZamAudioCompModule, ZamAudioCompModuleWidget>("ZamComp"); | |||
// -------------------------------------------------------------------------------------------------------------------- |
@@ -0,0 +1,27 @@ | |||
/* | |||
* ZamAudio plugins For Cardinal | |||
* Copyright (C) 2014-2019 Damien Zammit <damien@zamaudio.com> | |||
* Copyright (C) 2022 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
* published by the Free Software Foundation; either version 2 of | |||
* the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* For a full copy of the GNU General Public License see the LICENSE file. | |||
*/ | |||
#pragma once | |||
#include "rack.hpp" | |||
using namespace rack; | |||
extern Plugin* pluginInstance; | |||
extern Model* modelZamComp; |
@@ -0,0 +1,52 @@ | |||
/* | |||
* ZamAudio plugins For Cardinal | |||
* Copyright (C) 2014-2019 Damien Zammit <damien@zamaudio.com> | |||
* Copyright (C) 2022 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
* published by the Free Software Foundation; either version 2 of | |||
* the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* For a full copy of the GNU General Public License see the LICENSE file. | |||
*/ | |||
#pragma once | |||
#include "plugin.hpp" | |||
struct ZamAudioModuleWidget : ModuleWidget { | |||
}; | |||
template<int size> | |||
struct FundamentalBlackKnob : RoundKnob { | |||
static constexpr const float kSize = size; | |||
static constexpr const float kHalfSize = size * 0.5f; | |||
float scale; | |||
FundamentalBlackKnob() { | |||
if (size <= 22) { | |||
setSvg(Svg::load(asset::plugin(pluginInstance, "res/components/knob-marker-small.svg"))); | |||
bg->setSvg(Svg::load(asset::plugin(pluginInstance, "res/components/knob-small.svg"))); | |||
} else { | |||
setSvg(Svg::load(asset::plugin(pluginInstance, "res/components/knob-marker.svg"))); | |||
bg->setSvg(Svg::load(asset::plugin(pluginInstance, "res/components/knob.svg"))); | |||
} | |||
scale = size / sw->box.size.x; | |||
box.size = Vec(size, size); | |||
bg->box.size = Vec(size, size); | |||
} | |||
void draw(const DrawArgs& args) override { | |||
nvgSave(args.vg); | |||
nvgScale(args.vg, scale, scale); | |||
RoundKnob::draw(args); | |||
nvgRestore(args.vg); | |||
} | |||
}; |
@@ -26,6 +26,9 @@ | |||
// Fundamental (always enabled) | |||
#include "Fundamental/src/plugin.hpp" | |||
// ZamAudio (always enabled) | |||
#include "ZamAudio/src/plugin.hpp" | |||
#ifndef NOPLUGINS | |||
// 21kHz | |||
#include "21kHz/src/21kHz.hpp" | |||
@@ -715,6 +718,7 @@ void saveHighQualityAsDefault(bool) {} | |||
// plugin instances | |||
Plugin* pluginInstance__Cardinal; | |||
Plugin* pluginInstance__Fundamental; | |||
Plugin* pluginInstance__ZamAudio; | |||
#ifndef NOPLUGINS | |||
Plugin* pluginInstance__21kHz; | |||
Plugin* pluginInstance__8Mode; | |||
@@ -986,6 +990,18 @@ static void initStatic__Fundamental() | |||
} | |||
} | |||
static void initStatic__ZamAudio() | |||
{ | |||
Plugin* const p = new Plugin; | |||
pluginInstance__ZamAudio = p; | |||
const StaticPluginLoader spl(p, "ZamAudio"); | |||
if (spl.ok()) | |||
{ | |||
p->addModel(modelZamComp); | |||
} | |||
} | |||
#ifndef NOPLUGINS | |||
static void initStatic__21kHz() | |||
{ | |||
@@ -2703,6 +2719,7 @@ void initStaticPlugins() | |||
{ | |||
initStatic__Cardinal(); | |||
initStatic__Fundamental(); | |||
initStatic__ZamAudio(); | |||
#ifndef NOPLUGINS | |||
initStatic__21kHz(); | |||
initStatic__8Mode(); | |||