Dans ce projet, il sera question de générer des ondes sonores.
Une onde sonore sera décrite par une
séquence
d'échantillons, c'est à dire la séquence des valeurs instantanées du signal
au fil du temps, à une fréquence choisie (le sample-rate,
44100.0 Hertz par exemple).
Vous devez donc commencer par vous familiariser avec quelques types
numériques élémentaires pour réaliser des calculs.
Ces expérimentations préliminaires ne servent qu'à découvrir les notions
élémentaires du langage.
Aucune ne servira à fournir une fonctionnalité réutilisable dans votre
crate.
Contentez vous alors de créer ces quelques fonctions dans
src/main.rs et de les appeler directement depuis la fonction
main().
Une première fonction count_and_compute() sera réalisée et essayée
petit à petit en suivant ces étapes :
Faire en sorte que la boucle fasse évoluer un réel (en
convertissant ce compteur en
réel avant de le multiplier par un facteur par exemple) et l'affiche.
Utiliser la fonction mathématique sinus sur le réel qui évolue
(voir
rustup doc --std 'f32'
) et en afficher le résultat.
Une deuxième fonction store_and_change() sera réalisée et essayée
petit à petit en suivant ces étapes :
Calculer une sinusoïde comme précédemment mais mémoriser chaque valeur
dans un tableau dynamique
qui sera affiché dans sa globalité.
Utiliser la fonction .resize() pour doubler la taille du
tableau dynamique (en complétant par des réels nuls) puis afficher
une à une ses valeurs.
Ce parcours ne doit PAS utiliser l'opération d'indexation
([ ]), puisqu'elle est sous optimale.
Ce parcours utilisera .enumerate() afin de compter les éléments
de la séquence et afficher lisiblement les indices.
Avant la boucle d'affichage précédente,
parcourir
le tableau dynamique afin d'ajouter à ses éléments
la contribution d'une nouvelle sinusoïde de fréquence double de
la précédente.
Ce parcours ne doit PAS utiliser l'opération d'indexation
([ ]), puisqu'elle est sous optimale.
Ce parcours utilisera .enumerate() afin de compter les éléments
de la séquence et ajuster ainsi la sinusoïde.