Débuter avec Hpk Composer 2.1 et 2.2





Présentation

Hpk Composer 2.1 a été créé par Jean-Pierre Lemoine en java. Il permet de générer des fichiers Orc , la partition, et Sco, l’instrumentation, en CSound. Il permet aussi, parallèlement de créer des mondes virtuels en VRLM. Dans le cadre de Csound, il faut garder à l’esprit que vous n’allez pas travailler en temps réel mais en temps différé. Même si CSound permet quand même une fonction temps réel quand les fichiers ne demandent pas trop de ressources. Les fichiers sont générés puis calculés par l’ordinateur. Il faut donc s’armer de patience et ne pas hésiter à expérimenter. En contre partie, vous allez pouvoir créer des samples dont certaines structures sont complexes. Csound s’inscrit dans la lignée de la série des Music 4 à 10 élaboré par Max Matthews, dans son prolongement.


Les premiers réglages

Figure 1

Une fois lancé HpK Composer, vous allez obtenir cette page comme ci-dessus.

Figure 2

Avant toute chose, il sera nécessaire d’effectuer les réglages du set up afin de pouvoir écouter le résultat de vos recherches sonores. Repérez le petit bouton
"edit settings" ci-dessus, le 8e tout en haut à partir de la gauche. Cliquez dessus et vous allez découvrir la page suivante :

Figure 3

Vous pouvez choisir entre les formes d’ondes waves et aiff, entre sortie mono ou stéréo. L’external player va vous permettre d’indiquer le chemin à HpK Composer de votre éditeur préféré. Tout en bas, vous devez indiquez le chemin de CSound Exe. En l’occurrence, celui indiqué est la version 4.2.3, vous pouvez choisir aussi le CSoundVS. Les deux fonctionnent parfaitement avec HpK. En revanche, la version 4.2.3. permet de réaliser une écoute en quasi temps réel, sans enregistrement préalable de la forme d’onde générée. C’est utile et surtout très pratique. Pour activer cette fonction, activez la fonction Real Time Audio ainsi que celle de Custom comme indiqué sur la figure. Ajoutez tout simplement –o dac ce qui vous donnera accès à l’écoute temps réel.

La première séquence

Figure 4
Une fois réglé le set up qui vous permettra d'obtenir la génération de la synthèse, cliquez sur le 10e bouton à partir de la gauche, et vous allez voir apparaître cette page comme ci-dessous.

Figure 5

Cliquez sur le petit bouton rectangulaire indiqué par le curseur de la souris, il va s'afficher en vert. Vous venez de rendre active la première structure.

Figure 6
La première des huit structures est activée. Chaque structure est indépendante et popose quatre instruments. Les huit structures peuvent être assignées ensemble mais elles demanderont un temps de calcul beaucoup plus important qu'un nombre plus limité. C'est ici que vous allez écrire en quelque sorte votre partition. Mais avant toute chose, examinez la barre d'outils ci-dessous :


Figure 7

Les trois premiers boutons en haut à gauche permettent de sauvegarder (bleu), d’ouvrir un fichier (orange), de créer une nouvelle composition (blanc). Les trois autres boutons, toujours en partant de la gauche, permettent de générer les fichiers C sound (orc et scor), de générer les fichiers et la forme d’onde (entre les deux symboles), de lire sur un lecteur extérieure le fichier généré.
A droite des fonctions de base, on trouve trois fois huit modules. Les huit premiers, en gris, permettent d’activer une structure qui se colore dès lors en vert. C’est ici que va se créer en quelque sorte la partition, que l’ensemble des paramètres sera généré en fichier scor. La seconde série correspond à l’instrumentation, avec le choix des instruments, des générateurs de sons, de filtres, de différents contrôles sur les paramètres. La troisième section, avec les chiffres en bleus, permet d’accéder aux différents effets, des réverbérations et des delays.

Figure 8
Pour créer votre première séquence, définissez sa longueur qui sera exprimée en secondes, en dixième, centième voire millième de secondes qui sera créée. Attention, plus celle-ci sera longue, plus le temps de calcul sera important. Car n’oubliez pas, vous allez devoir, pour enregistrer celle-ci, travailler en temps différé et faire calculer les séquences par l’ordinateur. Dans un premier temps, nous choisissons une durée de 30 secondes.

Pour conservez les valeurs qui vous intéresse, n’oubliez pas d’enregistrer le fichier et de continuer vos recherches, vos expérimentations, sur un nouveau. Dans le cas contraire, vous conserverez une forme d’onde qui dépendra du résultat de votre dernier calcul.

Figure 9
En premier lieu, vous allez définir ce qui sera joué par les instruments. C’est en quelque sorte la partition. Dans Csound, le temps s’exprime en secondes, dixièmes, centaines voire millièmes de secondes. Cette notion est importante pour la suite.
- Le paramètre t qui est souligné en vert correspond à la densité d’évènements qui sera créée, c'est l'Event density En fait, il permet aussi de calculer la disposition temporelle entre chaque évènements. Plus il sera faible, à plusieurs décimales en dessous de 0, plus un nombre d’évènements important sera généré. Pour ce premier exemple, vous allez choisir une valeur d'une seconde. Bien entendu, vous pouvez choisir d'atres valeurs comme 0.5, 0.25 soit une demie et un quart de seconde. Vous verrez ainsi le nombre d'évènements augmenter ou diminuer

Figure 10
Le module d, lui aussi souligné en vert, Event duree défini la durée de l'évènement. Pour l'exemple, choisissez là aussi une seconde puis expérimentez diférentes valeurs comme avec l'event density.

Figure 11
Le paramètre p correspond à la note midi d’un clavier. La note 36 est celle du do4 pour HpK Composer, donc, le Si sera noté 35, le Sib 34, le La 33, le do# 37, le ré 38, etc. Le do du milieu d’un clavier correspond pour Kpk Composer à C5 soit la note 48. Pour l'exemple, choisissez la valeur 48 ou 60 qui correspond à un Do.
- Le paramètre a est la valeur d’amplitude, situé à la droite des chifres 1 à 3, est fixé à 90 par défaut.

Il est parfois souhaitable, selon l'amplitude de la forme d'onde générée, de diminuer sa valeur ou de l'augmenter.
Une noire sur un tempo de 60 vaut une seconde, une croche vaut une demie seconde soit 0.5, une double croche vaut un quart de seconde soit 0.25, une triple croche vaudra 0.125 secondes, etc. Une blanche équivaudra à 2, une noire à 4. Une note pointée équivaut à la valeur de la note plus sa moitié soit pour une noire pointée 1.5, pour une croche pointée 0.75, une double croche pointée 0.375, etc. Sur un tempo de 120, il faudra diviser ces valeurs par 2. Mais tout porte à croire que si vous souhaitez utiliser CSound, c’est que vous savez calculer ce genre de chose.

Figure 12

A ce stade, cliquez sur le bouton signalé par la flèche de la souris. Une autre page va s’afficher, il s'agit de celle des instruments.


Figure 13

Pour générer une séquence musicale, vous allez disposez dans le cadre de cette première structure de quatre instruments qui proposent chacun 18 générateurs sonores. A vous de les essayer pour déterminer ceux avec lesquels vous allez travailler le plus fréquemment. Ils ont, bien entendu, leur propre spécificité. Pour cet exemple, choisissez un pluck qui sera joué de façon brute sans aucun effet, sans filtre, sans contrôle. Pour celà, vous allez configurer comme ci-dessous les sorties des instruments :


Figure 14

Soit vous cliquez sur le premier bouton comme sur la copie d'écran, et qui correspond à la sortie du premier générateur de son, celui d'en dessous, le second, etc. Ce routing conduit le signal vers l'unité de traitements (transformer) avec les filtres ainsi que les effets. Vous pouvez aussi cliquer sur les sorties output qui seront sans traitements de filtres et de ring modulation. En revanche, vous pourrez assigner à ces sorties un ou plusieurs effets. Traitements qui seront expliqués par la suite.

Figure 15
La première séquence est prête à être lancée. Cliquez sur le bouton indiqué par la flèche de la souris. Si vous avez configuré la page setting avec la possibilité d'un traitement en real time audio avec l'-o dac, comme sur la 4e figure ci-dessus, vous devez entendre cette première séquence. Et si vous déconnectez les deux boutons Real Time et custom et que vous relancez le calcul vous allez générer une forme d'onde, soit une wave soit une aiff, selon votre choix initial.


Figure 16
En cliquant sur le bouton indiqué par la flèche de la souris, vous allez accéder à votre éditeur. Ici, c'est Audacity, un éditeur gratuit pour PC et Mac conçu par une équipe de programmateurs. Audacity affiche ci-dessous la forme d'onde qui a été calculée par Hpk Composer :

Figure 17

Le fichier Hpk Composer 2.1 : exemple1

A ce stade, vous pouvez générer la séquence avec un filtre, il suffit de cliquer sur l’un des deux filtres qui propose un choix de 12 modules, et ajouter, pourquoi pas une ring modulation.

Figure 18


En cliquant sur le bouton 1, vous allez accéder à la section effets.


Figure 19

Elle propose le chaînage de 5 effets avec pour chacun 16 possibilités différentes

Générer des séquences plus élaborées

HpK Composer propose une palette d’outils qui vont vous permettre de créer des séquences bien plus complexes que le premier exemple ci-dessus.

Figure 20

Une des fonctions d’HpK Composer pour générer des algorithmes complexes est celle proposée par le Mask Modifier. Celui-ci est applicable aussi bien pour les données de densité, de durée que de hauteur. Il suffit seulement de changer d’échelle dans les valeurs numériques.
A ce stade une petite explication concernant les outils proposés. - Refresh, situé au-dessus et à gauche de l’interface graphique, permet de régénérer celui-ci. Celle-ci peut être affichée soit en lignes, soit en points.

Figure 21

La commande ci-dessus est employée pour inscrire une valeur numérique. Si elle est fausse, elle s’inscrira en rouge. En cliquant sur la lettre, ici V, vous obtiendrez d’autres affichages, d’autres possibilités. Comme ci-dessous :

Figure 22

Dans le paramètre p, on inscrit un couple de valeur numérique, avec une valeur de début et la seconde de fin. Une interpolation sera réalisée entre ces deux points.

Figure 23

Avec le paramètre t, on peut inscrire un ensemble de points de temps, le premier chiffre étant le déroulement du temps en secondes, et de valeur pour le second. En l’occurrence, pour cet exemple, des notes midi. Bien entendu, on peut aussi se servir de cette commande pour générer les paramètres de l’event density (t) et l’event duration (d). Dans ce cas, dans l’exemple ci-dessous, le second chiffre est inscrit en centième de seconde, soit 0,5, 0,7 et 075’’. En bas du graphique, inscrit en vert, la durée de l’échantillon générée.

Figure 24

Passons maintenant en revue les différents outils d’HpK Composer pour générer des valeurs de temps et de hauteur. L’intérêt du logiciel créé par Jean-Pierre Lemoine est de pouvoir les utiliser sur quasiment tous les paramètres, y compris sur les contrôles de filtre, des instruments, des modulateurs, etc. Passons sur le module constant découvert au début du tutorial. C’est le plus simple : on inscrit seulement une valeur, un durée, une hauteur, une amplitude.

- List

Figure 25

Le module list cycle permet de générer des durées de temps aussi bien pour l’event density que l’event duration.

Figure 26

Même chose pour l’event pitch qui est exprimé en notes du clavier midi.

- Segment

Figure 27

Le module segment permet de générer des interpolations entre les couples de valeur affichés ci-dessus. Utilisé pour l’event density, il va déterminer le nombre de notes - en l'occurence, c'est plutôt le nombre d'évènements générés - qui seront jouées. Ainsi entre (0 0.01) le début de la lecture de l’échantillon qui est faîte à 0.01 secondes et le couple (2.0 0.1), soit à 2 secondes sur une durée de 0.1 secondes, les notes générées vont passer de 0.01 à 0.1 secondes. Même chose entre les couples (2.0 0.1) et (5.0 1.0) et (6.5 1.5).

Figure 28
Le graphisme sur la figure à gauche permet de se rendre compte de l’interpolation entre les placements des notes générées. Plus l’échantillon évolue dans le temps, plus les notes sont espacées. Notez l’intérêt du choix de l’affichage par points plutôt que par lignes dans le cas présent.

Figure 29
Pour l’event duration, le système est le même, les couples vont générer des valeurs de placement dans le temps, le premier chiffre et la durée de l’évènement, de la note générée. Notez que les valeurs choisies entre l’event density et l’event duration peuvent être les mêmes. C’est même le choix le plus simple.

Figure 30

Dans le cas présent, la forme d'onde générée correspond bien au graphisme situé un peu plus haut. Mais dans le segment concernant l’event density, essayez de changer la valeur de la durée du dernier couple, mettez 0.15 au lieu de 1.5 et écoutez le résultat.

Figure 31

cette nouvelle forme d'onde générée montre bien le changement de la dernière valeur, plus restreinte dans le temps, elle augmente à nouveau le nombre de notes dès la 6 seconde. Le module segment permet aussi de choisir dans une distribution linear, exp (exponentielle), cos (cosinus).

- Range

Figure 32
Le module range est un des plus simples. Il agit entre ces deux valeurs affichées. On peut l’appliquer dans quasiment tous les contrôles des paramètres. Dont, l’event density, l’event durée, l’event pitch qui s’exprimera en notes midi du clavier
– L : 50 H : 72 –
ainsi que pour les contrôleurs concernant les instruments, les filtres, sur une base, généralement, de valeur allant de
0 à 127
. A noter aussi à chaque calcul un changement des valeurs générées. Cela peut-être utiles pour obtenir des données différentes, et avoir des données quelque peu aléatoires.

- Probability

Figure 33

Le module probality permet différents affichages de valeurs et utilise le Mask Modifier. Ici, concernant l’event density qui génère le placement et le nombre de notes, de points, sur l’ensemble de la durée de l’échantillon, les valeurs sont de
0.125, 0. 5, et 2 secondes
. N’hésitez pas à modifier les valeurs, tentez des combinaisons.

Figure 34

Ici, un autre exemple de réglages sur l’event duration où la distribution sera différente à chaque calcul. Utilisez la commande Refresh placée au-dessus du graphique et observez en bas à gauche les valeurs générées.

Figure 35

Sur cette figure à gauche, le réglage concernant les hauteurs pour l’event pitch. Elles seront interpolées entre la note 20 du clavier midi et la 80. Attention, à chaque calcul les résultats sont différents.

Figure 36

Un des aspects intéressants du module probability est la possibilité pour insérer les valeurs de hauteur d’utiliser l’éditeur graphique. Cliquez sur le symbole situé tout en haut à droite. Vous accédez à une autre page.


Figure 37
Cette page va vous permettre en cliquant de positionner exactement les valeurs de placement des notes et leur hauteur. Celle-ci est indiquée avec le chiffrage Américain et le numéro de la note midi.

Figure 38

Une fois revenu sur la page principale, vous pouvez constater, ci-dessus, que l’affichage des valeurs temps et hauteurs a été modifié.

Le concept de base dans CMask, pour générer des évènements stochastics pour Csound est un masque de tendance limité par deux variables de temps. Cette surface décrit un espace des valeurs possibles concernant un paramètre de points, une amplitude, une hauteur, d'un panoramique, d'une durée, etc... Pour chaque paramètre d'un événement (a note statementpfield in Csound) une valeur aléatoire sera choisie parmi le champ défini. CMask propose aussi pour la génération des paramètres différents outils comme des oscillateurs, des promenades aléatoires (random walks, des listes cycliques. Important, chaque paramètre d'un évènement peut-être généré par chacun de ces outils. CMask produit des nombres aléatoires soit par un simple générateur aléatoire ou grâce à des distributions aléatoires à partir des calculs de probabilités. Les distributions implantées sont : uniforme, linéaire, triangle, exponentielle, bilatérale et reverse exponentielle, gaussian, cauchy, bêta et weibull(1).

- Oscillator

Figure 39

L’oscillator est un module qui permet de générer aussi bien les paramètres de l’event densite, l’event duree, l’event pitch, le contrôle des filtres, des instruments. Pour cet exemple concernant les hauteurs, celles-ci sont les mêmes que l’exemple précédent. N’hésitez pas à modifier le paramètre qui va agir sur la phase du sinus, en lui donnant une valeur de 0.05, vous allez générer des notes ascendantes. Essayez aussi les différentes formes d’ondes :
cos, sawup, triangle, square
, etc. De même, pour insérer les valeurs de hauteur vous pouvez utiliser l’éditeur graphique.

- Fractal

Figure 40

Examinez les valeurs de durée générées par le module fractal. Les valeurs de t en temps sont de 1 seconde (1), de 2 secondes (2). A noter l’importance du paramètre Pv qui affiche une valeur de 3.2. N’hésitez pas à la modifier, elle affectera la durée des notes produites, tout comme pour la densité ou des notes calculées, selon la nature des paramètres que vous allez contrôler. Même chose au niveau des paramètres du Mask Modifier H-f-p (0 127) ou L-f-p. Voici sa traduction graphique :

Figure 41

En changeant la valeur 127 en .127, écoutez la différence, elle est considérable. En voici sa traduction graphique :

Figure 42

N’hésitez pas de changer ce paramètre entre ces deux valeurs, négatives et positives.

Quelques Exemples

J'ai choisi pour ce premier exemple, au niveau du paramètre Pv sa valeur par défaut 3.2 pour t qui correspond à l'event density, c'est à dire le nombre d'évènements générés et leur placements temporels et pour d, l'event duration, soit les durées.
Event density Hft : (0 0) (10 .0001) (10 0.01) (15 1) (20 0.001) - Lft : (0 0.01) (5 1.0) (10 0.01) (15 0.05) (20 0.001)
Event duration Hft : (0 0) (10 .0001) (10 0.01) (15 1) (20 0.001) - Lft : (0 0.1) (5 0.0001) (10 0.01)


En voici sa traduction graphique par points:


Et sa forme d'onde qui a été générée. Au centre, on découvre bien la forme d'une fractale dans cette séquence.


Avec les mêmes réglages de base concernant le Mask Modifier pour les events density et duration, la valeur du Pv est passé pour t et d à 1.


Ce qui donne comme forme d'onde avec cette valeur 1 cette 2e séquence.


Maintenant, changeons la valeur de Pv ent de 3.2 à 1 ce qui va changer la distribution temporelle des événements générés, de même changeons le Pv de l'event duration, t, de 3.2 à 3.5. Comme vous pouvez le constater sur le graphisme, la distribution a évolué.


La forme d'onde générée a aussi changé de façon notoire, tout comme, bien entendu la couleur sonore de cette nouvelle séquence.


Ici la valeur de Pv ded a été changée de 3.5 à 3.9. Comme vous pouvez le constater sur le graphisme, la distribution a là aussi considérablement changé, avec l'apparition d'une sorte de chaos. A noter que cette évolution apparaît dès 3.6.


La nouvelle forme d'onde générée est assez semblable à celle ci-dessus, on notera toutefois une augmentation de l'amplitude à partir de 10 secondes.


Enfin, pour conclure, pour reprendre le premier exemple, avec un event density dont le Pv est à 3.8 et à 3.2 pour l'evnet duration, en affectant un générateur sonore Fmwaveshapping, voici le genre de forme d'onde que l'on génère avec une signature d'image très fractale.



Documentation sur les fractales



FractMus 2000, une curiosité, un logiciel de musique fractale, il faut regarder les diférentes distributions. Génére des composition aléatoires en midi.






Ultra FractalUn logiciel pour créer de très belles images fractales, on peut télécharger une démo.








Fractal Music - Red Herring or Promised Land? Un texte qui semble particulièrement intéressant avec des exemples d'équations qui devraient être parlantes pour un mathématicien.


Un Tutorial avec graphiques. L'algoirithme fractal d'Hpk Composer permet d'obtenir des distributions assez semblables.


Un autre site sur les fractales intéressant, la figure du figuier semble correspondre là aussi à ce que je recherche comme définition.


(1) Fichier Pdf CMask a stochastic event generator for Csound