Yo lo q aria seria hacer una funcion en la cual el objetivo sea llegar a :
Smod = A*sin(2*pi*x + B*signal); donde Smod es la funcion modulada, A la amplitud de la moduladora y B la desviacion en frecuencia.
Ahora 'x' debe ser un vector que tenga la misma longitud que signal (señal que kieres modular) pero como la frecuencia de la portadora suele bastante mayor que la modulada, lo que haria seria detectar cada cuantas muestras es un periodo en signal (por ejemplo viendo los cambios de positivo a negativo y viceversa) y hacer que la x varie mas.
Por ejemplo si te da que cada 100 muestras varia signal y kieres que la frecuencia de x sea 50 veces menos pues cada dos muestras variaria x.
No se si ace falta algo mas pq tp lo he pensado

espero q te sirva, y aber si alguien dice algo mas un saludo.