.gitignore
CLAUDE.md
LICENSE.txt
MANIFEST.in
README.md
mkdocs-offline.yml
mkdocs.yml
pyproject.toml
.claude/settings.json
.github/workflows/docs.yml
.github/workflows/publish-to-pypi.yml
cftscal/__init__.py
cftscal/api.py
cftscal/config_defaults.py
cftscal/main.py
cftscal/migrate_metadata.py
cftscal/migrate_settings.py
cftscal/migrate_thevenin.py
cftscal/objects.py
cftscal/util.py
cftscal/version.py
cftscal.egg-info/PKG-INFO
cftscal.egg-info/SOURCES.txt
cftscal.egg-info/dependency_links.txt
cftscal.egg-info/entry_points.txt
cftscal.egg-info/requires.txt
cftscal.egg-info/scm_file_list.json
cftscal.egg-info/scm_version.json
cftscal.egg-info/top_level.txt
cftscal/guide/404.html
cftscal/guide/concepts.html
cftscal/guide/getting-started.html
cftscal/guide/index.html
cftscal/guide/sitemap.xml
cftscal/guide/sitemap.xml.gz
cftscal/guide/assets/external/cdn.jsdelivr.net/npm/wicked-good-xpath@1.3.0/dist/wgxpath.install.js
cftscal/guide/assets/external/fonts.googleapis.com/css.49ea35f2.css
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkAnkaWzU.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkBXkaWzU.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkBnka.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkC3kaWzU.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCHkaWzU.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCXkaWzU.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCnkaWzU.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkaHkaWzU.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkenkaWzU.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBGEe.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBGEe.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBGEe.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBGEe.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBGEe.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBGEe.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBA.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBGEe.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBGEe.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x5DF4xlVMF-BfR8bXMIjhEq3-OXg.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x5DF4xlVMF-BfR8bXMIjhFq3-OXg.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x5DF4xlVMF-BfR8bXMIjhGq3-OXg.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x5DF4xlVMF-BfR8bXMIjhIq3-OXg.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x5DF4xlVMF-BfR8bXMIjhLq38.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x5DF4xlVMF-BfR8bXMIjhPq3-OXg.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x7DF4xlVMF-BfR8bXMIjhOm32WWg.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x7DF4xlVMF-BfR8bXMIjhOm36WWoKC.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x7DF4xlVMF-BfR8bXMIjhOm3CWWoKC.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x7DF4xlVMF-BfR8bXMIjhOm3KWWoKC.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x7DF4xlVMF-BfR8bXMIjhOm3OWWoKC.woff2
cftscal/guide/assets/external/fonts.gstatic.com/s/robotomono/v31/L0x7DF4xlVMF-BfR8bXMIjhOm3mWWoKC.woff2
cftscal/guide/assets/external/unpkg.com/iframe-worker/shim.js
cftscal/guide/assets/external/unpkg.com/mathjax@3/es5/tex-mml-chtml.js
cftscal/guide/assets/external/unpkg.com/mermaid@11/dist/mermaid.min.js
cftscal/guide/assets/images/favicon.png
cftscal/guide/assets/javascripts/bundle.d7400e89.min.js
cftscal/guide/assets/javascripts/bundle.d7400e89.min.js.map
cftscal/guide/assets/javascripts/lunr/tinyseg.js
cftscal/guide/assets/javascripts/lunr/wordcut.js
cftscal/guide/assets/javascripts/lunr/min/lunr.ar.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.da.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.de.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.du.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.el.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.es.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.fi.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.fr.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.he.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.hi.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.hu.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.hy.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.it.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.ja.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.jp.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.kn.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.ko.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.multi.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.nl.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.no.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.pt.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.ro.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.ru.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.sa.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.stemmer.support.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.sv.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.ta.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.te.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.th.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.tr.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.vi.min.js
cftscal/guide/assets/javascripts/lunr/min/lunr.zh.min.js
cftscal/guide/assets/javascripts/workers/search.2c215733.min.js
cftscal/guide/assets/javascripts/workers/search.2c215733.min.js.map
cftscal/guide/assets/stylesheets/main.ec1eaa64.min.css
cftscal/guide/assets/stylesheets/main.ec1eaa64.min.css.map
cftscal/guide/assets/stylesheets/palette.ab4e12ef.min.css
cftscal/guide/assets/stylesheets/palette.ab4e12ef.min.css.map
cftscal/guide/images/help-tab.png
cftscal/guide/images/home.png
cftscal/guide/images/input-recording/workspace.png
cftscal/guide/images/measurement-microphone/workspace.png
cftscal/guide/javascripts/mathjax.js
cftscal/guide/plugins/generic-microphone.html
cftscal/guide/plugins/index.html
cftscal/guide/plugins/input-amplifier.html
cftscal/guide/plugins/input-recording.html
cftscal/guide/plugins/ir-sensor.html
cftscal/guide/plugins/measurement-microphone.html
cftscal/guide/plugins/speaker.html
cftscal/guide/plugins/starship-check.html
cftscal/guide/plugins/starship.html
cftscal/guide/reference/calibration-math.html
cftscal/guide/reference/configuration.html
cftscal/guide/reference/hardware-design.html
cftscal/guide/reference/index.html
cftscal/guide/reference/signal-analysis.html
cftscal/guide/search/search_index.js
cftscal/guide/search/search_index.json
cftscal/icons/main-icon.ico
cftscal/icons/main-icon.png
cftscal/icons/make_icon.py
cftscal/icons/workspaces/LICENSE
cftscal/icons/workspaces/amplifier.svg
cftscal/icons/workspaces/clipboard-check-outline.svg
cftscal/icons/workspaces/microphone-settings.svg
cftscal/icons/workspaces/microphone.svg
cftscal/icons/workspaces/motion-sensor.svg
cftscal/icons/workspaces/rocket-launch-outline.svg
cftscal/icons/workspaces/speaker.svg
cftscal/icons/workspaces/waveform.svg
cftscal/io/__init__.py
cftscal/io/dummy_fireface.enaml
cftscal/paradigms/__init__.py
cftscal/paradigms/amplifier_calibration.enaml
cftscal/paradigms/calibration_mixins.enaml
cftscal/paradigms/calibration_status.py
cftscal/paradigms/default_state.py
cftscal/paradigms/env_vars.py
cftscal/paradigms/generic_mic_calibration.enaml
cftscal/paradigms/input_amplifier_calibration.enaml
cftscal/paradigms/ir_sensor.enaml
cftscal/paradigms/objects.enaml
cftscal/paradigms/pistonphone_calibration.enaml
cftscal/paradigms/pt_calibration.enaml
cftscal/paradigms/record.enaml
cftscal/paradigms/speaker_calibration.enaml
cftscal/plugins/__init__.py
cftscal/plugins/branding.py
cftscal/plugins/calibration_window.enaml
cftscal/plugins/export.py
cftscal/plugins/fast_tree_view.enaml
cftscal/plugins/guide_view.py
cftscal/plugins/help_tab.enaml
cftscal/plugins/home_view.enaml
cftscal/plugins/manifest.enaml
cftscal/plugins/migrate_view.enaml
cftscal/plugins/object_collection.py
cftscal/plugins/settings.py
cftscal/plugins/widgets.enaml
cftscal/plugins/workspace.py
cftscal/plugins/workspace_view.enaml
cftscal/plugins/inear/__init__.py
cftscal/plugins/inear/manifest.enaml
cftscal/plugins/inear/settings.py
cftscal/plugins/inear/view.enaml
cftscal/plugins/input_amplifier/__init__.py
cftscal/plugins/input_amplifier/manifest.enaml
cftscal/plugins/input_amplifier/settings.py
cftscal/plugins/input_amplifier/view.enaml
cftscal/plugins/input_recording/__init__.py
cftscal/plugins/input_recording/manifest.enaml
cftscal/plugins/input_recording/region.py
cftscal/plugins/input_recording/settings.py
cftscal/plugins/input_recording/view.enaml
cftscal/plugins/ir_sensor/__init__.py
cftscal/plugins/ir_sensor/manifest.enaml
cftscal/plugins/ir_sensor/objects.py
cftscal/plugins/ir_sensor/settings.py
cftscal/plugins/ir_sensor/view.enaml
cftscal/plugins/microphone/__init__.py
cftscal/plugins/microphone/manifest.enaml
cftscal/plugins/microphone/settings.py
cftscal/plugins/microphone/view.enaml
cftscal/plugins/microphone_generic/__init__.py
cftscal/plugins/microphone_generic/manifest.enaml
cftscal/plugins/microphone_generic/settings.py
cftscal/plugins/microphone_generic/view.enaml
cftscal/plugins/speaker/__init__.py
cftscal/plugins/speaker/manifest.enaml
cftscal/plugins/speaker/settings.py
cftscal/plugins/speaker/view.enaml
cftscal/plugins/starship/__init__.py
cftscal/plugins/starship/manifest.enaml
cftscal/plugins/starship/settings.py
cftscal/plugins/starship/view.enaml
cftscal/resources/layout/README.md
cftscal/resources/layout/iec/default.layout
cftscal/resources/layout/input_amplifier_calibration/default.layout
cftscal/resources/layout/input_recording/default.layout
cftscal/resources/layout/ir_sensor/default.layout
cftscal/resources/layout/mic_calibration_chirp/default.layout
cftscal/resources/layout/mic_calibration_golay/default.layout
cftscal/resources/layout/pistonphone_calibration/default.layout
cftscal/resources/layout/pt_calibration_chirp/default.layout
cftscal/resources/layout/pt_calibration_golay/default.layout
cftscal/resources/layout/speaker_calibration_chirp/default.layout
cftscal/resources/layout/speaker_calibration_golay/default.layout
cftscal/resources/preferences/README.md
cftscal/resources/preferences/iec/default.preferences
cftscal/resources/preferences/input_amplifier_calibration/default.preferences
cftscal/resources/preferences/ir_sensor/default.preferences
cftscal/resources/preferences/mic_calibration_chirp/default.preferences
cftscal/resources/preferences/mic_calibration_golay/default.preferences
cftscal/resources/preferences/pistonphone_calibration/default.preferences
cftscal/resources/preferences/pt_calibration_chirp/default.preferences
cftscal/resources/preferences/pt_calibration_golay/default.preferences
cftscal/resources/preferences/speaker_calibration_chirp/default.preferences
cftscal/resources/preferences/speaker_calibration_golay/default.preferences
docs/concepts.md
docs/getting-started.md
docs/index.md
docs/images/help-tab.png
docs/images/home.png
docs/images/input-recording/workspace.png
docs/images/measurement-microphone/workspace.png
docs/javascripts/mathjax.js
docs/plugins/generic-microphone.md
docs/plugins/index.md
docs/plugins/input-amplifier.md
docs/plugins/input-recording.md
docs/plugins/ir-sensor.md
docs/plugins/measurement-microphone.md
docs/plugins/speaker.md
docs/plugins/starship-check.md
docs/plugins/starship.md
docs/reference/calibration-math.md
docs/reference/configuration.md
docs/reference/hardware-design.md
docs/reference/index.md
docs/reference/signal-analysis.md
tests/__init__.py
tests/conftest.py
tests/fakes.py
tests/test_calibration_status.py
tests/test_collect_legacy_settings.py
tests/test_corrupt_calibrations.py
tests/test_default_state.py
tests/test_dummy_io.py
tests/test_env_vars.py
tests/test_guide.py
tests/test_home.py
tests/test_input_recording_filter.py
tests/test_input_recording_region.py
tests/test_main.py
tests/test_manifest.py
tests/test_migrate_metadata.py
tests/test_migrate_settings.py
tests/test_migrate_thevenin.py
tests/test_migrate_view.py
tests/test_notes.py
tests/test_objects.py
tests/test_paradigm_objects.py
tests/test_paradigm_record.py
tests/test_region_select.py
tests/test_settings.py
tests/test_util.py
tests/test_widgets.py
tools/build_guide.py
tools/make_screenshots.py