class_docstr: Observation model for note transcription tracking with a HMM.
  
  Parameters
  ----------
  state_space : :class:`ADSRStateSpace` instance
      ADSRStateSpace instance.
  
  The observed probabilities for note onsets, sounding notes, and offsets are
  mapped to the states defined in the state space. The observation for
  'silence' is defined as 1 - p(onset), 'onset' as p(onset), 'decay' and
  'sustain' as p(note) and 'offset' as p(offset).
code: def __init__(self, state_space):
      # define observation pointers
      pointers = np.zeros(state_space.num_states, dtype=np.uint32)
      # map from densities to states
      pointers[state_space.silence :] = 0
      pointers[state_space.attack :] = 1
      pointers[state_space.decay :] = 2
      # Note: sustain uses the same observations as decay
      pointers[state_space.release :] = 3
      # instantiate a ObservationModel with the pointers
      super(ADSRObservationModel, self).__init__(pointers)
  
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 ADSRObservationModel object from inherited base classes: ObservationModel with example: obj = ADSRObservationModel(state_space)