View gist:1dd9080059770a917aae81a58fac529e

About compression

Audio compression is used to reduce the dynamic range of a recording. Dynamic range is the difference between the loudest and softest parts of an audio signal. It was originally used to guard against defects when cutting wax and vinyl phonograph records, but generally became useful as a way of increasing the loudness of an audio recording without achieving distortion.

The goal of most compression applications is to increase the amplitude of the softest parts of a recording, without increasing the amplitude of the loudest parts.

Compressor anatomy

Compressors generally all have the same conceptual parts. However, not all compressors present variable controls for all parts to the user. If you don't see all of your compressor's controls here, there's a chance it either has a fixed value (and no control), or is named something else:

View main.go
/*
non-refactored, hacky tool to extract interfaces.
adopted from https://github.com/campoy/justforfunc/tree/master/24-ast
*/
package main
import (
"fmt"
"go/scanner"
"go/token"
View godev.bash
#!/bin/bash
# -----------------------------------------------------------------------------
# HOW TO RUN?
# -----------------------------------------------------------------------------
# . ./godev.bash
# WARNING:
#
View func_overloading_golang.go
package main
import (
"fmt"
)
func main() {
// imitating func overloading in Go
// this example uses this:
View enum_weekdays.go
// declare constants for the days in a week, and assign to them
// different numeric values.
//
// so, they won't clash. if both values of Sunday and Monday were 0,
// then, how could we know that which one is Sunday or Monday?
//
// this code is for this article: https://blog.learngoprogramming.com/golang-const-type-enums-iota-bc4befd096d3
const (
Sunday = 0
Monday = 1
View enum_planet_masses.go
// https://blog.learngoprogramming.com/golang-const-type-enums-iota-bc4befd096d3
package main
import (
"fmt"
)
const (
Mercury = 3.303e+23
Venus = 4.869e+24
View untyped_numeric_consts_flexibility.go
package main
import "fmt"
func main() {
// We can assign an untyped constant to any numeric-type variable
// Numeric types:
var (
View typed_const_declaration.go
package main
import (
"fmt"
)
func main() {
// typed constant declaration
const Pi float64 = 3.14
View const_shadowing.go
package main
import (
"fmt"
)
// visible inside main package
const packageLevelConst = 1
// visible everywhere
View go_enum_iota.go
package main
import (
"fmt"
"math"
"strconv"
)
// I used bitwise operations on iota.
// This will be handy when we want to represent months together.