Not sure about OP, but I&#x27;ve always loved the simplicity of counting the zero cross-overs in one direction (E.g. positive to negative) with some gutter. With raw PCM this is trivial to implement in any language -- I last did this in bash. Then you just do a look up from frequency to note and you&#x27;re done. It&#x27;s also not very CPU intensive, and you can even sample less frequently and get pretty great results.