Module: DSP::Scales

Defined in:
lib/dsprb/scales.rb,
sig/dsprb.rbs

Constant Summary collapse

MEL_SCALE =

O'Shaughnessy's mel scale, m = 2595 log10(1 + f / 700).

Returns:

  • (::Float)
2595.0
MEL_BREAK_HZ =

Returns:

  • (::Float)
700.0
SEMITONES_PER_OCTAVE =

Returns:

  • (::Float)
12.0

Class Method Summary collapse

Class Method Details

.hz_to_mel(hz) ⇒ ::Float

Parameters:

  • (::Numeric)

Returns:

  • (::Float)


13
# File 'lib/dsprb/scales.rb', line 13

def hz_to_mel(hz) = MEL_SCALE * Math.log10(1.0 + (hz / MEL_BREAK_HZ))

.hz_to_semitones(hz, reference:) ⇒ ::Float

Parameters:

  • (::Numeric)
  • reference: (::Numeric)

Returns:

  • (::Float)


17
# File 'lib/dsprb/scales.rb', line 17

def hz_to_semitones(hz, reference:) = SEMITONES_PER_OCTAVE * Math.log2(hz / reference)

.mel_to_hz(mel) ⇒ ::Float

Parameters:

  • (::Numeric)

Returns:

  • (::Float)


15
# File 'lib/dsprb/scales.rb', line 15

def mel_to_hz(mel) = MEL_BREAK_HZ * ((10.0 ** (mel / MEL_SCALE)) - 1.0)

.semitones_to_hz(semitones, reference:) ⇒ ::Float

Parameters:

  • (::Numeric)
  • reference: (::Numeric)

Returns:

  • (::Float)


19
# File 'lib/dsprb/scales.rb', line 19

def semitones_to_hz(semitones, reference:) = reference * (2.0 ** (semitones / SEMITONES_PER_OCTAVE))