From c94201220219ae67937a96d9d5e694d9d496f980 Mon Sep 17 00:00:00 2001 From: Maxw3llGM Date: Tue, 30 May 2023 14:59:47 -0400 Subject: [PATCH 01/57] roughly added work done in the tutorial, changes should be applied to the entire webpage when everything is finished, for know however they will be kept to the tutorial section to avoid breaking the rest. --- images/SH_101.png | Bin 0 -> 395128 bytes index.html | 3 +- tutorials/index.html | 171 +++++++++ tutorials/panel_tutorial.js | 700 ++++++++++++++++++++++++++++++++++ tutorials/slider_tutorial.js | 314 +++++++++++++++ tutorials/styles_tutorial.css | 148 +++++++ tutorials/waves_tutorial.js | 375 ++++++++++++++++++ tutorials/widget_tutorial.js | 196 ++++++++++ 8 files changed, 1906 insertions(+), 1 deletion(-) create mode 100644 images/SH_101.png create mode 100644 tutorials/index.html create mode 100644 tutorials/panel_tutorial.js create mode 100644 tutorials/slider_tutorial.js create mode 100644 tutorials/styles_tutorial.css create mode 100644 tutorials/waves_tutorial.js create mode 100644 tutorials/widget_tutorial.js diff --git a/images/SH_101.png b/images/SH_101.png new file mode 100644 index 0000000000000000000000000000000000000000..f8dcbb7bbddc5b058b92623c2765e6aeb3facbf9 GIT binary patch literal 395128 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 z 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

*t2$ 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

2D04e?2M=)IyFBZ^ELL@z>c-o0(rRer5JPY9 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

sPTZ;X}gaK*#NY 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 z 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%0A_d)t24M>D;OGZaAVr?s^7 zo$|UqOTJf}WpcBni!rf*w>E58le%zVF9$bhVtGg?ZgW!&jGCH_48Mx2#2M3swrlot zp2X4asd+HwMq1Xcu7L3*hYRaeTccJgD}y4lxEvp%TZ3km)n|`-H)vO-dnPTcBpKQr z7{%GNwXUgYdT6M>Ft50Hx&Yi2jXhvcV^cF8PE7T5oSVLLqid@FVtcx9^ut1D+mY$> z$3B>T_qFd9-udCHg}49iZwuf3^FJy4{Wtmi)t?r=^S}P6@Y=Wky71#~{Z--p*S=SH z@AdB&PJQrhq3!5zg0u7IUb^A#-N6 zO%LE~n#O_w$_ZRtkab|vCEfy#s>M%V77s~`<6T1PrvPr75duq}J@j;UlPIMLT*1Jw z7;Yp9pM4VnWLfDxV}N8DY}

pv@RHr5vRL?_UO@>^Sj3nwq#rx?&g$-ovb*~kzm+Y$K=PkaGc&R@H&?sKI^!02E^;WF~85}++4Qh z;ateTh#1`<+5JwraH94iV^o8iN3)=6ewIiYiNUOXW-pW>5h_F!Mjj|By8Ah?tXZ@}jI=3DQkH{U!In^|*&w#*CX zJ9y79h41!6`ti2P-4&R;km z&Xy9?o2XLf%$Y@!u4d-v)VWK9TUK z(iI_V4hiWL#BA}iZCf@HU33NJ--L@stds=eZ997|;KILMj|%MIm6cWL_=(d|heQIQ z25ZmGtt8iy`BW0mqAXfZKY=5hTNz?&6nT&BiNEsx2fpV%&xx1piwvX_DU;(^dw@C3 zLNW?6{c|A7e#?~lyyhU+OGniSw2@^vr>fmi%QgrRmw>N?XzOn!W23NAK_R&f_oF9z481a_Km`p{SlYSz?;NOhF}9Y%&>p6NgD~Zd-rbo)r%J8 zenf1Uw5^EcF}H^r<5HMb@v1_euqq?933J*fM^C1wcdsR*G36xY>7cC{1yd^mfcZvl z!Gx9~+^IF1W-kw1?M%D3Zc2anyZ<(Iocw6|_}j0gpZ)N==||uCv-H;AeJ8#CfBtvj zwO9Y9@Y?sjRe1XcuNHm(+kaW~!J9uSdjGAT6dif*-J(-RKPt4HI$1b=%F{Vfb~`Ql^zJrR&g#R$aJE>UY;bHtzfDOaLx4G`Ew_MvqvNsyo(v>&f+Bt?yg={ z%@W_AfA7}7?-#!G8^8U?O(oD}#3B42{E08j6b`PuKr-n0&4RjtWIkrX zRmol04!0J@9*mJ;cGfh+hui2R=LJqw+64%xO$HEg&i8=aGv5ZEj~Bxf`941!yeuQK zZU_NTfcD$_{Y=t#9da?3aO-pd1TqalET}?{_H0Lnfj$Tr{HAi?bs*(_Q>bU`LO@q<6Qae z;l1AD;>gq};pVhW*vJx3k#!3Q>G>BA zrXT(A^|W+_ks7OsjJUwqQrf+D9}L0!Fg_FM;ByDl>#x5R@S@*={u&}Z;YS3gWO$2I z%a<-)4nK~6_uKyl$I;gU87bY~yQe*T1q{$}=3_Qv?hiP7_PM7pACOQ8?{X!1vzdPK z$x(>@5{R7y>=DGIiFEI8q%XYue5~P_Hfp|rD3_q7J%efG7e99p_$(qFJdBFc7AB7B zQ2CC+2pQ(v5^>CCjP%DF`{thx6vM5&%`# zB7Kpz*YEK>c^P4<7RLEwgbzQsKY=-?HHh~)?CaJ85f0spngJx{6=)cYa*+5hUW|hx z+Lkp`Ic{UVOg48JGmhb-U0q#hkhVmXVJjY6H>3zyG^ATU5PfEhvav6Qml_7nq{Y6; z_mkfe78w-BB4Lzqan9T?3I#^h^x{+W6nQDkID7Qunb-@<(a@O@bqL$L5lyzW1g3HL zCPbJ$tyWdjkc@H%aISOo7>Ge1g;fwleNS!^$zr&#eURa(tgJ{)Emf?~D2yDA!L)M@ z=UV5*qIWV{_4Q3efxShv)IOrBewMcH+z~`tBJbX`=8;Ui{Cg2oK_hUAs4u z+4o}L2bra1NcGOMj^vtPx+yB>Asovb3j^Ng+{5}CtS@znGNx@T>9;dDXc~Q)n)#T7R|k{)fIXwu z!#$zrfQ9DHAsDzWGAH5)=U@YQhZbR$S9^2iat8t$8Duf1sO^yHo`c3#(~VWh2Vfeu z!fdynKAUD^4z}Mj9!;bH%&(X*VxDz3n2mW&*wxW@h`t&1DTCXvc5_+|{*&>uNTh`o zSHRR?>!o6M>Aci+>ce!srxOifY5I#l{=6wBd9H&ra@!awS$O99g>f*`8OBdhSzUM&O3;Xx~PT`mS z#lM#!nFaug*l3WNf=eF&z)LVU^Zri{0AQMpTf}CZf;h>r2z-zbNE8zWpty^}F$`pc zwIU;)Y}je)4@}_!K10a@jtRJbBy$q4lL#ATWDNjvR1}!d*IRhOVOosC(ao5Vl(oWwW9WR7q6PtbvB4)pHCV*7(%!2uI_ z=3HuMu7Sy7yfDN%oi;br!IWmy}&rFvtpti?0EQ7szRc-qFAN&Z!wS{pKnK74qBRGB)DE=n$R-$wb&Yf#d z2M#`wP8@4bbLQ){z9b~668u&yQLZDSnlS2~_U+r#@zZVTK6Z51NMtXJ1p)=GYHMpT*{Eg8RNIbIWG*Z_Zxxlx zLSto)2PM`uXtdrV1Y5XK-Clx8=G4iv(cWCNKsPZ-=yMVbD+s!TXIyvDl!)K8QR}h- zb4JI-^8tIpt9_GkP(zSQ>gIhhl0|Kpnjn$4dr15u5j2X<)ZK>5cH`G#v_VHlN9=HGVqsUcoFi zn>LI>Qd5@WAKz(PwkZwB%|-Uf)CRU8V=>IW)wCposlSu(d! z=Q@`rU~^pVLw#3tx)h(Pjj+G2qk^bd-W(r}Mfms73|L!R7Yy8GoLP(KWKmN(itEIF z2NUZ&1emF5O@w9{&q@)f*>GNcPvCXi2lr@#5vCoZc2(XE46nrs9y8U5iO{6bV-)v%>&I#M##QE{B>n6s zuYrTgreXLV;XCw*korkXkW@u~D=O(^IpHXWwH! z$LGynFv^}DomV<%49)kf((*ZXSFT(*2J9A3(@ExoWkBOKvoOi`)clg!kEoM%4;UDq zF{=b^25BQo%O>WPmZN^3|FE=d$yjlr_)q^YHffYAPjJWk00000NkvXXu0mjf>B@D? literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 516e069..dbe1228 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@

Input Devices and Musical Interaction Laboratory (IDMIL) - By Josh Rohs, Travis J. West & Marcelo M. Wanderley
- with contributions by Eduardo Meneses, Christian Frisson, Erivan Duarte, and others.
+ with contributions by Eduardo Meneses, Christian Frisson, Erivan Duarte, Maxwell Gentili-Morin, and others.
Copyright IDMIL/McGill University, 2020-2021

@@ -43,6 +43,7 @@

Input Devices and Musical Interaction Laboratory (IDMIL) - sampling & aliasing
  • quantization & dither
  • +
  • Tutorial on Sampling and Quantization
  • all panels and sliders (mainly for developers)
  • diff --git a/tutorials/index.html b/tutorials/index.html new file mode 100644 index 0000000..2c0a059 --- /dev/null +++ b/tutorials/index.html @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    +
    +

    + Tutorial 1: Waveform building +

    +
    +
    + +
    +
    +

    + In the left panel, you can see a sine wave with frequency 440 Hz. + Click on the Play Original button at the bottom left to hear how it sounds. +

    +

    + In the right panel, a vertical line at 440 Hz represents the sine wave frequency component. + Remember that a sine (or a cosine) wave has only one frequency component, + in other words, it represents a simple harmonic motion such as the motion of an ideal pendulum or a tuning fork. +

    +
    +
    + + + + +
    +
    + Now use the top right slider. + With the parameters loaded with the application + (Odd harmonics, 1/x amplitude), + add 10 components (harmonics) to the original sine wave. + You can get the same effect by typing 10 in the top right + box and pressing the Update button. Describe what happens + in the left panel. +
    +
    + If you add more components (say, 20), what do you see happening in the left panel? +
    +
    + Now, what do you see when using 20 harmonics and changing the amplitude values to 1/x2? +
    +
    + If you go back to 1/x, change Odd to All, and press the Update button, what happens? Remember that now your highest frequency will be half of the one with only Odd harmonics. + To get a similar maximum frequency value you’ll need to add 40 harmonics in this case. +
    + +
    + +
    +
    +
    +
    +

    + You have just played with approximations of the most + common waves used in analog syntehsizers: square, triangular, and sawtooth waves. + +

    +
    +

    +

      +
    • + Click again on the Play Original button at the bottom left to hear how they sound. Add and remove + partials and check the resulting visuals and sounds. +
    • +
    +

    +

    + You can also play with these variable and see the results in both panels and hear the results. +

    +

    +

      +
    • + For instance, describe what do you hear when using 20 Even harmonics with flat amplitude? + Compare the sonic result to using 20 Odd harmonics and flat amplitude. +
    • +
    +

    +
    +
    +
    +
    Digital Audio Workbench, by Josh Rohs, Travis J. West & Marcelo M. Wanderley
    +
    with contributions by Eduardo Meneses, Christian Frisson, Erivan Duarte and Maxwell Gentili-Morin
    +
    Copyright IDMIL/McGill University, 2020
    +
    +
    +
    + + + + diff --git a/tutorials/panel_tutorial.js b/tutorials/panel_tutorial.js new file mode 100644 index 0000000..98fdfbb --- /dev/null +++ b/tutorials/panel_tutorial.js @@ -0,0 +1,700 @@ +// Canned documentation blurbs +//Panel class. should be extended with a drawPanel method +const log10 = Math.log(10); +class Panel { + constructor(background = "white", stroke = "black", strokeWeight = 1, fill = "black") { + this.background = background; + this.stroke = stroke; + this.strokeWeight = strokeWeight; + this.fill = fill; + this.xAxis= "Time"; + this.yAxis = "Amp"; + this.tickTextSize = 9; + this.numTimeTicks = 8; + this.numFreqTicks = 4; + this.name = "Base Panel Class"; + this.description = "This is the base class that other panels inherit from. If you can see this and you are not reading the source code right now there is probably a problem. Please open an issue or otherwise contact the project maintainers." + } + + setup(p, height, width, settings) { + this.settings = settings; + this.buffer = p.createGraphics(1,1); + this.resize(height, width); + this.bufferInit(); + this.buffer.textFont('Helvetica',20); + this.buffer.textAlign(p.CENTER); + } + + resize(h, w) { + this.buffer.resizeCanvas(w, h); + this.xbezel = Math.max(70, w * 0.1); + this.xbezelLeft = 0.60 * this.xbezel; + this.xbezelRight = 0.40 * this.xbezel; + this.ybezel = Math.max(20, h * 0.1); + this.halfh = h/2; + this.plotHeight = h - 2 * this.ybezel; + this.plotWidth = w - this.xbezel; + this.plotLeft = this.xbezelLeft; // the x coord. of the left side of the plot + this.plotRight = w - this.xbezelRight; // ditto of the right side of the plot + this.plotTop = this.ybezel; // y coord. of top + this.plotBottom = h - this.ybezel; // y coord. of bottom + } + + bufferInit(){ + this.buffer.background(this.background); + this.buffer.fill(this.fill); + this.buffer.stroke(this.stroke); + this.buffer.strokeWeight(this.strokeWeight); + } + + drawStem(x,y,startHeight,ellipseSize =this.ellipseSize){ + let actual_y = y; + y = (ythis.plotBottom)? y= this.plotBottom : y; + this.buffer.line(x, startHeight, x, y); + ellipseSize= (actual_ythis.plotBottom)? 0: ellipseSize; + this.buffer.ellipse(x, y, ellipseSize); + }; + + setbackground(backgroundClr){ this.background = backgroundClr; } + setStroke(strokeClr){ this.stroke = strokeClr; } + setStrokeWeight(strokeWgt){ this.strokeWeight = strokeWgt; } + setFill(fillClr){ this.fill = fillClr; } + + drawBorder(){ + this.buffer.stroke(this.stroke); + this.buffer.line(this.plotLeft, this.plotTop, this.plotLeft, this.plotBottom); + this.buffer.line(this.plotLeft, this.plotTop, this.plotRight, this.plotTop); + this.buffer.line(this.plotRight, this.plotTop, this.plotRight, this.plotBottom); + this.buffer.line(this.plotLeft, this.plotBottom, this.plotRight, this.plotBottom); + } + + drawPanel(){} +} + +class freqPanel extends Panel{ + constructor(){ super(); this.xAxis = "Frequency"; + } + + drawPeak(x,height,base,colour="black"){ + height = Math.abs(height); + this.buffer.fill(colour); + this.buffer.stroke(colour); + this.buffer.beginShape(); + if (xthis.plotRight) return; + let x1=x-2; let x2 = x+2; + x1 = Math.max(x1, this.plotLeft); + x2 = Math.min(x2, this.plotRight); + this.buffer.vertex(x1, base); + this.buffer.vertex(x, this.plotBottom-height); + this.buffer.vertex(x2, base); + this.buffer.vertex(x, base); + this.buffer.endShape(); + this.buffer.stroke(this.stroke); this.buffer.fill(this.fill); + } +} + +function linToDB(a, a_0 = 1) +{ + return 20 * Math.log(a / a_0) / log10; +} + +const midline_doc='The horizontal middle line represents an amplitude of zero. '; +function drawMidLine(panel) { + // panel.buffer.drawingContext.setLineDash([5,5]); + panel.buffer.stroke("gray"); + panel.buffer.line(panel.plotLeft, panel.halfh, panel.plotRight, panel.halfh); + panel.buffer.stroke(panel.stroke); + // panel.buffer.drawingContext.setLineDash([]); +} + +const time_signal_doc='Because this signal approximates a continuous analog signal in our simulation, the signal value is drawn with a simple interpolation scheme. There are currently bugs with this interpolation when zooming in (time zoom > 100%). In addition, visual aliasing may occur when viewing high frequency signals due to the limited number of pixels on the screen acting as a kind of spatial sampling process. This may appear as amplitude modulation in the plot that is not actually present in the signal. Finally, note that the amplitude of the signal is clipped to the size of the panel viewport. This visual clipping happens regardless of whether the signal itself actually exhibits clipping. '; +function drawSignal(panel, signal, zoom = 1) +{ + let pixel_max = panel.plotHeight/2; + let pixel_per_fullscale = pixel_max * panel.settings.ampZoom; + panel.buffer.noFill(); + //TODO: there are some artifacts here due to the way the signal is drawn, especially when zoomed in and/or large amplitude + panel.buffer.beginShape(); + panel.buffer.curveTightness(1.0); + for (let x = 0; x < panel.plotWidth; x++) { + let pixel_amp = pixel_per_fullscale * signal[Math.round(x/panel.settings.timeZoom)]; + let y = panel.halfh - pixel_amp; + y = (ypanel.plotBottom)? y= panel.plotBottom : y=y; panel.buffer.curveTightness(0.0); + panel.buffer.curveVertex(x + panel.plotLeft, y); + } + panel.buffer.endShape(); +} + +const lollipop_doc='Because this signal represents the discrete time output of the analog-to-digital conversion process, it is drawn with a lollipop plot where each stem represents a single sample. '; +function drawDiscreteSignal(panel,signal){ + let gain = panel.plotHeight/2; + let visibleSamples = Math.floor(panel.plotWidth / panel.settings.downsamplingFactor/panel.settings.timeZoom+1); + for (let x = 0; x < visibleSamples; x++) { + let xpos = Math.round(panel.plotLeft + x * panel.settings.downsamplingFactor*panel.settings.timeZoom); + let ypos = panel.halfh - gain * signal[x]*panel.settings.ampZoom; + panel.drawStem(xpos,ypos,panel.halfh); + } +} + +function drawHorizontalTick(panel, text, height, tick_length = 5, side="left") { + panel.buffer.fill(panel.fill); + panel.buffer.textFont('Helvetica', panel.tickTextSize); + panel.buffer.textStyle(panel.buffer.ITALIC); + panel.buffer.strokeWeight(0); + panel.buffer.textAlign(panel.buffer.RIGHT); + let tickStart = panel.plotLeft-tick_length; + let tickEnd = panel.plotLeft; + if (side == "right"){ + panel.buffer.textAlign(panel.buffer.LEFT); + tickEnd = panel.plotRight+tick_length; + tickStart = panel.plotRight; + panel.buffer.text(text, tickEnd+2, height - panel.tickTextSize/2, panel.buffer.width , height + panel.tickTextSize/2); + } + else{ + panel.buffer.text(text, 0, height - panel.tickTextSize/2, tickStart , height + panel.tickTextSize/2); + + } + + panel.buffer.strokeWeight(panel.strokeWeight); + panel.buffer.line(tickStart , height, + tickEnd, height); +} + +function drawVerticalTick(panel, text, x, tick_length = 5) { + if (xpanel.plotRight){return}; + panel.buffer.fill(panel.fill); + panel.buffer.textFont('Helvetica', panel.tickTextSize); + panel.buffer.textAlign(panel.buffer.CENTER); + panel.buffer.textStyle(panel.buffer.ITALIC); + panel.buffer.strokeWeight(0); + // we draw the text in the center of an oversized box centered over the tick + // 20000 pixels should be more than enough for any reasonable tick text + panel.buffer.text(text, x - 10000, panel.plotBottom + tick_length, 20000, panel.ybezel - tick_length); + panel.buffer.strokeWeight(panel.strokeWeight); + panel.buffer.line(x, panel.plotBottom, x, panel.plotBottom + tick_length); +} + +const freq_amp_ticks_doc='Amplitude is plotted on the y-axis. Ticks on the left label the linear amplitude where 1.0 is equal to the maximum amplitude. '; +function drawFreqAmplitudeTicks(panel, pixel_max, num_ticks) { + for (let i = 0; i <= num_ticks; ++i) { + let tick_amp_pixels = i * pixel_max / num_ticks / panel.settings.ampZoom; + drawHorizontalTick(panel, (tick_amp_pixels/pixel_max).toFixed(2), panel.plotBottom - tick_amp_pixels*panel.settings.ampZoom, 5, "right"); + } +} + +const amp_ticks_doc='Amplitude is plotted on the y-axis. Ticks on the left label the linear amplitude where +/- 1.0 is equal to the maximum amplitude. '; +function drawSignalAmplitudeTicks(panel, pixel_max, num_ticks) { + for (let i = 1; i <= num_ticks; ++i) { + let tick_amp_pixels = i * pixel_max / num_ticks / panel.settings.ampZoom; + // let tick_amp_db = linToDB(tick_amp_pixels, pixel_max); + drawHorizontalTick(panel, (tick_amp_pixels/pixel_max).toFixed(2), panel.halfh - tick_amp_pixels*panel.settings.ampZoom,5,"right"); + drawHorizontalTick(panel, (-tick_amp_pixels/pixel_max).toFixed(2), panel.halfh + tick_amp_pixels*panel.settings.ampZoom,5,"right"); + // drawHorizontalTick(panel, tick_amp_db.toFixed(1) + 'dBFS', panel.halfh - tick_amp_pixels*panel.settings.ampZoom,5, "right"); + // drawHorizontalTick(panel, tick_amp_db.toFixed(1) + 'dBFS', panel.halfh + tick_amp_pixels*panel.settings.ampZoom,5, "right"); + } + // drawHorizontalTick(panel, '-inf dBFS', panel.halfh, 5, "right"); + drawHorizontalTick(panel, '0.00', panel.halfh, 5, "right"); +} + +const bin_amp_ticks_doc='Ticks on the right side of this plot label the numerical value assigned to a given amplitude by the simulated analog-to-digital conversion. The labels are written in hexadecimal unless the bit depth is 7 bits or lower, in which case the labels are in binary. '; +function drawSignalBinaryScaling(panel,pixel_max, num_ticks, settings){ + let maxInt = Math.pow(2, settings.bitDepth)-1; + let stepSize = (settings.quantType == "midTread")? 2/(maxInt-1) : 2/(maxInt); + let numTicks = Math.min(num_ticks,maxInt+1); + let tickScale =(maxInt+1)/numTicks; + let pixel_per_fullscale = pixel_max * panel.settings.ampZoom; + // let stepSize = (settings.quantType == "midRise")? 2/(numTicks-1) : 2/(numTicks); + + let val=-1; let tick; let plotVal; + for ( tick =0; tick= panel.plotTop-.1 && y <=panel.plotBottom+.1) { + if (maxInt<255){ + //if under 8 bits, we can write out binary values + drawHorizontalTick(panel, (Math.round(tick*tickScale)).toString(2).padStart(settings.bitDepth,"0"), y,5,"left"); + } + else { + //draw axis labels in hex because of limited space + drawHorizontalTick(panel, "0x" + (tick*tickScale).toString(16).padStart(4,"0"), y,5,"left"); + } + panel.buffer.stroke("gray"); + panel.buffer.drawingContext.setLineDash([5,5]); + panel.buffer.line(panel.plotLeft, y, panel.plotRight, y); + panel.buffer.drawingContext.setLineDash([]); // drawHorizontalTick(panel, tick.toString(2), y,5,"left"); + } + val = val + stepSize*tickScale; + } + +} + +const time_ticks_doc='Time is plotted on the x-axis. '; +function drawTimeTicks(panel, num_ticks, seconds_per_pixel) { + let tick_jump = Math.floor((panel.plotWidth) / num_ticks); + for (let i = 0; i < num_ticks; ++i) { + let x = i * tick_jump; + let text = (x * seconds_per_pixel * 1000).toFixed(1) + ' ms'; + drawVerticalTick(panel, text, x + panel.plotLeft); + } +} + +const freq_ticks_doc='Frequency is plotted on the x-axis. '; +function drawFreqTicks(panel, num_ticks, pixels_per_hz) { + let hz_per_pixel = 1/pixels_per_hz; + let tick_jump = Math.floor((panel.plotWidth) / num_ticks); + tick_jump=panel.plotWidth / num_ticks + for (let i = 0; i < num_ticks; ++i) { + let x = i * tick_jump; + if (xthis.plotRight) return; + let text = (x * hz_per_pixel).toFixed(0) + ' Hz'; + drawVerticalTick(panel, text, x + panel.plotLeft); + } +} + +function drawName(panel){ + panel.buffer.fill(panel.fill); + panel.buffer.strokeWeight(0); + panel.buffer.textAlign(panel.buffer.CENTER); + panel.buffer.textStyle(panel.buffer.NORMAL); + panel.buffer.textFont('Helvetica',12); + let textheight = panel.buffer.textSize() + panel.buffer.textDescent() + 1; + panel.buffer.text (panel.name, panel.plotLeft, panel.plotTop - textheight, panel.plotWidth, panel.ybezel); + panel.buffer.strokeWeight(panel.strokeWeight); +} + +function getColor(num){ + return [num*666%255,num*69%255,num*420%255] +} + +class inputSigPanel extends Panel { + constructor(){ + super(); + this.name="Input Signal Time Domain"; + this.description='This is a straightforward time domain plot of the input signal before "sampling", quantization, and "reconstruction". This signal corresponds with the authentic "analog" input to the simulated analog-to-digital conversion process. ' + + time_signal_doc + time_ticks_doc + amp_ticks_doc + midline_doc; + } + + drawPanel(){ + this.buffer.background(this.background); + drawSignal(this, this.settings.original); + drawMidLine(this); + drawName(this); + drawSignalAmplitudeTicks(this, this.plotHeight/2, 4); + drawTimeTicks(this, this.numTimeTicks/this.settings.timeZoom, 1/(this.settings.timeZoom*this.settings.sampleRate)); + this.drawBorder(); + } +} + +class reconstructedSigPanel extends Panel { + constructor(){ + super(); + this.name="Reconstructed Signal Time Domain"; + this.description='This is a straightforward time domain plot of the signal output from the simulated digital-to-analog conversion process. ' + + time_signal_doc + time_ticks_doc + amp_ticks_doc + midline_doc; + } + + drawPanel(){ + this.buffer.background(this.background); + drawSignal(this, this.settings.reconstructed); + drawMidLine(this); + drawName(this); + drawSignalAmplitudeTicks(this, this.plotHeight/2, 4); + drawTimeTicks(this, this.numTimeTicks/this.settings.timeZoom, 1/(this.settings.timeZoom*this.settings.sampleRate)); + this.drawBorder(); + } +} + +const analytic_frequency_doc='Spikes are drawn at the appropriate frequency and amplitude based on the analytic definition of the signal determined by the frequency, number of harmonics, and harmonic amplitude scaling settings. As such, this plot should accurately reflect the frequency content of the signal without any influence of windowing or other considerations that would affect a discrete time fourier transform. Unfortunately, this approach does not reflect non-linear effects such as quantization and clipping, where applicable. '; +class inputSigFreqPanel extends freqPanel { + constructor(){ + super(); + this.name="Input Signal Frequency Domain"; + this.description='This is a frequency domain representation of the simulated "continuous time" input signal. ' + + analytic_frequency_doc + freq_ticks_doc + passband_doc; + } + + drawPanel(){ + this.buffer.background(this.background); + let pixels_per_hz = this.plotWidth / this.settings.maxVisibleFrequency; + drawPassBand(this); + // let harmInc = 1; + // if (this.settings.harmType =="Odd" || this.settings.harmType == "Even"){ harmInc=2;} + // let harmPeak = 1, harm =1, ampScale = 1; + let harm =1; + while (harm<=this.settings.numHarm){ + let hz = this.settings.harmonicFreqs[harm-1]; + let xpos = (hz * pixels_per_hz + this.plotLeft); + if (xpos > this.plotRight|| xpos< this.plotLeft) break; + // if (this.settings.harmSlope == "lin") {ampScale = 1 - (harm-1)/(this.settings.numHarm)}; + // if (this.settings.harmSlope == "1/x") {ampScale = 1/harmPeak}; + let height = this.settings.ampZoom * this.settings.amplitude * this.plotHeight *this.settings.harmonicAmps[harm-1]; + this.drawPeak(xpos, height, this.plotBottom) + harm+=1; + // (harmPeak ==1 && this.settings.harmType != "Odd")? harmPeak++ : harmPeak +=harmInc; + } + + + this.drawBorder(); + drawFreqTicks(this, this.numFreqTicks, pixels_per_hz); + drawFreqAmplitudeTicks(this, this.plotHeight, 9); + drawName(this); + } + +} + +function magnitude(real, cplx) { + return Math.sqrt(real * real + cplx * cplx); +} + +const fft_doc='Because the FFT is used here, there are visual artifacts introduced by the windowing process, and the frequency resolution of the plot is inherently limited by the size of the FFT. Note that the resolution is not increased when zooming in with the frequency zoom slider. '; +function drawFFT(panel, fft, tick='freq') { + let gain = panel.plotHeight * panel.settings.ampZoom; + let offset = 100; + let hz_per_bin = panel.settings.sampleRate / (fft.length / 2); + // fft.length / 2 because it is an interleaved complex array + // with twice as many elements as it has (complex) numbers + let pixels_per_hz = panel.plotWidth / panel.settings.maxVisibleFrequency; + let pixels_per_bin = pixels_per_hz * hz_per_bin; + let num_bins = Math.round(panel.plotWidth / pixels_per_bin); + let normalize = 4/fft.length; + + panel.buffer.background(panel.background); + panel.buffer.stroke(panel.stroke); + drawPassBand(panel); + panel.buffer.beginShape(); + panel.buffer.vertex(panel.plotLeft, panel.plotBottom); + for (let bin = 0; bin <= num_bins; bin++) { + let xpos = pixels_per_bin * bin + panel.plotLeft; + let ypos = panel.plotBottom - gain * normalize * magnitude(fft[2*bin], fft[2*bin+1]); + panel.buffer.vertex(xpos, ypos); + } + panel.buffer.vertex(panel.plotRight, panel.plotBottom); + panel.buffer.endShape(panel.buffer.CLOSE); + panel.buffer.strokeWeight(panel.strokeWeight); + panel.buffer.stroke(panel.stroke); + panel.drawBorder(); + drawName(panel); + if (tick == 'dirac') + drawDiracDashes(panel); + else + drawFreqTicks(panel, panel.numFreqTicks, pixels_per_hz); + drawFreqAmplitudeTicks(panel, panel.plotHeight, 9); +} + +class inputSigFFTPanel extends freqPanel { + constructor(){ + super(); + this.name = "Input Signal FFT"; + this.description='This plot shows the FFT of the input signal. ' + fft_doc + 'This plot clearly reveals one of the compromises inherent in the simulation; since everything must be represented by the computer, the ideal continuous time input signal must be approximated by a discrete time signal with a sufficiently high sampling rate. '; + } + + drawPanel() { + drawFFT(this, this.settings.originalFreq); + } +} + +class sampledInputFFTPanel extends freqPanel { + constructor(){ + super(); + this.name="Sampled Signal FFT"; + this.description='This plot shows the FFT of the signal output by the simulated analog-to-digital conversion. ' + fft_doc; + } + drawPanel() { + drawFFT(this, this.settings.stuffedFreq, 'dirac'); + } +} + +class reconstructedSigFFTPanel extends freqPanel { + constructor(){ + super(); + this.name="Reconstructed Signal FFT"; + this.description='This plot shows the FFT of the signal output by the simulated digital-to-analog conversion. ' + fft_doc + 'This plot clearly reveals one of the compromises inherent in the simulation; since everything must be represented by the computer, the ideal continuous time output signal must be approximated by a discrete time signal with a sufficiently high sampling rate. '; + } + drawPanel() { + drawFFT(this, this.settings.reconstructedFreq); + } +} + +class impulsePanel extends Panel { + constructor(){ + super() + this.strokeWeight=1; + this.ellipseSize=5; + this.name = "Sampling Signal Time Domain"; + this.description = 'This is a time domain plot of the dirac comb used to sample the input signal. Before quantization, the input signal is multiplied with this dirac comb; this is the "sampling" part of the analog-to-digital conversion process. ' + + time_ticks_doc; + } + drawPanel(){ + let base = this.plotBottom; + let ytop = this.plotTop + 10; + this.buffer.background(this.background); + this.drawBorder(); + + let visibleSamples = Math.floor(this.plotWidth / this.settings.downsamplingFactor/this.settings.timeZoom+1); + for (let x = 0; x < visibleSamples; x++) { + let xpos = this.plotLeft + x * this.settings.downsamplingFactor*this.settings.timeZoom; + this.drawStem(xpos,ytop,base); + } + //I'm not sure dBs make sense here + // drawHorizontalTick(this, '0.0 dB', ytop); + // drawHorizontalTick(this, '-inf dB', base); + drawHorizontalTick(this, '1.0', ytop,5,"right"); + drawHorizontalTick(this, '0.0', base,5,"right"); + + drawTimeTicks(this, this.numTimeTicks, this.settings.timeZoom/(this.settings.sampleRate)); + drawName(this); + } +} + +class impulseFreqPanel extends freqPanel { + constructor(){ + super(); + this.name="Sampling Signal Frequency Domain"; + this.description = 'This is a frequency domain plot of the dirac comb used to sample the input signal. The sampling process causes the frequency content of the input signal to be convolved with the frequency response of the dirac comb, resulting in periodic images of the input signal frequency at mulitples of the sampling frequency. '; + } + drawPanel(){ + this.bufferInit(); + let base = this.plotBottom; + let pixels_per_hz = this.plotWidth / this.settings.maxVisibleFrequency; + let sampleRate = this.settings.sampleRate / this.settings.downsamplingFactor; + let numPeaks = Math.round(this.settings.maxVisibleFrequency / sampleRate); + + for (let peak = 0; peak <= numPeaks; peak++) { + let hz = peak * this.settings.sampleRate / this.settings.downsamplingFactor; + let xpos = hz * pixels_per_hz + this.plotLeft; + let color = getColor(peak); + this.drawPeak(xpos, this.plotHeight, base, color) + let text = peak.toFixed(0) + ' fs'; + drawVerticalTick(this, text, xpos); + } + + drawFreqAmplitudeTicks(this, this.plotHeight, 9); + this.drawBorder(); + drawName(this); + } +} + +class sampledInputPanel extends Panel{ + constructor(){ + super() + this.strokeWeight=1; + this.ellipseSize=5; + this.name="Sampled Signal Time Domain"; + this.description = lollipop_doc + time_ticks_doc + amp_ticks_doc + bin_amp_ticks_doc + midline_doc; + } + + drawPanel(){ + this.buffer.background(this.background); + drawDiscreteSignal(this,this.settings.downsampled) + drawMidLine(this); + drawName(this); + drawSignalAmplitudeTicks(this, this.plotHeight/2, 4); + drawSignalBinaryScaling(this, this.plotHeight/2, 16,this.settings); + + drawTimeTicks(this, this.numTimeTicks/this.settings.timeZoom, 1/(this.settings.timeZoom*this.settings.sampleRate)); + this.drawBorder(); + } +} + +const passband_doc='The frequency range below the nyquist frequency is highlighted by a light grey background. '; +function drawPassBand(panel) { + let sampleRate = panel.settings.sampleRate/panel.settings.downsamplingFactor; + let pixels_per_hz = panel.plotWidth / panel.settings.maxVisibleFrequency; + panel.buffer.strokeWeight(0); + panel.buffer.fill(235); + let passbandcutoff = sampleRate/2; + let passbandpixelwidth = passbandcutoff * pixels_per_hz; + panel.buffer.rect(panel.plotLeft, panel.plotTop, passbandpixelwidth, panel.plotHeight); + panel.buffer.strokeWeight(panel.strokeWeight); + panel.buffer.fill(panel.fill); +} + +function calculateNumImages(settings) { + // calculate the number of spectral images to draw so that the highest frequency + // image's lowest negative harmonic is visible + let sampleRate = settings.sampleRate / settings.downsamplingFactor; + let max_harmonic = settings.harmonicFreqs[settings.harmonicFreqs.length - 1]; + let numImages = 0; + while (numImages * sampleRate - max_harmonic < settings.maxVisibleFrequency) + numImages++; + return numImages; +} + +function drawDiracDashes(panel) { + let sampleRate = panel.settings.sampleRate / panel.settings.downsamplingFactor; + let pixels_per_hz = panel.plotWidth / panel.settings.maxVisibleFrequency; + let numImages = calculateNumImages(panel.settings); + + for (let image = 0; image <= numImages; image++) { + let color = getColor(image); + let imagehz = image * sampleRate; // frequency of a dirac comb harmonic that the input spectrum is convolved with + let xpos = imagehz * pixels_per_hz + panel.plotLeft; + + // draw the dotted line associated with this dirac comb image + panel.buffer.stroke(color); + panel.buffer.drawingContext.setLineDash([5,5]); + panel.buffer.line(xpos, panel.plotTop, xpos, panel.plotBottom); + panel.buffer.drawingContext.setLineDash([]); + + // label the dotted line associated with this dirac comb image + let fstext = imagehz.toFixed(0) + ' Hz'; + drawVerticalTick(panel, fstext, xpos); + } +} + +class sampledInputFreqPanel extends freqPanel{ + constructor(){ + super(); + this.name = "Sampled Signal Frequency Domain"; + this.description='This is a frequency domain representation of the output from the simulated analog-to-digital conversion process. ' + analytic_frequency_doc + 'Notice that periodic images of the input signal are present at multiples of the sampling frequency. These are later removed by the digital-to-analog conversion process, leaving only the frequency content below the Nyquist frequency (whether that content was present in the original signal or introduced by one of the period aliases at multiples of the sampling frequency, i.e. aliasing). ' + + freq_ticks_doc + passband_doc; + } + + drawPanel(){ + this.buffer.background(this.background); + this.buffer.stroke(this.stroke); + drawPassBand(this); + drawDiracDashes(this); + + let base = this.plotBottom; + let sampleRate = this.settings.sampleRate / this.settings.downsamplingFactor; + let pixels_per_hz = this.plotWidth / this.settings.maxVisibleFrequency; + let numImages = calculateNumImages(this.settings); + + for (let image = 0; image <= numImages; image++) { + + let color = getColor(image); + let imagehz = image * sampleRate; // frequency of a dirac comb harmonic that the input spectrum is convolved with + + for (let harm = 1; harm <= this.settings.numHarm; harm++) { + + let hzNegative = imagehz - this.settings.harmonicFreqs[harm-1]; + let hzPositive = imagehz + this.settings.harmonicFreqs[harm-1]; + + if (hzNegative < 0) hzNegative = 0 + (0 - hzNegative); //Reflect at 0. TODO should technically use a new color. + // don't reflect at sampleRate because we are already drawing the negative frequency images + + let positiveHeight = this.settings.ampZoom * this.settings.amplitude*this.plotHeight*this.settings.harmonicAmps[harm-1]; + let negativeHeight = this.settings.ampZoom * this.settings.amplitude*this.plotHeight*this.settings.harmonicAmps[harm-1]; + let xNegative = hzNegative * pixels_per_hz + this.plotLeft; + let xPositive = hzPositive * pixels_per_hz + this.plotLeft; + if (xNegative < this.plotRight) this.drawPeak(xNegative, negativeHeight, base, color); + if (xPositive < this.plotRight) this.drawPeak(xPositive, positiveHeight, base, color); + } + } + + this.drawBorder(); + drawFreqAmplitudeTicks(this, this.plotHeight, 9); + drawName(this); + } +} + +class quantNoisePanel extends Panel{ + constructor(){ + super() + this.strokeWeight=1; + this.ellipseSize=5; + this.name ="Quantization Noise Time Domain"; + this.description = 'This plot shows the difference between the sampled signal before and after quantization, representing the error introduced by the quantization process. ' + + time_ticks_doc + amp_ticks_doc + midline_doc; + } + drawPanel(){ + this.buffer.background(this.background); + drawDiscreteSignal(this, this.settings.quantNoise); + drawMidLine(this); + drawName(this); + drawSignalAmplitudeTicks(this, this.plotHeight/2, 4); + drawTimeTicks(this, this.numTimeTicks/this.settings.timeZoom, 1/(this.settings.timeZoom*this.settings.sampleRate)); + this.drawBorder(); + } +} + +class quantNoiseFFTPanel extends Panel{ + constructor(){ + super(); + this.name ="Quantization Noise FFT"; + this.description = 'This plot shows the frequency content of the error introduced by the quantization process. ' + + fft_doc + freq_ticks_doc + passband_doc; + this.ellipseSize=2; + this.xAxis = "Frequency"; + } + drawPanel(){ + drawFFT(this, this.settings.quantNoiseFreq); + } +} + +class inputPlusSampledPanel extends Panel { + constructor() { + super(); + this.name = "Input with Sampled Signal Time Domain"; + this.description = 'This plot shows the input signal with the sampled signal overlayed on top. See the documentation for the input signal time domain and sampled signal time domain for more information. '; + this.ellipseSize = 5; + } + + drawPanel() { + this.buffer.background(this.background); + drawDiscreteSignal(this,this.settings.downsampled) + this.buffer.stroke("gray"); + drawSignal(this, this.settings.original); + drawMidLine(this); + drawName(this); + drawSignalAmplitudeTicks(this, this.plotHeight/2, 4); + drawSignalBinaryScaling(this, this.plotHeight/2, 16,this.settings); + drawTimeTicks(this, this.numTimeTicks/this.settings.timeZoom, 1/(this.settings.timeZoom*this.settings.sampleRate)); + this.drawBorder(); + } +} +class inputPlusSampledPanel_no_binary extends Panel { + constructor() { + super(); + this.name = "Input with Sampled Signal Time Domain"; + this.description = 'This plot shows the input signal with the sampled signal overlayed on top. See the documentation for the input signal time domain and sampled signal time domain for more information. '; + this.ellipseSize = 5; + } + + drawPanel() { + this.buffer.background(this.background); + drawDiscreteSignal(this,this.settings.downsampled) + this.buffer.stroke("gray"); + drawSignal(this, this.settings.original); + drawMidLine(this); + drawName(this); + drawSignalAmplitudeTicks(this, this.plotHeight/2, 4); + drawTimeTicks(this, this.numTimeTicks/this.settings.timeZoom, 1/(this.settings.timeZoom*this.settings.sampleRate)); + this.drawBorder(); + } +} + +class allSignalsPanel extends Panel { + constructor() { + super(); + this.name = "Input (solid), Sampled (lollipop), Reconstructed (dotted), Time Domain"; + this.description = 'This plot combines the input signal, sampled signal, and reconstructed signal time domain plots. See the documentation for each individual plot for more information. '; + this.ellipseSize = 5; + + } + + drawPanel() { + this.buffer.background(this.background); + drawDiscreteSignal(this,this.settings.downsampled) + drawSignal(this, this.settings.original); + this.buffer.drawingContext.setLineDash([5,5]); + drawSignal(this, this.settings.reconstructed); + this.buffer.drawingContext.setLineDash([]); + drawMidLine(this); + drawName(this); + drawSignalAmplitudeTicks(this, this.plotHeight/2, 4); + drawTimeTicks(this, this.numTimeTicks/this.settings.timeZoom, 1/(this.settings.timeZoom*this.settings.sampleRate)); + this.drawBorder(); + } +} diff --git a/tutorials/slider_tutorial.js b/tutorials/slider_tutorial.js new file mode 100644 index 0000000..3e9514b --- /dev/null +++ b/tutorials/slider_tutorial.js @@ -0,0 +1,314 @@ +class slider{ + button; + slider; + constructor(){ + } + + setup(p, settings){ + // should be overridden to set up the slider + } + + updateValue(p){ + this.settings[this.propName] = this.slider.value(); + this.displayVal = this.calcDisplayVal(); + this.textBox.value(this.displayVal); + this.textLabel.html(this.name+': '); + } + + onEdit(){ + this.updateValue(); + this.settings.render(); + this.settings.p5.draw(); + } + + makeSlider(p){ + this.slider = p.createSlider(this.min, this.max, this.initial, this.step); + this.textLabel = p.createP(); + this.slider.input(this.onEdit.bind(this)); + this.slider.mousePressed(this.onEdit.bind(this)); + this.slider.mouseReleased(this.onEdit.bind(this)); + this.textBox = p.createInput(); + this.textBox.size(300); + this.button = p.createButton("Update"); + // this.button.size(200) + this.button.mousePressed(this.buttonPressed.bind(this)); + this.button.mouseReleased(this.onEdit.bind(this)); + this.slider.parent(this.settings.element.id); + this.button.parent(this.settings.element.id); + this.textBox.parent(this.settings.element.id); + this.textLabel.parent(this.settings.element.id); + } + + resize(x, y, w, p){ + let width = w - 20; + let labelWidth = 140; + width -= labelWidth; + let sliderWidth = width * 0.6; + width -= sliderWidth; + let textboxWidth = width *.4; + width -= textboxWidth; + let buttonWidth = width; + + this.slider.style('width', Math.round(sliderWidth).toString() + "px"); + this.slider.position(x, y); + this.textLabel.position(x + this.slider.width + 10, y - 15); + this.textBox.position(x+this.slider.width + labelWidth,y); + this.textBox.style('width', Math.round(textboxWidth).toString() + "px"); + this.button.position(this.textBox.x+this.textBox.width+5,y); + this.button.style('width', Math.round(buttonWidth).toString() + "px"); + } + buttonPressed(){ + this.slider.value(this.calcSliderVal()); } + + calcSliderVal(){ + // override this with any calculations needed to convert textbox val to slider val (%, etc) + return this.textBox.value(); + } + calcDisplayVal(){ + // override this with any calculations needed to convert stored variable to display val (%, etc) + return this.settings[this.propName]; + } +} + + +class freqSlider extends slider{ + setup(p,settings){ + this.settings = settings; + this.name ="Frequency (Hz)"; + this.propName = "fundFreq"; + this.min = 0; + this.max = this.settings.sampleRate / 4 ; + this.initial = 440; + this.step = 1.0; + this.displayVal = this.initial; + this.makeSlider(p); + } + +} + +class numHarmSlider extends slider{ + setup(p,settings){ + this.settings = settings; + this.name ="Number of harmonics"; + this.propName="numHarm" + this.min = 1; + this.max = 100; + this.initial = 1; + this.step = 1; + this.displayVal = this.initial; + this.oddEvenSel = p.createSelect(); + this.oddEvenSel.option("Odd"); + this.oddEvenSel.option("Even"); + this.oddEvenSel.option("All"); + this.oddEvenSel.selected(this.settings.harmType); + this.oddEvenSel.changed(()=>this.settings.harmType = this.oddEvenSel.value()); + this.oddEvenSel.parent(this.settings.element.id); + + this.slopeSel = p.createSelect(); + this.slopeSel.option("1/x"); + this.slopeSel.option("1/x2"); + this.slopeSel.option("lin"); + this.slopeSel.option("flat"); + this.slopeSel.option("log"); + this.slopeSel.selected(this.settings.harmSlope); + this.slopeSel.changed(()=>this.settings.harmSlope = this.slopeSel.value()); + this.slopeSel.parent(this.settings.element.id); + this.makeSlider(p); + } + resize(x, y, w, p){ + + let width = w - 20; + let labelWidth = 170; + width -= labelWidth; + let sliderWidth = width * 0.5; // slider + dropdowns + width -= sliderWidth; + let dropDownWidth = sliderWidth * .25-10; // Make slider + dropdown the same width as other sliders. + sliderWidth = sliderWidth * .75; // Slider + let textboxWidth = width * 0.42; + let buttonWidth = width*.4; + + this.slider.style('width', Math.round(sliderWidth).toString() + "px"); + this.slider.position(x, y); + this.oddEvenSel.style('width', Math.round(dropDownWidth).toString() + "px"); + this.oddEvenSel.position(x+this.slider.width+10,y); + this.slopeSel.style('width', Math.round(dropDownWidth).toString() + "px"); + this.slopeSel.position(x+this.slider.width+dropDownWidth+10,y); + this.textLabel.position(x + 2*dropDownWidth + this.slider.width + 20, y - 15); + this.textBox.position(x + this.slider.width + 2*dropDownWidth+ labelWidth+10,y); + this.textBox.style('width', Math.round(textboxWidth).toString() + "px"); + this.button.position(this.textBox.x + this.textBox.width,y); + this.button.style('width', Math.round(buttonWidth).toString() + "px"); + } + } + + +class sampleRateSlider extends slider{ + setup(p,settings){ + this.settings = settings; + this.name ="Sample Rate(Hz):"; + this.propName="downsamplingFactor"; + this.min = p.log(3000)/p.log(2); + this.max = p.log(48000)/p.log(2); + this.initial = p.log(48000)/p.log(2); + this.step = 0.1 + this.makeSlider(p); + } + calcDisplayVal(){ + return this.displayVal= Math.round(this.settings.sampleRate / this.settings.downsamplingFactor , 3);// + } + calcSliderVal(){ + return Math.log(this.textBox.value())/Math.log(2); + } + + updateValue(p){ + this.settings.downsamplingFactor = Math.round(WEBAUDIO_MAX_SAMPLERATE/Math.pow(2, this.slider.value())); + this.displayVal = this.calcDisplayVal(); + this.textBox.value(this.displayVal);// + this.textLabel.html(this.name);// + p.round(this.settings.sampleRate / this.settings.downsamplingFactor / 1000, 3) + " kHz") + } +} + +class ditherSlider extends slider { + setup(p,settings){ + this.settings = settings; + this.name ="Dither"; + this.propName="dither"; + this.min = 0.0; + this.max = 1.0; + this.initial = 0.0; + this.step = 0.01; + this.makeSlider(p); + } + +} + +class bitDepthSlider extends slider { + setup(p,settings){ + this.settings = settings; + this.name ="Bit Depth"; + this.propName = "bitDepth"; + this.min = 1; + this.max = BIT_DEPTH_MAX; + this.initial = BIT_DEPTH_MAX; + this.step = 1; + this.makeSlider(p); + } + +} + +class amplitudeSlider extends slider { + setup(p,settings){ + this.settings = settings; + this.propName ="amplitude"; + this.name = "Amplitude"; + this.min = 0.0; + this.max = 5; + this.initial = 1.0; + this.step = 0.01; + this.makeSlider(p); + } + +} + +class antialiasingSlider extends slider { + setup(p, settings){ + this.settings = settings; + this.propName ="antialiasing"; + this.name = "Antialiasing filter order"; + this.min = 0.0; + this.max = 200; + this.initial = 0; + this.step = 10; + this.makeSlider(p); + } +} + +class phaseSlider extends slider{ + setup(p,settings){ + this.settings = settings; + this.propName ="phase"; + this.name = "Phase (Degrees)"; + this.min = 0; + this.max = 360; //pi + this.initial = 0.0; + this.step = 1; //pi/8 + this.makeSlider(p); +} + + calcDisplayVal(){return this.settings[this.propName];} +} +class zoomSlider extends slider{ + calcDisplayVal(){return this.settings[this.propName]*100;} + calcSliderVal(){ + if (isNaN(this.textBox.value())){ + return this.slider.value(); + } + else{ + return this.textBox.value()/100; + } + } +} +class ampZoomSlider extends zoomSlider{ + setup(p,settings){ + this.settings = settings; + this.name ="Amp. Zoom (%)"; + this.propName="ampZoom"; + this.min = .1; + this.max = 4.0; + this.initial =1.0; + this.step = .01; + this.makeSlider(p); +} +} + +const minTimeZoom = .25; +class timeZoomSlider extends zoomSlider{ + setup(p,settings){ + this.settings = settings; + this.propName ="timeZoom"; + this.name = "Time zoom (%)" + this.min = minTimeZoom; + this.max = 3; + this.initial = 1.0; + this.step = .01; + this.makeSlider(p); +} + +} + +const minFreqZoom = 0.5; +class freqZoomSlider extends zoomSlider{ + setup(p,settings){ + this.settings = settings; + this.propName ="freqZoom"; + this.min = minFreqZoom; + this.max = 3; + this.initial = 1.0; + this.step = .01; + this.makeSlider(p); +} +updateValue(p){ + this.settings.freqZoom = this.slider.value(); + this.settings.maxVisibleFrequency = WEBAUDIO_MAX_SAMPLERATE/2/this.settings.freqZoom; + this.textBox.value(this.settings.freqZoom*100); + this.textLabel.html('Freq. zoom (%):'); + } +} + +class freqZoomSlider_tutorial_1 extends zoomSlider{ + setup(p,settings){ + this.settings = settings; + this.propName ="freqZoom"; + this.min = 1.0; + this.max = 3; + this.initial = 2.0; + this.step = .01; + this.makeSlider(p); +} +updateValue(p){ + this.settings.freqZoom = this.slider.value(); + this.settings.maxVisibleFrequency = WEBAUDIO_MAX_SAMPLERATE/2/this.settings.freqZoom; + this.textBox.value(this.settings.freqZoom*100); + this.textLabel.html('Freq. zoom (%):'); + } +} diff --git a/tutorials/styles_tutorial.css b/tutorials/styles_tutorial.css new file mode 100644 index 0000000..6dbd3be --- /dev/null +++ b/tutorials/styles_tutorial.css @@ -0,0 +1,148 @@ +body { + font-family: Cantarell, sans-serif; + line-height: 1.5; + +} + +canvas { + width: 100% !important; + height: 100% !important; + text-align: center; +} + +sup { vertical-align: top; position: relative; top: -0.5em; } + +footer{ + font-family: Cantarell, sans-serif; + padding: 5px 10px 0px; + background : lightgrey; + font-size: 9pt; + color: grey; + text-align: center; +} +.tab_questions { + overflow: hidden; + border: 1px solid #ccc; + background-color: #f1f1f1; +} +.tab_questions button { + background-color: inherit; + float: left; + border: none; + outline: none; + cursor: pointer; + padding: 14px 16px; + transition: 0.3s; + font-size: 17px; +} +.tab_questions_content { + + display: none; + padding: 6px 12px; + border: 1px solid #ccc; + border-top: none; +} + +.previous:hover { + background-color: #ddd; + color: black; +} + +.tabcontent { + margin-left: 120px; + margin-right: 200px; + display: none; +} +.title{ + margin-left: 100px; +} +.intro_text{ + margin-left: 100px; +} +.button { + text-decoration: none; + display: inline-block; + padding: 8px 16px; + background-color: rgb(255, 255, 255); + color: black; + border: solid; + margin-right: 2px; + margin-top: 3px; + +} +.button:hover{ + background-color: #ddd; + color: black; +} +.button_round{ + text-decoration: none; + display: inline-block; + padding: 8px 16px; + background-color: rgb(255, 255, 255); + color: black; + border: 2px solid black; + margin-right: 2px; + + margin-top: 3px; + border-radius: 20px; +} +.button_round:hover{ + background-color: #ddd; + color: black; +} +.button_round.active { + background-color: #ddd; +} + +.next:hover { + background-color: #ddd; + color: black; +} + +.next { + text-decoration: none; + display: inline-block; + padding: 8px 16px; + background-color: rgb(255, 255, 255); + color: black; + border: solid; + box-shadow: -3px -4px grey; +} +.home:hover { + background-color: #ddd; + color: black; +} +.home { + text-decoration: none; + display: inline-block; + padding: 8px 16px; + background-color: rgb(255, 255, 255); + color: black; + border: solid; + box-shadow: -3px -4px grey; +} +#page-container { + position: relative; + min-height: 100vh; +} + +#content-wrap { + padding-bottom: 2.5rem; /* Footer height */ +} +#content-wrap2 { + padding-bottom: 2.5rem; /* Footer height */ +} +#footer { + position: absolute; + bottom: 0; + width: 100%; + height: 2.5rem; /* Footer height */ + +} +#Question{ + padding-bottom: 2.5rem; +} +#Answer{ + padding-bottom: 2.5rem; + margin-left: 100px; +} diff --git a/tutorials/waves_tutorial.js b/tutorials/waves_tutorial.js new file mode 100644 index 0000000..b24a4c1 --- /dev/null +++ b/tutorials/waves_tutorial.js @@ -0,0 +1,375 @@ +/* + + +# The Digital Audio Workbench + +https://idmil.gitlab.io/course-materials/mumt203/interactive-demos + +## Introduction + +The purpose of the digital audio workbench is to illustrate key concepts in +digital audio theory with interactive visualizations of each stage of the +analog-to-digial conversion (ADC) and digital-to-analog conversion (DAC) +processes. These visualizations are inspired by demonstrations using +oscilloscopes and spectrum analyzers to compare the analog signal input into +the ADC process with the analog signal output by the DAC process, e.g. +https://youtu.be/cIQ9IXSUzuM + +By experimenting with the settings of the simulation, numerous key concepts in +digital signal theory can be nicely illustrated, such as aliasing, quantization +error, critical sampling, under and oversampling, and many others. The +interactive interface allows the simulation to be explored freely; users can +examine the signals both visually through numerous graphs, or by listening to +the test signals directly. + +## Implementation + +Since our demonstration takes place purely in the digital domain, we +unfortunately cannot use real continuous time analog inputs and outputs. +Instead, we simulate the ADC-DAC processes in the discrete time domain. The +analog input and output are represented as discrete time signals with a high +sampling rate; at the time of writing, the maximum sampling rate supported +by WebAudio is 96 kHz. + +The ADC process consists of several steps, including antialiasing, sampling, +and quantization. All of these are simulated in our model: antialiasing is +achieved with a windowed sinc FIR lowpass filter of order specified by the +user; sampling is approximated by downsampling the input signal by an +integer factor; and quantization is achieved by multiplying the sampled +signal (which ranges from -1.0 to 1.0) by the maximum integer value possible +given the requested bit depth (e.g. 255 for a bit depth of 8 bits), and then +rounding every sample to the nearest integer. The DAC process is simulated +in turn by zero stuffing and lowpass filtering the sampled and quantized +output of the ADC simultion. + +In summary, the continuous time input is simulated by a 96 kHz discrete time +signal, the sampled output of the ADC process is simulated by a downsampled +and quantized signal, and the continuous time reconstruction output by the +DAC is simulated by upsampling the "sampled" signal back to 96 kHz. In our +tests we have found this model to be reasonable; many key concepts, such as +critical sampling, aliasing, and quantization noise are well represented in +our simulation. + +For more details, the reader is encouraged to peruse the rest of the source +code in this document. Many comments have been included to aid readers who +are unfamiliar with javascript. Any questions you may have about the +implementation of the simulation can only be definitively answered by +understanding the source code, but please feel free to contact the project +maintainers if you have any questions. + +```javascript +*/ + +// `renderWavesImpl` returns an anonymous function that is bound in the widget +// constructor. This is done in order to seperate the implementation of the +// simulation from the other implementation details so that this documentation +// can be more easily accessed. + +const soundTimeSeconds = 1.5; +const fadeTimeSeconds = 0.125; +function renderWavesImpl(settings, fft, p) { return (playback = false) => { + + // if we are not rendering for playback, we are rendering for simulation + let simulation = !playback; + + // select the buffer to render to; playback buffer, or simulation buffer + var original = playback ? settings.original_pb : settings.original; + var reconstructed = playback ? settings.reconstructed_pb : settings.reconstructed; + var stuffed = settings.stuffed; + + // calculate harmonics ------------------------------------------------------ + + // The signal is generated using simple additive synthesis. Because of this, + // the exact frequency content of the signal can be determined a priori based + // on the settings. We generate this information here so that it can be used + // not only by the synthesis process below, but also by several of the graphs + // used to illustrate the frequency domain content of the signal. + + // We only calculate the harmonics for the simulation; it is assumed they will + // already have been calculated earlier when rendering for playback + + if (simulation) { + let harmonic_number = 1; + let harmonic_amplitude = 1; + let invert = 1; + let harmInc = (settings.harmType =="Odd" || settings.harmType == "Even") ? 2 : 1; + + for (let i = 0; simulation && i < settings.numHarm; i++) { + + // the amplitude of each harmonic depends on the harmonic slope setting + if (settings.harmSlope == "lin") harmonic_amplitude = 1 - i/settings.numHarm; + else if (settings.harmSlope == "1/x") harmonic_amplitude = 1/harmonic_number; + else if (settings.harmSlope == "1/x2") harmonic_amplitude = 1/harmonic_number/harmonic_number; + else if (settings.harmSlope == "flat") harmonic_amplitude = 1; + else if (settings.harmSlope == "log") {harmonic_amplitude = Math.exp(-0.1*(harmonic_number-1)); + console.log(harmonic_amplitude)} + + // In case the harmonic slope is 1/x^2 and the harmonic type is "odd", + // by inverting every other harmonic we generate a nice triangle wave. + if (settings.harmSlope =="1/x2" && settings.harmType == "Odd") { + harmonic_amplitude = harmonic_amplitude * invert; + invert *= -1; + } + + // the frequency of each partial is a multiple of the fundamental frequency + settings.harmonicFreqs[i] = harmonic_number*settings.fundFreq; + + // The harmonic amplitude is calculated above according to the harmonic + // slope setting, taking into account the special case for generating a + // triangle. + settings.harmonicAmps[i] = harmonic_amplitude; + + // With harmonic type set to "even" we want the fundamental and even + // harmonics. To achieve this, we increment the harmonic number by 1 after + // the fundamental and by 2 after every other partial. + if (i == 0 && settings.harmType == "Even") harmonic_number += 1; + else harmonic_number += harmInc; + } + } + + // render original wave ----------------------------------------------------- + + // initialize the signal buffer with all zeros (silence) + original.fill(0); + + // For the sample at time `n` in the signal buffer `original`, + // generate the sum of all the partials based on the previously calculated + // frequency and amplitude values. + original.forEach( (_, n, arr) => { + for (let harmonic = 0; harmonic < settings.numHarm; harmonic++) { + + let fundamental_frequency = settings.harmonicFreqs[0]; + let frequency = settings.harmonicFreqs[harmonic]; + let amplitude = settings.harmonicAmps[harmonic]; + + // convert phase offset specified in degrees to radians + let phase_offset = Math.PI / 180 * settings.phase; + + // adjust phase offset so that harmonics are shifted appropriately + let phase_offset_adjusted = phase_offset * frequency / fundamental_frequency; + + let radian_frequency = 2 * Math.PI * frequency; + let phase_increment = radian_frequency / WEBAUDIO_MAX_SAMPLERATE; + let phase = phase_increment * n + phase_offset_adjusted; + + // accumulate the amplitude contribution from the current harmonic + arr[n] += amplitude * Math.sin( phase ); + } + }); + + // linearly search for the maximum amplitude value (easy but not efficient) + let max = 0; + original.forEach( (x, n, y) => {if (x > max) max = x} ); + + // normlize and apply amplitude scaling + original.forEach( (x, n, y) => y[n] = settings.amplitude * x / max ); + + // apply antialiasing filter if applicable ---------------------------------- + + // The antialiasing and reconstruction filters are generated using Fili.js. + // (https://github.com/markert/fili.js/) + let firCalculator = new Fili.FirCoeffs(); + // Fili uses the windowed sinc method to generate FIR lowpass filters. + // Like real antialiasing and reconstruction filters, the filters used in the + // simulation are not ideal brick wall filters, but approximations. + + // apply antialiasing only if the filter order is set + if (settings.antialiasing > 1) { + + // specify the filter parameters; Fs = sampling rate, Fc = cutoff frequency + + // The cutoff for the antialiasing filter is set to the Nyquist frequency + // of the simulated sampling process. The sampling rate of the "sampled" + // signal is WEBAUDIO_MAX_SAMPLERATE / the downsampling factor. This is + // divided by 2 to get the Nyquist frequency. + var filterCoeffs = firCalculator.lowpass( + { order: settings.antialiasing + , Fs: WEBAUDIO_MAX_SAMPLERATE + , Fc: (WEBAUDIO_MAX_SAMPLERATE / settings.downsamplingFactor) / 2 + }); + + // generate the filter + var filter = new Fili.FirFilter(filterCoeffs); + + // apply the filter + original.forEach( (x, n, y) => y[n] = filter.singleStep(x) ); + + // time shift the signal by half the filter order to compensate for the + // delay introduced by the FIR filter + original.forEach( (x, i, arr) => arr[i - settings.antialiasing/2] = x ); + } + + // downsample original wave ------------------------------------------------- + + // zero initialize the reconstruction, and zero stuffed buffers + reconstructed.fill(0); + stuffed.fill(0); + + // generate new signal buffers for the downsampled signal and quantization + // noise whose sizes are initialized according to the currently set + // downsampling factor + if (playback) { + settings.downsampled_pb = new Float32Array(p.round(original.length / settings.downsamplingFactor)); + settings.quantNoise_pb = new Float32Array(p.round(original.length / settings.downsamplingFactor)); + } else { + settings.downsampled = new Float32Array(p.round(original.length / settings.downsamplingFactor)); + settings.quantNoise = new Float32Array(p.round(original.length / settings.downsamplingFactor)); + } + var downsampled = playback ? settings.downsampled_pb : settings.downsampled; + var quantNoise = playback ? settings.quantNoise_pb : settings.quantNoise; + var quantNoiseStuffed = settings.quantNoiseStuffed; + quantNoiseStuffed.fill(0); + + // calculate the maximum integer value representable with the given bit depth + let maxInt = p.pow(2, settings.bitDepth) - 1; + + let stepSize = (settings.quantType == "midTread") ? 2/(maxInt-1) : 2/(maxInt); + + // generate the output of the simulated ADC process by "sampling" (actually + // just downsampling), and quantizing with dither. During this process, we + // also load the buffer for the reconstructed signal with the sampled values; + // this allows us to skip an explicit zero-stuffing step later + + downsampled.forEach( (_, n, arr) => { + + // keep only every kth sample where k is the integer downsampling factor + let y = original[n * settings.downsamplingFactor]; + y = y > 1.0 ? 1.0 : y < -1.0 ? -1.0 : y; // apply clipping + + // if the bit depth is set to the maximum, we skip quantization and dither + if (settings.bitDepth == BIT_DEPTH_MAX) { + + // record the sampled output of the ADC process + arr[n] = y; + + // sparsely fill the reconstruction and zero stuffed buffers to avoid + // having to explicitly zero-stuff + reconstructed[n * settings.downsamplingFactor] = y; + stuffed[n * settings.downsamplingFactor] = y * settings.downsamplingFactor; + return; + } + + // generate dither noise + let dither = (2 * Math.random() - 1) * settings.dither; + + let quantized; + // Add dither signal and quantize. Constrain so we dont clip after dither + switch(settings.quantType) { + case "midTread" : + quantized = stepSize*p.floor(p.constrain((y+dither),-1,0.99)/stepSize + 0.5); + break; + case "midRise" : + quantized = stepSize*(p.floor(p.constrain((y+dither),-1,0.99)/stepSize) + 0.5); + break; + } + + // record the sampled and quantized output of the ADC process with clipping + arr[n] = quantized; + + + // sparsely fill the reconstruction buffer to avoid having to zero-stuff + reconstructed[n * settings.downsamplingFactor] = quantized; + stuffed[n * settings.downsamplingFactor] = quantized * settings.downsamplingFactor; + + // record the quantization error + quantNoise[n] = quantized - y; + quantNoiseStuffed[n * settings.downsamplingFactor] = quantNoise[n]; + }); + + // render reconstructed wave by low pass filtering the zero stuffed array---- + + // specify filter parameters; as before, the cutoff is set to the Nyquist + var filterCoeffs = firCalculator.lowpass( + { order: 200 + , Fs: WEBAUDIO_MAX_SAMPLERATE + , Fc: (WEBAUDIO_MAX_SAMPLERATE / settings.downsamplingFactor) / 2 + }); + + // generate the filter + var filter = new Fili.FirFilter(filterCoeffs); + + // apply the filter + reconstructed.forEach( (x, n, arr) => { + let y = filter.singleStep(x); + + // To retain the correct amplitude, we must multiply the output of the + // filter by the downsampling factor. + arr[n] = y * settings.downsamplingFactor; + }); + + // time shift the signal by half the filter order to compensate for the delay + // introduced by the FIR filter + reconstructed.forEach( (x, n, arr) => arr[n - 100] = x ); + + // render FFTs -------------------------------------------------------------- + // TODO: apply windows? + + // The FFTs of the signals at the various stages of the process are generated + // using fft.js (https://github.com/indutny/fft.js). The call to + // `realTransform()` performs the FFT, and the call to `completeSpectrum` + // fills the upper half of the spectrum, which is otherwise not calculated + // since it is a redundant reflection of the lower half of the spectrum. + + if (simulation) { + fft.realTransform(settings.originalFreq, original); + fft.completeSpectrum(settings.originalFreq); + + fft.realTransform(settings.stuffedFreq, stuffed) + fft.completeSpectrum(settings.reconstructedFreq); + + fft.realTransform(settings.reconstructedFreq, reconstructed) + fft.completeSpectrum(settings.reconstructedFreq); + + fft.realTransform(settings.quantNoiseFreq, quantNoiseStuffed) + fft.completeSpectrum(settings.quantNoiseFreq); + } + + // fade in and out and suppress clipping distortions ------------------------ + + // Audio output is windowed to prevent pops. The envelope is a simple linear + // ramp up at the beginning and linear ramp down at the end. + + if (playback) { + // This normalization makes sure the original signal isn't clipped. + // The output is clipped during the simulation, so this may reduce its peak + // amplitude a bit, but since the clipping adds distortion the perceived + // loudness is relatively the same as the original signal in my testing. + let normalize = settings.amplitude > 1.0 ? settings.amplitude : 1.0; + + // Define the fade function + let fade = (_, n, arr) => { + let fadeTimeSamps = Math.min(fadeTimeSeconds * WEBAUDIO_MAX_SAMPLERATE, arr.length / 2); + // The conditional ensures there is a fade even if the fade time is longer than the signal + if (n < fadeTimeSamps) + arr[n] = (n / fadeTimeSamps) * arr[n] / normalize; + else if (n > arr.length - fadeTimeSamps) + arr[n] = ((arr.length - n) / fadeTimeSamps) * arr[n] / normalize; + else arr[n] = arr[n] / normalize; + }; + + // Apply the fade function + original.forEach(fade); + reconstructed.forEach(fade); + quantNoise.forEach(fade); + } + + +}} +/* +``` +*/ diff --git a/tutorials/widget_tutorial.js b/tutorials/widget_tutorial.js new file mode 100644 index 0000000..f08371d --- /dev/null +++ b/tutorials/widget_tutorial.js @@ -0,0 +1,196 @@ +const BIT_DEPTH_MAX = 16; +const WEBAUDIO_MAX_SAMPLERATE = 96000; +const NUM_COLUMNS = 2; +const MAX_HARMONICS = 100; +function new_widget(panels, sliders, buttons, elem_id, elem_id2, margin_size, width_factor=1.0, height_factor=1.0) { const sketch = p => { + +var element = undefined; +if (elem_id) { + element = document.getElementById(elem_id); + console.log(element.id); + console.log(element.clientHeight, element.clientWidth); + +} +var intro_text = document.getElementsByClassName(elem_id2); +var intro_height = 0; + +var numPanels = panels.length; +var numSliders = sliders.length; +var old_x = 220; +let panelHeight, panelWidth, sliderWidth, sliderHeight, numColumns; +resize(1080, 1920); + +// set display and fftSize to ensure there is enough data to fill the panels when zoomed all the way out +let fftSize = p.pow(2, p.round(p.log(panelWidth/minFreqZoom) / p.log(2))); +let displaySignalSize = p.max(fftSize, panelWidth/minTimeZoom) * 1.1; // 1.1 for 10% extra safety margin +let fft = new FFTJS(fftSize); +var settings = + { amplitude : 1.0 + , fundFreq : 1250 // input signal fundamental freq + , sampleRate : WEBAUDIO_MAX_SAMPLERATE + , downsamplingFactor : 2 + , numHarm : 2 //Number of harmonics + , harmType : "Odd" // Harmonic series to evaluate - Odd, even or all + , harmSlope : "1/x" // Amplitude scaling for harmonics. can be used to create different shapes like saw or square + , harmonicFreqs : new Float32Array(MAX_HARMONICS) //Array storing harmonic frequency in hz + , harmonicAmps : new Float32Array(MAX_HARMONICS) //Array storing harmonic amp (0-1.0) + , phase : 0.0 // phase offset for input signal + , fftSize : fftSize + , bitDepth : BIT_DEPTH_MAX //quantization bit depth + , quantType : "midRise" // type of quantization + , dither : 0.0 // amplitude of white noise added to signal before quantization + , antialiasing : 0 // antialiasing filter order + , original: new Float32Array(displaySignalSize) + , downsampled: new Float32Array(1) // this gets re-inited when rendering waves + , reconstructed: new Float32Array(displaySignalSize) + , stuffed: new Float32Array(displaySignalSize) + , quantNoiseStuffed: new Float32Array(displaySignalSize) + , quantNoise: new Float32Array(displaySignalSize) + , original_pb: new Float32Array(p.floor(WEBAUDIO_MAX_SAMPLERATE*soundTimeSeconds)) + , reconstructed_pb: new Float32Array(p.floor(WEBAUDIO_MAX_SAMPLERATE*soundTimeSeconds)) + , quantNoise_pb: new Float32Array(p.floor(WEBAUDIO_MAX_SAMPLERATE*soundTimeSeconds)) + , originalFreq : fft.createComplexArray() + , stuffedFreq : fft.createComplexArray() + , reconstructedFreq : fft.createComplexArray() + , quantNoiseFreq : fft.createComplexArray() + , snd : undefined + , maxVisibleFrequency : WEBAUDIO_MAX_SAMPLERATE / 2 + , freqZoom : 1.0 //X axis zoom for frequency panels + , ampZoom : 1.0 // Y axis zoom for all panels + , timeZoom: 1.0 // X axis zoom for signal panels + , element : element + , margine_size : margin_size+20 + , p5: undefined + , render : undefined + , play : undefined + }; + +p.settings = settings; + +var renderWaves = renderWavesImpl(settings, fft, p); + +p.setup = function () { + settings.p5 = p; + settings.render = renderWaves; + settings.play = playWave; + + p.createCanvas(p.windowWidth, p.windowHeight); + console.log(p.windowWidth,p.windowHeight) + p.textAlign(p.CENTER); + panels.forEach(panel => panel.setup(p, panelHeight, panelWidth, settings)); + sliders.forEach(slider => slider.setup(p, settings)); + sliders.forEach(slider => slider.updateValue(p)); + renderWaves(); + buttonSetup(); + p.windowResized(); + p.noLoop(); + setTimeout(p.draw, 250); +}; + +p.draw = function() { + panels.forEach(panel => panel.drawPanel()); + panels.forEach( (panel, index) => { + let y = p.floor(index / numColumns) * panelHeight; + let x = p.floor(index % numColumns) * panelWidth; + p.image(panel.buffer, x, y); + }); +}; + +p.windowResized = function() { + console.log(p.windowWidth,p.windowHeight) + let w = width_factor * p.windowWidth - 20; // TODO: get panel bezel somehow instead of hardcoded 20 + let h = height_factor * p.windowHeight - 20; + resize(w, h); + + p.resizeCanvas(w, h); + panels.forEach(panel => panel.resize(panelHeight, panelWidth)); + + intro_text.forEach(element => { + intro_height += element.clientHeight; + }) + let yoffset = panelHeight * p.ceil(numPanels/numColumns) + intro_height + 100; + let sliderPos = new Array(numColumns).fill(1); + sliderPos.forEach((pos,index)=>{ + sliderPos[index] = 150+index*sliderWidth; + }); + + console.log("slider position", sliderPos); + sliders.forEach( (slider, index) => { + let y = yoffset + p.floor(index / numColumns) * sliderHeight; + //let x = p.floor(index % numColumns) * panelWidth; + slider.resize(sliderPos[index % numColumns], y, sliderWidth,p); + }); + let y = yoffset + p.floor((numSliders)/ numColumns) * sliderHeight; + let x = margin_size; + originalButton.position(x + 20, y); + reconstructedButton.position(originalButton.x + originalButton.width * 1.1, originalButton.y); + quantNoiseButton.position(reconstructedButton.x + reconstructedButton.width * 1.1, reconstructedButton.y); + intro_height = 0; +}; + +function resize(w, h) { + if (w < 800 || (numPanels % 2 == 1)) numColumns = 1; + else numColumns = 2; + let panelRows = Math.ceil((numPanels+1)/numColumns); + let sliderRows = Math.ceil((numSliders+1)/numColumns); + panelWidth = w / numColumns; + sliderWidth = w / numColumns - 200; + panelHeight = h / panelRows; + sliderHeight = 200 / sliderRows; + if (sliderHeight < 30) { // keep sliders from getting squished + sliderHeight = 30; + let sliderPanelHeight = sliderHeight * sliderRows; + panelHeight = (h - sliderPanelHeight) / (panelRows - 1); + } +} + +function buttonSetup() { + originalButton = p.createButton("play original"); + originalButton.position(p.width/2 + 10, p.height - p.height / numPanels ); + originalButton.mousePressed( () => { + renderWaves(true); + if (!settings.snd) settings.snd = new (window.AudioContext || window.webkitAudioContext)(); + playWave(settings.original_pb, WEBAUDIO_MAX_SAMPLERATE, settings.snd); + }); + originalButton.parent(element.id); + if(!buttons.includes("original")){ + originalButton.hide(); + } + + reconstructedButton = p.createButton("play reconstructed"); + reconstructedButton.position(originalButton.x + originalButton.width * 1.1, originalButton.y); + reconstructedButton.mousePressed( () => { + renderWaves(true); + if (!settings.snd) settings.snd = new (window.AudioContext || window.webkitAudioContext)(); + playWave(settings.reconstructed_pb, WEBAUDIO_MAX_SAMPLERATE, settings.snd); + }); + reconstructedButton.parent(element.id); + if(!buttons.includes("recon")){ + reconstructedButton.hide(); + } + quantNoiseButton = p.createButton("play quantization noise"); + quantNoiseButton.position(reconstructedButton.x + reconstructedButton.width * 1.1, reconstructedButton.y); + quantNoiseButton.mousePressed( () => { + renderWaves(true); + if (!settings.snd) settings.snd = new (window.AudioContext || window.webkitAudioContext)(); + playWave(settings.quantNoise_pb, WEBAUDIO_MAX_SAMPLERATE, settings.snd); + }); + quantNoiseButton.parent(element.id); + if(!buttons.includes("quant")){ + quantNoiseButton.hide(); + } + +} + +function playWave(wave, sampleRate, audioctx) { + var buffer = audioctx.createBuffer(1, wave.length, sampleRate); + buffer.copyToChannel(wave, 0, 0); + var source = audioctx.createBufferSource(); + source.buffer = buffer; + source.connect(audioctx.destination); + source.start(); +} + + +}; +return new p5(sketch); } // end function new_widget() { var sketch = p => { From 927b54639294c0d60e09b9014119c98d67b87321 Mon Sep 17 00:00:00 2001 From: Maxw3llGM Date: Mon, 17 Jul 2023 13:59:41 -0400 Subject: [PATCH 02/57] First Push to the new repo --- .gitignore | 1 + README.md | 332 ----------------------------------------------------- 2 files changed, 1 insertion(+), 332 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..01275a2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +README.md.backup diff --git a/README.md b/README.md index 5b09483..da9ccd9 100644 --- a/README.md +++ b/README.md @@ -37,337 +37,5 @@ interactive interface allows the simulation to be explored freely; users can examine the signals both visually through numerous graphs, or by listening to the test signals directly. -## Implementation -Since our demonstration takes place purely in the digital domain, we -unfortunately cannot use real continuous time analog inputs and outputs. -Instead, we simulate the ADC-DAC processes in the discrete time domain. The -analog input and output are represented as discrete time signals with a high -sampling rate; at the time of writing, the maximum sampling rate supported -by WebAudio is 96 kHz. -The ADC process consists of several steps, including antialiasing, sampling, -and quantization. All of these are simulated in our model: antialiasing is -achieved with a windowed sinc FIR lowpass filter of order specified by the -user; sampling is approximated by downsampling the input signal by an -integer factor; and quantization is achieved by multiplying the sampled -signal (which ranges from -1.0 to 1.0) by the maximum integer value possible -given the requested bit depth (e.g. 255 for a bit depth of 8 bits), and then -rounding every sample to the nearest integer. The DAC process is simulated -in turn by zero stuffing and lowpass filtering the sampled and quantized -output of the ADC simultion. - -In summary, the continuous time input is simulated by a 96 kHz discrete time -signal, the sampled output of the ADC process is simulated by a downsampled -and quantized signal, and the continuous time reconstruction output by the -DAC is simulated by upsampling the "sampled" signal back to 96 kHz. In our -tests we have found this model to be reasonable; many key concepts, such as -critical sampling, aliasing, and quantization noise are well represented in -our simulation. - -For more details, the reader is encouraged to peruse the rest of the source -code in this document. Many comments have been included to aid readers who -are unfamiliar with javascript. Any questions you may have about the -implementation of the simulation can only be definitively answered by -understanding the source code, but please feel free to contact the project -maintainers if you have any questions. - -```javascript -*/ - -// `renderWavesImpl` returns an anonymous function that is bound in the widget -// constructor. This is done in order to seperate the implementation of the -// simulation from the other implementation details so that this documentation -// can be more easily accessed. - -const soundTimeSeconds = 1.5; -const fadeTimeSeconds = 0.125; -function renderWavesImpl(settings, fft, p) { return (playback = false) => { - - // if we are not rendering for playback, we are rendering for simulation - let simulation = !playback; - - // select the buffer to render to; playback buffer, or simulation buffer - var original = playback ? settings.original_pb : settings.original; - var reconstructed = playback ? settings.reconstructed_pb : settings.reconstructed; - var stuffed = settings.stuffed; - - // calculate harmonics ------------------------------------------------------ - - // The signal is generated using simple additive synthesis. Because of this, - // the exact frequency content of the signal can be determined a priori based - // on the settings. We generate this information here so that it can be used - // not only by the synthesis process below, but also by several of the graphs - // used to illustrate the frequency domain content of the signal. - - // We only calculate the harmonics for the simulation; it is assumed they will - // already have been calculated earlier when rendering for playback - - if (simulation) { - let harmonic_number = 1; - let harmonic_amplitude = 1; - let invert = 1; - let harmInc = (settings.harmType =="Odd" || settings.harmType == "Even") ? 2 : 1; - - for (let i = 0; simulation && i < settings.numHarm; i++) { - - // the amplitude of each harmonic depends on the harmonic slope setting - if (settings.harmSlope == "lin") harmonic_amplitude = 1 - i/settings.numHarm; - else if (settings.harmSlope == "1/x") harmonic_amplitude = 1/harmonic_number; - else if (settings.harmSlope == "1/x2") harmonic_amplitude = 1/harmonic_number/harmonic_number; - else if (settings.harmSlope == "flat") harmonic_amplitude = 1; - - // In case the harmonic slope is 1/x^2 and the harmonic type is "odd", - // by inverting every other harmonic we generate a nice triangle wave. - if (settings.harmSlope =="1/x2" && settings.harmType == "Odd") { - harmonic_amplitude = harmonic_amplitude * invert; - invert *= -1; - } - - // the frequency of each partial is a multiple of the fundamental frequency - settings.harmonicFreqs[i] = harmonic_number*settings.fundFreq; - - // The harmonic amplitude is calculated above according to the harmonic - // slope setting, taking into account the special case for generating a - // triangle. - settings.harmonicAmps[i] = harmonic_amplitude; - - // With harmonic type set to "even" we want the fundamental and even - // harmonics. To achieve this, we increment the harmonic number by 1 after - // the fundamental and by 2 after every other partial. - if (i == 0 && settings.harmType == "Even") harmonic_number += 1; - else harmonic_number += harmInc; - } - } - - // render original wave ----------------------------------------------------- - - // initialize the signal buffer with all zeros (silence) - original.fill(0); - - // For the sample at time `n` in the signal buffer `original`, - // generate the sum of all the partials based on the previously calculated - // frequency and amplitude values. - original.forEach( (_, n, arr) => { - for (let harmonic = 0; harmonic < settings.numHarm; harmonic++) { - - let fundamental_frequency = settings.harmonicFreqs[0]; - let frequency = settings.harmonicFreqs[harmonic]; - let amplitude = settings.harmonicAmps[harmonic]; - - // convert phase offset specified in degrees to radians - let phase_offset = Math.PI / 180 * settings.phase; - - // adjust phase offset so that harmonics are shifted appropriately - let phase_offset_adjusted = phase_offset * frequency / fundamental_frequency; - - let radian_frequency = 2 * Math.PI * frequency; - let phase_increment = radian_frequency / WEBAUDIO_MAX_SAMPLERATE; - let phase = phase_increment * n + phase_offset_adjusted; - - // accumulate the amplitude contribution from the current harmonic - arr[n] += amplitude * Math.sin( phase ); - } - }); - - // linearly search for the maximum amplitude value (easy but not efficient) - let max = 0; - original.forEach( (x, n, y) => {if (x > max) max = x} ); - - // normlize and apply amplitude scaling - original.forEach( (x, n, y) => y[n] = settings.amplitude * x / max ); - - // apply antialiasing filter if applicable ---------------------------------- - - // The antialiasing and reconstruction filters are generated using Fili.js. - // (https://github.com/markert/fili.js/) - let firCalculator = new Fili.FirCoeffs(); - // Fili uses the windowed sinc method to generate FIR lowpass filters. - // Like real antialiasing and reconstruction filters, the filters used in the - // simulation are not ideal brick wall filters, but approximations. - - // apply antialiasing only if the filter order is set - if (settings.antialiasing > 1) { - - // specify the filter parameters; Fs = sampling rate, Fc = cutoff frequency - - // The cutoff for the antialiasing filter is set to the Nyquist frequency - // of the simulated sampling process. The sampling rate of the "sampled" - // signal is WEBAUDIO_MAX_SAMPLERATE / the downsampling factor. This is - // divided by 2 to get the Nyquist frequency. - var filterCoeffs = firCalculator.lowpass( - { order: settings.antialiasing - , Fs: WEBAUDIO_MAX_SAMPLERATE - , Fc: (WEBAUDIO_MAX_SAMPLERATE / settings.downsamplingFactor) / 2 - }); - - // generate the filter - var filter = new Fili.FirFilter(filterCoeffs); - - // apply the filter - original.forEach( (x, n, y) => y[n] = filter.singleStep(x) ); - - // time shift the signal by half the filter order to compensate for the - // delay introduced by the FIR filter - original.forEach( (x, i, arr) => arr[i - settings.antialiasing/2] = x ); - } - - // downsample original wave ------------------------------------------------- - - // zero initialize the reconstruction, and zero stuffed buffers - reconstructed.fill(0); - stuffed.fill(0); - - // generate new signal buffers for the downsampled signal and quantization - // noise whose sizes are initialized according to the currently set - // downsampling factor - if (playback) { - settings.downsampled_pb = new Float32Array(p.round(original.length / settings.downsamplingFactor)); - settings.quantNoise_pb = new Float32Array(p.round(original.length / settings.downsamplingFactor)); - } else { - settings.downsampled = new Float32Array(p.round(original.length / settings.downsamplingFactor)); - settings.quantNoise = new Float32Array(p.round(original.length / settings.downsamplingFactor)); - } - var downsampled = playback ? settings.downsampled_pb : settings.downsampled; - var quantNoise = playback ? settings.quantNoise_pb : settings.quantNoise; - var quantNoiseStuffed = settings.quantNoiseStuffed; - quantNoiseStuffed.fill(0); - - // calculate the maximum integer value representable with the given bit depth - let maxInt = p.pow(2, settings.bitDepth) - 1; - - let stepSize = (settings.quantType == "midTread") ? 2/(maxInt-1) : 2/(maxInt); - - // generate the output of the simulated ADC process by "sampling" (actually - // just downsampling), and quantizing with dither. During this process, we - // also load the buffer for the reconstructed signal with the sampled values; - // this allows us to skip an explicit zero-stuffing step later - - downsampled.forEach( (_, n, arr) => { - - // keep only every kth sample where k is the integer downsampling factor - let y = original[n * settings.downsamplingFactor]; - y = y > 1.0 ? 1.0 : y < -1.0 ? -1.0 : y; // apply clipping - - // if the bit depth is set to the maximum, we skip quantization and dither - if (settings.bitDepth == BIT_DEPTH_MAX) { - - // record the sampled output of the ADC process - arr[n] = y; - - // sparsely fill the reconstruction and zero stuffed buffers to avoid - // having to explicitly zero-stuff - reconstructed[n * settings.downsamplingFactor] = y; - stuffed[n * settings.downsamplingFactor] = y * settings.downsamplingFactor; - return; - } - - // generate dither noise - let dither = (2 * Math.random() - 1) * settings.dither; - - let quantized; - // Add dither signal and quantize. Constrain so we dont clip after dither - switch(settings.quantType) { - case "midTread" : - quantized = stepSize*p.floor(p.constrain((y+dither),-1,0.99)/stepSize + 0.5); - break; - case "midRise" : - quantized = stepSize*(p.floor(p.constrain((y+dither),-1,0.99)/stepSize) + 0.5); - break; - } - - // record the sampled and quantized output of the ADC process with clipping - arr[n] = quantized; - - - // sparsely fill the reconstruction buffer to avoid having to zero-stuff - reconstructed[n * settings.downsamplingFactor] = quantized; - stuffed[n * settings.downsamplingFactor] = quantized * settings.downsamplingFactor; - - // record the quantization error - quantNoise[n] = quantized - y; - quantNoiseStuffed[n * settings.downsamplingFactor] = quantNoise[n]; - }); - - // render reconstructed wave by low pass filtering the zero stuffed array---- - - // specify filter parameters; as before, the cutoff is set to the Nyquist - var filterCoeffs = firCalculator.lowpass( - { order: 200 - , Fs: WEBAUDIO_MAX_SAMPLERATE - , Fc: (WEBAUDIO_MAX_SAMPLERATE / settings.downsamplingFactor) / 2 - }); - - // generate the filter - var filter = new Fili.FirFilter(filterCoeffs); - - // apply the filter - reconstructed.forEach( (x, n, arr) => { - let y = filter.singleStep(x); - - // To retain the correct amplitude, we must multiply the output of the - // filter by the downsampling factor. - arr[n] = y * settings.downsamplingFactor; - }); - - // time shift the signal by half the filter order to compensate for the delay - // introduced by the FIR filter - reconstructed.forEach( (x, n, arr) => arr[n - 100] = x ); - - // render FFTs -------------------------------------------------------------- - // TODO: apply windows? - - // The FFTs of the signals at the various stages of the process are generated - // using fft.js (https://github.com/indutny/fft.js). The call to - // `realTransform()` performs the FFT, and the call to `completeSpectrum` - // fills the upper half of the spectrum, which is otherwise not calculated - // since it is a redundant reflection of the lower half of the spectrum. - - if (simulation) { - fft.realTransform(settings.originalFreq, original); - fft.completeSpectrum(settings.originalFreq); - - fft.realTransform(settings.stuffedFreq, stuffed) - fft.completeSpectrum(settings.reconstructedFreq); - - fft.realTransform(settings.reconstructedFreq, reconstructed) - fft.completeSpectrum(settings.reconstructedFreq); - - fft.realTransform(settings.quantNoiseFreq, quantNoiseStuffed) - fft.completeSpectrum(settings.quantNoiseFreq); - } - - // fade in and out and suppress clipping distortions ------------------------ - - // Audio output is windowed to prevent pops. The envelope is a simple linear - // ramp up at the beginning and linear ramp down at the end. - - if (playback) { - // This normalization makes sure the original signal isn't clipped. - // The output is clipped during the simulation, so this may reduce its peak - // amplitude a bit, but since the clipping adds distortion the perceived - // loudness is relatively the same as the original signal in my testing. - let normalize = settings.amplitude > 1.0 ? settings.amplitude : 1.0; - - // Define the fade function - let fade = (_, n, arr) => { - let fadeTimeSamps = Math.min(fadeTimeSeconds * WEBAUDIO_MAX_SAMPLERATE, arr.length / 2); - // The conditional ensures there is a fade even if the fade time is longer than the signal - if (n < fadeTimeSamps) - arr[n] = (n / fadeTimeSamps) * arr[n] / normalize; - else if (n > arr.length - fadeTimeSamps) - arr[n] = ((arr.length - n) / fadeTimeSamps) * arr[n] / normalize; - else arr[n] = arr[n] / normalize; - }; - - // Apply the fade function - original.forEach(fade); - reconstructed.forEach(fade); - quantNoise.forEach(fade); - } - - -}} -/* -``` -*/ From 7a6316a94867bf2904ad0ae1306037a0561d9259 Mon Sep 17 00:00:00 2001 From: Maxw3llGM Date: Fri, 28 Jul 2023 15:35:54 -0400 Subject: [PATCH 03/57] added the rest of the tutorials, must add text and modify the panels so as to have uneven panel values be 2 per row until the final row --- tutorials/index.html | 7 +- tutorials/styles_tutorial.css | 2 + tutorials/tutorial2.html | 160 ++++++++++++++++++++++++++++++++ tutorials/tutorial3.html | 163 ++++++++++++++++++++++++++++++++ tutorials/tutorial4.html | 163 ++++++++++++++++++++++++++++++++ tutorials/tutorial5.html | 170 ++++++++++++++++++++++++++++++++++ tutorials/tutorial6.html | 164 ++++++++++++++++++++++++++++++++ tutorials/tutorial7.html | 167 +++++++++++++++++++++++++++++++++ tutorials/tutorial8.html | 170 ++++++++++++++++++++++++++++++++++ tutorials/widget_tutorial.js | 25 ++++- 10 files changed, 1186 insertions(+), 5 deletions(-) create mode 100644 tutorials/tutorial2.html create mode 100644 tutorials/tutorial3.html create mode 100644 tutorials/tutorial4.html create mode 100644 tutorials/tutorial5.html create mode 100644 tutorials/tutorial6.html create mode 100644 tutorials/tutorial7.html create mode 100644 tutorials/tutorial8.html diff --git a/tutorials/index.html b/tutorials/index.html index 2c0a059..91f3d47 100644 --- a/tutorials/index.html +++ b/tutorials/index.html @@ -20,7 +20,6 @@
    @@ -127,9 +126,9 @@

    -
    Digital Audio Workbench, by Josh Rohs, Travis J. West & Marcelo M. Wanderley
    -
    with contributions by Eduardo Meneses, Christian Frisson, Erivan Duarte and Maxwell Gentili-Morin
    -
    Copyright IDMIL/McGill University, 2020
    +
    Digital Audio Workbench Tutorial, by Maxwell Gentili-Morin & Marcelo M. Wanderley
    +
    based on the Digital Audio Workbench
    +
    Copyright IDMIL/McGill University, 2023
    diff --git a/tutorials/styles_tutorial.css b/tutorials/styles_tutorial.css index 6dbd3be..4e5f198 100644 --- a/tutorials/styles_tutorial.css +++ b/tutorials/styles_tutorial.css @@ -16,6 +16,8 @@ footer{ font-family: Cantarell, sans-serif; padding: 5px 10px 0px; background : lightgrey; + bottom: 0; + left: 0; font-size: 9pt; color: grey; text-align: center; diff --git a/tutorials/tutorial2.html b/tutorials/tutorial2.html new file mode 100644 index 0000000..9e9fba7 --- /dev/null +++ b/tutorials/tutorial2.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +
    +
    +

    + Tutorial 2: Sampling +

    +
    +
    + +
    +
    +

    + In the left panel, you can see a sine wave with frequency 440 Hz. + Click on the Play Original button at the bottom left to hear how it sounds. +

    +

    + In the right panel, a vertical line at 440 Hz represents the sine wave frequency component. + Remember that a sine (or a cosine) wave has only one frequency component, + in other words, it represents a simple harmonic motion such as the motion of an ideal pendulum or a tuning fork. +

    +
    +
    + + + + +
    +
    + Now use the top right slider. + With the parameters loaded with the application + (Odd harmonics, 1/x amplitude), + add 10 components (harmonics) to the original sine wave. + You can get the same effect by typing 10 in the top right + box and pressing the Update button. Describe what happens + in the left panel. +
    +
    + If you add more components (say, 20), what do you see happening in the left panel? +
    +
    + Now, what do you see when using 20 harmonics and changing the amplitude values to 1/x2? +
    +
    + If you go back to 1/x, change Odd to All, and press the Update button, what happens? Remember that now your highest frequency will be half of the one with only Odd harmonics. + To get a similar maximum frequency value you’ll need to add 40 harmonics in this case. +
    +
    + +
    +
    +
    +
    +

    + You have just played with approximations of the most + common waves used in analog syntehsizers: square, triangular, and sawtooth waves. + +

    +
    +

    +

      +
    • + Click again on the Play Original button at the bottom left to hear how they sound. Add and remove + partials and check the resulting visuals and sounds. +
    • +
    +

    +

    + You can also play with these variable and see the results in both panels and hear the results. +

    +

    +

      +
    • + For instance, describe what do you hear when using 20 Even harmonics with flat amplitude? + Compare the sonic result to using 20 Odd harmonics and flat amplitude. +
    • +
    +

    +
    + +
    +
    Digital Audio Workbench Tutorial, by Maxwell Gentili-Morin & Marcelo M. Wanderley
    +
    based on the Digital Audio Workbench
    +
    Copyright IDMIL/McGill University, 2023
    +
    + + + diff --git a/tutorials/tutorial3.html b/tutorials/tutorial3.html new file mode 100644 index 0000000..771edae --- /dev/null +++ b/tutorials/tutorial3.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +
    +
    +

    + Tutorial 3: Sampling a Waveform +

    +
    +
    + +
    +
    +

    + In the left panel, you can see a sine wave with frequency 440 Hz. + Click on the Play Original button at the bottom left to hear how it sounds. +

    +

    + In the right panel, a vertical line at 440 Hz represents the sine wave frequency component. + Remember that a sine (or a cosine) wave has only one frequency component, + in other words, it represents a simple harmonic motion such as the motion of an ideal pendulum or a tuning fork. +

    +
    +
    + + + + +
    +
    + Now use the top right slider. + With the parameters loaded with the application + (Odd harmonics, 1/x amplitude), + add 10 components (harmonics) to the original sine wave. + You can get the same effect by typing 10 in the top right + box and pressing the Update button. Describe what happens + in the left panel. +
    +
    + If you add more components (say, 20), what do you see happening in the left panel? +
    +
    + Now, what do you see when using 20 harmonics and changing the amplitude values to 1/x2? +
    +
    + If you go back to 1/x, change Odd to All, and press the Update button, what happens? Remember that now your highest frequency will be half of the one with only Odd harmonics. + To get a similar maximum frequency value you’ll need to add 40 harmonics in this case. +
    +
    + +
    +
    +
    +
    +

    + You have just played with approximations of the most + common waves used in analog syntehsizers: square, triangular, and sawtooth waves. + +

    +
    +

    +

      +
    • + Click again on the Play Original button at the bottom left to hear how they sound. Add and remove + partials and check the resulting visuals and sounds. +
    • +
    +

    +

    + You can also play with these variable and see the results in both panels and hear the results. +

    +

    +

      +
    • + For instance, describe what do you hear when using 20 Even harmonics with flat amplitude? + Compare the sonic result to using 20 Odd harmonics and flat amplitude. +
    • +
    +

    +
    + +
    +
    Digital Audio Workbench Tutorial, by Maxwell Gentili-Morin & Marcelo M. Wanderley
    +
    based on the Digital Audio Workbench
    +
    Copyright IDMIL/McGill University, 2023
    +
    + + + diff --git a/tutorials/tutorial4.html b/tutorials/tutorial4.html new file mode 100644 index 0000000..3dd345a --- /dev/null +++ b/tutorials/tutorial4.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +
    +
    +

    + Tutorial 4: Waveform Reconstruction +

    +
    +
    + +
    +
    +

    + In the left panel, you can see a sine wave with frequency 440 Hz. + Click on the Play Original button at the bottom left to hear how it sounds. +

    +

    + In the right panel, a vertical line at 440 Hz represents the sine wave frequency component. + Remember that a sine (or a cosine) wave has only one frequency component, + in other words, it represents a simple harmonic motion such as the motion of an ideal pendulum or a tuning fork. +

    +
    +
    + + + + +
    +
    + Now use the top right slider. + With the parameters loaded with the application + (Odd harmonics, 1/x amplitude), + add 10 components (harmonics) to the original sine wave. + You can get the same effect by typing 10 in the top right + box and pressing the Update button. Describe what happens + in the left panel. +
    +
    + If you add more components (say, 20), what do you see happening in the left panel? +
    +
    + Now, what do you see when using 20 harmonics and changing the amplitude values to 1/x2? +
    +
    + If you go back to 1/x, change Odd to All, and press the Update button, what happens? Remember that now your highest frequency will be half of the one with only Odd harmonics. + To get a similar maximum frequency value you’ll need to add 40 harmonics in this case. +
    +
    + +
    +
    +
    +
    +

    + You have just played with approximations of the most + common waves used in analog syntehsizers: square, triangular, and sawtooth waves. + +

    +
    +

    +

      +
    • + Click again on the Play Original button at the bottom left to hear how they sound. Add and remove + partials and check the resulting visuals and sounds. +
    • +
    +

    +

    + You can also play with these variable and see the results in both panels and hear the results. +

    +

    +

      +
    • + For instance, describe what do you hear when using 20 Even harmonics with flat amplitude? + Compare the sonic result to using 20 Odd harmonics and flat amplitude. +
    • +
    +

    +
    + + +
    +
    Digital Audio Workbench Tutorial, by Maxwell Gentili-Morin & Marcelo M. Wanderley
    +
    based on the Digital Audio Workbench
    +
    Copyright IDMIL/McGill University, 2023
    +
    + + + diff --git a/tutorials/tutorial5.html b/tutorials/tutorial5.html new file mode 100644 index 0000000..aa95c1c --- /dev/null +++ b/tutorials/tutorial5.html @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +
    +
    +

    + Tutorial 1: Waveform building +

    +
    +
    + +
    +
    +

    + In the left panel, you can see a sine wave with frequency 440 Hz. + Click on the Play Original button at the bottom left to hear how it sounds. +

    +

    + In the right panel, a vertical line at 440 Hz represents the sine wave frequency component. + Remember that a sine (or a cosine) wave has only one frequency component, + in other words, it represents a simple harmonic motion such as the motion of an ideal pendulum or a tuning fork. +

    +
    +
    + + + + +
    +
    + Now use the top right slider. + With the parameters loaded with the application + (Odd harmonics, 1/x amplitude), + add 10 components (harmonics) to the original sine wave. + You can get the same effect by typing 10 in the top right + box and pressing the Update button. Describe what happens + in the left panel. +
    +
    + If you add more components (say, 20), what do you see happening in the left panel? +
    +
    + Now, what do you see when using 20 harmonics and changing the amplitude values to 1/x2? +
    +
    + If you go back to 1/x, change Odd to All, and press the Update button, what happens? Remember that now your highest frequency will be half of the one with only Odd harmonics. + To get a similar maximum frequency value you’ll need to add 40 harmonics in this case. +
    +
    + +
    +
    +
    +
    +

    + You have just played with approximations of the most + common waves used in analog syntehsizers: square, triangular, and sawtooth waves. + +

    +
    +

    +

      +
    • + Click again on the Play Original button at the bottom left to hear how they sound. Add and remove + partials and check the resulting visuals and sounds. +
    • +
    +

    +

    + You can also play with these variable and see the results in both panels and hear the results. +

    +

    +

      +
    • + For instance, describe what do you hear when using 20 Even harmonics with flat amplitude? + Compare the sonic result to using 20 Odd harmonics and flat amplitude. +
    • +
    +

    +
    + + +
    +
    Digital Audio Workbench Tutorial, by Maxwell Gentili-Morin & Marcelo M. Wanderley
    +
    based on the Digital Audio Workbench
    +
    Copyright IDMIL/McGill University, 2023
    +
    + + + diff --git a/tutorials/tutorial6.html b/tutorials/tutorial6.html new file mode 100644 index 0000000..f66b326 --- /dev/null +++ b/tutorials/tutorial6.html @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +
    +
    +

    + Tutorial 1: Waveform building +

    +
    +
    + +
    +
    +

    + In the left panel, you can see a sine wave with frequency 440 Hz. + Click on the Play Original button at the bottom left to hear how it sounds. +

    +

    + In the right panel, a vertical line at 440 Hz represents the sine wave frequency component. + Remember that a sine (or a cosine) wave has only one frequency component, + in other words, it represents a simple harmonic motion such as the motion of an ideal pendulum or a tuning fork. +

    +
    +
    + + + + +
    +
    + Now use the top right slider. + With the parameters loaded with the application + (Odd harmonics, 1/x amplitude), + add 10 components (harmonics) to the original sine wave. + You can get the same effect by typing 10 in the top right + box and pressing the Update button. Describe what happens + in the left panel. +
    +
    + If you add more components (say, 20), what do you see happening in the left panel? +
    +
    + Now, what do you see when using 20 harmonics and changing the amplitude values to 1/x2? +
    +
    + If you go back to 1/x, change Odd to All, and press the Update button, what happens? Remember that now your highest frequency will be half of the one with only Odd harmonics. + To get a similar maximum frequency value you’ll need to add 40 harmonics in this case. +
    +
    + +
    +
    +
    +
    +

    + You have just played with approximations of the most + common waves used in analog syntehsizers: square, triangular, and sawtooth waves. + +

    +
    +

    +

      +
    • + Click again on the Play Original button at the bottom left to hear how they sound. Add and remove + partials and check the resulting visuals and sounds. +
    • +
    +

    +

    + You can also play with these variable and see the results in both panels and hear the results. +

    +

    +

      +
    • + For instance, describe what do you hear when using 20 Even harmonics with flat amplitude? + Compare the sonic result to using 20 Odd harmonics and flat amplitude. +
    • +
    +

    +
    + +
    +
    Digital Audio Workbench Tutorial, by Maxwell Gentili-Morin & Marcelo M. Wanderley
    +
    based on the Digital Audio Workbench
    +
    Copyright IDMIL/McGill University, 2023
    +
    + + + \ No newline at end of file diff --git a/tutorials/tutorial7.html b/tutorials/tutorial7.html new file mode 100644 index 0000000..11cf084 --- /dev/null +++ b/tutorials/tutorial7.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +
    +
    +

    + Tutorial 1: Waveform building +

    +
    +
    + +
    +
    +

    + In the left panel, you can see a sine wave with frequency 440 Hz. + Click on the Play Original button at the bottom left to hear how it sounds. +

    +

    + In the right panel, a vertical line at 440 Hz represents the sine wave frequency component. + Remember that a sine (or a cosine) wave has only one frequency component, + in other words, it represents a simple harmonic motion such as the motion of an ideal pendulum or a tuning fork. +

    +
    +
    + + + + +
    +
    + Now use the top right slider. + With the parameters loaded with the application + (Odd harmonics, 1/x amplitude), + add 10 components (harmonics) to the original sine wave. + You can get the same effect by typing 10 in the top right + box and pressing the Update button. Describe what happens + in the left panel. +
    +
    + If you add more components (say, 20), what do you see happening in the left panel? +
    +
    + Now, what do you see when using 20 harmonics and changing the amplitude values to 1/x2? +
    +
    + If you go back to 1/x, change Odd to All, and press the Update button, what happens? Remember that now your highest frequency will be half of the one with only Odd harmonics. + To get a similar maximum frequency value you’ll need to add 40 harmonics in this case. +
    +
    + +
    +
    +
    +
    +

    + You have just played with approximations of the most + common waves used in analog syntehsizers: square, triangular, and sawtooth waves. + +

    +
    +

    +

      +
    • + Click again on the Play Original button at the bottom left to hear how they sound. Add and remove + partials and check the resulting visuals and sounds. +
    • +
    +

    +

    + You can also play with these variable and see the results in both panels and hear the results. +

    +

    +

      +
    • + For instance, describe what do you hear when using 20 Even harmonics with flat amplitude? + Compare the sonic result to using 20 Odd harmonics and flat amplitude. +
    • +
    +

    +
    + +
    +
    Digital Audio Workbench Tutorial, by Maxwell Gentili-Morin & Marcelo M. Wanderley
    +
    based on the Digital Audio Workbench
    +
    Copyright IDMIL/McGill University, 2023
    +
    + + + \ No newline at end of file diff --git a/tutorials/tutorial8.html b/tutorials/tutorial8.html new file mode 100644 index 0000000..7c57479 --- /dev/null +++ b/tutorials/tutorial8.html @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +
    +
    +

    + Tutorial 1: Waveform building +

    +
    +
    + +
    +
    +

    + In the left panel, you can see a sine wave with frequency 440 Hz. + Click on the Play Original button at the bottom left to hear how it sounds. +

    +

    + In the right panel, a vertical line at 440 Hz represents the sine wave frequency component. + Remember that a sine (or a cosine) wave has only one frequency component, + in other words, it represents a simple harmonic motion such as the motion of an ideal pendulum or a tuning fork. +

    +
    +
    + + + + +
    +
    + Now use the top right slider. + With the parameters loaded with the application + (Odd harmonics, 1/x amplitude), + add 10 components (harmonics) to the original sine wave. + You can get the same effect by typing 10 in the top right + box and pressing the Update button. Describe what happens + in the left panel. +
    +
    + If you add more components (say, 20), what do you see happening in the left panel? +
    +
    + Now, what do you see when using 20 harmonics and changing the amplitude values to 1/x2? +
    +
    + If you go back to 1/x, change Odd to All, and press the Update button, what happens? Remember that now your highest frequency will be half of the one with only Odd harmonics. + To get a similar maximum frequency value you’ll need to add 40 harmonics in this case. +
    +
    + +
    +
    +
    +
    +

    + You have just played with approximations of the most + common waves used in analog syntehsizers: square, triangular, and sawtooth waves. + +

    +
    +

    +

      +
    • + Click again on the Play Original button at the bottom left to hear how they sound. Add and remove + partials and check the resulting visuals and sounds. +
    • +
    +

    +

    + You can also play with these variable and see the results in both panels and hear the results. +

    +

    +

      +
    • + For instance, describe what do you hear when using 20 Even harmonics with flat amplitude? + Compare the sonic result to using 20 Odd harmonics and flat amplitude. +
    • +
    +

    +
    + +
    +
    Digital Audio Workbench Tutorial, by Maxwell Gentili-Morin & Marcelo M. Wanderley
    +
    based on the Digital Audio Workbench
    +
    Copyright IDMIL/McGill University, 2023
    +
    + + + diff --git a/tutorials/widget_tutorial.js b/tutorials/widget_tutorial.js index f08371d..ca809e0 100644 --- a/tutorials/widget_tutorial.js +++ b/tutorials/widget_tutorial.js @@ -3,7 +3,30 @@ const WEBAUDIO_MAX_SAMPLERATE = 96000; const NUM_COLUMNS = 2; const MAX_HARMONICS = 100; function new_widget(panels, sliders, buttons, elem_id, elem_id2, margin_size, width_factor=1.0, height_factor=1.0) { const sketch = p => { - +/* +new_widget - + +inputs: + panels: + list of panels to be used in the widget + [] + sliders: + list of panels to be used in the widget, like + [] + buttons: + Tells the widget which button to have appear in the widget (play original, play reconstructed, play quantization noise) + elem_id: + Tells the widget in which Div class to place the buttons in (Questions or answers etc) + elem_id2: + Tells the widget which div with the according class name to take into account for placing the widget in height terms/ + margin_size: + Used to place the uplaod buttons on a specific place. + width_factor: + By default is 1 and determines the width of the widget + height_factor: + By default is 1 and determines the height of the widget + +*/ var element = undefined; if (elem_id) { element = document.getElementById(elem_id); From 0b5b14785d672768d64db57079dc956e5896acb6 Mon Sep 17 00:00:00 2001 From: Maxw3llGM Date: Tue, 8 Aug 2023 13:01:25 -0400 Subject: [PATCH 04/57] combined tutorials 2 and 3 as they were redundant --- README.md | 334 +++++++++++++++++++++++++++++++++++++++ tutorials/tutorial2.html | 30 ++-- tutorials/tutorial3.html | 30 ++-- tutorials/tutorial4.html | 27 ++-- tutorials/tutorial5.html | 14 +- tutorials/tutorial6.html | 3 + tutorials/tutorial7.html | 7 +- tutorials/tutorial8.html | 170 -------------------- 8 files changed, 395 insertions(+), 220 deletions(-) delete mode 100644 tutorials/tutorial8.html diff --git a/README.md b/README.md index da9ccd9..b24a4c1 100644 --- a/README.md +++ b/README.md @@ -37,5 +37,339 @@ interactive interface allows the simulation to be explored freely; users can examine the signals both visually through numerous graphs, or by listening to the test signals directly. +## Implementation +Since our demonstration takes place purely in the digital domain, we +unfortunately cannot use real continuous time analog inputs and outputs. +Instead, we simulate the ADC-DAC processes in the discrete time domain. The +analog input and output are represented as discrete time signals with a high +sampling rate; at the time of writing, the maximum sampling rate supported +by WebAudio is 96 kHz. +The ADC process consists of several steps, including antialiasing, sampling, +and quantization. All of these are simulated in our model: antialiasing is +achieved with a windowed sinc FIR lowpass filter of order specified by the +user; sampling is approximated by downsampling the input signal by an +integer factor; and quantization is achieved by multiplying the sampled +signal (which ranges from -1.0 to 1.0) by the maximum integer value possible +given the requested bit depth (e.g. 255 for a bit depth of 8 bits), and then +rounding every sample to the nearest integer. The DAC process is simulated +in turn by zero stuffing and lowpass filtering the sampled and quantized +output of the ADC simultion. + +In summary, the continuous time input is simulated by a 96 kHz discrete time +signal, the sampled output of the ADC process is simulated by a downsampled +and quantized signal, and the continuous time reconstruction output by the +DAC is simulated by upsampling the "sampled" signal back to 96 kHz. In our +tests we have found this model to be reasonable; many key concepts, such as +critical sampling, aliasing, and quantization noise are well represented in +our simulation. + +For more details, the reader is encouraged to peruse the rest of the source +code in this document. Many comments have been included to aid readers who +are unfamiliar with javascript. Any questions you may have about the +implementation of the simulation can only be definitively answered by +understanding the source code, but please feel free to contact the project +maintainers if you have any questions. + +```javascript +*/ + +// `renderWavesImpl` returns an anonymous function that is bound in the widget +// constructor. This is done in order to seperate the implementation of the +// simulation from the other implementation details so that this documentation +// can be more easily accessed. + +const soundTimeSeconds = 1.5; +const fadeTimeSeconds = 0.125; +function renderWavesImpl(settings, fft, p) { return (playback = false) => { + + // if we are not rendering for playback, we are rendering for simulation + let simulation = !playback; + + // select the buffer to render to; playback buffer, or simulation buffer + var original = playback ? settings.original_pb : settings.original; + var reconstructed = playback ? settings.reconstructed_pb : settings.reconstructed; + var stuffed = settings.stuffed; + + // calculate harmonics ------------------------------------------------------ + + // The signal is generated using simple additive synthesis. Because of this, + // the exact frequency content of the signal can be determined a priori based + // on the settings. We generate this information here so that it can be used + // not only by the synthesis process below, but also by several of the graphs + // used to illustrate the frequency domain content of the signal. + + // We only calculate the harmonics for the simulation; it is assumed they will + // already have been calculated earlier when rendering for playback + + if (simulation) { + let harmonic_number = 1; + let harmonic_amplitude = 1; + let invert = 1; + let harmInc = (settings.harmType =="Odd" || settings.harmType == "Even") ? 2 : 1; + + for (let i = 0; simulation && i < settings.numHarm; i++) { + + // the amplitude of each harmonic depends on the harmonic slope setting + if (settings.harmSlope == "lin") harmonic_amplitude = 1 - i/settings.numHarm; + else if (settings.harmSlope == "1/x") harmonic_amplitude = 1/harmonic_number; + else if (settings.harmSlope == "1/x2") harmonic_amplitude = 1/harmonic_number/harmonic_number; + else if (settings.harmSlope == "flat") harmonic_amplitude = 1; + else if (settings.harmSlope == "log") {harmonic_amplitude = Math.exp(-0.1*(harmonic_number-1)); + console.log(harmonic_amplitude)} + + // In case the harmonic slope is 1/x^2 and the harmonic type is "odd", + // by inverting every other harmonic we generate a nice triangle wave. + if (settings.harmSlope =="1/x2" && settings.harmType == "Odd") { + harmonic_amplitude = harmonic_amplitude * invert; + invert *= -1; + } + + // the frequency of each partial is a multiple of the fundamental frequency + settings.harmonicFreqs[i] = harmonic_number*settings.fundFreq; + + // The harmonic amplitude is calculated above according to the harmonic + // slope setting, taking into account the special case for generating a + // triangle. + settings.harmonicAmps[i] = harmonic_amplitude; + + // With harmonic type set to "even" we want the fundamental and even + // harmonics. To achieve this, we increment the harmonic number by 1 after + // the fundamental and by 2 after every other partial. + if (i == 0 && settings.harmType == "Even") harmonic_number += 1; + else harmonic_number += harmInc; + } + } + + // render original wave ----------------------------------------------------- + + // initialize the signal buffer with all zeros (silence) + original.fill(0); + + // For the sample at time `n` in the signal buffer `original`, + // generate the sum of all the partials based on the previously calculated + // frequency and amplitude values. + original.forEach( (_, n, arr) => { + for (let harmonic = 0; harmonic < settings.numHarm; harmonic++) { + + let fundamental_frequency = settings.harmonicFreqs[0]; + let frequency = settings.harmonicFreqs[harmonic]; + let amplitude = settings.harmonicAmps[harmonic]; + + // convert phase offset specified in degrees to radians + let phase_offset = Math.PI / 180 * settings.phase; + + // adjust phase offset so that harmonics are shifted appropriately + let phase_offset_adjusted = phase_offset * frequency / fundamental_frequency; + + let radian_frequency = 2 * Math.PI * frequency; + let phase_increment = radian_frequency / WEBAUDIO_MAX_SAMPLERATE; + let phase = phase_increment * n + phase_offset_adjusted; + + // accumulate the amplitude contribution from the current harmonic + arr[n] += amplitude * Math.sin( phase ); + } + }); + + // linearly search for the maximum amplitude value (easy but not efficient) + let max = 0; + original.forEach( (x, n, y) => {if (x > max) max = x} ); + + // normlize and apply amplitude scaling + original.forEach( (x, n, y) => y[n] = settings.amplitude * x / max ); + + // apply antialiasing filter if applicable ---------------------------------- + + // The antialiasing and reconstruction filters are generated using Fili.js. + // (https://github.com/markert/fili.js/) + let firCalculator = new Fili.FirCoeffs(); + // Fili uses the windowed sinc method to generate FIR lowpass filters. + // Like real antialiasing and reconstruction filters, the filters used in the + // simulation are not ideal brick wall filters, but approximations. + + // apply antialiasing only if the filter order is set + if (settings.antialiasing > 1) { + + // specify the filter parameters; Fs = sampling rate, Fc = cutoff frequency + + // The cutoff for the antialiasing filter is set to the Nyquist frequency + // of the simulated sampling process. The sampling rate of the "sampled" + // signal is WEBAUDIO_MAX_SAMPLERATE / the downsampling factor. This is + // divided by 2 to get the Nyquist frequency. + var filterCoeffs = firCalculator.lowpass( + { order: settings.antialiasing + , Fs: WEBAUDIO_MAX_SAMPLERATE + , Fc: (WEBAUDIO_MAX_SAMPLERATE / settings.downsamplingFactor) / 2 + }); + + // generate the filter + var filter = new Fili.FirFilter(filterCoeffs); + + // apply the filter + original.forEach( (x, n, y) => y[n] = filter.singleStep(x) ); + + // time shift the signal by half the filter order to compensate for the + // delay introduced by the FIR filter + original.forEach( (x, i, arr) => arr[i - settings.antialiasing/2] = x ); + } + + // downsample original wave ------------------------------------------------- + + // zero initialize the reconstruction, and zero stuffed buffers + reconstructed.fill(0); + stuffed.fill(0); + + // generate new signal buffers for the downsampled signal and quantization + // noise whose sizes are initialized according to the currently set + // downsampling factor + if (playback) { + settings.downsampled_pb = new Float32Array(p.round(original.length / settings.downsamplingFactor)); + settings.quantNoise_pb = new Float32Array(p.round(original.length / settings.downsamplingFactor)); + } else { + settings.downsampled = new Float32Array(p.round(original.length / settings.downsamplingFactor)); + settings.quantNoise = new Float32Array(p.round(original.length / settings.downsamplingFactor)); + } + var downsampled = playback ? settings.downsampled_pb : settings.downsampled; + var quantNoise = playback ? settings.quantNoise_pb : settings.quantNoise; + var quantNoiseStuffed = settings.quantNoiseStuffed; + quantNoiseStuffed.fill(0); + + // calculate the maximum integer value representable with the given bit depth + let maxInt = p.pow(2, settings.bitDepth) - 1; + + let stepSize = (settings.quantType == "midTread") ? 2/(maxInt-1) : 2/(maxInt); + + // generate the output of the simulated ADC process by "sampling" (actually + // just downsampling), and quantizing with dither. During this process, we + // also load the buffer for the reconstructed signal with the sampled values; + // this allows us to skip an explicit zero-stuffing step later + + downsampled.forEach( (_, n, arr) => { + + // keep only every kth sample where k is the integer downsampling factor + let y = original[n * settings.downsamplingFactor]; + y = y > 1.0 ? 1.0 : y < -1.0 ? -1.0 : y; // apply clipping + + // if the bit depth is set to the maximum, we skip quantization and dither + if (settings.bitDepth == BIT_DEPTH_MAX) { + + // record the sampled output of the ADC process + arr[n] = y; + + // sparsely fill the reconstruction and zero stuffed buffers to avoid + // having to explicitly zero-stuff + reconstructed[n * settings.downsamplingFactor] = y; + stuffed[n * settings.downsamplingFactor] = y * settings.downsamplingFactor; + return; + } + + // generate dither noise + let dither = (2 * Math.random() - 1) * settings.dither; + + let quantized; + // Add dither signal and quantize. Constrain so we dont clip after dither + switch(settings.quantType) { + case "midTread" : + quantized = stepSize*p.floor(p.constrain((y+dither),-1,0.99)/stepSize + 0.5); + break; + case "midRise" : + quantized = stepSize*(p.floor(p.constrain((y+dither),-1,0.99)/stepSize) + 0.5); + break; + } + + // record the sampled and quantized output of the ADC process with clipping + arr[n] = quantized; + + + // sparsely fill the reconstruction buffer to avoid having to zero-stuff + reconstructed[n * settings.downsamplingFactor] = quantized; + stuffed[n * settings.downsamplingFactor] = quantized * settings.downsamplingFactor; + + // record the quantization error + quantNoise[n] = quantized - y; + quantNoiseStuffed[n * settings.downsamplingFactor] = quantNoise[n]; + }); + + // render reconstructed wave by low pass filtering the zero stuffed array---- + + // specify filter parameters; as before, the cutoff is set to the Nyquist + var filterCoeffs = firCalculator.lowpass( + { order: 200 + , Fs: WEBAUDIO_MAX_SAMPLERATE + , Fc: (WEBAUDIO_MAX_SAMPLERATE / settings.downsamplingFactor) / 2 + }); + + // generate the filter + var filter = new Fili.FirFilter(filterCoeffs); + + // apply the filter + reconstructed.forEach( (x, n, arr) => { + let y = filter.singleStep(x); + + // To retain the correct amplitude, we must multiply the output of the + // filter by the downsampling factor. + arr[n] = y * settings.downsamplingFactor; + }); + + // time shift the signal by half the filter order to compensate for the delay + // introduced by the FIR filter + reconstructed.forEach( (x, n, arr) => arr[n - 100] = x ); + + // render FFTs -------------------------------------------------------------- + // TODO: apply windows? + + // The FFTs of the signals at the various stages of the process are generated + // using fft.js (https://github.com/indutny/fft.js). The call to + // `realTransform()` performs the FFT, and the call to `completeSpectrum` + // fills the upper half of the spectrum, which is otherwise not calculated + // since it is a redundant reflection of the lower half of the spectrum. + + if (simulation) { + fft.realTransform(settings.originalFreq, original); + fft.completeSpectrum(settings.originalFreq); + + fft.realTransform(settings.stuffedFreq, stuffed) + fft.completeSpectrum(settings.reconstructedFreq); + + fft.realTransform(settings.reconstructedFreq, reconstructed) + fft.completeSpectrum(settings.reconstructedFreq); + + fft.realTransform(settings.quantNoiseFreq, quantNoiseStuffed) + fft.completeSpectrum(settings.quantNoiseFreq); + } + + // fade in and out and suppress clipping distortions ------------------------ + + // Audio output is windowed to prevent pops. The envelope is a simple linear + // ramp up at the beginning and linear ramp down at the end. + + if (playback) { + // This normalization makes sure the original signal isn't clipped. + // The output is clipped during the simulation, so this may reduce its peak + // amplitude a bit, but since the clipping adds distortion the perceived + // loudness is relatively the same as the original signal in my testing. + let normalize = settings.amplitude > 1.0 ? settings.amplitude : 1.0; + + // Define the fade function + let fade = (_, n, arr) => { + let fadeTimeSamps = Math.min(fadeTimeSeconds * WEBAUDIO_MAX_SAMPLERATE, arr.length / 2); + // The conditional ensures there is a fade even if the fade time is longer than the signal + if (n < fadeTimeSamps) + arr[n] = (n / fadeTimeSamps) * arr[n] / normalize; + else if (n > arr.length - fadeTimeSamps) + arr[n] = ((arr.length - n) / fadeTimeSamps) * arr[n] / normalize; + else arr[n] = arr[n] / normalize; + }; + + // Apply the fade function + original.forEach(fade); + reconstructed.forEach(fade); + quantNoise.forEach(fade); + } + + +}} +/* +``` +*/ diff --git a/tutorials/tutorial2.html b/tutorials/tutorial2.html index 9e9fba7..62f6e65 100644 --- a/tutorials/tutorial2.html +++ b/tutorials/tutorial2.html @@ -1,4 +1,5 @@ + @@ -18,7 +19,7 @@
    @@ -29,7 +30,7 @@

    - Tutorial 2: Sampling + Tutorial 3: Sampling a Waveform


    @@ -74,17 +75,20 @@


    diff --git a/tutorials/tutorial3.html b/tutorials/tutorial3.html index 771edae..cb3eb35 100644 --- a/tutorials/tutorial3.html +++ b/tutorials/tutorial3.html @@ -1,5 +1,4 @@ - @@ -30,7 +29,7 @@

    - Tutorial 3: Sampling a Waveform + Tutorial 4: Waveform Reconstruction


    @@ -75,19 +74,19 @@


    @@ -121,6 +120,7 @@

    +