Je suis en train d'écrire un synthé simple en assembleur comme projet d'apprentissage, et j'aimerais implémenter quelques fonctions plus avancées que l'on trouve sur les synthés modernes, à savoir l'enveloppe ADSR et la modulation de largeur d'impulsion en utilisant une onde sinusoïdale. Pour l'instant, je génère les échantillons à la main et les envoie à la sortie audio, qui possède un tampon d'échantillons et une interruption lorsqu'il est presque vide.
Ce qui me bloque, c'est la façon de générer une forme d'onde "continue". Pour l'instant, je génère des échantillons pour une seule instance d'une onde (qu'il s'agisse d'une scie ou d'une impulsion), et je boucle simplement cette onde pour générer une sortie continue. Comme vous pouvez l'imaginer, cela n'est pas très adapté à la PWM et à l'enveloppe ADSR. J'ai donc besoin de générer l'onde à la demande, avec des ajustements potentiels à la volée, comme la modulation de la largeur d'impulsion ou de la hauteur (par exemple pour le legato), mais je suis bloqué sur la façon de représenter cela efficacement en mémoire, ainsi que sur la façon de mettre en pause la génération de la forme d'onde lorsque le tampon a été rempli et de la reprendre lorsque l'interruption se produit.
Je ne cherche pas tant une solution qu'un coup de pouce dans la bonne direction de la pensée :-)
Merci !