This is just the outlining of software and not unique to microcontrollers, so I won't say any more. The analysis done above in sections 1.0 and 2.0 naturally provides an estimate of memory requirements. The total memory required is, of course, always an art of estimation. Judge the risk of choosing too small a memory footprint against the need for room to grow and cost of unused memory. Optimally, pick a microcontroller family with a range of memory sizes within identical packages.
Some requirements are more stringent than others.
Performing the debounce delay for a keypad switch is a much easier real-time contraint than is measuring the frequency of an audio input signal. Some real-time requirements will require simple software tricks while others will require dedicated hardware solutions. The key words here are real-time . Implementation Keyboard Debounce Detect a switch closure and ignore switch for some debounce period after sensing initial closure. Switches will be fairly clunky mechanical toggle switches.