creo que todas estas respuestas hasta el momento son bastante malo (incluyendo la mía anterior ...) después de haber pensado que el problema a través de un poco más que sugeriría lo siguiente:
1) echar un 1 segunda muestra de la señal de entrada (no necesita ser tan grande, pero simplifica algunas cosas)
2) durante todo el segundo, cuente los pasos por cero. en este punto tiene los cps (ciclos por segundo) y conoce la frecuencia del oscilador. (en caso de que sea algo que quisiera saber)
3) ahora tome un segmento más pequeño de la muestra para trabajar con: tome exactamente 7 cruces cero. (De modo que su búfer de trabajo debe ahora, si se visualiza, parecerse a una de las representaciones gráficas que publicó con la pregunta original.) use este pequeño búfer de trabajo para realizar las siguientes pruebas. (La normalización del buffer de trabajo en este punto podría facilitar la vida)
4) prueba de onda cuadrada: los cruces por cero para una onda cuadrada son siempre diferencias muy grandes, busque un delta de señal grande seguido de poco o ningún movimiento hasta el próximo cruce por cero.
5) prueba para la onda de sierra: similar a la onda cuadrada, pero a una señal grande delta le seguirá una señal lineal constante delta.
6) prueba para onda triangular: delta lineal constante (pequeña) deltas. encuentre los picos, dividalos por la distancia entre ellos y calcule cómo se vería la onda triangular (idealmente) ahora pruebe la señal real para la desviación. establezca un umbral de tolerancia de desviación y puede determinar si está mirando un triángulo o un seno (o algo parabólico).
¿puede usted, con confianza, asumir que la entrada es una señal monofónica? (es decir, ¿una sola nota jugada por una sola inserción?) – kent
Sí. No tengo una aplicación particular en mente, pero estoy imaginando ondas periódicas continuas de una sola frecuencia. – endolith