Sus Intentos
Por definición, cuando "duro" límite de los valores en el código que está causando la saturación. Puede que no sea la saturación en el sentido de que se desborde de su corto, pero todavía distorsión de la onda cuando pasa por encima de un cierto punto. He aquí un ejemplo:
Me doy cuenta de que probablemente no son difíciles de limitación en la parte inferior, pero yo ya había dibujado antes de que me di cuenta de que.
Así que, en otras palabras, la limitación dura método no funciona.
Ahora para el segundo enfoque, este método hará que hagas lo que oyen algunas personas realmente hacen intencionalmente. Usted está causando cada fotograma a ser tan alto como sea posible. Este método puede funcionar bien si usted consigue la escala de la derecha y están bien con su música sonando fuerte todo el tiempo, pero no es ideal para la mayoría de la gente.
Una Solución
Si usted sabe que el max efectiva posible ganancia que su sistema puede crear, se puede dividir a su entrada por esta cantidad. Para averiguar lo que esta sería tendrá a paso a través de su código y determinar cuál es el máximo de entrada es, darle una ganancia de x, averiguar cuál es el máximo de salida es en términos de x, y, a continuación, determinar lo que x debe estar en orden para no saturar. Se podría aplicar esta ganancia a su señal de audio entrante antes de hacer cualquier otra cosa.
Esta solución está bien, pero no es muy grande para todos, ya que su rango dinámico puede doler un poco, ya que generalmente no se ejecuta en el máximo de entrada todo el tiempo.
La otra solución es hacer un poco de auto-ganar. Este método es similar al método anterior, pero su ganancia va a cambiar a lo largo del tiempo. Para hacer esto usted puede comprobar su valor máximo de cada fotograma de su entrada. Usted va a utilizar va a almacenar este número y el lugar de un simple filtro de paso bajo en sus valores máximos y decidir qué ganancia para aplicar con este valor.
Aquí es un ejemplo de lo que su ganancia versus volumen de entrada sería:
Este tipo de sistema hará que la mayoría de sus archivos de audio de tener un alto rango dinámico, pero a medida que usted comienza a conseguir cerca de el volumen máximo que puede tener que reducir lentamente su ganancia.
El Análisis De Los Datos
Si desea averiguar qué tipo de valores que el sistema realmente es obtener, en tiempo real, entonces usted tendrá que tener algún tipo de salida de depuración. Esta salida variará en función de la plataforma de su ejecución, pero he aquí una esencia general de lo que iba a hacer. Si usted está en un entorno integrado, usted tendrá que tener un poco de la salida serial. Lo que va a hacer es en ciertas etapas en su código de salida a un archivo o la pantalla o algo que usted puede tomar los datos. Tomar estos datos y ponerlo en excel de matlab y el gráfico de todos ellos frente al tiempo. Usted probablemente muy fácilmente ser capaz de decir dónde está todo mal.
Método Muy Sencillo
Estás saturando su doble? No suena como que, en lugar de eso parece que están saturando al cambiar a un corto. Una forma muy sencilla y "sucio" manera de hacer esto es para convertir el máximo de su doble (este valor es diferente dependiendo de la plataforma) y la escala que para ser el máximo valor de su corto. Esto le garantiza que si no lo desbordamiento de su doble que usted no desbordamiento de su corta tampoco. Más probable es que esto va a resultar en que su salida es mucho más suaves después de su entrada. Usted sólo tendrá que jugar y utilizar algunos de los análisis de datos que he descrito anteriormente para que el sistema funcione perfectamente para usted.
Métodos más Avanzados que probablemente no se aplican a usted
En el mundo digital hay un trade-off entre la resolución y el rango dinámico. Lo que esto significa es que usted tiene un número fijo de bits dado a su audio. Si se disminuye el rango que el audio puede ser en, a continuación, aumente los bits por el rango que tiene. Si usted piensa acerca de esto en el sentido de voltios y tienen 0-5v de entrada y 10bit adc, a continuación, usted tiene 10bits para dar a 5v rango, normalmente esto se hace de manera lineal. Así 0b0000000000 = 0v, 0b1111111111 = 5v y linealmente asignar los voltajes a los bits. En realidad, con audio, este no siempre es un buen uso de sus bits.
En el caso de la voz, de la tensión frente a la probabilidad de los voltajes de ser algo como esto:
Esto significa que usted tiene un montón más de su voz en la disminución de la amplitud y sólo una pequeña cantidad en la alta cantidad. Así que en lugar de la asignación de los bits linealmente, puede reasignar su bits para tener más pasos en la disminución de la amplitud de la gama y, por tanto, menos en la parte superior del rango de amplitud. Esto le da a usted el mejor de ambos mundos, una resolución en donde la mayoría de sus archivos de audio, pero el límite de su saturación por el aumento de su rango dinámico.
Ahora, esta reasignación va a cambiar la forma de los filtros de actuar y probablemente tendrá que rehacer tus filtros, pero es por eso que este es en la sección "avanzado". También, ya que están haciendo su trabajo, con un doble y, a continuación, convertirlo a un corto, su corto probablemente necesitará ser lineal, de todos modos. Su doble ya le da mucha más precisión, a continuación, lo que a su corto le dará así que, probablemente, no hay necesidad de este método.