├── .gitignore ├── JuceLibraryCode ├── JuceHeader.h ├── JucePluginDefines.h ├── ReadMe.txt ├── include_juce_audio_basics.cpp ├── include_juce_audio_basics.mm ├── include_juce_audio_devices.cpp ├── include_juce_audio_devices.mm ├── include_juce_audio_formats.cpp ├── include_juce_audio_formats.mm ├── include_juce_audio_plugin_client_AAX.cpp ├── include_juce_audio_plugin_client_AAX.mm ├── include_juce_audio_plugin_client_ARA.cpp ├── include_juce_audio_plugin_client_AU_1.mm ├── include_juce_audio_plugin_client_AU_2.mm ├── include_juce_audio_plugin_client_AUv3.mm ├── include_juce_audio_plugin_client_LV2.cpp ├── include_juce_audio_plugin_client_LV2.mm ├── include_juce_audio_plugin_client_Standalone.cpp ├── include_juce_audio_plugin_client_Unity.cpp ├── include_juce_audio_plugin_client_VST2.cpp ├── include_juce_audio_plugin_client_VST3.cpp ├── include_juce_audio_plugin_client_VST_utils.mm ├── include_juce_audio_plugin_client_utils.cpp ├── include_juce_audio_processors.cpp ├── include_juce_audio_processors.mm ├── include_juce_audio_processors_ara.cpp ├── include_juce_audio_processors_lv2_libs.cpp ├── include_juce_audio_utils.cpp ├── include_juce_audio_utils.mm ├── include_juce_core.cpp ├── include_juce_core.mm ├── include_juce_data_structures.cpp ├── include_juce_data_structures.mm ├── include_juce_events.cpp ├── include_juce_events.mm ├── include_juce_graphics.cpp ├── include_juce_graphics.mm ├── include_juce_gui_basics.cpp ├── include_juce_gui_basics.mm ├── include_juce_gui_extra.cpp └── include_juce_gui_extra.mm ├── PointToPoint_LT.jucer ├── README.md ├── Source ├── MyCircuits.h ├── PluginEditor.cpp ├── PluginEditor.h ├── PluginProcessor.cpp └── PluginProcessor.h └── sdks └── PointToPoint_LT ├── macos ├── ARM │ ├── incl │ │ ├── Circuit.h │ │ ├── CircuitElement.h │ │ └── CircuitModel.h │ └── lib │ │ ├── Debug │ │ └── libCircuitModel.a │ │ └── Release │ │ └── libCircuitModel.a └── Intel │ ├── incl │ ├── Circuit.h │ ├── CircuitElement.h │ └── CircuitModel.h │ └── lib │ ├── Debug │ └── libCircuitModel.a │ └── Release │ └── libCircuitModel.a └── win ├── incl ├── Circuit.h ├── CircuitElement.h └── CircuitModel.h └── lib ├── x64 ├── Debug │ └── CircuitModel.lib └── Release │ └── CircuitModel.lib └── x86 ├── Debug └── CircuitModel.lib └── Release └── CircuitModel.lib /.gitignore: -------------------------------------------------------------------------------- 1 | Builds/ 2 | .DS_Store 3 | 4 | -------------------------------------------------------------------------------- /JuceLibraryCode/JuceHeader.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | This is the header file that your files should include in order to get all the 7 | JUCE library headers. You should avoid including the JUCE headers directly in 8 | your own source files, because that wouldn't pick up the correct configuration 9 | options for your app. 10 | 11 | */ 12 | 13 | #pragma once 14 | 15 | 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | 29 | 30 | #if defined (JUCE_PROJUCER_VERSION) && JUCE_PROJUCER_VERSION < JUCE_VERSION 31 | /** If you've hit this error then the version of the Projucer that was used to generate this project is 32 | older than the version of the JUCE modules being included. To fix this error, re-save your project 33 | using the latest version of the Projucer or, if you aren't using the Projucer to manage your project, 34 | remove the JUCE_PROJUCER_VERSION define. 35 | */ 36 | #error "This project was last saved using an outdated version of the Projucer! Re-save this project with the latest version to fix this error." 37 | #endif 38 | 39 | 40 | #if ! JUCE_DONT_DECLARE_PROJECTINFO 41 | namespace ProjectInfo 42 | { 43 | const char* const projectName = "PointToPoint_LT"; 44 | const char* const companyName = ""; 45 | const char* const versionString = "1.0.0"; 46 | const int versionNumber = 0x10000; 47 | } 48 | #endif 49 | -------------------------------------------------------------------------------- /JuceLibraryCode/JucePluginDefines.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #pragma once 9 | 10 | //============================================================================== 11 | // Audio plugin settings.. 12 | 13 | #ifndef JucePlugin_Build_VST 14 | #define JucePlugin_Build_VST 0 15 | #endif 16 | #ifndef JucePlugin_Build_VST3 17 | #define JucePlugin_Build_VST3 1 18 | #endif 19 | #ifndef JucePlugin_Build_AU 20 | #define JucePlugin_Build_AU 1 21 | #endif 22 | #ifndef JucePlugin_Build_AUv3 23 | #define JucePlugin_Build_AUv3 0 24 | #endif 25 | #ifndef JucePlugin_Build_AAX 26 | #define JucePlugin_Build_AAX 0 27 | #endif 28 | #ifndef JucePlugin_Build_Standalone 29 | #define JucePlugin_Build_Standalone 1 30 | #endif 31 | #ifndef JucePlugin_Build_Unity 32 | #define JucePlugin_Build_Unity 0 33 | #endif 34 | #ifndef JucePlugin_Build_LV2 35 | #define JucePlugin_Build_LV2 0 36 | #endif 37 | #ifndef JucePlugin_Enable_IAA 38 | #define JucePlugin_Enable_IAA 0 39 | #endif 40 | #ifndef JucePlugin_Enable_ARA 41 | #define JucePlugin_Enable_ARA 0 42 | #endif 43 | #ifndef JucePlugin_Name 44 | #define JucePlugin_Name "PointToPoint_LT" 45 | #endif 46 | #ifndef JucePlugin_Desc 47 | #define JucePlugin_Desc "PointToPoint_LT" 48 | #endif 49 | #ifndef JucePlugin_Manufacturer 50 | #define JucePlugin_Manufacturer "yourcompany" 51 | #endif 52 | #ifndef JucePlugin_ManufacturerWebsite 53 | #define JucePlugin_ManufacturerWebsite "www.yourcompany.com" 54 | #endif 55 | #ifndef JucePlugin_ManufacturerEmail 56 | #define JucePlugin_ManufacturerEmail "" 57 | #endif 58 | #ifndef JucePlugin_ManufacturerCode 59 | #define JucePlugin_ManufacturerCode 0x4d616e75 60 | #endif 61 | #ifndef JucePlugin_PluginCode 62 | #define JucePlugin_PluginCode 0x50616978 63 | #endif 64 | #ifndef JucePlugin_IsSynth 65 | #define JucePlugin_IsSynth 0 66 | #endif 67 | #ifndef JucePlugin_WantsMidiInput 68 | #define JucePlugin_WantsMidiInput 0 69 | #endif 70 | #ifndef JucePlugin_ProducesMidiOutput 71 | #define JucePlugin_ProducesMidiOutput 0 72 | #endif 73 | #ifndef JucePlugin_IsMidiEffect 74 | #define JucePlugin_IsMidiEffect 0 75 | #endif 76 | #ifndef JucePlugin_EditorRequiresKeyboardFocus 77 | #define JucePlugin_EditorRequiresKeyboardFocus 0 78 | #endif 79 | #ifndef JucePlugin_Version 80 | #define JucePlugin_Version 1.0.0 81 | #endif 82 | #ifndef JucePlugin_VersionCode 83 | #define JucePlugin_VersionCode 0x10000 84 | #endif 85 | #ifndef JucePlugin_VersionString 86 | #define JucePlugin_VersionString "1.0.0" 87 | #endif 88 | #ifndef JucePlugin_VSTUniqueID 89 | #define JucePlugin_VSTUniqueID JucePlugin_PluginCode 90 | #endif 91 | #ifndef JucePlugin_VSTCategory 92 | #define JucePlugin_VSTCategory kPlugCategEffect 93 | #endif 94 | #ifndef JucePlugin_Vst3Category 95 | #define JucePlugin_Vst3Category "Fx" 96 | #endif 97 | #ifndef JucePlugin_AUMainType 98 | #define JucePlugin_AUMainType 'aufx' 99 | #endif 100 | #ifndef JucePlugin_AUSubType 101 | #define JucePlugin_AUSubType JucePlugin_PluginCode 102 | #endif 103 | #ifndef JucePlugin_AUExportPrefix 104 | #define JucePlugin_AUExportPrefix PointToPoint_LTAU 105 | #endif 106 | #ifndef JucePlugin_AUExportPrefixQuoted 107 | #define JucePlugin_AUExportPrefixQuoted "PointToPoint_LTAU" 108 | #endif 109 | #ifndef JucePlugin_AUManufacturerCode 110 | #define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode 111 | #endif 112 | #ifndef JucePlugin_CFBundleIdentifier 113 | #define JucePlugin_CFBundleIdentifier com.yourcompany.PointToPoint_LT 114 | #endif 115 | #ifndef JucePlugin_AAXIdentifier 116 | #define JucePlugin_AAXIdentifier com.yourcompany.PointToPoint_LT 117 | #endif 118 | #ifndef JucePlugin_AAXManufacturerCode 119 | #define JucePlugin_AAXManufacturerCode JucePlugin_ManufacturerCode 120 | #endif 121 | #ifndef JucePlugin_AAXProductId 122 | #define JucePlugin_AAXProductId JucePlugin_PluginCode 123 | #endif 124 | #ifndef JucePlugin_AAXCategory 125 | #define JucePlugin_AAXCategory 0 126 | #endif 127 | #ifndef JucePlugin_AAXDisableBypass 128 | #define JucePlugin_AAXDisableBypass 0 129 | #endif 130 | #ifndef JucePlugin_AAXDisableMultiMono 131 | #define JucePlugin_AAXDisableMultiMono 0 132 | #endif 133 | #ifndef JucePlugin_IAAType 134 | #define JucePlugin_IAAType 0x61757278 135 | #endif 136 | #ifndef JucePlugin_IAASubType 137 | #define JucePlugin_IAASubType JucePlugin_PluginCode 138 | #endif 139 | #ifndef JucePlugin_IAAName 140 | #define JucePlugin_IAAName "yourcompany: PointToPoint_LT" 141 | #endif 142 | #ifndef JucePlugin_VSTNumMidiInputs 143 | #define JucePlugin_VSTNumMidiInputs 16 144 | #endif 145 | #ifndef JucePlugin_VSTNumMidiOutputs 146 | #define JucePlugin_VSTNumMidiOutputs 16 147 | #endif 148 | #ifndef JucePlugin_ARAContentTypes 149 | #define JucePlugin_ARAContentTypes 0 150 | #endif 151 | #ifndef JucePlugin_ARATransformationFlags 152 | #define JucePlugin_ARATransformationFlags 0 153 | #endif 154 | #ifndef JucePlugin_ARAFactoryID 155 | #define JucePlugin_ARAFactoryID "com.yourcompany.PointToPoint_LT.factory" 156 | #endif 157 | #ifndef JucePlugin_ARADocumentArchiveID 158 | #define JucePlugin_ARADocumentArchiveID "com.yourcompany.PointToPoint_LT.aradocumentarchive.1.0.0" 159 | #endif 160 | #ifndef JucePlugin_ARACompatibleArchiveIDs 161 | #define JucePlugin_ARACompatibleArchiveIDs "" 162 | #endif 163 | -------------------------------------------------------------------------------- /JuceLibraryCode/ReadMe.txt: -------------------------------------------------------------------------------- 1 | 2 | Important Note!! 3 | ================ 4 | 5 | The purpose of this folder is to contain files that are auto-generated by the Projucer, 6 | and ALL files in this folder will be mercilessly DELETED and completely re-written whenever 7 | the Projucer saves your project. 8 | 9 | Therefore, it's a bad idea to make any manual changes to the files in here, or to 10 | put any of your own files in here if you don't want to lose them. (Of course you may choose 11 | to add the folder's contents to your version-control system so that you can re-merge your own 12 | modifications after the Projucer has saved its changes). 13 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_basics.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_basics.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_devices.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_devices.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_formats.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_formats.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_AAX.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_AAX.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_ARA.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_AUv3.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_LV2.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_LV2.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_Standalone.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_Unity.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_VST_utils.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_plugin_client_utils.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_processors.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_processors.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_processors_ara.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_utils.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_audio_utils.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_core.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_core.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_data_structures.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_data_structures.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_events.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_events.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_graphics.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_graphics.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_gui_basics.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_gui_basics.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_gui_extra.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /JuceLibraryCode/include_juce_gui_extra.mm: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | IMPORTANT! This file is auto-generated each time you save your 4 | project - if you alter its contents, your changes may be overwritten! 5 | 6 | */ 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /PointToPoint_LT.jucer: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 9 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 45 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 67 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 89 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Point To Point LT 2 | 3 | ## Overview 4 | 5 | The "Point To Point LT" library is a software tool for modeling analog circuits. It is intended for audio signal processing applications. Component-level circuit analysis is automated, allowing for arbitrary circuits to be easily implemented based on the available components. An example JUCE plug-in project is included for demonstration. 6 | 7 | This software is for educational and personal use only. It may not be used in commerical products without the prior written consent of Hack Audio LLC. By using this software, you are agreeing to the following license. 8 | 9 | ## Licenses 10 | 11 | This agreement covers the access and use of the source code for the "Point To Point LT" library, hereafter known as the “Software”. 12 | 13 | ## Terms & Conditions 14 | 15 | Both the Licensee and Software provider agree to adhere to the following terms and conditions. 16 | 17 | The Software Provider has granted, with acceptance of this source code license agreement, one total licenses to be used as permitted. This licenses shall be considered perpetual and non-transferrable. 18 | 19 | Throughout this agreement, “Software” shall be defined as all source codes, object codes, link libraries, utility programs, project files, scripts related to the software listed above. 20 | 21 | The Software shall remain the intellectual property of the Software Provider at all times. 22 | 23 | ## License Grant 24 | 25 | In consideration of all terms and conditions contained within this contract the Licensee shall have the nonexclusive and nontransferable rights as stated below. 26 | 27 | - The Licensee will hold the right to incorporate the statically linked library that the Software Provider has developed into educational or personal projects. 28 | - However, the Licensee may not distribute software which uses the libraries mentioned above. 29 | 30 | ## Restrictions 31 | 32 | Unless prior written consent has been obtained from the Software Owner, the following shall not be allowed. 33 | 34 | - The distribution of any source codes, header files, make files, or libraries of the software. 35 | - The software should not be merged, compiled, or copied unless expressed in this agreement. 36 | - Alteration or removal of any notices in or on the software or within the documentation included within the software. 37 | - Any distribution of the software by the Licensee that is not conducted with approval from the Software Provider. 38 | - Disclosure of any source codes pertaining to the software to any additional parties not included in this agreement. 39 | - The Licensee shall not disassemble, decompile or reverse engineer any object code contained within the software. 40 | 41 | 42 | ## Warranties 43 | 44 | All software included in this source code license agreement as well as all documentation included with said software is provided in an “as is” condition. 45 | 46 | The Software Provider makes no guarantee as to the source code’s performance. 47 | 48 | ## Liability 49 | 50 | Under no circumstances will either party or their representatives be liable to each other for any incidental, consequential, or indirect damages including but not limited to lost or damaged data, revenue loss, economic loss, or commercial loss arising out of a breach of any terms and conditions set forth in this source code license agreement. 51 | 52 | This limitation of liability shall apply regardless of if the alleged breach is a fundamental breach or fundamental term. 53 | 54 | Both parties are in understanding that some jurisdictions do not allow the exclusion of liability for consequential damages and as so the above limitation may not apply. 55 | 56 | ## Term & Termination 57 | 58 | While the term of this agreement may be perpetual, this agreement may terminate immediately in the event any breach occurs of the terms and conditions listed herein. 59 | 60 | Under no condition should any disclosures of the licensed source code or theft of the Clients computers be grounds for termination of this agreement. 61 | 62 | In the event of termination the Licensee must destroy any and all copies of the Software as well as the included documentation. 63 | 64 | ## Indemnity 65 | 66 | The Licensee agrees to hold the Software Provider harmless as well as defend the Software Provider from any and all damages, costs, and liabilities that take place from a lawsuit due to any of the following 67 | 68 | > Product Distribution 69 | > Breach of Contract 70 | > Software installation 71 | 72 | Additionally, the Software Provider shall indemnify and hold the Licensee harmless against any damages related to the source code. 73 | 74 | ## Copyright Notice 75 | The Licensee agrees to display an appropriate copyright notice in any final versions of Software containing the source code distributed to third parties. 76 | 77 | ## Applicable law 78 | 79 | Any disputes related to this agreement shall be resolved in accordance with the laws of Tennessee and any and all legal proceedings shall take place as such. 80 | 81 | ## Modification 82 | 83 | No terms or conditions on this agreement shall be modified or replaced without the written consent of both parties. 84 | 85 | ## Equitable Remedies 86 | 87 | Both parties agree that direct monetary damages may not be the sole extent of damages related to a breach of this source code license agreement. 88 | 89 | Therefore, each party agrees a breach in this agreement by the Licensee will allow the Software Provider to seek additional relief from the Licensee. 90 | 91 | ## Entire Agreement 92 | 93 | This document shall constitute the entire binding agreement between the Parties for the source code listed. 94 | 95 | -------------------------------------------------------------------------------- /Source/MyCircuits.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyCircuits.h 3 | // 4 | // Collection of famous, foundational linear 5 | // circuits (e.g. Butterworth, Sallen-Key, etc) 6 | // 7 | // 8 | #include "Circuit.h" 9 | #include "CircuitModel.h" 10 | #include "CircuitElement.h" 11 | 12 | #pragma once 13 | namespace PointToPoint_LT { 14 | 15 | //------ Passive 1st-order RC LPF 16 | 17 | class Passive1stOrderRCLPF : public Circuit 18 | { 19 | 20 | public: 21 | 22 | Passive1stOrderRCLPF(){ 23 | layout.numNodes = 2; 24 | 25 | layout.Vin = CircuitElement::VoltageInput {1,0}; 26 | layout.Vout = CircuitElement::VoltageOutput {2,0}; 27 | 28 | CircuitElement::Resistor R {4700.0,1,2}; 29 | layout.Rs = std::vector {R}; 30 | 31 | CircuitElement::Capacitor C {47e-9,2,0}; 32 | layout.Cs = std::vector {C}; 33 | 34 | circuit = CircuitModel(layout); 35 | } 36 | }; 37 | 38 | 39 | 40 | 41 | //----------------------------- Passive 1st-order RC HPF 42 | class Passive1stOrderRCHPF : public Circuit 43 | { 44 | 45 | public: 46 | 47 | Passive1stOrderRCHPF(){ 48 | layout.numNodes = 2; 49 | 50 | layout.Vin = CircuitElement::VoltageInput {1,0}; 51 | layout.Vout = CircuitElement::VoltageOutput {2,0}; 52 | 53 | CircuitElement::Resistor R {4700.0,2,0}; 54 | layout.Rs = std::vector {R}; 55 | 56 | CircuitElement::Capacitor C {47e-9,1,2}; 57 | layout.Cs = std::vector {C}; 58 | 59 | circuit = CircuitModel(layout); 60 | } 61 | }; 62 | 63 | 64 | 65 | 66 | //----------------------------- Active 2nd-order LPF (no VariableResistor) 67 | // https://www.electronics-tutorials.ws/filter/second-order-filters.html 68 | class Active2ndOrderLPF : public Circuit 69 | { 70 | 71 | public: 72 | 73 | Active2ndOrderLPF(){ 74 | layout.numNodes = 4; 75 | 76 | layout.Vin = CircuitElement::VoltageInput {1,0}; 77 | layout.Vout = CircuitElement::VoltageOutput {4,0}; 78 | 79 | CircuitElement::Resistor R1 {10e3,1,2}; 80 | CircuitElement::Resistor R2 {10e3,2,3}; 81 | layout.Rs = std::vector {R1,R2}; 82 | 83 | CircuitElement::Capacitor C1 {10e-9,2,4}; 84 | CircuitElement::Capacitor C2 {10e-9,3,0}; 85 | layout.Cs = std::vector {C1,C2}; 86 | 87 | CircuitElement::OPAmp OPA {3,4,4}; 88 | layout.OPAmps = std::vector {OPA}; 89 | 90 | circuit = CircuitModel(layout); 91 | } 92 | }; 93 | 94 | 95 | 96 | // End of namespace 97 | } 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /Source/PluginEditor.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file contains the basic framework code for a JUCE plugin editor. 5 | 6 | ============================================================================== 7 | */ 8 | 9 | #include "PluginProcessor.h" 10 | #include "PluginEditor.h" 11 | 12 | //============================================================================== 13 | PointToPoint_LTAudioProcessorEditor::PointToPoint_LTAudioProcessorEditor (PointToPoint_LTAudioProcessor& p) 14 | : AudioProcessorEditor (&p), audioProcessor (p) 15 | { 16 | // Make sure that before the constructor has finished, you've set the 17 | // editor's size to whatever you need it to be. 18 | setSize (400, 300); 19 | } 20 | 21 | PointToPoint_LTAudioProcessorEditor::~PointToPoint_LTAudioProcessorEditor() 22 | { 23 | } 24 | 25 | //============================================================================== 26 | void PointToPoint_LTAudioProcessorEditor::paint (juce::Graphics& g) 27 | { 28 | // (Our component is opaque, so we must completely fill the background with a solid colour) 29 | g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId)); 30 | 31 | g.setColour (juce::Colours::white); 32 | g.setFont (15.0f); 33 | g.drawFittedText ("Point To Point LT", getLocalBounds(), juce::Justification::centred, 1); 34 | } 35 | 36 | void PointToPoint_LTAudioProcessorEditor::resized() 37 | { 38 | // This is generally where you'll want to lay out the positions of any 39 | // subcomponents in your editor.. 40 | } 41 | -------------------------------------------------------------------------------- /Source/PluginEditor.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file contains the basic framework code for a JUCE plugin editor. 5 | 6 | ============================================================================== 7 | */ 8 | 9 | #pragma once 10 | 11 | #include 12 | #include "PluginProcessor.h" 13 | 14 | //============================================================================== 15 | /** 16 | */ 17 | class PointToPoint_LTAudioProcessorEditor : public juce::AudioProcessorEditor 18 | { 19 | public: 20 | PointToPoint_LTAudioProcessorEditor (PointToPoint_LTAudioProcessor&); 21 | ~PointToPoint_LTAudioProcessorEditor() override; 22 | 23 | //============================================================================== 24 | void paint (juce::Graphics&) override; 25 | void resized() override; 26 | 27 | private: 28 | // This reference is provided as a quick way for your editor to 29 | // access the processor object that created it. 30 | PointToPoint_LTAudioProcessor& audioProcessor; 31 | 32 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PointToPoint_LTAudioProcessorEditor) 33 | }; 34 | -------------------------------------------------------------------------------- /Source/PluginProcessor.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file contains the basic framework code for a JUCE plugin processor. 5 | 6 | ============================================================================== 7 | */ 8 | 9 | #include "PluginProcessor.h" 10 | #include "PluginEditor.h" 11 | 12 | //============================================================================== 13 | PointToPoint_LTAudioProcessor::PointToPoint_LTAudioProcessor() 14 | #ifndef JucePlugin_PreferredChannelConfigurations 15 | : AudioProcessor (BusesProperties() 16 | #if ! JucePlugin_IsMidiEffect 17 | #if ! JucePlugin_IsSynth 18 | .withInput ("Input", juce::AudioChannelSet::stereo(), true) 19 | #endif 20 | .withOutput ("Output", juce::AudioChannelSet::stereo(), true) 21 | #endif 22 | ) 23 | #endif 24 | { 25 | } 26 | 27 | PointToPoint_LTAudioProcessor::~PointToPoint_LTAudioProcessor() 28 | { 29 | } 30 | 31 | //============================================================================== 32 | const juce::String PointToPoint_LTAudioProcessor::getName() const 33 | { 34 | return JucePlugin_Name; 35 | } 36 | 37 | bool PointToPoint_LTAudioProcessor::acceptsMidi() const 38 | { 39 | #if JucePlugin_WantsMidiInput 40 | return true; 41 | #else 42 | return false; 43 | #endif 44 | } 45 | 46 | bool PointToPoint_LTAudioProcessor::producesMidi() const 47 | { 48 | #if JucePlugin_ProducesMidiOutput 49 | return true; 50 | #else 51 | return false; 52 | #endif 53 | } 54 | 55 | bool PointToPoint_LTAudioProcessor::isMidiEffect() const 56 | { 57 | #if JucePlugin_IsMidiEffect 58 | return true; 59 | #else 60 | return false; 61 | #endif 62 | } 63 | 64 | double PointToPoint_LTAudioProcessor::getTailLengthSeconds() const 65 | { 66 | return 0.0; 67 | } 68 | 69 | int PointToPoint_LTAudioProcessor::getNumPrograms() 70 | { 71 | return 1; // NB: some hosts don't cope very well if you tell them there are 0 programs, 72 | // so this should be at least 1, even if you're not really implementing programs. 73 | } 74 | 75 | int PointToPoint_LTAudioProcessor::getCurrentProgram() 76 | { 77 | return 0; 78 | } 79 | 80 | void PointToPoint_LTAudioProcessor::setCurrentProgram (int index) 81 | { 82 | } 83 | 84 | const juce::String PointToPoint_LTAudioProcessor::getProgramName (int index) 85 | { 86 | return {}; 87 | } 88 | 89 | void PointToPoint_LTAudioProcessor::changeProgramName (int index, const juce::String& newName) 90 | { 91 | } 92 | 93 | //============================================================================== 94 | void PointToPoint_LTAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) 95 | { 96 | effect.prepare(sampleRate,samplesPerBlock); 97 | } 98 | 99 | void PointToPoint_LTAudioProcessor::releaseResources() 100 | { 101 | // When playback stops, you can use this as an opportunity to free up any 102 | // spare memory, etc. 103 | } 104 | 105 | #ifndef JucePlugin_PreferredChannelConfigurations 106 | bool PointToPoint_LTAudioProcessor::isBusesLayoutSupported (const BusesLayout& layouts) const 107 | { 108 | #if JucePlugin_IsMidiEffect 109 | juce::ignoreUnused (layouts); 110 | return true; 111 | #else 112 | // This is the place where you check if the layout is supported. 113 | // In this template code we only support mono or stereo. 114 | // Some plugin hosts, such as certain GarageBand versions, will only 115 | // load plugins that support stereo bus layouts. 116 | if (layouts.getMainOutputChannelSet() != juce::AudioChannelSet::mono() 117 | && layouts.getMainOutputChannelSet() != juce::AudioChannelSet::stereo()) 118 | return false; 119 | 120 | // This checks if the input layout matches the output layout 121 | #if ! JucePlugin_IsSynth 122 | if (layouts.getMainOutputChannelSet() != layouts.getMainInputChannelSet()) 123 | return false; 124 | #endif 125 | 126 | return true; 127 | #endif 128 | } 129 | #endif 130 | 131 | void PointToPoint_LTAudioProcessor::processBlock (juce::AudioBuffer& buffer, juce::MidiBuffer& midiMessages) 132 | { 133 | juce::ScopedNoDenormals noDenormals; 134 | auto totalNumInputChannels = getTotalNumInputChannels(); 135 | auto totalNumOutputChannels = getTotalNumOutputChannels(); 136 | 137 | 138 | for (auto i = totalNumInputChannels; i < totalNumOutputChannels; ++i) 139 | buffer.clear (i, 0, buffer.getNumSamples()); 140 | 141 | for (int channel = 0; channel < totalNumInputChannels; ++channel) 142 | { 143 | auto* channelData = buffer.getWritePointer (channel); 144 | 145 | effect.processInPlace(channelData,buffer.getNumSamples(),channel); 146 | } 147 | } 148 | 149 | //============================================================================== 150 | bool PointToPoint_LTAudioProcessor::hasEditor() const 151 | { 152 | return true; // (change this to false if you choose to not supply an editor) 153 | } 154 | 155 | juce::AudioProcessorEditor* PointToPoint_LTAudioProcessor::createEditor() 156 | { 157 | return new PointToPoint_LTAudioProcessorEditor (*this); 158 | } 159 | 160 | //============================================================================== 161 | void PointToPoint_LTAudioProcessor::getStateInformation (juce::MemoryBlock& destData) 162 | { 163 | // You should use this method to store your parameters in the memory block. 164 | // You could do that either as raw data, or use the XML or ValueTree classes 165 | // as intermediaries to make it easy to save and load complex data. 166 | } 167 | 168 | void PointToPoint_LTAudioProcessor::setStateInformation (const void* data, int sizeInBytes) 169 | { 170 | // You should use this method to restore your parameters from this memory block, 171 | // whose contents will have been created by the getStateInformation() call. 172 | } 173 | 174 | //============================================================================== 175 | // This creates new instances of the plugin.. 176 | juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter() 177 | { 178 | return new PointToPoint_LTAudioProcessor(); 179 | } 180 | -------------------------------------------------------------------------------- /Source/PluginProcessor.h: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================== 3 | 4 | This file contains the basic framework code for a JUCE plugin processor. 5 | 6 | ============================================================================== 7 | */ 8 | 9 | #pragma once 10 | 11 | #include 12 | #include "MyCircuits.h" 13 | 14 | //============================================================================== 15 | /** 16 | */ 17 | class PointToPoint_LTAudioProcessor : public juce::AudioProcessor 18 | { 19 | public: 20 | //============================================================================== 21 | PointToPoint_LTAudioProcessor(); 22 | ~PointToPoint_LTAudioProcessor() override; 23 | 24 | //============================================================================== 25 | void prepareToPlay (double sampleRate, int samplesPerBlock) override; 26 | void releaseResources() override; 27 | 28 | #ifndef JucePlugin_PreferredChannelConfigurations 29 | bool isBusesLayoutSupported (const BusesLayout& layouts) const override; 30 | #endif 31 | 32 | void processBlock (juce::AudioBuffer&, juce::MidiBuffer&) override; 33 | 34 | //============================================================================== 35 | juce::AudioProcessorEditor* createEditor() override; 36 | bool hasEditor() const override; 37 | 38 | //============================================================================== 39 | const juce::String getName() const override; 40 | 41 | bool acceptsMidi() const override; 42 | bool producesMidi() const override; 43 | bool isMidiEffect() const override; 44 | double getTailLengthSeconds() const override; 45 | 46 | //============================================================================== 47 | int getNumPrograms() override; 48 | int getCurrentProgram() override; 49 | void setCurrentProgram (int index) override; 50 | const juce::String getProgramName (int index) override; 51 | void changeProgramName (int index, const juce::String& newName) override; 52 | 53 | //============================================================================== 54 | void getStateInformation (juce::MemoryBlock& destData) override; 55 | void setStateInformation (const void* data, int sizeInBytes) override; 56 | 57 | private: 58 | 59 | PointToPoint_LT::Passive1stOrderRCLPF effect; 60 | 61 | //============================================================================== 62 | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PointToPoint_LTAudioProcessor) 63 | }; 64 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/ARM/incl/Circuit.h: -------------------------------------------------------------------------------- 1 | // 2 | // Circuit.h 3 | // 4 | // Base classes for circuits in the PointToPoint library 5 | // Created by Eric Tarr on 2/13/22. 6 | // 7 | // 8 | 9 | #include "CircuitModel.h" 10 | 11 | #pragma once 12 | 13 | namespace PointToPoint_LT { 14 | 15 | //-------------------Don't change this base class --------- 16 | 17 | class Circuit 18 | { 19 | public: 20 | 21 | void process(const float * input, float * output, int numSamples, int channel) 22 | { 23 | circuit.process(input,output,numSamples,channel); 24 | } 25 | 26 | void processInPlace(float* buffer, int numSamples, int channel) 27 | { 28 | circuit.processInPlace(buffer,numSamples,channel); 29 | } 30 | 31 | float processSample(float x, int channel) 32 | { 33 | return circuit.processSample(x,channel); 34 | } 35 | 36 | void prepare(double sampleRate, int bufferSize) { 37 | circuit.prepare(sampleRate,bufferSize); 38 | } 39 | 40 | protected: 41 | 42 | CircuitModel::CircuitLayout layout; 43 | 44 | CircuitModel circuit {layout}; 45 | }; 46 | 47 | // End of namespace 48 | } 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/ARM/incl/CircuitElement.h: -------------------------------------------------------------------------------- 1 | // 2 | // CircuitElement.h 3 | // 4 | // Collection of the available circuit elements 5 | // in the PointToPoint library 6 | // Created by Eric Tarr on 11/4/21. 7 | // 8 | // 9 | 10 | #pragma once 11 | #include 12 | 13 | namespace PointToPoint_LT { 14 | 15 | // Class definition 16 | class CircuitElement 17 | { 18 | 19 | public: 20 | 21 | //--------------------------------------------------- 22 | 23 | class VoltageInput 24 | { 25 | public: 26 | VoltageInput (int node1,int node2): 27 | node1(node1),node2(node2) {}; 28 | 29 | int getNode1() {return node1;} 30 | int getNode2() {return node2;} 31 | private: 32 | int node1; 33 | int node2; 34 | }; 35 | 36 | //--------------------------------------------------- 37 | 38 | class VoltageOutput 39 | { 40 | public: 41 | VoltageOutput (int node1,int node2): 42 | node1(node1),node2(node2) {}; 43 | 44 | int getNode1() {return node1;} 45 | int getNode2() {return node2;} 46 | private: 47 | int node1; 48 | int node2; 49 | }; 50 | 51 | //--------------------------------------------------- 52 | 53 | 54 | class Resistor 55 | { 56 | public: 57 | Resistor (double value,int node1,int node2): 58 | value(value),node1(node1),node2(node2) {}; 59 | 60 | double getValue() {return value;} 61 | int getNode1() {return node1;} 62 | int getNode2() {return node2;} 63 | private: 64 | double value; 65 | int node1; 66 | int node2; 67 | }; 68 | 69 | //--------------------------------------------------- 70 | 71 | class Capacitor 72 | { 73 | public: 74 | Capacitor (double value,int node1,int node2): 75 | value(value),node1(node1),node2(node2) {}; 76 | 77 | double getValue() {return value;} 78 | int getNode1() {return node1;} 79 | int getNode2() {return node2;} 80 | private: 81 | double value; 82 | int node1; 83 | int node2; 84 | }; 85 | 86 | //--------------------------------------------------- 87 | 88 | class OPAmp 89 | { 90 | public: 91 | OPAmp (int nonInvertingNode, 92 | int invertingNode, 93 | int outputNode): 94 | nonInvertingNode(nonInvertingNode), 95 | invertingNode(invertingNode), 96 | outputNode(outputNode){}; 97 | 98 | int getNonInvertingNode() {return nonInvertingNode;} 99 | int getInvertingNode() {return invertingNode;} 100 | int getOutputNode() {return outputNode;} 101 | 102 | private: 103 | int nonInvertingNode; 104 | int invertingNode; 105 | int outputNode; 106 | }; 107 | 108 | //--------------------------------------------------- 109 | 110 | }; 111 | 112 | } 113 | 114 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/ARM/incl/CircuitModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // CircuitModel.h 3 | // CircuitModel 4 | // 5 | // Created by Hack Audio on 1/20/22. 6 | // 7 | 8 | #ifndef CircuitModel_ 9 | #define CircuitModel_ 10 | 11 | /* The classes below are exported */ 12 | #pragma GCC visibility push(default) 13 | 14 | #include 15 | #include "CircuitElement.h" 16 | 17 | namespace PointToPoint_LT { 18 | 19 | class CircuitModel 20 | { 21 | public: 22 | struct CircuitLayout 23 | { 24 | int numNodes = 0; 25 | CircuitElement::VoltageInput Vin {1,0}; 26 | CircuitElement::VoltageOutput Vout {2,0}; 27 | std::vector Rs; 28 | std::vector Cs; 29 | std::vector OPAmps; 30 | }; 31 | 32 | CircuitModel(CircuitLayout layout); 33 | 34 | ~CircuitModel(); 35 | 36 | CircuitModel(const CircuitModel& other); 37 | CircuitModel& operator=( CircuitModel rhs ); 38 | 39 | void process(const float * input, float * output, int numSamples, int channel); 40 | 41 | void processInPlace(float * buffer, int numSamples, int channel); 42 | 43 | float processSample(float x, int channel); 44 | 45 | void prepare(double sampleRate, int bufferSize); 46 | 47 | private: 48 | class CircuitModelImpl; 49 | std::unique_ptr pImpl; 50 | }; 51 | 52 | } 53 | #pragma GCC visibility pop 54 | #endif 55 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/ARM/lib/Debug/libCircuitModel.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HackAudio/PointToPoint_LT/63b601651733ad666777a6746f632948995ffcb3/sdks/PointToPoint_LT/macos/ARM/lib/Debug/libCircuitModel.a -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/ARM/lib/Release/libCircuitModel.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HackAudio/PointToPoint_LT/63b601651733ad666777a6746f632948995ffcb3/sdks/PointToPoint_LT/macos/ARM/lib/Release/libCircuitModel.a -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/Intel/incl/Circuit.h: -------------------------------------------------------------------------------- 1 | // 2 | // Circuit.h 3 | // 4 | // Base classes for circuits in the PointToPoint library 5 | // Created by Eric Tarr on 2/13/22. 6 | // 7 | // 8 | 9 | #include "CircuitModel.h" 10 | 11 | #pragma once 12 | 13 | namespace PointToPoint_LT { 14 | 15 | //-------------------Don't change this base class --------- 16 | 17 | class Circuit 18 | { 19 | public: 20 | 21 | void process(const float * input, float * output, int numSamples, int channel) 22 | { 23 | circuit.process(input,output,numSamples,channel); 24 | } 25 | 26 | void processInPlace(float* buffer, int numSamples, int channel) 27 | { 28 | circuit.processInPlace(buffer,numSamples,channel); 29 | } 30 | 31 | float processSample(float x, int channel) 32 | { 33 | return circuit.processSample(x,channel); 34 | } 35 | 36 | void prepare(double sampleRate, int bufferSize) { 37 | circuit.prepare(sampleRate,bufferSize); 38 | } 39 | 40 | protected: 41 | 42 | CircuitModel::CircuitLayout layout; 43 | 44 | CircuitModel circuit {layout}; 45 | }; 46 | 47 | // End of namespace 48 | } 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/Intel/incl/CircuitElement.h: -------------------------------------------------------------------------------- 1 | // 2 | // CircuitElement.h 3 | // 4 | // Collection of the available circuit elements 5 | // in the PointToPoint library 6 | // Created by Eric Tarr on 11/4/21. 7 | // 8 | // 9 | 10 | #pragma once 11 | #include 12 | 13 | namespace PointToPoint_LT { 14 | 15 | // Class definition 16 | class CircuitElement 17 | { 18 | 19 | public: 20 | 21 | //--------------------------------------------------- 22 | 23 | class VoltageInput 24 | { 25 | public: 26 | VoltageInput (int node1,int node2): 27 | node1(node1),node2(node2) {}; 28 | 29 | int getNode1() {return node1;} 30 | int getNode2() {return node2;} 31 | private: 32 | int node1; 33 | int node2; 34 | }; 35 | 36 | //--------------------------------------------------- 37 | 38 | class VoltageOutput 39 | { 40 | public: 41 | VoltageOutput (int node1,int node2): 42 | node1(node1),node2(node2) {}; 43 | 44 | int getNode1() {return node1;} 45 | int getNode2() {return node2;} 46 | private: 47 | int node1; 48 | int node2; 49 | }; 50 | 51 | //--------------------------------------------------- 52 | 53 | 54 | class Resistor 55 | { 56 | public: 57 | Resistor (double value,int node1,int node2): 58 | value(value),node1(node1),node2(node2) {}; 59 | 60 | double getValue() {return value;} 61 | int getNode1() {return node1;} 62 | int getNode2() {return node2;} 63 | private: 64 | double value; 65 | int node1; 66 | int node2; 67 | }; 68 | 69 | //--------------------------------------------------- 70 | 71 | class Capacitor 72 | { 73 | public: 74 | Capacitor (double value,int node1,int node2): 75 | value(value),node1(node1),node2(node2) {}; 76 | 77 | double getValue() {return value;} 78 | int getNode1() {return node1;} 79 | int getNode2() {return node2;} 80 | private: 81 | double value; 82 | int node1; 83 | int node2; 84 | }; 85 | 86 | //--------------------------------------------------- 87 | 88 | class OPAmp 89 | { 90 | public: 91 | OPAmp (int nonInvertingNode, 92 | int invertingNode, 93 | int outputNode): 94 | nonInvertingNode(nonInvertingNode), 95 | invertingNode(invertingNode), 96 | outputNode(outputNode){}; 97 | 98 | int getNonInvertingNode() {return nonInvertingNode;} 99 | int getInvertingNode() {return invertingNode;} 100 | int getOutputNode() {return outputNode;} 101 | 102 | private: 103 | int nonInvertingNode; 104 | int invertingNode; 105 | int outputNode; 106 | }; 107 | 108 | //--------------------------------------------------- 109 | 110 | }; 111 | 112 | } 113 | 114 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/Intel/incl/CircuitModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // CircuitModel.h 3 | // CircuitModel 4 | // 5 | // Created by Hack Audio on 1/20/22. 6 | // 7 | 8 | #ifndef CircuitModel_ 9 | #define CircuitModel_ 10 | 11 | /* The classes below are exported */ 12 | #pragma GCC visibility push(default) 13 | 14 | #include 15 | #include "CircuitElement.h" 16 | 17 | namespace PointToPoint_LT { 18 | 19 | class CircuitModel 20 | { 21 | public: 22 | struct CircuitLayout 23 | { 24 | int numNodes = 0; 25 | CircuitElement::VoltageInput Vin {1,0}; 26 | CircuitElement::VoltageOutput Vout {2,0}; 27 | std::vector Rs; 28 | std::vector Cs; 29 | std::vector OPAmps; 30 | }; 31 | 32 | CircuitModel(CircuitLayout layout); 33 | 34 | ~CircuitModel(); 35 | 36 | CircuitModel(const CircuitModel& other); 37 | CircuitModel& operator=( CircuitModel rhs ); 38 | 39 | void process(const float * input, float * output, int numSamples, int channel); 40 | 41 | void processInPlace(float * buffer, int numSamples, int channel); 42 | 43 | float processSample(float x, int channel); 44 | 45 | void prepare(double sampleRate, int bufferSize); 46 | 47 | private: 48 | class CircuitModelImpl; 49 | std::unique_ptr pImpl; 50 | }; 51 | 52 | } 53 | #pragma GCC visibility pop 54 | #endif 55 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/Intel/lib/Debug/libCircuitModel.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HackAudio/PointToPoint_LT/63b601651733ad666777a6746f632948995ffcb3/sdks/PointToPoint_LT/macos/Intel/lib/Debug/libCircuitModel.a -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/macos/Intel/lib/Release/libCircuitModel.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HackAudio/PointToPoint_LT/63b601651733ad666777a6746f632948995ffcb3/sdks/PointToPoint_LT/macos/Intel/lib/Release/libCircuitModel.a -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/win/incl/Circuit.h: -------------------------------------------------------------------------------- 1 | // 2 | // Circuit.h 3 | // 4 | // Base classes for circuits in the PointToPoint library 5 | // Created by Eric Tarr on 2/13/22. 6 | // 7 | // 8 | 9 | #include "CircuitModel.h" 10 | 11 | #pragma once 12 | 13 | namespace PointToPoint_LT { 14 | 15 | //-------------------Don't change this base classes --------- 16 | 17 | class Circuit 18 | { 19 | public: 20 | 21 | void process(const float * input, float * output, int numSamples, int channel) 22 | { 23 | circuit.process(input,output,numSamples,channel); 24 | } 25 | 26 | void processInPlace(float* buffer, int numSamples, int channel) 27 | { 28 | circuit.processInPlace(buffer,numSamples,channel); 29 | } 30 | 31 | float processSample(float x, int channel) 32 | { 33 | return circuit.processSample(x,channel); 34 | } 35 | 36 | void prepare(double sampleRate, int bufferSize) { 37 | circuit.prepare(sampleRate,bufferSize); 38 | } 39 | 40 | protected: 41 | 42 | CircuitModel::CircuitLayout layout; 43 | 44 | CircuitModel circuit {layout}; 45 | }; 46 | 47 | // End of namespace 48 | } 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/win/incl/CircuitElement.h: -------------------------------------------------------------------------------- 1 | // 2 | // CircuitElement.h 3 | // 4 | // Collection of the available circuit elements 5 | // in the PointToPoint library 6 | // Created by Eric Tarr on 11/4/21. 7 | // 8 | // 9 | 10 | #pragma once 11 | #include 12 | 13 | namespace PointToPoint_LT { 14 | 15 | // Class definition 16 | class CircuitElement 17 | { 18 | 19 | public: 20 | 21 | //--------------------------------------------------- 22 | 23 | class VoltageInput 24 | { 25 | public: 26 | VoltageInput (int node1,int node2): 27 | node1(node1),node2(node2) {}; 28 | 29 | int getNode1() {return node1;} 30 | int getNode2() {return node2;} 31 | private: 32 | int node1; 33 | int node2; 34 | }; 35 | 36 | //--------------------------------------------------- 37 | 38 | class VoltageOutput 39 | { 40 | public: 41 | VoltageOutput (int node1,int node2): 42 | node1(node1),node2(node2) {}; 43 | 44 | int getNode1() {return node1;} 45 | int getNode2() {return node2;} 46 | private: 47 | int node1; 48 | int node2; 49 | }; 50 | 51 | //--------------------------------------------------- 52 | 53 | 54 | class Resistor 55 | { 56 | public: 57 | Resistor (double value,int node1,int node2): 58 | value(value),node1(node1),node2(node2) {}; 59 | 60 | double getValue() {return value;} 61 | int getNode1() {return node1;} 62 | int getNode2() {return node2;} 63 | private: 64 | double value; 65 | int node1; 66 | int node2; 67 | }; 68 | 69 | //--------------------------------------------------- 70 | 71 | class Capacitor 72 | { 73 | public: 74 | Capacitor (double value,int node1,int node2): 75 | value(value),node1(node1),node2(node2) {}; 76 | 77 | double getValue() {return value;} 78 | int getNode1() {return node1;} 79 | int getNode2() {return node2;} 80 | private: 81 | double value; 82 | int node1; 83 | int node2; 84 | }; 85 | 86 | //--------------------------------------------------- 87 | 88 | class OPAmp 89 | { 90 | public: 91 | OPAmp (int nonInvertingNode, 92 | int invertingNode, 93 | int outputNode): 94 | nonInvertingNode(nonInvertingNode), 95 | invertingNode(invertingNode), 96 | outputNode(outputNode){}; 97 | 98 | int getNonInvertingNode() {return nonInvertingNode;} 99 | int getInvertingNode() {return invertingNode;} 100 | int getOutputNode() {return outputNode;} 101 | 102 | private: 103 | int nonInvertingNode; 104 | int invertingNode; 105 | int outputNode; 106 | }; 107 | 108 | //--------------------------------------------------- 109 | 110 | }; 111 | 112 | } 113 | 114 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/win/incl/CircuitModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // CircuitModel.h 3 | // CircuitModel 4 | // 5 | // Created by Hack Audio on 1/20/22. 6 | // 7 | 8 | #ifndef CircuitModel_ 9 | #define CircuitModel_ 10 | 11 | /* The classes below are exported */ 12 | #pragma GCC visibility push(default) 13 | 14 | #include 15 | #include 16 | #include "CircuitElement.h" 17 | 18 | namespace PointToPoint_LT { 19 | 20 | class CircuitModel 21 | { 22 | public: 23 | struct CircuitLayout 24 | { 25 | int numNodes = 0; 26 | CircuitElement::VoltageInput Vin {1,0}; 27 | CircuitElement::VoltageOutput Vout {2,0}; 28 | std::vector Rs; 29 | std::vector Cs; 30 | std::vector OPAmps; 31 | }; 32 | 33 | CircuitModel(CircuitLayout layout); 34 | 35 | ~CircuitModel(); 36 | 37 | CircuitModel(const CircuitModel& other); 38 | CircuitModel& operator=( CircuitModel rhs ); 39 | 40 | void process(const float * input, float * output, int numSamples, int channel); 41 | 42 | void processInPlace(float * buffer, int numSamples, int channel); 43 | 44 | float processSample(float x, int channel); 45 | 46 | void prepare(double sampleRate, int bufferSize); 47 | 48 | private: 49 | class CircuitModelImpl; 50 | std::unique_ptr pImpl; 51 | }; 52 | 53 | } 54 | #pragma GCC visibility pop 55 | #endif 56 | -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/win/lib/x64/Debug/CircuitModel.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HackAudio/PointToPoint_LT/63b601651733ad666777a6746f632948995ffcb3/sdks/PointToPoint_LT/win/lib/x64/Debug/CircuitModel.lib -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/win/lib/x64/Release/CircuitModel.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HackAudio/PointToPoint_LT/63b601651733ad666777a6746f632948995ffcb3/sdks/PointToPoint_LT/win/lib/x64/Release/CircuitModel.lib -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/win/lib/x86/Debug/CircuitModel.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HackAudio/PointToPoint_LT/63b601651733ad666777a6746f632948995ffcb3/sdks/PointToPoint_LT/win/lib/x86/Debug/CircuitModel.lib -------------------------------------------------------------------------------- /sdks/PointToPoint_LT/win/lib/x86/Release/CircuitModel.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HackAudio/PointToPoint_LT/63b601651733ad666777a6746f632948995ffcb3/sdks/PointToPoint_LT/win/lib/x86/Release/CircuitModel.lib --------------------------------------------------------------------------------