mirror of
https://codeberg.org/armin/wavetable.git
synced 2026-09-01 05:50:46 +02:00
Compare commits
21 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0399fa39dc | ||
|
|
3001ed8271 | ||
|
|
5797f8b8b7 | ||
|
|
ba6e7b59ca | ||
|
|
e34c58fc8f | ||
|
|
62f2788c8a | ||
|
|
8292f10db2 | ||
|
|
afa366e9e1 | ||
|
|
a681b2e332 | ||
|
|
539fd80370 | ||
|
|
05992e760f | ||
|
|
98d290770b | ||
|
|
155c933711 | ||
|
|
e4f7246f45 | ||
|
|
8c45136be6 | ||
|
|
f822ff7659 | ||
|
|
be05233662 | ||
|
|
e2f3f5fc0f | ||
|
|
c991e57693 | ||
|
|
d8df411f1e | ||
|
|
098a5f3303 |
29 changed files with 2126 additions and 267 deletions
5
.github/workflows/release.yaml
vendored
5
.github/workflows/release.yaml
vendored
|
|
@ -67,6 +67,8 @@ jobs:
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Download Artifacts
|
- name: Download Artifacts
|
||||||
|
|
@ -75,5 +77,6 @@ jobs:
|
||||||
run: ./release.sh
|
run: ./release.sh
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
APIKEY: ${{ secrets.APIKEY }}
|
APIKEY: ${{ secrets.APIKEY }}
|
||||||
|
SYMBOL_API_KEY: ${{ secrets.SYMBOL_API_KEY }}
|
||||||
|
|
|
||||||
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -38,4 +38,8 @@ Installer/macOS/bin
|
||||||
Installer/win/bin
|
Installer/win/bin
|
||||||
Installer/_flat_presets
|
Installer/_flat_presets
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.claude
|
.claude
|
||||||
|
|
||||||
|
# modules
|
||||||
|
modules
|
||||||
|
|
||||||
|
|
|
||||||
174
AGENTS.md
Normal file
174
AGENTS.md
Normal file
|
|
@ -0,0 +1,174 @@
|
||||||
|
# AGENTS.md — Wavetable Synth Project Context
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
Wavetable is a polyphonic wavetable synthesizer audio plugin (VST3, AU, CLAP, LV2, Standalone) built with **JUCE** and the **Gin** framework. It's developed by SocaLabs (Roland Rabien).
|
||||||
|
|
||||||
|
- **Version**: 1.0.34 (tracked in `VERSION` file)
|
||||||
|
- **Language**: C++20
|
||||||
|
- **Build system**: CMake (minimum 3.24)
|
||||||
|
- **Bundle ID**: `com.socalabs.wavetable`
|
||||||
|
|
||||||
|
## Repository Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
Wavetable/
|
||||||
|
├── CMakeLists.txt # Main build config
|
||||||
|
├── CMakePresets.json # Presets: xcode (macOS), vs (Windows), ninja-gcc (Linux)
|
||||||
|
├── VERSION # Current version string
|
||||||
|
├── Changelist.txt # Version history (used by release.sh)
|
||||||
|
├── release.sh # GitHub release script
|
||||||
|
├── tag.sh # Tags current VERSION and pushes
|
||||||
|
├── plugin/
|
||||||
|
│ ├── Source/
|
||||||
|
│ │ ├── PluginProcessor.h/cpp # Main processor (WavetableAudioProcessor)
|
||||||
|
│ │ ├── PluginEditor.h/cpp # Editor (WavetableAudioProcessorEditor)
|
||||||
|
│ │ ├── Editor.h/cpp # Main UI layout component
|
||||||
|
│ │ ├── Panels.h # All section UI boxes (OscillatorBox, FilterBox, etc.)
|
||||||
|
│ │ ├── WavetableVoice.h/cpp # Synth voice
|
||||||
|
│ │ ├── Cfg.h # Compile-time constants
|
||||||
|
│ │ └── FX/ # Custom FX (DeRez2, FireAmp, GrindAmp)
|
||||||
|
│ └── Resources/
|
||||||
|
│ ├── layout.json # UI layout
|
||||||
|
│ ├── Presets/ # Factory presets (XML, per-category subdirs)
|
||||||
|
│ ├── Wavetables/ # Factory wavetables
|
||||||
|
│ └── WavetablesFLAC/ # FLAC-compressed wavetables
|
||||||
|
├── modules/ # Git submodules
|
||||||
|
│ ├── gin/ # Gin framework (core dependency)
|
||||||
|
│ ├── juce/ # JUCE framework
|
||||||
|
│ ├── clap-juce-extensions/ # CLAP format support
|
||||||
|
│ ├── MTS-ESP/ # Microtuning support
|
||||||
|
│ ├── plugin_sdk/ # VST2 SDK (optional)
|
||||||
|
│ └── melatonin_inspector/ # Debug UI inspector
|
||||||
|
├── installer/
|
||||||
|
│ ├── build.sh # Full installer build script (macOS/Linux/Windows)
|
||||||
|
│ ├── macOS/ # macOS pkg installer resources
|
||||||
|
│ └── win/ # Windows Inno Setup installer
|
||||||
|
└── .github/workflows/
|
||||||
|
├── build.yaml # CI build on push
|
||||||
|
└── release.yaml # Release build on tag push
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Architecture
|
||||||
|
|
||||||
|
### Plugin Core
|
||||||
|
- **`WavetableAudioProcessor`** (`plugin/Source/PluginProcessor.h`) — inherits `gin::Processor` + `gin::Synthesiser`
|
||||||
|
- **`WavetableAudioProcessorEditor`** (`plugin/Source/PluginEditor.h`) — inherits `gin::ProcessorEditor`
|
||||||
|
- **`Editor`** (`plugin/Source/Editor.h`) — the main content component with all section boxes
|
||||||
|
|
||||||
|
### UI Panels (Panels.h)
|
||||||
|
All section UIs are `gin::ParamBox` subclasses:
|
||||||
|
- `OscillatorBox` — wavetable osc with navigation buttons in header
|
||||||
|
- `SubBox`, `NoiseBox` — simple boxes
|
||||||
|
- `FilterBox` — complex with ADSR, routing buttons
|
||||||
|
- `ADSRBox` — envelope display + knobs
|
||||||
|
- `LFOBox`, `ENVBox` — tabbed (addHeader with HeaderButton)
|
||||||
|
- `StepBox` — step sequencer
|
||||||
|
- `ModBox`, `MatrixBox` — modulation source/matrix tabs
|
||||||
|
- `GlobalBox` — global controls
|
||||||
|
- FX boxes: `GateBox`, `ChorusBox`, `DistortBox`, `DelayBox`, `ReverbBox`
|
||||||
|
|
||||||
|
### Gin Framework (submodule)
|
||||||
|
- **`gin::ParamBox`** (`modules/gin/.../gin_parambox.h`) — base for all section boxes
|
||||||
|
- **`gin::ParamHeader`** — header bar with gradient background + label text
|
||||||
|
- **`gin::CopperLookAndFeel`** (`modules/gin/.../gin_copperlookandfeel.cpp`) — default LookAndFeel
|
||||||
|
- **Colors**: title1/title2 (header gradient), matte1/matte2 (body gradient), accent (copper)
|
||||||
|
- **`gradientRect()`** helper — vertical linear gradient fill
|
||||||
|
|
||||||
|
### Custom LookAndFeel
|
||||||
|
The project uses `gin::CopperLookAndFeel` by default (set in `gin_processor.cpp`). Colors can be overridden per-component via `findColour()`.
|
||||||
|
|
||||||
|
**Important**: `ParamHeader::paint()` is **private** and has hardcoded font size and gradient colors. To customize header appearance, you must edit `gin_parambox.h` directly in the submodule. This is a local modification that will be overwritten on `git submodule update`.
|
||||||
|
|
||||||
|
## Build Instructions
|
||||||
|
|
||||||
|
### Quick Build (macOS)
|
||||||
|
```bash
|
||||||
|
git clone --recursive https://github.com/FigBug/Wavetable.git
|
||||||
|
cd Wavetable
|
||||||
|
cmake --preset xcode
|
||||||
|
cmake --build --preset xcode --config Release
|
||||||
|
# Output: Builds/xcode/Wavetable_artefacts/Release/
|
||||||
|
```
|
||||||
|
|
||||||
|
### CMake Presets
|
||||||
|
- **macOS**: `xcode` — generates Xcode project, builds universal (arm64 + x86_64)
|
||||||
|
- **Windows**: `vs` — generates Visual Studio solution
|
||||||
|
- **Linux**: `ninja-gcc` — generates Ninja build files with GCC
|
||||||
|
|
||||||
|
### Build Outputs (macOS)
|
||||||
|
```
|
||||||
|
Builds/xcode/Wavetable_artefacts/Release/
|
||||||
|
├── Standalone/Wavetable.app
|
||||||
|
├── VST/Wavetable.vst
|
||||||
|
├── VST3/Wavetable.vst3
|
||||||
|
├── AU/Wavetable.component
|
||||||
|
└── CLAP/Wavetable.clap
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installer (macOS)
|
||||||
|
```bash
|
||||||
|
./installer/build.sh
|
||||||
|
# Output: installer/macOS/bin/Wavetable.pkg
|
||||||
|
# Requires Xcode CLI tools; signing/notarization optional (needs secrets)
|
||||||
|
```
|
||||||
|
|
||||||
|
The installer pkg installs:
|
||||||
|
- VST → `/Library/Audio/Plug-Ins/VST/`
|
||||||
|
- VST3 → `/Library/Audio/Plug-Ins/VST3/`
|
||||||
|
- AU → `/Library/Audio/Plug-Ins/Components/`
|
||||||
|
- CLAP → `/Library/Audio/Plug-Ins/CLAP/`
|
||||||
|
- Factory wavetables + presets → `/Library/Audio/Presets/SocaLabs/Wavetable/`
|
||||||
|
|
||||||
|
### Manual Plugin Install (macOS, no installer)
|
||||||
|
Copy built bundles manually:
|
||||||
|
```bash
|
||||||
|
cp -R Builds/xcode/Wavetable_artefacts/Release/AU/Wavetable.component ~/Library/Audio/Plug-Ins/Components/
|
||||||
|
cp -R Builds/xcode/Wavetable_artefacts/Release/VST3/Wavetable.vst3 ~/Library/Audio/Plug-Ins/VST3/
|
||||||
|
cp -R Builds/xcode/Wavetable_artefacts/Release/CLAP/Wavetable.clap ~/Library/Audio/Plug-Ins/CLAP/
|
||||||
|
```
|
||||||
|
Factory resources:
|
||||||
|
```bash
|
||||||
|
mkdir -p ~/Library/Audio/Presets/SocaLabs/Wavetable
|
||||||
|
cp -R plugin/Resources/WavetablesFLAC ~/Library/Audio/Presets/SocaLabs/Wavetable/Wavetables
|
||||||
|
# Presets (flatten subdirs):
|
||||||
|
find plugin/Resources/Presets -name "*.xml" -exec cp {} ~/Library/Audio/Presets/SocaLabs/Wavetable/ \;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Release Process
|
||||||
|
|
||||||
|
1. Update `VERSION` file
|
||||||
|
2. Add changelog entry in `Changelist.txt` under the version
|
||||||
|
3. Commit and push
|
||||||
|
4. Run `./tag.sh` — tags `v{VERSION}` and pushes the tag
|
||||||
|
5. GitHub Actions (`release.yaml`) builds installers for all platforms
|
||||||
|
6. `release.sh` creates a GitHub release and uploads to socalabs.com
|
||||||
|
|
||||||
|
## Submodule Notes
|
||||||
|
|
||||||
|
The Gin submodule is pinned at commit `414fecf`. Local modifications to Gin files (e.g., `gin_parambox.h`, `gin_copperlookandfeel.cpp`) are intentional and should not be committed to the submodule. Be aware that `git submodule update` will overwrite these changes.
|
||||||
|
|
||||||
|
## Coding Conventions
|
||||||
|
|
||||||
|
- Standard JUCE/Gin code style (camelCase methods, PascalCase classes)
|
||||||
|
- `gin::Parameter::Ptr` for all synth parameters
|
||||||
|
- `gin::ParamBox` subclassed for each UI section
|
||||||
|
- Parameters defined as nested structs in `WavetableAudioProcessor` (e.g., `OSCParams`, `FilterParams`)
|
||||||
|
- No comments unless explicitly requested
|
||||||
|
- Build with `-ffast-math -fno-finite-math-only` on macOS/Release
|
||||||
|
|
||||||
|
## Common Tasks
|
||||||
|
|
||||||
|
### Changing header label appearance
|
||||||
|
Edit `modules/gin/modules/gin_plugin/components/gin_parambox.h` → `ParamHeader::paint()`. The font and gradient are hardcoded there.
|
||||||
|
|
||||||
|
### Changing header gradient colors
|
||||||
|
Edit `modules/gin/modules/gin_plugin/lookandfeel/gin_copperlookandfeel.cpp` → `title1ColourId` / `title2ColourId` in constructor.
|
||||||
|
|
||||||
|
### Adding new parameters
|
||||||
|
1. Add to the relevant Params struct in `PluginProcessor.h`
|
||||||
|
2. Initialize in `PluginProcessor.cpp` (`setup()` method)
|
||||||
|
3. Add UI control in the appropriate Box class in `Panels.h`
|
||||||
|
|
||||||
|
### Changing UI layout
|
||||||
|
Edit `plugin/Resources/layout.json` — positions are grid-based (56px columns, 70px rows, 23px header height).
|
||||||
|
|
@ -213,6 +213,7 @@ if (APPLE)
|
||||||
XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME NO
|
XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME NO
|
||||||
#XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING[variant=Release] YES
|
#XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING[variant=Release] YES
|
||||||
XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES"
|
XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES"
|
||||||
|
XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT[variant=Release] "dwarf-with-dsym"
|
||||||
)
|
)
|
||||||
if (NOT t STREQUAL "All")
|
if (NOT t STREQUAL "All")
|
||||||
target_compile_options(${tgt} PRIVATE
|
target_compile_options(${tgt} PRIVATE
|
||||||
|
|
@ -237,6 +238,22 @@ if (WIN32)
|
||||||
set_target_properties(${tgt} PROPERTIES LINK_FLAGS "/ignore:4099")
|
set_target_properties(${tgt} PROPERTIES LINK_FLAGS "/ignore:4099")
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
# Generate debug symbols (PDBs) for Release builds so crashes can be symbolicated.
|
||||||
|
# /Zi emits full debug info; /DEBUG produces the .pdb; /OPT:REF and /OPT:ICF
|
||||||
|
# restore the size optimisations that /DEBUG otherwise disables.
|
||||||
|
foreach(t ${FORMATS} "CLAP" "")
|
||||||
|
set(tgt ${CMAKE_PROJECT_NAME})
|
||||||
|
if (NOT t STREQUAL "")
|
||||||
|
set(tgt ${tgt}_${t})
|
||||||
|
endif()
|
||||||
|
if (TARGET ${tgt})
|
||||||
|
target_compile_options(${tgt} PRIVATE "$<$<CONFIG:Release>:/Zi>")
|
||||||
|
target_link_options(${tgt} PRIVATE "$<$<CONFIG:Release>:/DEBUG>")
|
||||||
|
target_link_options(${tgt} PRIVATE "$<$<CONFIG:Release>:/OPT:REF>")
|
||||||
|
target_link_options(${tgt} PRIVATE "$<$<CONFIG:Release>:/OPT:ICF>")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,22 @@
|
||||||
|
1.0.34:
|
||||||
|
- Crash reporting improvements
|
||||||
|
|
||||||
|
1.0.33:
|
||||||
|
- Added crash reporting
|
||||||
|
|
||||||
|
1.0.32:
|
||||||
|
- Fixed fix wavetable menus
|
||||||
|
- Fixed deadlock
|
||||||
|
|
||||||
|
1.0.31:
|
||||||
|
- Fixed ADSR attack when time is 0
|
||||||
|
|
||||||
|
1.0.30:
|
||||||
|
- VST2 install path
|
||||||
|
|
||||||
|
1.0.29:
|
||||||
|
- AGPL license
|
||||||
|
|
||||||
1.0.28:
|
1.0.28:
|
||||||
- Created installers
|
- Created installers
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,127 +1,668 @@
|
||||||
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang4105\deflangfe4105{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri Light;}}
|
{\rtf1\ansi\ansicpg1252\cocoartf2868
|
||||||
{\colortbl ;\red82\green82\blue82;\red0\green0\blue0;}
|
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Light;}
|
||||||
{\*\listtable
|
{\colortbl;\red255\green255\blue255;}
|
||||||
{\list\listhybrid
|
{\*\expandedcolortbl;;}
|
||||||
{\listlevel\levelnfc0\leveljc0\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers\'01;}\jclisttab\tx720}
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||||
{\listlevel\levelnfc4\leveljc0\levelstartat1{\leveltext\'02\'01.;}{\levelnumbers\'01;}\jclisttab\tx720}\listid1 }}
|
|
||||||
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
|
\f0\fs24 \cf0 GNU AFFERO GENERAL PUBLIC LICENSE\
|
||||||
{\*\generator Riched20 10.0.18362}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
|
Version 3, 19 November 2007\
|
||||||
\pard\widctlpar\expndtw-10\kerning28\f0\fs56 End-User Licence Agreement\par
|
\
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\
|
||||||
\pard\widctlpar\sa720\qj\cf1\expndtw0\kerning0\fs21\line READ THE FOLLOWING LICENCE AGREEMENT CAREFULLY! IT CONTAINS VERY IMPORTANT INFORMATION ABOUT YOUR RIGHTS AND OBLIGATIONS, AS WELL AS LIMITATIONS AND EXCLUSIONS THAT MAY APPLY TO YOU. THIS DOCUMENT CONTAINS A DISPUTE RESOLUTION CLAUSE. BY CLICKING ON THE "ACCEPT" BUTTON, YOU ARE CONSENTING TO BE BOUND BY AND ARE BECOMING A PARTY TO THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, CLICK THE "DO NOT ACCEPT" BUTTON OR LEAVE THE WEBSITE.\par
|
Everyone is permitted to copy and distribute verbatim copies\
|
||||||
|
of this license document, but changing it is not allowed.\
|
||||||
\pard\widctlpar\sa120\qj\cf2\b\fs33 1. Definitions\par
|
\
|
||||||
|
Preamble\
|
||||||
\pard
|
\
|
||||||
{\pntext\f0 1.\tab}{\*\pn\pnlvlbody\pnf0\pnindent720\pnstart1\pndec{\pntxta.}}
|
The GNU Affero General Public License is a free, copyleft license for\
|
||||||
\widctlpar\fi-360\li360\qj\cf1\b0\fs21 "We", "Our" and "Us" means SocaLabs.\par
|
software and other kinds of works, specifically designed to ensure\
|
||||||
{\pntext\f0 2.\tab}"You" and "Your" means the person or entity who is being licenced to use the Licenced Software.\par
|
cooperation with the community in the case of network server software.\
|
||||||
{\pntext\f0 3.\tab}"Agreement" means this Software Licence Agreement between Us and You;\par
|
\
|
||||||
{\pntext\f0 4.\tab}"Licenced Materials" means the Licenced Software and the Licenced Library;\par
|
The licenses for most software and other practical works are designed\
|
||||||
{\pntext\f0 5.\tab}"Licenced Software" means certain commercial software products being provided to You under this Agreement, including executable program modules thereof, as well as related documentation, and computer readable media;\par
|
to take away your freedom to share and change the works. By contrast,\
|
||||||
{\pntext\f0 6.\tab}"Sub-Licenced Software" means certain third party owned software components being provided under this Agreement that are required to properly enable or operate the Licenced Software; and\par
|
our General Public Licenses are intended to guarantee your freedom to\
|
||||||
{\pntext\f0 7.\tab}"Licenced Library" means any audio waveforms, such as melodies, music, instrument recordings, or other audible information, provided by Us for use with the Licenced Software.\par
|
share and change all versions of a program--to make sure it remains free\
|
||||||
|
software for all its users.\
|
||||||
\pard\widctlpar\li360\qj\par
|
\
|
||||||
\par
|
When we speak of free software, we are referring to freedom, not\
|
||||||
|
price. Our General Public Licenses are designed to make sure that you\
|
||||||
\pard\widctlpar\sa120\qj\cf2\b\fs33 2. Software Licence, Rights and Restrictions\par
|
have the freedom to distribute copies of free software (and charge for\
|
||||||
|
them if you wish), that you receive source code or can get it if you\
|
||||||
\pard
|
want it, that you can change the software or use pieces of it in new\
|
||||||
{\listtext\f0 1.\tab}\jclisttab\tx720\ls1\widctlpar\fi-360\li360\qj\cf1\b0\fs21 Subject to the provisions contained in this Agreement, We hereby grant to You a personal, revocable, non-exclusive licence (the "Licence") to access, read, use and download one copy of the Licenced Materials solely for the purposes provided under paragraph 3. This is not a transfer of title.\par
|
free programs, and that you know you can do these things.\
|
||||||
{\listtext\f0 2.\tab}Under the Licence you may not and shall not, without Our express written authorization:\par
|
\
|
||||||
|
Developers that use our General Public Licenses protect your rights\
|
||||||
\pard
|
with two steps: (1) assert copyright on the software, and (2) offer\
|
||||||
{\listtext\f0 a.\tab}\jclisttab\tx720\ls1\ilvl1\widctlpar\fi-360\li1080\qj own title, or transfer title to the Licenced Materials to another party;\par
|
you this License which gives you legal permission to copy, distribute\
|
||||||
{\listtext\f0 b.\tab}transfer the Licence;\par
|
and/or modify the software.\
|
||||||
{\listtext\f0 c.\tab}remove any copyright or other proprietary notations from the Licenced Materials;\par
|
\
|
||||||
{\listtext\f0 d.\tab}distribute, or sublicense or otherwise provide copies of or access to the Licenced Materials to any third party;\par
|
A secondary benefit of defending all users' freedom is that\
|
||||||
{\listtext\f0 e.\tab}pledge, hypothecate, alienate or otherwise encumber the Licenced Materials to any third party;\par
|
improvements made in alternate versions of the program, if they\
|
||||||
{\listtext\f0 f.\tab}create derivative works of, reverse engineer, decompile, disassemble, adapt, translate, transmit, arrange, modify, copy, bundle, sell, sublicense, export, merge, transfer, adapt, loan, rent, lease, assign, share, outsource, host, publish, make available to any person or otherwise use, either directly or indirectly, the Licenced Materials;\par
|
receive widespread use, become available for other developers to\
|
||||||
{\listtext\f0 g.\tab}permit, allow or do anything that would infringe or otherwise prejudice the proprietary rights of Us or Our licensors;\par
|
incorporate. Many developers of free software are heartened and\
|
||||||
{\listtext\f0 h.\tab}circumvent, remove, alter or otherwise impair any technological protection measures, digital rights management information, or other copy-protection mechanisms used in or by the Licenced Materials; or\par
|
encouraged by the resulting cooperation. However, in the case of\
|
||||||
{\listtext\f0 i.\tab}include, use, re-sample, mix, process, isolate or embed any content from the Licenced Library in any virtual instrument, audio sampling system, audio playback system or library of any kind, other than those provided or authorized by Us.\par
|
software used on network servers, this result may fail to come about.\
|
||||||
|
The GNU General Public License permits making a modified version and\
|
||||||
\pard
|
letting the public access it on a server without ever releasing its\
|
||||||
{\listtext\f0 3.\tab}\jclisttab\tx720\ls1\widctlpar\fi-360\li360\qj We are not obligated to provide any authorization referred to in paragraph 2(2), We reserve the right to charge a fee for the grant of such authorization, and We may cancel such authorization at Our sole and unfettered discretion by providing notice to You of such cancellation.\par
|
source code to the public.\
|
||||||
{\listtext\f0 4.\tab}The restrictions set out in this Agreement, including the restrictions listed at paragraph 2(2), shall not apply to the limited extent the restrictions are prohibited by applicable law.\par
|
\
|
||||||
{\listtext\f0 5.\tab}We will have the right to inspect and enforce the restrictions and covenants contained in this Agreement at Your sole expense, and You hereby agree to promptly notify Us of any known violations of such restrictions.\par
|
The GNU Affero General Public License is designed specifically to\
|
||||||
{\listtext\f0 6.\tab}You agree to protect the Licenced Materials from unauthorized use, reproduction, distribution or publication in electronic or physical form.\par
|
ensure that, in such cases, the modified source code becomes available\
|
||||||
{\listtext\f0 7.\tab}Upon execution of this Agreement, We will:\par
|
to the community. It requires the operator of a network server to\
|
||||||
|
provide the source code of the modified version running there to the\
|
||||||
\pard
|
users of that server. Therefore, public use of a modified version, on\
|
||||||
{\listtext\f0 a.\tab}\jclisttab\tx720\ls1\ilvl1\widctlpar\fi-360\li1080\qj permit You to download a copy of the Licenced Materials for Your use under this Agreement; and\par
|
a publicly accessible server, gives the public access to the source\
|
||||||
{\listtext\f0 b.\tab}permit You to download updates to the Licenced Software as We consider needed. We are not obligated to provide updates for the Licenced Software.\par
|
code of the modified version.\
|
||||||
|
\
|
||||||
\pard\widctlpar\li1080\qj\par
|
An older license, called the Affero General Public License and\
|
||||||
\par
|
published by Affero, was designed to accomplish similar goals. This is\
|
||||||
|
a different license, not a version of the Affero GPL, but Affero has\
|
||||||
\pard\widctlpar\sa120\qj\cf2\b\fs33 3. Usage Conditions\par
|
released a new version of the Affero GPL which permits relicensing under\
|
||||||
|
this license.\
|
||||||
\pard
|
\
|
||||||
{\pntext\f0 1.\tab}{\*\pn\pnlvlbody\pnf0\pnindent720\pnstart1\pndec{\pntxta.}}
|
The precise terms and conditions for copying, distribution and\
|
||||||
\widctlpar\fi-360\li360\qj\cf1\b0\fs21 You are authorized to use the Licenced Materials only for personal use. Your personal use may be commercial.\par
|
modification follow.\
|
||||||
{\pntext\f0 2.\tab}You may not rent out to others equipment on which the Licenced Software is installed or by which the Licenced Library is accessible without obtaining a written rental licence from Us that expressly authorizes such use. We reserve the right to charge a fee for a rental licence.\par
|
\
|
||||||
{\pntext\f0 3.\tab}You may install the Licenced Software on as many devices as required for Your personal use provided such devices are used only by You.\par
|
TERMS AND CONDITIONS\
|
||||||
|
\
|
||||||
\pard\widctlpar\qj\par
|
0. Definitions.\
|
||||||
|
\
|
||||||
\pard\widctlpar\li360\qj\par
|
"This License" refers to version 3 of the GNU Affero General Public License.\
|
||||||
|
\
|
||||||
\pard\widctlpar\sa120\qj\cf2\b\fs33 4. Ownership and Intellectual Property Rights\par
|
"Copyright" also means copyright-like laws that apply to other kinds of\
|
||||||
|
works, such as semiconductor masks.\
|
||||||
\pard
|
\
|
||||||
{\pntext\f0 1.\tab}{\*\pn\pnlvlbody\pnf0\pnindent720\pnstart1\pndec{\pntxta.}}
|
"The Program" refers to any copyrightable work licensed under this\
|
||||||
\widctlpar\fi-360\li360\qj\cf1\b0\fs21 All copyright in the Licenced Software, including any documentation, media, packaging and illustrations, but excluding the Sublicensed Software, is owned by Us. You do not acquire title to any copyright in the Licenced Materials or Sublicensed Software under this Agreement.\par
|
License. Each licensee is addressed as "you". "Licensees" and\
|
||||||
{\pntext\f0 2.\tab}Certain logos, product names and trade-marks owned by Us or by third parties may be contained within the Licenced Materials or in documentation, media, packaging and illustrations relating to the Licensed Software. You do not acquire title to any such logos, product names or trade-marks under this Agreement.\par
|
"recipients" may be individuals or organizations.\
|
||||||
|
\
|
||||||
\pard\widctlpar\li360\qj\par
|
To "modify" a work means to copy from or adapt all or part of the work\
|
||||||
\par
|
in a fashion requiring copyright permission, other than the making of an\
|
||||||
|
exact copy. The resulting work is called a "modified version" of the\
|
||||||
\pard\widctlpar\sa120\qj\cf2\b\fs33 5. Termination\par
|
earlier work or a work "based on" the earlier work.\
|
||||||
|
\
|
||||||
\pard
|
A "covered work" means either the unmodified Program or a work based\
|
||||||
{\pntext\f0 1.\tab}{\*\pn\pnlvlbody\pnf0\pnindent720\pnstart1\pndec{\pntxta.}}
|
on the Program.\
|
||||||
\widctlpar\fi-360\li360\qj\cf1\b0\fs21 This Agreement is effective until terminated by Us, with or without cause, in Our sole and unfettered discretion. We may terminate this Agreement without notice to You if You fail to comply with any of its terms. Any such termination by Us shall be in addition to and without prejudice to such rights and remedies as may be available to Us, including injunction and other equitable remedies.\par
|
\
|
||||||
{\pntext\f0 2.\tab}The disclaimers, limitations on liability, ownership, termination, interpretation, Your warranty and the indemnity provisions of this Agreement shall survive the termination or expiry of this Agreement.\par
|
To "propagate" a work means to do anything with it that, without\
|
||||||
{\pntext\f0 3.\tab}This Agreement will automatically terminate if You violate or assist in the violation of any of the restrictions of paragraph 2(2).\par
|
permission, would make you directly or secondarily liable for\
|
||||||
{\pntext\f0 4.\tab}On the termination of this Agreement, you must destroy any copies of the Licenced Materials in your possession whether in electronic or printed format.\par
|
infringement under applicable copyright law, except executing it on a\
|
||||||
|
computer or modifying a private copy. Propagation includes copying,\
|
||||||
\pard\widctlpar\li360\qj\par
|
distribution (with or without modification), making available to the\
|
||||||
\par
|
public, and in some countries other activities as well.\
|
||||||
|
\
|
||||||
\pard\widctlpar\sa120\qj\cf2\b\fs33 6. Indemnification\par
|
To "convey" a work means any kind of propagation that enables other\
|
||||||
|
parties to make or receive copies. Mere interaction with a user through\
|
||||||
\pard\widctlpar\sa720\qj\cf1\b0\fs21 You agree to indemnify, defend and hold Us and Our partners, lawyers, staff, affiliates, successors and assigns (collectively, \ldblquote Affiliated Parties\rdblquote ) harmless from any liability, loss, claim and expense, including reasonable legal fees, related to Your violation of this Agreement or use of the Licenced Materials.\par
|
a computer network, with no transfer of a copy, is not conveying.\
|
||||||
|
\
|
||||||
\pard\widctlpar\sa120\qj\cf2\b\fs33 7. Disclaimer and Limitation of Liability\par
|
An interactive user interface displays "Appropriate Legal Notices"\
|
||||||
|
to the extent that it includes a convenient and prominently visible\
|
||||||
\pard
|
feature that (1) displays an appropriate copyright notice, and (2)\
|
||||||
{\pntext\f0 1.\tab}{\*\pn\pnlvlbody\pnf0\pnindent720\pnstart1\pndec{\pntxta.}}
|
tells the user that there is no warranty for the work (except to the\
|
||||||
\widctlpar\fi-360\li360\qj\cf1\b0\fs21 THE LICENCED MATERIALS ARE PROVIDED "AS IS", "AS AVAILABLE" AND ALL WARRANTIES, EXPRESS OR IMPLIED, ARE DISCLAIMED (INCLUDING BUT NOT LIMITED TO THE DISCLAIMER OF ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE). THE LICENCED MATERIALS MAY CONTAIN BUGS, ERRORS, PROBLEMS OR OTHER LIMITATIONS. WE AND OUR AFFILIATED PARTIES HAVE NO LIABILITY WHATSOEVER FOR YOUR USE OF ANY OF THE MATERIALS. IN PARTICULAR, BUT NOT AS A LIMITATION THEREOF, WE AND THE AFFILIATED PARTIES ARE NOT LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING DAMAGES FOR LOSS OF BUSINESS, LOSS OF PROFITS, LITIGATION OR THE LIKE), WHETHER BASED ON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE NEGATION OF DAMAGES SET FORTH ABOVE ARE FUNDAMENTAL ELEMENTS OF THE BASIS OF THE BARGAIN BETWEEN YOU AND US. THE LICENCED MATERIALS WOULD NOT BE PROVIDED WITHOUT SUCH LIMITATIONS.\par
|
extent that warranties are provided), that licensees may convey the\
|
||||||
{\pntext\f0 2.\tab}All responsibility or liability for any damages caused by the Licenced Materials, including, without limitation, damages caused by computer viruses or other malicious code contained within the Licenced Software is disclaimed.\par
|
work under this License, and how to view a copy of this License. If\
|
||||||
|
the interface presents a list of user commands or options, such as a\
|
||||||
\pard\widctlpar\li360\qj\par
|
menu, a prominent item in the list meets this criterion.\
|
||||||
\par
|
\
|
||||||
|
1. Source Code.\
|
||||||
\pard\widctlpar\sa120\qj\cf2\b\fs33 8. Use of Information\par
|
\
|
||||||
|
The "source code" for a work means the preferred form of the work\
|
||||||
\pard\widctlpar\sa720\qj\cf1\b0\fs21 We reserve the right, and You authorize Us, to the use and assignment of all information regarding Your use of the Licenced Materials and all information provided by You in any manner consistent with Our Privacy Policy.\par
|
for making modifications to it. "Object code" means any non-source\
|
||||||
|
form of a work.\
|
||||||
\pard\widctlpar\sa120\qj\cf2\b\fs33 9. Miscellaneous\par
|
\
|
||||||
|
A "Standard Interface" means an interface that either is an official\
|
||||||
\pard
|
standard defined by a recognized standards body, or, in the case of\
|
||||||
{\pntext\f0 1.\tab}{\*\pn\pnlvlbody\pnf0\pnindent720\pnstart1\pndec{\pntxta.}}
|
interfaces specified for a particular programming language, one that\
|
||||||
\widctlpar\fi-360\li360\qj\cf1\b0\fs21 This Agreement shall be treated as though it were executed and performed in the province of British Columbia, Canada, and shall be governed by and construed in accordance with the laws of the province of British Columbia (without regard to conflict of law principles).\par
|
is widely used among developers working in that language.\
|
||||||
{\pntext\f0 2.\tab}Any of Your causes of action with respect to the Licenced Materials must be instituted within six (6) months after the cause of action arose or be forever waived and barred. All actions shall be subject to the limitations set forth in paragraph 7 of this Agreement.\par
|
\
|
||||||
{\pntext\f0 3.\tab}The language in this Agreement shall be interpreted as to its fair meaning and not construed strictly for or against either party. The division of this Agreement into sections and the insertion of headings are for convenience of reference only and shall not affect the construction or interpretation of this Agreement.\par
|
The "System Libraries" of an executable work include anything, other\
|
||||||
{\pntext\f0 4.\tab}All legal proceedings arising out of or in connection with this Agreement shall be brought solely in Vancouver, British Columbia. You expressly submit to the exclusive jurisdiction of said courts and consent to extra-territorial service of process.\par
|
than the work as a whole, that (a) is included in the normal form of\
|
||||||
{\pntext\f0 5.\tab}Should any part of this Agreement be held invalid or unenforceable, that portion shall be construed consistent with applicable law and the remaining portions shall remain in full force and effect.\par
|
packaging a Major Component, but which is not part of that Major\
|
||||||
{\pntext\f0 6.\tab}Failure of Us to enforce any provision of this Agreement shall not be deemed a waiver of such provision nor of the right to enforce such provision.\par
|
Component, and (b) serves only to enable use of the work with that\
|
||||||
{\pntext\f0 7.\tab}You agree to review this Agreement prior to downloading, copying, installing or using the Licenced Materials. This Agreement may be amended by Us from time to time without specific advance notice to You. The latest Agreement will be provided with updates to the Licenced Software, and You should review the Agreement prior to using the Licenced Materials.\par
|
Major Component, or to implement a Standard Interface for which an\
|
||||||
{\pntext\f0 8.\tab}This Agreement, as modified from time to time as described above, and including the policies incorporated by reference, constitutes the entire and only agreement between You and Us and supersedes all prior or contemporaneous agreements, representations, warranties and understandings with respect to the Licenced Materials.\par
|
implementation is available to the public in source code form. A\
|
||||||
{\pntext\f0 9.\tab}To the extent that anything in or associated with the Licenced Materials is in conflict or inconsistent with this Agreement, this Agreement shall take precedence.\par
|
"Major Component", in this context, means a major essential component\
|
||||||
|
(kernel, window system, and so on) of the specific operating system\
|
||||||
\pard\widctlpar\sa160\sl252\slmult1\cf0\fs22\par
|
(if any) on which the executable work runs, or a compiler used to\
|
||||||
}
|
produce the work, or an object code interpreter used to run it.\
|
||||||
| |||||||