class_docstr: Map state numbers to actual states.
  
  State 0 refers to silence, the ADSR states (attack, decay, sustain,
  release) are numbered from 1 onwards.
  
  Parameters
  ----------
  attack_length : int, optional
      Length of the attack phase.
  decay_length : int, optional
      Length of the decay phase.
  release_length : int, optional
      Length of the release phase.
  
  Sustain phase has no specific minimum length, since self-transitions from
  this state are used to model the note length.
code: def __init__(self, attack_length=1, decay_length=1, release_length=1):
      # define note with states which must be transitioned
      self.silence = 0
      self.attack = 1
      self.decay = self.attack + attack_length
      self.sustain = self.decay + decay_length
      self.release = self.sustain + release_length
  
file_path: madmom/madmom/features/notes_hmm.py
imports: from __future__ import absolute_import, division, print_function
  import numpy
  from madmom.ml.hmm import TransitionModel, ObservationModel
label_desc: Use image node_id 1 to create a new ADSRStateSpace object from inherited base classes: object with example: obj = ADSRStateSpace(attack_length, decay_length, release_length)