Skip to content

Commit 0e694cd

Browse files
committed
update README
1 parent 8d79e2c commit 0e694cd

1 file changed

Lines changed: 39 additions & 20 deletions

File tree

README.md

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
![NuGet](https://img.shields.io/nuget/dt/NWaves.svg?style=flat)
66
[![Gitter](https://badges.gitter.im/NWaves/community.svg)](https://gitter.im/NWaves/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
77

8-
![logo](https://github.com/ar1st0crat/NWaves/blob/master/assets/logo/logo_draft.bmp)
8+
![logo](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/logo/logo_draft.bmp)
99

10-
NWaves is a .NET library for 1D signal processing focused on audio processing.
10+
NWaves is a .NET DSP library with a lot of audio processing functions.
1111

1212
## Releases
1313

@@ -17,7 +17,7 @@ NWaves is [available on NuGet](https://www.nuget.org/packages/NWaves/):
1717

1818
[Read wiki documentation](https://github.com/ar1st0crat/NWaves/wiki)
1919

20-
New version **0.9.5** is out! Faster, smarter, more features. [Read about changes here](https://github.com/ar1st0crat/NWaves/wiki/Known-bugs-and-changelog)
20+
New version **0.9.6** is out! Faster, smarter, more features. [Read about changes here](https://github.com/ar1st0crat/NWaves/wiki/Known-bugs-and-changelog)
2121

2222
[Notes for non-experts in DSP](https://github.com/ar1st0crat/NWaves/wiki/Notes-for-non~experts-in-DSP)
2323

@@ -35,7 +35,7 @@ New version **0.9.5** is out! Faster, smarter, more features. [Read about change
3535
- [x] BiQuad filters (low-pass, high-pass, band-pass, notch, all-pass, peaking, shelving)
3636
- [x] 1-pole filters (low-pass, high-pass)
3737
- [x] IIR filters (Bessel, Butterworth, Chebyshev I & II, Elliptic, Thiran)
38-
- [x] basic operations (convolution, cross-correlation, rectification, amplification)
38+
- [x] basic operations (convolution, cross-correlation, rectification, amplification, fade / crossfade)
3939
- [x] block convolution (overlap-add / overlap-save offline and online)
4040
- [x] basic filter design & analysis (group delay, zeros/poles, BP, BR, HP from/to LP, SOS, combining filters)
4141
- [x] state space representation of LTI filters
@@ -75,7 +75,18 @@ New version **0.9.5** is out! Faster, smarter, more features. [Read about change
7575

7676
## Philosophy of NWaves
7777

78-
NWaves was initially intended for research, visualizing and teaching basics of DSP and sound programming. All algorithms are coded in C# as simple as possible and were first designed mostly for offline processing (now many online methods are also available). It doesn't mean, though, that the library could be used only in toy projects; yes, it's not written in C/C++ or Asm, but it's not that *very* slow for many purposes either.
78+
NWaves was initially intended for research, visualizing and teaching basics of DSP and sound programming.
79+
80+
Usually, DSP code is quite complicated and difficult to read, because it's full of optimizations (which is actually a very good thing). NWaves project aims in particular at achieving a tradeoff between good understandable code/design and satisfactory performance. Yet, the main purpose of this lib is to offer the DSP codebase that would be:
81+
82+
- easy to read and understand
83+
- easy to incorporate into existing projects
84+
- easy to port to other programming languages and frameworks
85+
- even possibly treated as the DSP/audio textbook.
86+
87+
According to NWaves architecture, there are following general reusable building blocks for all kinds of DSP tasks:
88+
89+
[Transforms](#transforms) | [Filters](#filters-and-effects) | [Signal builders](#signal-builders) | [Feature extractors](#feature-extractors)
7990

8091

8192
## Quickstart
@@ -163,17 +174,17 @@ SignalBuilder lfo =
163174

164175
```C#
165176

166-
WaveFile waveFile;
177+
WaveFile waveContainer;
167178

168179
// load
169180
170181
using (var stream = new FileStream("sample.wav", FileMode.Open))
171182
{
172-
waveFile = new WaveFile(stream);
183+
waveContainer = new WaveFile(stream);
173184
}
174185

175-
DiscreteSignal left = waveFile[Channels.Left];
176-
DiscreteSignal right = waveFile[Channels.Right];
186+
DiscreteSignal left = waveContainer[Channels.Left];
187+
DiscreteSignal right = waveContainer[Channels.Right];
177188

178189

179190
// save
@@ -293,13 +304,16 @@ var spectrogram = stft.Spectrogram(signal);
293304
var ct = new CepstralTransform(24, fftSize: 512);
294305

295306
// complex cepstrum
296-
var cepstrum = ct.Direct(signal);
297-
// or
298307
ct.Direct(input, output);
308+
// or
309+
var delay = ct.ComplexCepstrum(input, output);
299310

300311
// real cepstrum
301312
ct.RealCepstrum(input, output);
302313

314+
// inverse complex cepstrum
315+
ct.InverseComplexCepstrum(output, input, delay: delay);
316+
303317
```
304318

305319
#### Wavelets
@@ -367,6 +381,11 @@ var fullRect = Operation.FullRectify(signal);
367381
// spectral subtraction
368382
369383
var clean = Operation.SpectralSubtract(signal, noise);
384+
385+
// crossfade
386+
387+
var crossfaded = song1.Crossfade(song2, 0.05/*sec*/);
388+
370389
```
371390

372391

@@ -550,7 +569,7 @@ var blockConvolver = OlaBlockConvolver.FromFilter(filter, 4096);
550569

551570
See also OnlineDemoForm code.
552571

553-
![onlinedemo](https://github.com/ar1st0crat/NWaves/blob/master/assets/screenshots/onlinedemo.gif)
572+
![onlinedemo](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/screenshots/onlinedemo.gif)
554573

555574

556575
### Feature extractors
@@ -720,18 +739,18 @@ recorder.StopRecording("temp.wav");
720739

721740
### Samples
722741

723-
![filters](https://github.com/ar1st0crat/NWaves/blob/master/assets/screenshots/Filters.png)
742+
![filters](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/screenshots/Filters.png)
724743

725-
![pitch](https://github.com/ar1st0crat/NWaves/blob/master/assets/screenshots/pitch.png)
744+
![pitch](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/screenshots/pitch.png)
726745

727-
![lpc](https://github.com/ar1st0crat/NWaves/blob/master/assets/screenshots/lpc.png)
746+
![lpc](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/screenshots/lpc.png)
728747

729-
![mfcc](https://github.com/ar1st0crat/NWaves/blob/master/assets/screenshots/mfcc.png)
748+
![mfcc](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/screenshots/mfcc.png)
730749

731-
![spectral](https://github.com/ar1st0crat/NWaves/blob/master/assets/screenshots/spectral.png)
750+
![spectral](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/screenshots/spectral.png)
732751

733-
![effects](https://github.com/ar1st0crat/NWaves/blob/master/assets/screenshots/effects.png)
752+
![effects](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/screenshots/effects.png)
734753

735-
![wavelets](https://github.com/ar1st0crat/NWaves/blob/master/assets/screenshots/wavelets.png)
754+
![wavelets](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/screenshots/wavelets.png)
736755

737-
![adaptive](https://github.com/ar1st0crat/NWaves/blob/master/assets/screenshots/adaptive.png)
756+
![adaptive](https://raw.githubusercontent.com/ar1st0crat/NWaves/master/assets/screenshots/adaptive.png)

0 commit comments

Comments
 (0)