class_docstr: Observation model for downbeat tracking with a HMM.
  
  Parameters
  ----------
  state_space : :class:`BarStateSpace` instance
      BarStateSpace instance.
  observation_lambda : int
      Split each (down-)beat period into `observation_lambda` parts, the
      first representing (down-)beat states and the remaining non-beat
      states.
  
  References
  ----------
  .. [1] Sebastian Böck, Florian Krebs and Gerhard Widmer,
         "Joint Beat and Downbeat Tracking with Recurrent Neural Networks"
         Proceedings of the 17th International Society for Music Information
         Retrieval Conference (ISMIR), 2016.
class_docstr_tok: ["Observation","model","for","downbeat","tracking","with","a","HMM",".","Parameters","--","--","--","--","--","state_space",":",":","class",":","`","BarStateSpace","`","instance","BarStateSpace","instance",".","observation_lambda",":","int","Split","each","(","down-",")","beat","period","into","`","observation_lambda","`","parts",",","the","first","representing","(","down-",")","beat","states","and","the","remaining","non-beat","states",".","References","--","--","--","--","--","..","[","1","]","Sebastian","B\u00f6ck",",","Florian","Krebs","and","Gerhard","Widmer",",","``","Joint","Beat","and","Downbeat","Tracking","with","Recurrent","Neural","Networks","''","Proceedings","of","the","17th","International","Society","for","Music","Information","Retrieval","Conference","(","ISMIR",")",",","2016","."]
code: def __init__(self, state_space, observation_lambda):
      self.observation_lambda = observation_lambda
      # compute observation pointers
      # always point to the non-beat densities
      pointers = np.zeros(state_space.num_states, dtype=np.uint32)
      # unless they are in the beat range of the state space
      border = 1.0 / observation_lambda
      pointers[state_space.state_positions % 1 < border] = 1
      # the downbeat (i.e. the first beat range) points to density column 2
      pointers[state_space.state_positions < border] = 2
      # instantiate a ObservationModel with the pointers
      super(RNNDownBeatTrackingObservationModel, self).__init__(
          pointers
      )
  
imports: from __future__ import absolute_import, division, print_function
  import numpy
  from madmom.ml.hmm import ObservationModel, TransitionModel
label_desc: Use image node_id 1 to create a new RNNDownBeatTrackingObservationModel object from inherited base classes: ObservationModel with example: obj = RNNDownBeatTrackingObservationModel(state_space, observation_lambda)