1 2 3<!DOCTYPE html> 4 5<html lang="en-US"> 6<head> 7 <meta charset="UTF-8"> 8 <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 9 10 11 12 <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> 13 14 15 <link rel="stylesheet" href="/assets/css/just-the-docs-default.css"> 16 <link rel="preconnect" href="https://rsms.me/"> 17 <link rel="stylesheet" href="https://rsms.me/inter/inter.css">
vendor: 72 bytes, lines 17-20
17 18 19 20 <script async src="https://www.googletagmanager.com/gtag/js?id=
20UA-2709176-10
vendor: 16 bytes, lines 20-21
20"></script> 21
21<script> 22
vendor: 146 bytes, lines 22-26
22window.dataLayer = window.dataLayer || []; 23 function gtag(){dataLayer.push(arguments);} 24 gtag('js', new Date()); 25 26 gtag('config', '
26UA-2709176-10
vendor: 34 bytes, lines 26-27
26', { 'anonymize_ip': true }); 27
27</script>
27 28 29 30 31 32
32<script src="/assets/js/vendor/lunr.min.js"></script>
32 33 34 35 36
36<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mermaid.min.js"></script>
36 37 38 39
39<script src="/assets/js/just-the-docs.js"></script>
39 40 41 <meta name="viewport" content="width=device-width, initial-scale=1"> 42 43 <!-- Begin Jekyll SEO tag v2.8.0 --> 44<title>Licence | Cmajor Documentation</title> 45<meta name="generator" content="Jekyll v3.10.0" /> 46<meta property="og:title" content="Licence" /> 47<meta property="og:locale" content="en_US" /> 48<meta name="description" content="Documentation for the Cmajor language" /> 49<meta property="og:description" content="Documentation for the Cmajor language" /> 50<link rel="canonical" href="https://cmajor.dev/docs/Licence" /> 51<meta property="og:url" content="https://cmajor.dev/docs/Licence" /> 52<meta property="og:site_name" content="Cmajor Documentation" /> 53<meta property="og:type" content="website" /> 54<meta name="twitter:card" content="summary" /> 55<meta property="twitter:title" content="Licence" />
56<script type="application/ld+json"> 57{"@context":"https://schema.org","@type":"WebPage","description":"Documentation for the Cmajor language","headline":"Licence","url":"https://cmajor.dev/docs/Licence"}</script>
57 58<!-- End Jekyll SEO tag --> 59 60 61 <link rel="shortcut icon" type="image/png" href="https://cmajor-lang.github.io/docs-dev/favicon.png" style="margin-top:20px" style="margin-bottom: 30px;"> 62 63 64</head> 65 66<body> 67 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> 68 <symbol id="svg-link" viewBox="0 0 24 24"> 69 <title>Link</title> 70 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> 71 <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> 72 </svg> 73 </symbol> 74 <symbol id="svg-search" viewBox="0 0 24 24"> 75 <title>Search</title> 76 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> 77 <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> 78 </svg> 79 </symbol> 80 <symbol id="svg-menu" viewBox="0 0 24 24"> 81 <title>Menu</title> 82 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> 83 <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> 84 </svg> 85 </symbol> 86 <symbol id="svg-arrow-right" viewBox="0 0 24 24"> 87 <title>Expand</title> 88 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> 89 <polyline points="9 18 15 12 9 6"></polyline> 90 </svg> 91 </symbol> 92 <symbol id="svg-doc" viewBox="0 0 24 24"> 93 <title>Document</title> 94 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> 95 <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> 96 </svg> 97 </symbol> 98 </svg> 99 100 <div class="side-bar"> 101 <div class="site-header"> 102 <a href="https://cmajor.dev/" class="site-title lh-tight"> 103<img src="/assets/images/Cmajor-Word-Logo.png" style="margin-top:20px;max-width: 150pt;max-height: 50pt;"></a> 104 <a href="#" id="menu-button" class="site-button"> 105 <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg> 106 </a> 107 </div> 108 <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav"> 109 <ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/" class="nav-list-link">Home</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/about-us" class="nav-list-link">About Us</a></li></ul></li><li class="nav-list-item active"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/Licence" class="nav-list-link active">Licence</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/Licence#different-cmajor-licensing-options" class="nav-list-link">Different Cmajor licensing options</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/Licence#commercial-license-terms" class="nav-list-link">Commercial License terms</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/Licence#faqs" class="nav-list-link">FAQs</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/Licence#it-is-possible-to-reassign-licences-amongst-members-of-an-organisation" class="nav-list-link">It is possible to reassign licences amongst members of an organisation?</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Licence#is-the-total-annual-revenue-or-funding-limit-determined-solely-by-sales-of-software-containing-cmajor" class="nav-list-link">Is the total annual revenue or funding limit determined solely by sales of software containing Cmajor?</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Licence#do-i-need-a-cmajor-licence-if-i-am-not-releasing-products-containing-cmajor" class="nav-list-link">Do I need a Cmajor licence if I am not releasing products containing Cmajor?</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Licence#how-many-licenced-developer-seats-do-i-need" class="nav-list-link">How many licenced developer seats do I need?</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Licence#do-i-need-a-cmajor-licence-to-sell-cmajor-based-software-created-by-another-entity" class="nav-list-link">Do I need a Cmajor licence to sell Cmajor-based software created by another entity?</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Licence#i-want-to-hire-a-contractor-to-contribute-to-software-containing-cmajor-do-i-need-a-licence-or-does-the-contractor-need-a-licence" class="nav-list-link">I want to hire a contractor to contribute to software containing cmajor. Do I need a licence or does the contractor need a licence?</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Licence#can-a-cmajor-educational-licence-be-used-by-students" class="nav-list-link">Can a Cmajor Educational licence be used by students?</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/GettingStarted" class="nav-list-link">Getting Started</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/GettingStarted#using-cmajor-in-vscode" class="nav-list-link">Using Cmajor in VScode</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/GettingStarted#installing-the-cmajor-command-line-tools" class="nav-list-link">Installing the Cmajor command-line tools</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/GettingStarted#the-cmaj-command-line-tool" class="nav-list-link">The `cmaj` command-line tool</a></li></ul></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/GettingStarted#playing-a-patch-with-the-console-app" class="nav-list-link">Playing a patch with the console app</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/GettingStarted#loading-patches-in-your-daw-with-the-cmajor-vstau-plugin" class="nav-list-link">Loading patches in your DAW with the Cmajor VST/AU plugin</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/GettingStarted#creating-a-new-empty-patch" class="nav-list-link">Creating a new empty patch</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/GettingStarted#creating-your-first-patch---hello-world" class="nav-list-link">Creating your first patch - Hello, World!</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/GettingStarted#step-1---create-a-new-patch" class="nav-list-link">Step 1 - Create a New Patch</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/Examples" class="nav-list-link">Examples</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/HelloWorld/" class="nav-list-link">Hello World</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/ElectricPiano/" class="nav-list-link">Electric Piano</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/808/" class="nav-list-link">808</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/Piano/" class="nav-list-link">Piano</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/Tremolo/" class="nav-list-link">Tremolo</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/RingMod/" class="nav-list-link">Ring Modulator</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/ZitaReverb/" class="nav-list-link">Zita Reverb</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/Pro54/" class="nav-list-link">Pro-54</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/GuitarLSTM/" class="nav-list-link">GuitarLSTM</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/FilterEQ/" class="nav-list-link">FilterEQ</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/PirkleFilters/" class="nav-list-link">Pirkle Filters</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/Replicant/" class="nav-list-link">Replicant</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/STunedBar6/" class="nav-list-link">Tuned Bar</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Examples/CompuFart/" class="nav-list-link">CompuFart</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/CmajorLicenceTerms" class="nav-list-link">Cmajor Licence Terms</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/CmajorLicenceTerms#cmajor-commercial-license-agreement" class="nav-list-link">Cmajor Commercial License Agreement</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#1-grant-and-scope-of-licence" class="nav-list-link">1. Grant and scope of Licence</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#2-restrictions" class="nav-list-link">2. Restrictions</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#3-fees-and-minimum-commitments" class="nav-list-link">3. Fees and Minimum Commitments.</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#4-support" class="nav-list-link">4. Support</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#5-intellectual-property-rights" class="nav-list-link">5. Intellectual Property Rights</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#6-disclaimer-of-warranty" class="nav-list-link">6. Disclaimer of Warranty</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#7-limitation-of-liability-and-indemnification" class="nav-list-link">7. Limitation of Liability and Indemnification</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#8-term-and-termination" class="nav-list-link">8. Term and Termination</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#9-communications-between-us" class="nav-list-link">9. Communications Between Us</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#10-data-privacy-and-publicity" class="nav-list-link">10. Data, Privacy and Publicity</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#11-other-important-terms" class="nav-list-link">11. Other Important Terms</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/CmajorLicenceTerms#12-definitions" class="nav-list-link">12. Definitions</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference" class="nav-list-link">Language Reference</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#lexical-rules" class="nav-list-link">Lexical Rules</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#whitespace" class="nav-list-link">Whitespace</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#comments" class="nav-list-link">Comments</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#identifiers" class="nav-list-link">Identifiers</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#reserved-keywords" class="nav-list-link">Reserved keywords</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#literals" class="nav-list-link">Literals</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#integer-literal
109s" class="nav-list-link">Integer Literals</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#boolean-literals" class="nav-list-link">Boolean Literals</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#floating-point-literals" class="nav-list-link">Floating-point Literals</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#string-literals" class="nav-list-link">String Literals</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#aggregate-literals" class="nav-list-link">Aggregate Literals</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#null-literals" class="nav-list-link">Null Literals</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#types" class="nav-list-link">Types</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#primitive-types" class="nav-list-link">Primitive Types</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#limited-range-integer-types" class="nav-list-link">Limited-range Integer Types</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#complex-numbers" class="nav-list-link">Complex Numbers</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#arrays" class="nav-list-link">Arrays</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#multi-dimensional-arrays" class="nav-list-link">Multi-Dimensional Arrays</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#arrays-vs-slices" class="nav-list-link">Arrays vs Slices</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#scope-of-slice-data" class="nav-list-link">Scope of slice data</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#constant-vs-mutable-slices" class="nav-list-link">constant vs mutable slices</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#vectors" class="nav-list-link">Vectors</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#structures" class="nav-list-link">Structures</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#string-type" class="nav-list-link">String Type</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#enums" class="nav-list-link">Enums</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#constant-types" class="nav-list-link">Constant Types</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#reference-types" class="nav-list-link">Reference Types</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#type-aliases" class="nav-list-link">Type Aliases</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#type-metafunctions" class="nav-list-link">Type Metafunctions</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#functions" class="nav-list-link">Functions</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#member-functions" class="nav-list-link">Member Functions</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#special-functions" class="nav-list-link">Special Functions</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#recursion" class="nav-list-link">Recursion</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#generic-functions" class="nav-list-link">Generic functions</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#variables-and-constants" class="nav-list-link">Variables and Constants</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#local-variables-and-parameters" class="nav-list-link">Local Variables and Parameters</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#processor-state-variables" class="nav-list-link">Processor State Variables</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#global-constants" class="nav-list-link">Global Constants</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#control-flow-and-loops" class="nav-list-link">Control-flow and Loops</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#conditions" class="nav-list-link">Conditions</a></li></ul></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#arithmetic-operators" class="nav-list-link">Arithmetic Operators</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#casts" class="nav-list-link">Casts</a></li><li class="nav-list-item">
109<a href="https://cmajor.dev/docs/LanguageReference#namespaces-processors-and-graphs" class="nav-list-link">Namespaces, Processors and Graphs</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#namespaces" class="nav-list-link">Namespaces</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#processors" class="nav-list-link">Processors</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#processor-aliases" class="nav-list-link">Processor Aliases</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#inputoutput-endpoint-declarations" class="nav-list-link">Input/Output Endpoint Declarations</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#stream-endpoints" class="nav-list-link">Stream Endpoints</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#value-endpoints" class="nav-list-link">Value Endpoints</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#event-endpoints" class="nav-list-link">Event Endpoints</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#renaming-hoisted-endpoints" class="nav-list-link">Renaming hoisted endpoints</a></li></ul></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#writing-to-outputs" class="nav-list-link">Writing to Outputs</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#graphs" class="nav-list-link">Graphs</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#graph-nodes" class="nav-list-link">Graph Nodes</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#connections" class="nav-list-link">Connections</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#connection-functions" class="nav-list-link">Connection Functions</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#conditional-connections" class="nav-list-link">Conditional connections</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#processor-composition" class="nav-list-link">Processor composition</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#processor-composition-caveats" class="nav-list-link">Processor composition caveats</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#when-to-use-a-processor-vs-a-graph" class="nav-list-link">When to use a processor vs a graph</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#delays-and-feedback-loops" class="nav-list-link">Delays and Feedback Loops</a></li></ul></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#processor-and-namespace-specialisation-parameters" class="nav-list-link">Processor and Namespace Specialisation Parameters</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/LanguageReference#annotations" class="nav-list-link">Annotations</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#using-the--main--annotation" class="nav-list-link">Using the `[[ main ]]` Annotation</a></li></ul></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#built-in-constants" class="nav-list-link">Built-in Constants</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#intrinsic-functions" class="nav-list-link">Intrinsic Functions</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/LanguageReference#calling-native-functions-from-cmajor" class="nav-list-link">Calling native functions from Cmajor</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/PatchFormat" class="nav-list-link">Patch Format</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#the-cmajorpatch-manifest-file" class="nav-list-link">The `.cmajorpatch` manifest file</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#cmajor-source-files" class="nav-list-link">Cmajor source files</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#selection-of-the-patchs-main-processor" class="nav-list-link">Selection of the patch's main processor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#patchparameters" class="nav-list-link">Patch Parameters</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#external-variable-data" class="nav-list-link">External variable data</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/PatchFormat#patch-guis" class="nav-list-link">Patch GUIs</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#specifying-a-custom-gui-for-a-patch" class="nav-list-link">Specifying a custom GUI for a patch</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#the-patchconnection-object" class="nav-list-link">The `PatchConnection` object</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#built-in-javascript-utility-classe
109s" class="nav-list-link">Built-in javascript utility classes</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#patch-workers" class="nav-list-link">Patch Workers</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#building-a-native-clap-from-a-patch" class="nav-list-link">Building a native CLAP from a patch</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#building-a-native-juce-vst-or-audiounit-from-a-patch" class="nav-list-link">Building a native JUCE VST or AudioUnit from a patch</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/PatchFormat#exporting-a-patch-as-javascriptwebassemblyweb-audio" class="nav-list-link">Exporting a patch as Javascript/WebAssembly/Web Audio</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/TestFileFormat" class="nav-list-link">Test File Format</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/TestFileFormat#running-tests" class="nav-list-link">Running Tests</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/TestFileFormat#file-format" class="nav-list-link">File Format</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/TestFileFormat#special-section-delimiters" class="nav-list-link">Special Section Delimiters</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/TestFileFormat#built-in-test-functions" class="nav-list-link">Built-in Test Functions</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/TestFileFormat#auto-updating-expected-results" class="nav-list-link">Auto-updating Expected Results</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/TestFileFormat#creating-custom-test-functions" class="nav-list-link">Creating Custom Test Functions</a></li></ul></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/ScriptFileFormat" class="nav-list-link">Script File Format</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/Tools" class="nav-list-link">Tools</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/Tools/C++API" class="nav-list-link">C++ API</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/Tools/C++API#main-api-classes" class="nav-list-link">Main API classes</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Tools/C++API#helper-classes" class="nav-list-link">Helper classes</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/Tools/MachineLearning" class="nav-list-link">Machine Learning</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/Tools/MachineLearning#onnx" class="nav-list-link">ONNX</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/Tools/MachineLearning#onnx-operators" class="nav-list-link">ONNX Operators</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/Tools/MachineLearning#using-the-onnx-to-cmajor-python-script" class="nav-list-link">Using the ONNX to Cmajor Python script</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/Tools/MachineLearning#rtneural" class="nav-list-link">RTNeural</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/Tools/MachineLearning#supported-operators" class="nav-list-link">Supported Operators</a></li></ul></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary" class="nav-list-link">Standard Library</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_audio_data" class="nav-list-link">std.audio_data</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#audio_data" class="nav-list-link">audio_data</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#SamplePlayer" class="nav-list-link">SamplePlayer</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_convolution" class="nav-list-link">std.convolution</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#convolution" class="nav-list-link">convolution</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#ZeroLatencyProcessor" class="nav-list-link">ZeroLatencyProcessor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#BlockProcessor" class="nav-list-link">BlockProcessor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#TimeDomainProcessor" class="nav-list-link">TimeDomainProcessor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#FFT" class="nav-list-link">FFT</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#iFFT" class="nav-list-link">iFFT</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Convolve" class="nav-list-link">Convolve</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_envelopes" class="nav-list-link">std.envelopes</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#envelopes" class="nav-list-link">envelopes</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#FixedASR" class="nav-list-link">FixedASR</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_filters" class="nav-list-link">std.filters</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#filters" class="nav-list-link">filters</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#tpt" class="nav-list-link">tpt</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#onepole" class="nav-list-link">onepole</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Processor" class="nav-list-link">Processor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Mode" class="nav-list-link">Mode</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#svf" class="nav-list-link">svf</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Processor2" class="nav-list-link">Processor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#MultimodeProcessor" class="nav-list-link">MultimodeProcessor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Mode2" class="nav-list-link">Mode</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#dcblocker" class="nav-list-link">dcblocker</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Processor3" class="nav-list-link">Processor</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#butterworth" class="nav-list-link">butterworth</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Processor4" class="nav-list-link">Processor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Mode3" class="nav-list-link">Mode</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#crossover" class="nav-list-link">crossover</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Processor5" class="nav-list-link">Processor</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#simper" class="nav-list-link">simper</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Processor6" class="nav-list-link">Processor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Mode4" class="nav-list-link">Mode</a></li></ul></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_frequency" class="nav-list-link">std.frequency</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#frequency7" class="nav-list-link">frequency</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_intrinsics" class="nav-list-link">std.intrinsics</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#intrinsics" class="nav-list-link">intrinsics</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_levels" class="nav-list-link">std.levels</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#smoothing" class="nav-list-link">smoothing</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#SmoothedValueStream" class="nav-list-link">SmoothedValueStream</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#levels" class="nav-list-link">levels</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#ConstantGain" class="nav-list-link">ConstantGain</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#DynamicGain" class="nav-list-link">DynamicGain</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#SmoothedGain" class="nav-list-link">SmoothedGain</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#SmoothedGainParameter" class="nav-list-link">SmoothedGainParameter</a></li></ul></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#pan_law" class="nav-list-link">pan_law</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_matrix" class="nav-list-link">std.matrix</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#matrix" class="nav-list-link">matrix</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_midi" class="nav-list-link">std.midi</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#midi" class="nav-list-link">midi</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#MPEConverter" class="nav-list-link">MPEConverter</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#NoteToMIDI" class="nav-list-link">NoteToMIDI</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_mixers" class="nav-list-link">std.mixers</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#mixers" class="nav-list-link">mixers</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#StereoToMono" class="nav-list-link">StereoToMono</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#MonoToStereo" class="nav-list-link">MonoToStereo</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#DynamicSum" class="nav-list-link">DynamicSum</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#ConstantSum" class="nav-list-link">ConstantSum</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Interpolator" class="nav-list-link">Interpolator</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_noise" class="nav-list-link">std.noise</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#noise" class="nav-list-link">noise</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#White" class="nav-list-link">White</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Brown" class="nav-list-link">Brown</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLi
109brary#Pink" class="nav-list-link">Pink</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_notes" class="nav-list-link">std.notes</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#notes" class="nav-list-link">notes</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_oscillators" class="nav-list-link">std.oscillators</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#oscillators" class="nav-list-link">oscillators</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Phasor" class="nav-list-link">Phasor</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#Sine" class="nav-list-link">Sine</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#PolyblepOscillator" class="nav-list-link">PolyblepOscillator</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#LFO" class="nav-list-link">LFO</a></li><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#waveshape" class="nav-list-link">waveshape</a></li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_random" class="nav-list-link">std.random</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#random" class="nav-list-link">random</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_timeline" class="nav-list-link">std.timeline</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#timeline" class="nav-list-link">timeline</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#std_voices" class="nav-list-link">std.voices</a><ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://cmajor.dev/docs/StandardLibrary#voices" class="nav-list-link">voices</a><ul class="nav-list"><li class="nav-list-item"><a href="https://cmajor.dev/docs/StandardLibrary#VoiceAllocator" class="nav-list-link">VoiceAllocator</a></li></ul></li></ul></li></ul></li></ul> 110 </nav> 111 <footer class="site-footer"> 112 © 2025 <a href="https://cmajor.dev">Cmajor Software Ltd.</a> 113 </footer> 114 </div> 115 <div class="main" id="top"> 116 <div id="main-header" class="main-header"> 117 118 <div class="search"> 119 <div class="search-input-wrap"> 120 <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search Cmajor Documentation" aria-label="Search Cmajor Documentation" autocomplete="off"> 121 <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label> 122 </div> 123 <div id="search-results" class="search-results"></div> 124 </div> 125 126 127 </div> 128 <div id="main-content-wrap" class="main-content-wrap"> 129 130 131 <div id="main-content" class="main-content" role="main"> 132 133 <h1 id="cmajor-licensing"> 134 135 136 <a href="#cmajor-licensing" class="anchor-heading" aria-labelledby="cmajor-licensing"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Cmajor Licensing 137 138 139 </h1> 140 141 <h2 id="different-cmajor-licensing-options"> 142 143 144 <a href="#different-cmajor-licensing-options" class="anchor-heading" aria-labelledby="different-cmajor-licensing-options"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Different Cmajor licensing options 145 146 147 </h2> 148 149 150<p>Cmajor is available under a dual GPLv3/Commercial licensing scheme.</p> 151 152<p><strong>If you fully comply with the terms of the <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPLv3 (or later)</a> then you can use Cmajor without needing to contact us.</strong></p> 153 154<p>If youâd like to embed the Cmajor engine in a closed-source product, or to mix it with non-GPL-compliant code, then we offer commercial licenses to cover many types of use-case (and can discuss any custom requirements you may have).</p> 155 <h3 id="commercial-license-terms"> 156 157 158 <a href="#commercial-license-terms" class="anchor-heading" aria-labelledby="commercial-license-terms"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Commercial License terms 159 160 161 </h3> 162 163 164<p>The Cmajor commercial license can be <a href="./CmajorLicenceTerms">viewed here</a> or <a href="/docs/assets/license/Cmajor-Commercial-License.pdf">downloaded here</a>.</p> 165 166<p>Our commercial licenses are perpetual licenses to use the current version of the softw
166are. When there is a major version upgrade, existing customers can either continue using the old version, or upgrade their license to take advantage of the ongoing changes.</p> 167 168<p>Our pricing tiers are:</p> 169 170<style> 171.licence-table { 172 border-collapse: collapse; 173 width: 100%; 174 margin: 1rem 0; 175} 176 177.licence-table td { 178 border: 0.05rem solid black !important; 179 padding: 0.5rem; 180 text-align: left; 181} 182</style> 183 184<div class="table-wrapper"><table class="licence-table"> 185 <tr> 186 <td><strong>Indie</strong></td> 187 <td><strong>Pro</strong></td> 188 </tr> 189 <tr> 190 <td>Companies with revenue/funding < $300k</td> 191 <td>Companies with revenue/funding > $300k</td> 192 </tr> 193 <tr> 194 <td>Up to 5 developer seats</td> 195 <td>Any number of seats</td> 196 </tr> 197 <tr> 198 <td>GBP2000</td> 199 <td>* Contact us for a per-seat price.</td> 200 </tr> 201</table></div> 202 203<p>If youâre an educational institution, e.g. a university, doing non-GPL development, contact us to discuss a per-seat license.</p><hr /> 204 <h2 id="faqs"> 205 206 207 <a href="#faqs" class="anchor-heading" aria-labelledby="faqs"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> FAQs 208 209 210 </h2> 211 212 <h3 id="it-is-possible-to-reassign-licences-amongst-members-of-an-organisation"> 213 214 215 <a href="#it-is-possible-to-reassign-licences-amongst-members-of-an-organisation" class="anchor-heading" aria-labelledby="it-is-possible-to-reassign-licences-amongst-members-of-an-organisation"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> It is possible to reassign licences amongst members of an organisation? 216 217 218 </h3> 219 220 221<p>If an organisation has purchased a set of licences for their software development team, then when a team member leaves the team their licence seat can be reassigned to a new team member. Reassigning licences can be done using the account dashboard of the licence purchaser.</p> 222 223<p>Reassigning licences should not be done very frequently. This is not a mechanism designed to optimise the minimum number of licences required. If you have multiple developers regularly, but non-concurrently, contributing code to software containing Cmajor then you will require multiple licences.</p> 224 <h3 id="is-the-total-annual-revenue-or-funding-limit-determined-solely-by-sales-of-software-containing-cmajor"> 225 226 227 <a href="#is-the-total-annual-revenue-or-funding-limit-determined-solely-by-sales-of-software-containing-cmajor" class="anchor-heading" aria-labelledby="is-the-total-annual-revenue-or-funding-limit-determined-solely-by-sales-of-software-containing-cmajor"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Is the total annual revenue or funding limit determined solely by sales of software containing Cmajor? 228 229 230 </h3> 231 232 233<p>No. The total annual revenue or funding limit is that of the whole organisation or individual that owns the Cmajor licence. If your team or project is a small part of a large organisation then you will likely require a Pro licence. The revenue or funding limit is not based upon revenue generated by software containing Cmajor nor the budget of a particular team or individual within an organisation.</p> 234 <h3 id="do-i-need-a-cmajor-licence-if-i-am-not-releasing-products-containing-cmajor"> 235 236 237 <a href="#do-i-need-a-cmajor-licence-if-i-am-not-releasing-products-containing-cmajor" class="anchor-heading" aria-labelledby="do-i-need-a-cmajor-licence-if-i-am-not-releasing-products-containing-cmajor"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Do I need a Cmajor licence if I am not releasing products containing Cmajor? 238 239 240 </h3> 241 242 243<p>Cmajor is dual licensed under both our commercial licences and the GPLv3.</p> 244 245<p>This means that you can choose to use Cmajor under the terms of the GPLv3 licence. If you are not âpropagatingâ or âconveyingâ closed-source software containing Cmajor outside of your organisation then you may
245not be violating the terms of the GPLv3. The creation and use of âin-houseâ tools and the internal development of âpre-releaseâ software (before it goes out to external testers) is usually permitted under the GPLv3. Please refer to the GPLv3 terms for the full details.</p> 246 247<p>If you are not using Cmajor under the GPLv3 then you will require a commercial licence. You will need to maintain a licence for at least the duration over which you are distributing closed-source binaries containing Cmajor.</p> 248 <h3 id="how-many-licenced-developer-seats-do-i-need"> 249 250 251 <a href="#how-many-licenced-developer-seats-do-i-need" class="anchor-heading" aria-labelledby="how-many-licenced-developer-seats-do-i-need"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> How many licenced developer seats do I need? 252 253 254 </h3> 255 256 257<p>By default all developers contributing any source code to software containing cmajor will require a licence.</p> 258 259<p>However, there are certain situations where this doesnât make much sense. If the software development team using Cmajor is a small fraction of the overall software development team, and the use of Cmajor is not central to the overall product, then it is more appropriate that only the developers in the team using Cmajor directly will require licences. If youâd like to discuss what might constitute a fair number of seats for your situation, contact us at [email protected].</p> 260 261<p>While Cmajor licences can be infrequently reassigned between developers, our licensing is not designed to be flexible with regards to team size. If a product containing Cmajor ever had a large development team then it is the maximum concurrent size of the development team that fixes the number of licence seats required. If the team size is subsequently reduced to just a few people providing product maintenance post-release the product still requires the larger number of licence seats for the entire duration over which the product is distributed.</p> 262 <h3 id="do-i-need-a-cmajor-licence-to-sell-cmajor-based-software-created-by-another-entity"> 263 264 265 <a href="#do-i-need-a-cmajor-licence-to-sell-cmajor-based-software-created-by-another-entity" class="anchor-heading" aria-labelledby="do-i-need-a-cmajor-licence-to-sell-cmajor-based-software-created-by-another-entity"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Do I need a Cmajor licence to sell Cmajor-based software created by another entity? 266 267 268 </h3> 269 270 271<p>No. The software needs to be licensed by all the contributors to the source code. If you have not contributed to any of the source code then you do not require a licence.</p> 272 273<p>However, you must ensure that the software is appropriately licensed for the whole duration over which you are distributing it. If any of the contributors are third parties then the distributor/seller is legally obliged to ensure that the corresponding licences are perpetal, rather than per-month subscription licences.</p> 274 <h3 id="i-want-to-hire-a-contractor-to-contribute-to-software-containing-cmajor-do-i-need-a-licence-or-does-the-contractor-need-a-licence"> 275 276 277 <a href="#i-want-to-hire-a-contractor-to-contribute-to-software-containing-cmajor-do-i-need-a-licence-or-does-the-contractor-need-a-licence" class="anchor-heading" aria-labelledby="i-want-to-hire-a-contractor-to-contribute-to-software-containing-cmajor-do-i-need-a-licence-or-does-the-contractor-need-a-licence"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> I want to hire a contractor to contribute to software containing cmajor. Do I need a licence or does the contractor need a licence? 278 279 280 </h3> 281 282 283<p>You can use either option.</p> 284 285<p>If the hiring organisation purchases a licence then that licence can be used by the contractor for the duration of their work. When the contractor has finished the work the licence can then be re-assigned to a different c
285ontractor. If the hiring organisation will have a fixed maximum number of contractors working simultaneously then this licensing model may be the most appropriate.</p> 286 287<p>It is also possible for contractors to have their own individual licences. In this situation the relevant revenue or funding limit will be that of the contractor, so it may be possible for contractors to use Indie licences where the revenue of the hiring organisation would exceed the Indie funding or revenue limit. However, the hiring organisation is responsible for ensuring that the software is appropriately licensed for the whole duration over which it is distributed (see the answer to the previous question above).</p> 288 <h3 id="can-a-cmajor-educational-licence-be-used-by-students"> 289 290 291 <a href="#can-a-cmajor-educational-licence-be-used-by-students" class="anchor-heading" aria-labelledby="can-a-cmajor-educational-licence-be-used-by-students"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Can a Cmajor Educational licence be used by students? 292 293 294 </h3> 295 296 297<p>No. Our Educational licences are offered to bona fide educational institutions and come with the number of seats requested by the educational institution. Institutions requesting Educational licences must agree to submit any requested documentation to show proof of a bona fide educational institute.</p> 298 299 300 301 302 303 304 <hr> 305 <footer> 306 307 <p><a href="#top" id="back-to-top">Back to top</a></p> 308 309 310 311 312 <div class="d-flex mt-2"> 313 314 315 </div> 316 317 </footer> 318 319 320 </div> 321 </div> 322 323 324 325 326 <div class="search-overlay"></div> 327 328 </div> 329 330 331
331<script> 332 var config = { 333 theme: "neutral" 334}; 335 mermaid.initialize(config); 336 window.mermaid.init(undefined, document.querySelectorAll('.language-mermaid')); 337 </script>
337 338 339</body> 340</html> 341
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.