67 lines
2.2 KiB
Markdown
67 lines
2.2 KiB
Markdown
# ECE45-project
|
|
|
|
Audio synthesizer project created by ECE 45 students, written using the MATLAB language and MATLAB GUI
|
|
|
|
## Contributors
|
|
Will add member names shortly
|
|
|
|
## Function Prototypes
|
|
Templates to create your own functions. Please commit code in either src/ (the base directopry) or src/NotWorking (please dont commit in any other subfolder).
|
|
|
|
### Wave generating function
|
|
```
|
|
function x = generate_WAVENAME(amplitude, frequency, phase, fs, duration, duty)
|
|
% GENERATE_WAVENAME: returns a matrix of sampled WAVENAME wave
|
|
|
|
% CONTRIBUTORS:
|
|
% Person1: how you contributed
|
|
% Person2: how you contributed
|
|
% etc
|
|
|
|
% DOCUMENTATION:
|
|
% phase shift is in number of periods
|
|
% fs is the sampling frequency: how many sample points per second
|
|
% duration is time in seconds
|
|
% duty is a number between 0 and 1
|
|
|
|
% initialize local variables from input arguments
|
|
n = fs * duration; % number of samples (length of matrix)
|
|
dt = 1 / fs; % sampling period: time between two sample points
|
|
|
|
% initialize a one dimensional zero matrix to be populated
|
|
x = zeros(1, n);
|
|
|
|
% populate the matrix
|
|
for i = 1:n
|
|
YOUR CODE HERE
|
|
end
|
|
end
|
|
```
|
|
NOTE: duty does not apply to some functions (such as sinusoids)
|
|
|
|
### Envelope function
|
|
```
|
|
function x = envelope(input, fs, period, attack , decay, sustain, release)
|
|
```
|
|
where attack, decay, release are percentages between 0 to 1 of the period
|
|
sustain is the percentage of the amplitude it should sustain for
|
|
**envelope can be pitch or amplitude envelope**
|
|
|
|
|
|
### Filter function
|
|
```
|
|
function output_timedomain = Filter(input_soundin_timedomain, Fs, LOW, MED, HIGH)
|
|
```
|
|
where LOW, MED, HIGH are user-selected variables of any value.
|
|
**output should be in time domain for all functions (new sound)**
|
|
|
|
## Useful websites
|
|
|
|
- [Learning Synths](https://learningsynths.ableton.com)
|
|
- [Learning Synths Playground](https://learningsynths.ableton.com/en/playground)
|
|
- [DIY Synthesisers](https://blog.demofox.org/diy-synthesizer/)
|
|
- [Port Audio (audio I/O library)](http://portaudio.com/)
|
|
- [Synthesis ToolKit in C++](https://ccrma.stanford.edu/software/stk/)
|
|
- [Max](https://cycling74.com/products/max)
|
|
- [Software by Miller Puckette](http://msp.ucsd.edu/software.html)
|