https://github.com/jounce/surgeneue
Experimental blank-slate re-implementation of Surge
https://github.com/jounce/surgeneue
Last synced: 3 days ago
JSON representation
Experimental blank-slate re-implementation of Surge
- Host: GitHub
- URL: https://github.com/jounce/surgeneue
- Owner: Jounce
- Created: 2019-11-19T15:13:46.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-12-16T13:32:15.000Z (over 6 years ago)
- Last Synced: 2025-02-22T04:27:28.417Z (over 1 year ago)
- Language: Swift
- Homepage:
- Size: 35.2 KB
- Stars: 4
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SurgeNeue
**SurgeNeue** is an experimental blank-slate re-implementation of the lowest-level building blocks of the **Surge** project.
☣️ CAUTION: You absolutely do NOT want to depend on this project under ANY circumstances! ☢️
## Packages
The idea behind this project is to split Surge up into smaller Swift Packages, with **SurgeCore** providing a common base dependency.
### Low-Level
- **SurgeCore**: Low-level functional core providing essential building blocks.
### Mid-/High-Level
- **SurgeArithmetic**: High-level parallel computation APIs for arithmetic applications.
- **SurgeDSP**: High-level parallel computation APIs for digital signal processing applications (FFT, …).
- **SurgeLinearAlgebra**: High-level parallel computation APIs for Scalar/Vector/Matrix applications.
- **SurgeStochastics**: High-level parallel computation APIs for stochastic applications (random numbers, sampling, …).
- **SurgeStatistics**: High-level parallel computation APIs for statistic applications (mean, variance, …).
- **SurgeTrigonometry**: High-level parallel computation APIs for trigonometry applications (sin, cos, atan, …).
## Architecture
**SurgeNeue** makes heavy use of the [**Protocol Witness**](https://www.youtube.com/watch?v=3BVkbWXcFS4) pattern.
## Goals
### Functional Requirements
- Added support for specifying a custom destination buffer for **externalMutating functions**, where applicable.
- Added support for specifying a custom output type for **external functions**, where applicable.
- Added support for allocation-efficient copy-on-write semantics for **merging functions**, where applicable.
### Non-Functional Requirements
- Most – if not all – of the APIs should be fully documented.
- Most – if not all – of the APIs should be fully tested.
- Most – if not all – of the derivable APIs should get auto-generated \*.
- Most – if not all – of the documentation should get auto-generated \*.
- Most – if not all – of the unit tests should get auto-generated \*.
- Most – if not all – of the benchmarks should get auto-generated \*.
\* via [Sourcery](https://github.com/krzysztofzablocki/Sourcery)