🏁 This page has been validated by alexoudeon on 2024-09-08 at 00:00:00.
Modéliser un accordéon virtuel
La technologie VST a été inventée par l'entreprise Steinberg et est utilisée par l'ensemble des logiciels du marché. L'idée est d'ajouter des capacités musicales aux logiciels de composition (surnommés « DAW » pour digital audio workstation). Il s'agit là d'outils expert en traitement du signal. Les synthétiseurs virtuels appliquent uniquement des formules mathématiques pour tracer une onde sonore représentant ce que vous voulez entendre. Ils sculptent littéralement le son selon différentes méthodes :
- Soit en déformant un son préalablement enregistré : les logiciels Kontakt, Nexus ou FLEX sont des romplers,
- Soit en filtrant les fréquences : on appelle ça la synthèse soustractive que tous les logiciels implémentent,
- Soit en traçant le spectre : on appelle ça la synthèse additive (Morphine, Sytrus, Harmor...).
Détermination du spectre à la main
On maîtrise maintenant ce qu'est un spectre et comment l'obtenir avec un algorithme de FFT. Dans ce chapitre, je vais vouloir modéliser mon instrument virtuellement.
Il faut commencer par enregistrer le son de l'instrument au diapason (🎧 vst_signal.flac), c'est-à-dire un La/A4 de 440 Hz selon l'accordage traditionnel. Nous obtenons un son visuellement simple, périodique et dont le spectre est déterminé dans la partie de sustain, c'est-à-dire au cœur de la note jouée après l'attack et avant le release. Le volume y est le plus stable et le spectre le plus simple :
Avec toute l'imprécision de la mesure et de mon pauvre matériel d'enregistrement, on trouve beaucoup de choses inutiles dans ce spectre d'Audacity. On va donc garder uniquement les raies supérieures à -60 dB, sachant qu'il y a une perte par défaut de 30 db dans ma mesure. C'est la limite au-delà de laquelle les fréquences concernées ne sont plus significativement audibles. À la souris, je relève les fréquences dans un tableau :
Fréquence | Note | Harmonique | Volume |
---|---|---|---|
436 | A4 | 1,0 | -34 |
1776 | A6 | 4,0 | -46 |
2223 | C#7 | 5,1 | -57 |
2670 | E7 | 6,1 | -53 |
3117 | C7 | 7,1 | -63 |
3563 | A7 | 8,1 | -67 |
4457 | C#8 | 10,1 | -73 |
4892 | D#8 | 11,1 | -60 |
5773 | F#8 | 13,1 | -58 |
La voix flûte est une lame vibrante dont les dimensions donnent la fréquence fondamentale unique. Le reste ne doit être que des harmoniques, ce qui est confirmé par le calcul de la troisième colonne. La note indiquée est une approximation fréquentielle juste pour information. La dernière colonne est le volume en décibel (dB) qui va nous permettre de définir les amplitudes relatives des harmoniques.
Voilà qui est intéressant : le son n'a pas beaucoup d'harmoniques, donc on va pouvoir le modéliser assez « facilement ». Le post-processing avec les effets enrichira naturellement cette source.
Détermination du spectre avec Morphine
J'utilise FL Studio pour mes projets musicaux. Son avantage est d'être 100% complet et gratuit pour tout le monde, mais vous ne pouvez pas rouvrir les fichiers sauvegardés et certains plugins se taisent périodiquement si vous n'avez pas payé la licence. Il y a certains plugins sophistiqués qui ne sont pas inclus dans ma version mais que je peux évaluer malgré tout sans sauvegarder. C'est le cas de Morphine, un synthétiseur additif de la marque.
Son concept est assez intéressant : vous indiquez votre échantillon sur la gauche et sa note MIDI (69 pour un La/A4), puis vous demandez le spectre via un menu. Le résultat est différent, alors j'ai enlevé les harmoniques qui ne sont pas dans le tableau précédent et sans toucher aux amplitudes. Le reste du logiciel implémente des effets pour en faire un outil complet.
Après une rapide mise en forme, voici de façon très brute le type de son qu'on peut obtenir : 🎧 vst_morphine_demo.mp3
Et c'est pas mal du tout !
Tableau des volumes
Le volume est noté en décibel qui est logarithimique. Pourtant, FL Studio affiche les volumes en décimal ou avec un pourcentage.
Voici les relations mathématiques connues et un tableau de correspondance :
dB = 6/ln(2) * ln(Décimal)
Décimal = exp(ln(2)/6 * dB)
Pourcentage | dB | Décimal |
---|---|---|
100 % | 0,0 | 1,0 |
96 % | -0,9 | 0,9 |
92 % | -1,9 | 0,8 |
87 % | -3,1 | 0,7 |
81 % | -4,5 | 0,6 |
75 % | -6,0 | 0,5 |
67 % | -7,9 | 0,4 |
58 % | -10,3 | 0,3 |
46 % | -13,8 | 0,2 |
29 % | -19,8 | 0,1 |
24 % | -24,0 | 0,06 |
14 % | -27,9 | 0,04 |
9 % | -32,0 | 0,03 |
3 % | -43,4 | 0,01 |
0 % | -∞ | 0,0 |
Modélisation de l'oscillateur avec Sytrus
Je vais utiliser plutôt le synthétiseur Sytrus, car il est inclus à partir d'une licence inférieure (on pourra rouvrir les fichiers sauvegardés) et je ne connais aucune alternative aussi bien. Celui-ci fonctionne avec des volumes en pourcentage, d'où le tableau ci-dessus pour faire correspondre l'amplitude des harmoniques.
En reprenant le spectre donné par Audacity, nous avons la modélisation suivante. Malheureusement, le résultat n'est absolument pas conforme aux attentes... Ça ne mérite même pas de vous proposer un aperçu du son obtenu.
Harmonique | ΔdB | Pourcentage |
---|---|---|
1 | 0 | 100 % |
4 | -12 | 52 % |
5 | -23 | 22 % |
6 | -19 | 31 % |
7 | -29 | 12 % |
8 | -33 | 9 % |
10 | -39 | 4 % |
11 | -26 | 17 % |
13 | -24 | 20 % |
Du coup, on va essayer de reprendre les amplitudes données par Morphine. Nous avons alors :
Harmonique | Pourcentage |
---|---|
1 | 100 % |
4 | 64 % |
5 | 48 % |
6 | 71 % |
7 | 39 % |
8 | 49 % |
10 | 41 % |
11 | 53 % |
13 | 41 % |
La modélisation donne un résultat beaucoup plus fidèle bien que cela reste encore non naturel. En ce sens, la fonctionnalité de spectre automatique avec Morphine vous fera gagner un peu de temps.
Le côté rustre du son est causé par l'addition spectrale de sinusoïdes qui ne sont pas un son riche et qui sont limitées en nombre. On peut composer les harmoniques avec autre chose que des sinusoïdes. C'est pourquoi on va toucher aux excellentes options de l'oscillateur. Ça change le spectre final du son, mais le spectre pour la composition reste inchangé. En fait, ça ne change pas grand chose au problème et ça enrichit le son sans effort et sans trop de déformation.
- Shape = 30 %
- Tension = 25 %
- Sine shaper = 25 %
- Pre-filter = 12 / 10
Enveloppe ADSR
Le volume de l'accordéon évolue selon une courbe. Parce que la main met en mouvement le soufflet, il y a d'abord un temps d'attaque (attack) amenant le volume quasiment à son maximum. Parce qu'on a tiré un peu fort, la main se détend et tente de garder la pression, donc le volume va diminuer dans un délai (decay) et rester presque constant pendant un autre temps (sustain). Si le volume ne peut pas se maintenir indéfiniment, une pente forcée peut être appliquée (fade). À la fin, la main va repartir dans l'autre sens durant un temps de relâchement (release).
Si votre logiciel est équipé d'un contrôleur d'enveloppe (c'est le cas de Sytrus), vous pouvez tracer la forme de votre choix, aussi folle soit-elle. Sinon la simplification ADSR (attack, decay, sustain, release) permet de définir une équivalence acceptable. Pour trouver les bons paramètres, il faut enregistrer votre instrument et jouer une note normalement. La courbe ADSR apparaît en imaginant un peu :
Je fais le choix que les différents délais sont valables quel que soit le tempo. Je mesure A=100 milli-secondes, pareil pour R. Je définis ensuite -4 dB pour un sustain de 2 secondes. L'enveloppe ressemble à ceci à la fin. Il est bien d'avoir le début et la fin pas abruptes pour éviter l'effet de clic, tel un robinet provoquant des coups de bélier dans votre réseau d'eau si vous l'actionnez trop vite.
Pitch-bend transitoire
En affichant le spectre de l'accordéon en temps réel, on voit que la fréquence d'oscillation n'est pas atteinte immédiatement. Soit c'est un problème algorithmique dans l'implémentation du FFT, soit c'est tout simplement la réalité physique.
La fréquence étant fonction des dimensions de l'anche dont l'une des extrémités est solidement rivetée sur un châssis, la fréquence n'est pas censée varier contrairement à l'amplitude. Pour le vérifier, il faut regarder l'enregistrement brut de l'accordéon. En moyennant sur plusieurs oscillations, on note la durée correspondante au début et à la fin de l'attaque. Dans mon cas, j'obtiens partout 0.009 secondes pour 4 oscillations, soit une fréquence d'environ 444 Hz qui est bien mon La/A4 joué.
Il n'est donc pas nécessaire d'ajouter un pitch-bend, c'est-à-dire une courbe pour faire varier la fréquence en fonction du temps. Je vais néanmoins le faire, car cela donne un petit plus indescriptible. Le son me paraît légèrement moins terne tout en restant dans l'esprit de l'instrument.
Balance
Pour enrichir le son simplement en faussant la perception, on peut modifier la balance (pan). Seulement, une anche est monophonique (elle est toute seule à vibrer) : il ne peut pas y avoir d'effet stéréo natif. Du coup, on ne paramètre rien.
Unison et réverbération
Le son restant toujours un peu sec, on peut l'élargir en activant un peu d'unison et en paramétrant la boîte d'effets pour n'autoriser que la réverbération.
L'unison est la répétition d'un son avec un très léger décalage fréquentiel. Il agit très en amont de l'oscillateur et passe donc à travers les enveloppes de modulation. On peut mettre un effet de chœur (chorus) mais c'est tricher en aval des enveloppes de modulation. C'est vraiment à l'oreille que le choix se fait.
La réverbération est complètement valable dans le sens où le son est confiné dans l'instrument. Si votre accordéon a un cassetto, cette réverbération est obligatoire pour la voix concernée. Le volume d'effets est réglé pour ne pas être trop imposant.
Modulation FM/AM
On a vu que la fréquence ne variait pas, donc la matrice de modulation en fréquence (FM) est ignorée.
Je n'ai pas activé la modulation en amplitude (ring modulation, AM) parce que l'enveloppe ADSR laissait entrevoir une pente (fade) qui est déjà prise en compte par le contrôleur d'enveloppe. À moins que vous n'ayez un parkinson en phase terminale, votre main n'est pas censée trembler au point de faire fluctuer le volume. J'avais oublié mais cela tombe bien.
Patcher
Maintenant que la modélisation d'une anche est réalisée, il faut considérer l'assemblage de l'accordéon. Cet instrument est composé de plusieurs voix, registres, cassotto... Pour aborder le sujet, partons du résultat :
- L'interface :
- Main droite
- Choix parmi 5 voix pour composer un registre
- Volume ajustable pour des raisons virtuelles de mixage bien que ça ne soit pas très réaliste
- Activation des cassottos avec une coche
- Main gauche
- Choix de 2 registres avec désactivation automatique de la main droite
- Volume ajustable pour des raisons virtuelles de mixage bien que ça ne soit pas très réaliste
- Main droite
- Le moteur est sophistiqué en raison des limitations du logiciel. Il ne gère pas simplement le routage conditionnel pour faire un bypass (astuce alternative), le Fruity Formula Controller n'a qu'une seule sortie, et le volume doit systématiquement ếtre rabaissé de 100% à 80% avec des formules externes (50% pour d'autres VST).
La main droite contient 5 réplications du synthétiseur Sytrus modélisé. Le basson est défini avec un pitch de -12 demi-tons (-1 octave) et le piccolo avec +12 demi-tons (+1 octave). Les musettes sont respectivement de ±15% sur l'ajustement de fréquence, car je ne vois pas d'option pour travailler avec des fractions de demi-tons.
Les cassottos sont des coches pour le basson et piccolo qui activent une réverbération mise en série avec Sytrus. En effet, il n'est pas possible de piloter la matrice de modulation directement.
La main gauche se joue en Do/C3 avec le registre de base qui active une voix à +2 octaves (+24 demi-tons ou fréquence x4). Le registre étendu active les voix à -1 octave (-12 demi-tons ou fréquence/2) et +1 octave (+12 demi-tons ou fréquence x2). Si la main gauche est choisie, la main droite est automatiquement rendue silencieuse, mais il est conseillé de désactiver les voix concernées. Cette approche permet d'avoir le même instrument (preset) pour gérer les deux côtés de l'instrument.
Le son est routé vers un WaveShaper pour arrondir le son qui dépasse et créer quelques harmoniques nouvelles au passage. Un filtre passe-bas fait du zèle pour la forme. Et enfin, un Fruity Limiter vient calibrer le volume parce que la démultiplication des oscillateurs augmente le volume de 3 dB à chaque fois que leur nombre double.
Résultat final
Voilà dans les grandes lignes la modélisation qui est loin d'être parfaite. Il manque beaucoup d'harmoniques mais la virtualisation de l'instrument respecte ses caractéristiques.
Le résultat est assez satisfaisant bien que ça ressemble à un orgue : 🎧 vst_final_emile.mp3
Le preset FST de ce projet n'est pas disponible au téléchargement. Vous avez toutes les informations ci-dessus pour reproduire le résultat et faire vos ajustements.
Sampling audio d'un accordéon
Roland désigne ci-dessous un fabricant japonais de matériel électronique connu pour avoir créé des accordéons numériques dans les années 2000. Les produits ont la forme d'un accordéon mais ils ne contiennent que des circuits électroniques. La technologie était protégée par le brevet US6946594B2 jusqu'en 2022. Il suffit de lire pour comprendre quel est le secret.
S'agit-il d'un synthétiseur additif ? Absolument pas et tout ce qu'on a fait au-dessus n'a rien à voir. Les accordéons Roland reposent sur l'échantillonage : ce sont des romplers.
« The operation of the current sound modules is based on sampling and storing characteristic sounds being produced by individual keys/buttons; on pressing a key/button the sound module reproduces the characteristic sound of that key/button as long as such key/button is released ». Cela veut dire que les sons sont pré-enregistrés et restitués par modulation d'amplitude et de fréquence selon des paramètres dépendants de chaque note jouée. Toutes les anches n'ont pas la même taille et donc pas le même comportement.
« By comparing the sound produced by an acoustic accordion with the sound produced by the state-of-the-art electronic accordions, it becomes clear that the quality level of the sound produced by electronic accordions is rather poor and it's not suited to professional or semi-professional performances ». Cela veut dire que Roland ne trouve aucune qualité aux dispositifs électroniques existants (en 2002) qui tentent de reproduire l'instrument. Ils concluent à la fin du brevet que les techniques revendiquées en font des accordéons qualitatifs pour des performances professionnelles.
« The sound module comprises a memory, a processor and a series of sound generators, that can be controlled by the processor individually, so as to generate a sound according to the specifications provided by the very processor. In the memory a series of sounds are stored, that are obtained by sampling the sounds produced by the various components of an acoustic accordions ». Pour faire évoluer votre accordéon rompler, vous devrez mettre à jour sa mémoire. À noter que le nombre de mises à jour possibles est limité par la technologie des puces.
« Each ramp S is just a function normalized between 0 and 1 and it's used as a multiplier of the volume generated by a sound generator so as to obtain a progressive increase/decrease of the sound generated by the very sound generator. Each ramp S is preferably an exponential function of the first order that is determined by the value of its time constant ». Cela dit que l'enveloppe ADSR est modélisée par une courbe exponentielle de type
a.e^bt
dont les paramètres dépendent de chaque note.« The generation volume of the sound generator is modulated by a signal being normalized between 0 and 1 (indicated by the N character in the FIG. 3), which is kept at the 0 value as long as the real pressure P is lower than the corresponding Pon value, then it's gradually increased to the 1 value by means of the related increase ramp S if the real pressure P becomes higher than the corresponding Pon value (instant t1), it's kept at the 1 value as long as the real pressure P exceeds the corresponding Poff value, and it's gradually decreased to the 0 value by means of the related decrease ramp S if the real pressure P becomes lower than the corresponding Poff value (instant t3) ». Cela dit que la pression est continuellement mesurée dans le soufflet et que les notes s'activent à partir d'une pression minimale et saturent avec une pression maximale. Ces pressions dépendent de chaque note. En cas de casse du capteur de pression, l'appareil devient inutilisable.
« The fact is simulated that a reed in an acoustic accordion starts vibrating within a shorter time if the pressure of the air pumped by the bellow is high and if that reed is still moving ». La courbe ADSR dépend de la pression.
« In an acoustic accordion, when a key is released, the related valve is consequently closed thus generating an harmonic closing noise, which is clearly perceived by the ear of an expert listener even though it's rather low. [...] In order to reproduce the closing valve noise, when a key/button 3 is released, the processor acquires from the memory the characteristic closing sound of the related valve and it operates a sound generator so as to reproduce such closing sound with an amplitude (i.e. volume) and a duration which depend on the release dynamics; in particular, the amplitude and the duration of the closing sound increase as the release velocity increase. According to a preferred embodiment, each closing sound is reproduced with an amplitude, namely a volume, that is consistently decreasing in a time period starting from a maximum value down to the zero value (at which a the corresponding sound generator is switched off) by means of an exponential ramp ». Roland simule le bruit exponentiellement décroissant des clapets mécaniques qui se referment lors du relâchement des notes. Cela ne peut pas être modélisé dans ce qu'on a fait plus haut.
« To better simulate the behavior of an acoustic accordion, at regular time intervals the processor acquires the pressure value P relating to the air pumped by the bellow and compares such value with the pre-determined threshold value Ps, that is stored in the memory; when the value P exceeds the value Ps the sound produced by each operating sound generator reproducing the vibration of a corresponding reed is altered by decreasing the pitch of the very sound by a corresponding quantity I, that is stored in the memory, is peculiar to each reed and is either constant or variable in a manner being directly dependent on the value of the pressure P. Each quantity I is characteristic of a corresponding reed and usually the lower the sound produced by a reed is, the higher the quantity is (the quantity may even be zero for the highest notes). Obviously when the P value becomes smaller than the Ps value, the pitch decrease is eliminated and the sound produced by each operating sound generator reproducing the vibration of the corresponding reed is given its original pitch back ». Si vous êtes trop violent avec votre accordéon, la fréquence de certaines notes sera réduit et elles sonneront plus graves. Cette saturation est modélisée en fréquence note par note par Roland, mais en amplitude globalement dans mon modèle avec WaveShaper.
« An acoustic accordion can be tuned up so as to acquire the so-called “musette” tone, which requires some slight tuning differences among reeds of the same footage so as to originate beat occurrences in its sound that provoke a “tremolo” effect of the sound. When the user acts on a corresponding register in the electronic accordion 1 to select the “musette” tone, the processor changes the value of a related control variable VC in the memory in order to start the “musette” function; this function slightly alters the pitch of some sounds that are characteristic of certain reeds in order to simulate the tuning differences when such characteristic sounds are retrieved from the memory to be reproduced by the corresponding sound generators. The characteristic sound of every reed is modified by a corresponding quantity, which is usually peculiar to each reed, and whose value can be adjusted by the user by means of an adjusting parameter ». L'effet musette est générée par modulation de fréquence. C'est ce que j'ai fait aussi plus haut.
À aucun moment le brevet ne donne les paramètres de modélisation. Les quelques principes élémentaires sont expliqués sans détailler les contraintes d'implémentation au niveau des puces (conversion analogique/numérique, traitement du signal DSP...). Ils se sont arrogé tout le marché des accordéons autonomes pendant 20 ans. Tous les concurrents utilisent des adaptateurs MIDI à monter sur des instruments mécaniques, ou implémentent des systèmes équivalents via onde radio. Dans tous les cas, en ayant un simple contrôleur MIDI, la puissance des ordinateurs pourrait faire tout aussi bien.
En reprenant uniquement mon très court échantillon en La/A4 pour l'analyse spectrale (🎧 vst_signal.flac), je me suis amusé à rompler avec FL Studio via Fruity Enveloppe Controller même si le mieux serait d'utiliser DirectWave à condition d'avoir une licence Signature. Pour modifier la fréquence, on utilise l'algorithme élastique de streching fréquentiel intégré. Le résultat est finalement extrêmement rapide à obtenir, bien que cela nécessite un enregistrement de haute fidélité. Le spectre n'est absolument pas contraint à la 13ème harmonique mais le son est absolument horrible. Il est métallique à souhait, strident, monophonique, sans aucune profondeur : 🎧 vst_rompler_emile.mp3.
Cela illustre l'intérêt des romplers et pourquoi ils sont indispensables pour avoir un son d'accordéon potable.
Revision #15 was last modified by alexoudeon
on 2024-09-08 at 00:00:00 — ee8af82c9e7b8b96