Skip to content

Commit 6dc2eb0

Browse files
finish readme
1 parent c2e6c7c commit 6dc2eb0

2 files changed

Lines changed: 49 additions & 4 deletions

File tree

README.md

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,67 @@
33
By Arden Butterfield, Josh Rohs, Travis J. West & Marcelo M. Wanderley
44
with contributions by Laurent Tarabout
55

6-
Copyright CIRMMT/McGill University, 2026, based on IDMIL's [Digital Audio Workbench]
7-
(https://idmil.github.io/DigitalAudioWorkbench/).
6+
<img src="images/example-canvas.png">
7+
8+
Copyright CIRMMT/McGill University, 2026, based on IDMIL's
9+
[Digital Audio Workbench](https://idmil.github.io/DigitalAudioWorkbench/).
810

911
Sampling, quantization, antialiasing, and delta-sigma modulation are interrelated topics with applications in digital
1012
audio. In these workbenches, we aim to provide a playground that helps students gain intuitive understanding of these
1113
topics, by letting students both see and hear the consequences of their choices of sampling rate, delta-sigma step, or
1214
filter order on a variety of test signals.
1315

16+
Digital Audio Workbench 2 is hosted at https://idmil.github.io/DigitalAudioWorkbench-Tutorial/.
17+
1418
## Overview of Modules
1519

1620
Unlike the original Digital Audio Workbench, this version separates the process into modules, each with its own
1721
parameters and visualizations. The signal can be thought of as cascading through the modules in order, and can be
18-
listened to at multiple steps along the way.
22+
listened to at multiple steps along the way. Modules can be collapsed using the button in the upper right.
1923

2024
### Input Module
2125

2226
Aliasing artifacts created by sampling and quantization are highly dependent on the frequency and timbre of the input
2327
signal, so a variety of signal parameters are provided to the user. Input signals include alias-free saw waves, square
24-
waves, and triangle waves, a variety of other tones generated through additive synthesis, as well as
28+
waves, and triangle waves, a variety of other tones generated through additive synthesis, as well as sample playback
29+
of real recordings.
30+
31+
### Filter Module
32+
33+
Two filters are currently available: a truncated sinc Finite Impulse Response (FIR) filter, and a Butterworth Infinite
34+
Impulse Response (IIR) filter. Both filters are locked to the Nyquist limit, or half of the sampling rate, as the cutoff
35+
frequency. The filter order can be changed by the user, from 0 up to 200. At higher orders, the Butterworth filter
36+
becomes unstable, likely due to an accumulation of floating point errors.
37+
38+
### Sample Rate Module
39+
40+
In this module, the filtered audio from the previous step is sampled at a regular sample rate, as set in Hertz by the
41+
slider.
42+
43+
### Dither/Quantization Module
44+
45+
When audio is converted to digital, it is often stored as a fixed-point binary number, which at low precision can add
46+
additional audible artifacts to the sound. By default, these artifacts sound as inharmonic spikes in the frequency
47+
domain, but these spikes can be smoothed out into flatter noise with the addition of noise before quantization, called
48+
dithering.
49+
50+
### Reconstructed Module
51+
52+
Finally, the digital audio must be played back, which requires a second filter to smooth the waveform between the
53+
samples to prevent imaging.
54+
55+
## Further Developments
56+
57+
Several potential further developments of the Digital Audio Workbench 2 are outlined below.
58+
59+
- Implementation of more filter types, or implementation of a Butterworth filter without the instability at high frequencies.
60+
- Option to decouple the filter frequency from the sampling rate.
61+
- Fix visual aliasing bug at high delta-sigma sampling rates and steps.
62+
- Modernize graphic design.
63+
- Improved code organization. An attempt was made late in the process to refactor the code into module classes, but
64+
was not completed and the changes were left on the `section-refactor` branch. Depending on future directions with the
65+
project, this refactor may or may not make sense.
66+
- Add tooltips to the modules with connections to sampling theory and practice, or suggestions of things for students
67+
to try.
68+
- Screen reader accessibility testing and improvement.
69+
- Find ways to support sample rates that are not divisors of the Web Audio sample rate (96000 Hz).

images/example-canvas.png

66.7 KB
Loading

0 commit comments

Comments
 (0)