Les nouveautés de Csound 6.16.0
Précédent | Préface | Suivant

## Les nouveautés de Csound 6.16.0

### Notes de parution de Csound 6.16 (Juin 2021)

Cette réalisation tardive devait consister principalement en corrections de bogues, mais il y a de nouveaux opcodes significatifs, incluant le support pour une utilisation plus simple de contrôles MIDI et un nouvel opcode de connexion à Arduino. De plus, il y a un limiteur facultatif dans la chaîne de sortie du son.

Il y a aussi plusieurs nouveaux filtres avec notamment l'opcode final écrit par le "père de la musique par ordinateur" Max Mathews (avec Julius Smith) ! porté par Joel Ross.

- Nouveaux opcodes :

  - cntDelete efface un objet compteur.
  - lfsr, un opcode de registre à décalage avec rétroaction linéaire pour la génération de nombres pseudo-aléatoires.
  - ctrlsave stocke les valeurs courantes de contrôleurs MIDI dans un tableau.
  - turnoff3 étend l'extinction pour supprimer des instances d'instrument qui sont en file d'attente mais pas encore actifs.
  - ctrlprint affiche le résultat d'un appel à ctrlsave sous une forme utilisable dans un orchestre.
  - ctrlprintpresets affiche un préréglage de contrôleur MIDI.
  - ctrlselect sélectionne un préréglage pour les valeurs d'un contrôleur MIDI.
  - ctrlpreset defines a preset for MIDI controllers.
  - outall écrit un signal sur tous les canaux de sortie.
  - scale2 semblable à scale mais avec un ordre différent des arguments un filtre de lissage facultatif.
  - arduinoRead étend la famille arduino au transfert de valeurs en virgule flottante.
  - triglinseg et trigexpseg sont des version déclanchables de linseg et expseg.
  - vclpf est un filtre linéaire passe-bas résonant à 4 pôles basé sur une configuration de filtre analogique typique.
  - spf is a second-order multimode filter based on the Steiner-Parker configuration with separate lowpass, highpass, and bandpass inputs and a single output.
  - skf est un filtre passe-bas ou passe-haut du second ordre basé sur un modèle linéaire du filtre analogique de Sallen-Key.
  - svn un filtre non-linéaire à variable d'état avec contrôle de la saturation et fonction de transfert non linéaire facultative définie par l'utilisateur.
  - autocorr calcule l'autocorrélation d'une suite stockée dans un tableau.
  - turnoff2_i est une version s'exécutant à l'initialisation de turnoff2.
  - scanu2 est une révision de scanu pour le rendre plus proche du concept original. Amortissement maintenant d'une valeur positive et réécriture complète de la frappe d'initialisation, plus des améliorations diverses du code.
  - st2ms et ms2st sont des opcodes de conversion stéréo-MS et vice-versa avec contrôle de la largeur stéréo.
  - mvmfilter est un filtre avec une résonance prononcée et une durée de chute contrôlable.

- Nouveau gen :

  - gen44 permet d'écrire des matrices de raideur pour scanu/scanu2 dans un format textuel.

- Orchestre :

  - Les opérations += et -= fonctionnent maintenant avec les tableaux i et ks.
  - Les opérateurs de tableaux de taux-k n'agissent maintenant qu'au taux-k.

- Partition :

  - Une instance d'un instrument nommé peut avoir une fraction décimale ajoutée au nom pour permettre les notes liées et d'autres facilités qui n'étaient disponibles que pour les instruments numérotés.

- Options :

  - De nouvelles options --limiter et --limiter=num (où num est dans l'intervalle [0,1]) insèrent un limiteur tanh (voir la version 2 de clip) à la fin de chaque k-cycle. On peut l'utiliser lors d'expérimentations ou d'essais d'entrée spéciales pour protéger nos oreilles ou les haut-parleurs. La valeur par défaut dans la première forme est de 0.5.
  - Une erreur de frappe faisait que la balise <CsShortLicense> n'était pas reconnue, bien que l'ortographe anglaise (CsSortLicence) l'était. Corrigé.
  - Nouvelle option --default-ksmps=num qui change la valeur par défaut du nombre fixé en interne.
  - Nouvelle variable d'environnement `CS_USER_PLUGINDIR` ajoutée pour indiquer le chemin d'un répertoire de greffons de l'utilisateur (en plus du répertoire de greffons du système). Ce chemin de recherche ajouté pointe par défaut vers des endroits standard sur les différentes plateformes (documentés dans le manuel).

- Opcodes et Gens modifiés :

  - slicearray_i fonctionne maintenant avec les tableaux de chaînes de caractères.
  - OSCsend s'exécute toujours au premier appel quelque soit la valeur de kwhen.
  - pvadd peut accéder à la ftable interne -1.
  - L'efficacité de pan2 a été améliorée dans de nombreux cas.
  - Nouvelle version de pow pour le cas kout[] = kx ^ ivalues[]
  - expcurve et logcurve comprennent maintenant la vérification des intervalles et des valeurs terminales correctes.
  - Les opcodes de flux LPC ont bénéficié d'une amélioration majeure de leur exécution (accélération > 10x dans certains cas), grâce à une nouvelle procédure d'autocorrélation.
  - Restriction sur la taille du nom de répertoire dans ftsamplebank supprimée.
  - Si un argument qui n'est pas une chaîne de caractères est passé à sprintf pour être formaté comme une %s, une erreur est signalée.
  - La famille des opcodes readk supporte maintenant les commentaires dans l'entrée qui sont ignorés.
  - Paramètre iflag ajouté à sflooper.
  - Les opcodes beosc, beadsynt, tabrowl, et getrowlin ont été supprimés.

- Usage général :

  - Csound ne supporte plus les opcodes Python 2 suite à la fin de vie de Python 2.

- Bogues corrigés :

  - L'opcode wterrain2 n'était pas correctement compilé sur certaines plateformes.
  - L'opcode fprintks plantait lorsque le format contenait un %s.
  - Il y avait un bogue dans rtjack lorsque le nombre de sorties différait du nombre d'entrées.
  - FLsetVal fonctionne maintenant correctement avec des FLsliders à "valeurs inversées".
  - Les expressions conditionnelles à sortie de taux-a fonctionnent correctement maintenant.
  - Bogue corrigé dans l'option --opcode-dir.
  - sfpassign échouait à se rappeler du nombre de préréglages causant de la confusion. Ceci affectait aussi sfplay et sfinstrplay.
  - Opcode midiarp corrigé (issue 1365).
  - Un bogue dans moogladder où une valeur de 0dbfs affectait la sortie est maintenant corrigé.
  - Des bogues dans plusieurs filtres où istor valait 1 par défaut au lieu de 0 comme décrit dans le manuel ont été corrigés.
  - Erreurs d'affectation de numéros aux instruments nommés corrigées. Ceci touchait particulièrement la définition dynamique des intruments.
  - L'utilisation de %s dans le format de sprintf plantait si l'élément correspondant n'était pas une chaîne de caractères. Une erreur est maintenant levée.
  - Bogue corrigé dans ftprint où le déclancheur ne fonctionnait pas comme prévu.
  - Utilisation asynchrone de diskin2 corrigée.
  - pvs2tab ne plante plus dans le cas glissant mais donne une erreur.
  - Dans certaines circonstances turnoff2 pouvait provoquer le silence d'un autre instrument pendant un k-cycle. C'est corrigé.
  - timeinstk se comportait dans un UDO différemment que dans la normale. C'est corrigé.
  - La méthode init de midiarp a été corrigée car elle causait un problème avec un des modes arp.
  - La pondération de l'attaque de xadsr a été corrigée.
  - Le comportement de printarray pour les tableaux de chaînes de caractères a été corrigé (la normale est d'afficher à chaque cycle) ; une variante sans déclenchement a été ajoutée.
  - Une erreur de fusion d'instruments nommés lors de nouvelles compilations a été corrigée.
  - L'opcode ATSA atsinnoi pouvait causer des problèmes de mémoire. La version 6.16 est meilleure mais pas vérifiée.

- Changements système :

  - Nouvelle procédure d'autocorrélation pouvant calculer dans les domaines fréquentiels et temporels. Merci à Patrick Ropohl pour avoir suggérer cette amélioration.
  - Version minimale de cmake portée à 3.5.
  - Opcodes image supprimés. Ils sont maintenant dans l'entrepôt des greffons.
  - Opcodes faust supprimés. Ils sont maintenant dans l'entrepôt des greffons.
  - Les opcodes python sont maintenant dans l'entrepôt des greffons.
  - Les opcodes Ableton Link ont été déplacés dans l'entrepôt des greffons.

- Changements sur les plates-formes :

  - MacOS:

    - Certaines bibliothèques d'opcodes avec des dépendances ont été enlevées de la distribution. Les opcodes image, python, faust et les widgets FLTK ont été déplacés dans un entrepôt séparé et ne sont plus inclus.

### Notes de parution de Csound 6.15 (août 2020)

Un certain nombre de nouveaux opcodes se trouvent dans cette version ainsi que des extensions d'opcodes existants. En particulier il y a l'introduction du codage par prédiction linéaire (LPC) sur un flux, qui était demandée depuis lontemps.

Un autre aspect de cette version consiste en un grand nombre de corrections internes concernant de mauvais accès aux données, ainsi que les habituels ajustements et changements.

A partir de cette version, aucun frontal graphique tiers n'est fourni avec les paquets d'installation pour MacOS et Windows. Les utilisateurs doivent installer le frontal de leur choix séparément.

- Nouveaux opcodes :

  - ftset fixe plusieurs éléments d'une table à une valeur donnée.
  - L'opcode lufs calcule un indicateur d'intensité instantanée, intégrée et à court terme.
  - Le filtre bob est une simulation numérique du filtre analogique à résonance de Moog.
  - sterrain est une version améliorée de wterrain avec plus d'orbites possibles.
  - wterrain2 est une autre amélioration de wterrain avec moins de variations que sterrain.
  - count, count_i, cntCreate, cntRead, cntReset, cntCycles et cntState implémentent ensemble un nouvel objet compteur qui parcourt de manière cyclique un intervalle constant, comme dans PD.
  - Nouveaux alias pour les opcodes sc_ : sc_lag -> lag, sc_lagud -> lagud, sc_trig -> trigholf, sc_phasor -> phasortrigo.
  - println est semblable à printf mais sans le déclencheur.
  - rndseed fournit une graine pour les fonctions rnd et birnd.
  - arduinoStart, arduinoRead et arduinoStop fournissent un protocole pour transférer les données des capteurs d'Arduino vers Csound.
  - lpcfilter, lpcanal, allpole, pvslpc, pvscfs, apoleparams, resonbnk : nouveaux opcodes de prédiction linéaire sur un flux.
  - gauss - nouvelle version acceptant en paramètres la moyenne et l'écart-type, implémentant l'algorithme de Box-Muller.
  - pvsbandwidth - retourne une largeur de bande spectrale.
  - vps - met en forme un signal de phase selon un vecteur à deux dimensions.

- Orchestre :

  - #include d'url refonctionne.
  - La fin de fichier est mieux traitée dans le pre-lexer.
  - Corrections du numéro de ligne rapporté dans quelques cas d'erreur.
  - Les expressions conditionnellles produisant des chaînes de caractères sont corrigées, ainsi que d'autres cas.
  - La séquence //* n'est plus interprétée à tort comme le début d'un bloc de commentaires.
  - Lors de l'utilisation du mode sample-accurate un nouvel évènement de partition qui était aligné sur le ksmps pouvait stopper un cycle trop tôt. C'est corrigé.
  - La longueur de ligne maximale pour différentes entrées a été augmentée à 8192.
  - Il est maintenant légal de fixer le nombre de canaux en entrée à zéro.

- Partition :

  - Nouvel opcode de partition B semblable à b mais avec accumulation.
  - La fin de fichier est mieux traitée dans le pre-lexer.

- Options :

  - keep-sorted-score et simple-sorted-score acceptent toutes les deux après un signe = le nom d'un fichier dans lequel écrire la partition.
  - L'option print_version affiche la version de Csound utilisée à la fin de la restitution.
  - syntax-check-only retourne une erreur si la syntaxe a échoué.
  - opcode-dir : charge tous les opcodes de greffon à partir d'un répertoire donné (en plus des greffons chargés depuis le chemin des opcodes de greffon).

- Opcodes et Gens modifiés :

  - cent, semitone, dB précision améliorée.
  - taninv2 a maintenant une version tableau.
  - ftslice a plus de variations.
  - Les opcodes ptable sont maintenant obsolète car ils sont identiques aux opcodes table.
  - Le cas 9 de GEN20 (sinc function) a maintenant un paramètre facultatif pour l'intervalle x.
  - fprint(k)s a maintenant un spécificateur de format %s.
  - lastcycle corrigé et clarifié.
  - chn_k peut maintenant accepté le mode sous forme de chaîne de caractères. r=1 (entrée), w=2 (sortie), rw=3 (entrée+sortie).
  - trim améliorée.
  - Les opcodes HDF5 sont montés à la v1.12.0.
  - GEN16 est plus prudent sur la longueur des données.
  - scale a des arguments facultatifs supplémentaires pour spécifier l'intervalle en entrée.
  - schedule/schedulek peuvent prendre leurs arguments depuis un tableau.
  - GEN11 amélioré en ce qui concerne les erreurs d'arrondi.
  - partials a une méthode améliorée d'estimation de la phase.
  - ctrlinit vérifie que les valeurs sonte dans l'intervalle [0,127].
  - fin a un argument de format changé, et il est maintenant obsolète.
  - fink a le même changement d'argument.

- Utilités :

  - lpanal contient maintenant un nouvel algorithme alternatif basé sur la méthode de Durbin, en plus de la méthode originale de Gauss.

- Usage général :

  - Si l'on utilise FLTK, les widgets sont réinitialisés à la fin d'une exécution, ce qui n'était pas toujours le cas auparavant.

- Boques corrigés :

  - setcols était très abîmé; corrigé.
  - cps2pch et cpsxpc corrigés dans le cas d'un table de fréquences.
  - Si le générateur de nombre pseudo aléatoires sur 31 bit était initialisé à zéro il restait à zéro. C'est corrigé.
  - GEN20 était faux dans le cas 8 (triangle).
  - L'arrêt d'un instrument depuis un UDO fonctionne à présent.
  - L'expension de macro à la fois dans l'orchestre et dans la partition avait un bogue relatif aux variables non initialisées.
  - Lorsqu'un UDO fixait une valeur différente pour ksmps toutes les sorties vers un périphérique multicanaux était calculées de manière erronée.
  - Le redimensionnement de tableau avait un certain nombre de problèmes, tous sont réglés.
  - ftprint avait des problèmes ne suivant le manuel en ce qui concerne trig == -1 et pouvait montrer le mauvais indice.
  - part2txt/partials émettait occasionnellement la même piste (incluant le même ID de piste) plusieurs fois pour une date donnée. Corrigé.
  - expsegr dépendait incorrectement de ksmps lorsque que sample-accurate était forcé.
  - Les opcodes de table avaient une erreur lorsqu'ils étaient utilisés avec des longueurs non puissance de deux.
  - Une erreur de bornage a été corrigée dans OSCraw.

- Changements système :

  - Un plantage lorsque csound.evalcode était appelé sans csound.start a été corrigé.
  - Plusieurs problèmes de mémoire corrigés, principalement lors de reads/writes non valides.

- API :

  - Nouvelle fonction de l'API pour changer le répertoire par défaut des greffons.
  - Nouvelle fonction de l'API pour charger des greffons.

- Changements sur les plates-formes :

  - WebAudio :

    - Construit avec Emscripten 1.39.13 (LLVM backend).
    - Nouvelle version de CsoundObj.js dans un fichier unique avec toutes les classes et les fichiers webassembly combinés en utilisant npm et rollup.
    - Breaking : CsoundObj.importScripts() a été supprimé et rempladé par CsoundObj.initialize().
    - Les chemins pour charger d'autres fichiers ne sont plus pertinents avec le fichier unique.
    - initialize prend un AudioContext facultatif, sinon CsoundObj en créera un pour son usage.
    - Breaking : CSOUND\_AUDIO\_CONTEXT enlevé de l'espace de noms global ; à la place une référence à CsoundObj.CSOUND\_AUDIO\_CONTEXT.
    - Options de compilation changées à -O3 et sans information de débogage, selon les recommandations de construction par Emscripten.
    - Link-Time Optimization (LTO) activé pour une taille réduite.

  - MacOS :

    - coreaudio teste maintenant le nombre de canaux et il échoue s'ils sont insuffisants.

  - Bela :

    - Mise à jour de digiBelaOut et de digiIOBela.
    - Addition de l'opcode trill.

### Notes de parution de Csound 6.14 (janvier 2020)

Un certain nombre de corrections de bogues et d'améliorations, mais aussi des changements potentiellement significatifs ont été ajoutés.

Pour les codeurs en direct, les macros d'orchestre sont conservées entre les appels à compilerstr. Ca ne change pas le comportement des orchestres actuellement valides mais pourra être utile pour le codage en direct.

Les périphériques MIDI incluent maintenant l'association de périphériques multiples à des canaux de numéros supérieurs. Les détails sont dans la section MIDI du manuel.

- Nouveaux opcodes :

  - randc est comme randi mais il utilise une interpolation cubique.

  - mp3out est une implémentation expérimentale d'écriture d'un fichier mp3. Il pourra être remplacé par le travail développé actuellement dans libsndfile pour traiter les fichiers MPEG.

    Exemple simple :

        <CsoundSynthesizer>
        <CsInstruments>
        ksmps = 1000
        instr 1
          aa diskin "fox.wav", 1
          mp3out  aa, aa, "test.mp3"
        endin
        </CsInstruments>>
        <CsScore>
        i1 0 3
        e
        </CsScore>
        </CsoundSynthesizer>

    La syntaxe est "mp3out aleft, aright, Sfilename" avec trois arguments facultatifs "mode" (0=stéréo, 1=stéréo entrelacé (par défault), 3=Mono), "bitrate" 256 par défaut, et "quality" (entre 1 et 7), 2 par défaut (qualité élevée).

  - metro2 est comme metro mais avec l'ajout d'un rubato contrôlable.
  - ftexists reports whether a numbered ftable exists.
  - schedulek est un opcode de taux-k identique à schedule.
  - Nouveaux opcodes de canaux basés sur des tableaux : chngeti, chngetk, chngeta, chngets, chnseti, chnsetk, chnseta, chnsets.
  - lastcycle identifie le dernier k-cycle d'une intance d'instrument.
  - strstrip supprime les espaces aux deux extrémités d'une chaîne de caractères.

- Orchestre :

  - L'expression conditionnelle a?b:c calculait toujours b et c avant de choisir lequel retourner. Cela pouvait donner des erreurs de division par 0 ou causer des évaluations multiples d'opcodes inattendues. Elle implémente maintenant la sémantique commune du langage C.
  - Les macros de l'orchestre sont maintenant persistantes, si bien qu'elles s'appliquent à chaque compilation suivant leur définition jusqu'à ce qu'elles soient explicitement indéfinies. Ce changement a été effectué en particulier pour le codage en direct. Les orchestres valides ne devraient pas être affectés.
  - Après une erreur de syntaxe, il y avait des cas où Csound donnait une erreur de segmentation. C'est maintenant corrigé.

- Options :

  - La nouvelle option simple-sorted-score crée le fichier score.srt dans un format plus agréable.
  - Traitement de CsOptions revu avec les guillemets et les espaces qui doivent être échappés.
  - En positionnant le bit 1024 dans -m, on supprime l'affichage des messages sur l'utilisation d'opcodes obsolètes. Cette option est elle-même obsolète.

- Opcodes et Gens modifiés :

  - squinewave traite maintenant un argument facultatif de taux-a ou -k.
  - L'opcode pindex traite des champs chaîne de caractères ou numériques.
  - sflooper a été modifié pour éviter un plantage et donne des avertissements.
  - event_i etd schedule acceptent un p1 fractionnaire.
  - Meilleurs tests dans les opcodes soundfont. De plus ils ne chargent plus plusieurs copies d'un soundfont, mais ils réutilisent celui qui est déjà chargé.
  - fluidControl a un nouvel argument facultatif pour contrôler l'affichaged de messages.
  - bpf a une version audio maintenant.
  - stsend/strecv peuvent travailler avec des taux-k différents.
  - pvstrace a de nouveaux arguments facultatifs.
  - lpfreson verifie le nombre de pôles.
  - syncloop avait une petite erreur de frappe qui provoquait des plantages.
  - bpfcs a de nouvelles versions avec tableaux.
  - On peut omettre le second argument de zacl, ce qui par défaut n'efface que le canal donné.
  - outvalue essayait d'utiliser une valeur de taux-k qui pouvait ne pas être valide à cet instant. C'est avant tout un petit problème d'exécution et il est maintenant supprimé.
  - Les noms de canal pour les opcodes chnget et chnset peuvent maintenant être changés au taux-k si bien qu'on peut les appeler depuis une boucle.
  - copya2ftab a maintenant un argument facultatif supplémentaire qui est un décalage dans la ftable dans laquelle on copie le tableau.

- Utilités :

  - lpanal vérifie maintenant que suffisamment de pôles sont requis.

- Frontaux :

  - CsoundQt : à paraitre en même temps que Csound 6.14, il y a CsoundQt 0.9.7. Voir les notes de parution https://github.com/CsoundQt/CsoundQt/blob/master/release_notes/Release%20notes%200.9.7.md.

- Usage général :

  - Les commentaires // en début de ligne sont maintenant acceptés dans la section CsOptions d'un fichier csd.
  - L'option --orc a été corrigée pour fonctionner sans partition : l'exécution dure indéfiniment jusqu'à ce que soit rencontrée une condition de sortie.

- Boques corrigés :

  - shiftin corrigé.
  - exitnow donne le code de retour correspondant à la documentation.
  - Boque corrigé dans beosc, où le générateur de bruit gaussien n'était pas initialisé.
  - OSCraw corrigé.
  - ftkloadk pouvait sélectionner un code interne incorrect causant un plantage.
  - GEN01 lorsqu'il était utilisé pour lire un seul canal d'un fichier multi-canaux donnait une longueur incorrecte.
  - ftgenonce avait un problème de dépassemente qui pouvait causer l'écriture dans une table déjà active.
  - Une situation de compétition dans les opcodes Jacko a été améliorée (issue #1182).
  - syncloop avait une petite erreur de frappe qui causait des plantages.
  - lowresx était incomplet et ne fonctionnait pas comme prévu : réécrit (issue #1199).
  - Si outch recevait de manière incorrecte un nombre impair de paramètres, il donnait une erreur de segmentation. Cela produit maintenant un message d'erreur.

- Changements système :

  - Une nouvelle classe de greffon pour des opcodes sans sortie a été écrite. Les erreurs d'exécution et d'initialisation sont aussi retournées dans le code de retour du système en ligne de commande. La nouvelle fonction de l'API GetErrorCnt est disponible pour faire quelque chose de similaire sous d'autres variantes.

- API:

  - La fonction GetErrorCnt donne le numéro des erreurs d'exécution et ajoute les erreurs d'initialisation à la fin du rendu.
  - La fonction FTnp2Find n'affiche plus de messages si la table n'est pas trouvée, mais retoure NULL. Le comportement précédent est fourni par FTnp2Finde.
  - csoundGetInstrument() a été ajoutée.

- Changements sur les plates-formes :

  - WebAudio :

    - csoundCompile() a été ajoutée à CsoundObj, qui ajoute des args de ligne de commande ce qui permet de remplacer les valeurs de CsOptions dans les CSDs.
    - getPlayState(), addPlayStateListener() et d'autres méthodes ont été ajoutées à CsoundObj pour demander et tracer les changements d'état de l'exécution.

  - Windows :

    - stsend retravaillé pour la bibliothèque winsock.

### Notes de parution de Csound 6.13 (juillet 2019)

Peu de nouveaux opcodes, mais un nombre significatif d'opcodes ont été étendus pour utiliser les tableaux de différentes manières, élargissant les options pour les utilisateurs. Il y a eu de nombreuses corrections du code de base ainsi que des opcodes.

- Nouveaux opcodes :

  - string2array est une variante de fillarray avec des données provenant d'une chaîne de caractères contenant des valeurs séparées par des espcaces.
  - nstrstr retourne le nom d'un instrument numéroté ou une chaîne de caractères vide si le numéro ne fait pas référence à un instrument nommé.
  - ntof convertit un nom de note en fréquence aux taux-i et -k.
  - ampmidicurve est un nouvel opcode qui fait correspondre à une vélocité MIDI un facteur de gain avec une valeur maximale de 1, modifiant le gain de sortie par un intervalle dynamique et un exposant de mise en forme.

- Orchestre :

  - La consistence entre kr, sr et ksmps a été revue pour le cas spécial où il y a dépassement.
  - Correction de l'usage par défaut de 0bdfs.
  - la résolution du chemin des fichiers pour #include a été revue de manière plus libérale.
  - La lecture et l'écriture dans les tableaux multidimensionnels étaient erronées. C'est corrigé.
  - Meilleure vérification des tableaux de type inconnu (issue #1124).
  - Dans toutes les opérations de tableau la taille d'un tableau est déterminée à l'initialisation et aucune allocation n'a lieu pendant l'exécution.
  - L'arithmétique des tableaux respecte dorénavant --sample-accurate.

- Partition :

  - Les caractères n et m pouvaient être ignorés de manière erronée dans les partitions.
  - la résolution du chemin des fichiers pour #include a été revue de manière plus libérale.
  - Après une erreur, le traçage des fichiers et des macros lisait de manière erronée l'information pour l'orchestre plutôt que pour les partitions. C'est corrigé.
  - La fin d'une section r (répétition) n'était pas toujours correcte.
  - Les partie {} imbriquées d'une partition pouvaient conduire à des erreurs.
  - Après une instruction s une nouvelle ligne était nécessaire ; ce n'est plus le cas.
  - Les boucles de partition {} ont été modifiées pour permettre les macros et les expressions dans le compteur de boucle.

- Options :

  - La nouvelle option --use-system-sr fixe le taux d'échantillonnage à la valeur du matériel/système.

- Opcodes et Gens modifiés :

  - Un échec de l'envoi dans OSC provoque maintenant un avertissement plutôt qu'une erreur.
  - passign peut maintenant avoir un tableau pour cible.
  - Des versions de bpf/bpfcos permettant la définition des points par des tableaux ont eté ajoutées.
  - grain peut maintenant utiliser des tables de n'importe quelle taille, pas seulement des puissances de 2.
  - Le changement de couleur dans les widgets FL fonctionne (la couleur n'était pas rafraichie précédemment).
  - fillarray peut lire des valeurs dans un fichier ce qui permet de dépasser la limite du nombre d'arguments.
  - sumarray fonctionne maintenant aussi bien avec des tableaux audio qu'avec des valeurs scalaires.
  - L'affectation d'une valeur audio à un tableau audio fonctionne maintenant.
  - monitor ne fonctionnait pas dans le mode tableau.
  - gendyc respecte maintenant le mode sample-accurate.
  - mtof et ftom ont maintenant une version tableau.
  - sc_lag et sc_lagud utilisent maintenant la première entrée de taux-k ou -a lorsqu'aucune valeur initiale n'est donnée.
  - printarray fonctionne maintenant avec les tableaux de chaînes de caractères.
  - changed2 fonctionne maintenant avec les chaînes de caractères.
  - diskgrain, syncgrain et syncloop peuvent maintenant pondérer le taux d'échantillonnage.
  - GEN01 lit correctement les fichiers audio bruts quand c'est nécessaire.
  - ftaudio peut maintenant prendre deux arguments optionnels pour le début et la fin de la table de données à écrire dans un fichier.
  - sensekey a été réécrit dans le mode 'key down'.
  - loscilx peut retourner un tableau audio.
  - schedule rapporte les instruments indéfinis dans tous les cas.
  - event_i accepte maintenant les numéros d'instrument étiquetés.
  - printarray traite %d correctement.
  - beadsynt travaille maintenant avec les tableaux i ainsi que les tableaux k comme indiqué dans le manuel.

- Utilités :

  - hetro a reçu plusieurs corrections et améliorations.

- Usage général :

  - Il y a eu un certain nombre d'améliorations dans la sémantique du multicoeur ; la plupart de celles-ci sont des corrections avec quelques gains en efficatité.
  - Il y a un nombre maximum d'arguments pour un opcode qui n'avait jamais été explicite ni contrôlé. Les tentatives d'utilisation de trop d'arguments génèrent maintenant une erreur de syntaxe.

- Bogues corrigés :

  - FLgetsnap corrigé.
  - directory corrigé pour les extensions de fichier.
  - FLsetText réutilisait une chaîne de caractères de manière incorrecte ce qui conduisait à des valeurs erronées.
  - fmb3 n'arrivait pas à initialiser le taux du lfo dans certains cas.
  - ftaudio au taux-i était complètement inopérant.
  - Après un reinit printks pouvait être ignoré ; corrigé.
  - printks corrigé pour afficher à des dates correctes.
  - tabrowlin et getrowlin pouvaient calculer une taille erronée sous certaines conditions.

- Changements système :

  - L'implantation des tables de hachage a été modifiée pour permettre de meilleures performances en charge quand le dictionnaire contient un grand nombre d'entrées.
  - Les fonctions de greffon GEN peuvent avoir une longueur nulle, mais le code doit tester cela et agir en conséquence. Cela permet les allocations différées.
  - schedule rapporte les numéros/noms d'instruments indéfinis et continue plutôt que de causer une erreur.
  - Les appels multiples aux contrôles midi en sortie sont permis.

- API:

  - find_opcode_new et find_opcode_exact sont maintenant exposés dans l'API.
  - Après un reset un indicateur de fontion de rappel de message chaîne de caractères est configuré par défaut.
  - La nouvelle fonction csoundSystemSra été ajoutée à l'API pour lire le taux d'échantillonnage imposé par le matériel.

- Changements sur les plates-formes :

  - WebAudio : libsndfile est maintenant compilée avec le support de FLAC et d'OGG.
  - Dans l'orchestre et la partition, le traçage du chemin dans #include suppose un séparateur \.
  - Le portage sur Haiku est maintenant disponible.
  - Les entrées et sorties analogiques avec différents numéros de canaux sont permises.

### Notes de parution de Csound 6.12 (novembre 2018)

De nombreux changements comprenant la suppression de la fonctionnalité vst2cs à cause d'un problème de copyright.

Les changements apportés dans la version 6.11 à la lecture en format raw ont été modfifiés afin que gen1 et diskin ignorent les formats de fichiers exprimés par un nombre positif et utilisent à la place l'en-tête du fichier, à moins que le format soit exprimé par un nombre négatif dont la valeur absolue est alors utilisée pour le format d'un fichier audio raw. Cela devrait régler la plupart des problèmes de compatibilité.

Il y a plusieurs nouveaux opcodes et améliorations d'opcodes, de nouvelles facilités dans les partitions et plusieurs corrections de bogues.

- Nouveaux opcodes :

  - fluidInfo retrouve l'information de programme dans un soundfont chargé.
  - Le nouvel opcode ftaudio écrit une ftable dans un fichier audio ; il existe des versions au taux-i et déclenchée au taux-k et la version de taux-k supporte l'écriture synchrone ou asynchrone.
  - Une version de OSClisten qui écrit les données dans un tableau de taux-k.
  - OSCcount retourne le nombre restant de messages OSC entrants.

  - faustplay

    et

    faustdsp

    sont de nouveaux opcodes séparant l'instanciation du TNS faust et son exécution.
  - OSCbundle envoit une collection de messages OSC similaires sous forme d'un paquet unique pour plus d'efficacité.

  - beosc

    et

    beadsynt

    sont un oscillateur et un banc d'oscillateurs à bande améliorée.

    bpfcos

    sert pour des fonctions à points charnière avec interpolation. De même

    lincos

    ajoute une interpolation par cosinus à

    linlin

    .

  - printarray

    et

    reshapearray

    agissent sur les tableaux.

  - trim

    et

    trim_i

    ajustent la taille d'un tableau unidimensionnel soit en l'augmentant soit en la diminuant, en préservant les données et/ou en complétant avec des zéros.

- Orchestre :

  - Nouvelle option du préprocesseut #includestr. Comme #include avec en plus développement de macro de la chaîne de caractères délimitées par doubles apostrophes.
  - Utilisation des notes liées dans subinstr corrigée.
  - Les appels de macro imbriqués plus de 10 fois provoquaient un plantage ; maintenant l'imbrication n'est plus limitée.
  - Un message d'erreur d'exécution comprend maintenant (habituellement) un numéro de ligne et une trace de fichier/macro.
  - Les affectations multiples telles que ka, kb = 1, 2 sont à nouveau supportées par le parseur ; cette possibilité avait été annulée par erreur.
  - L'utilisation problématique de i() directement avec un élément de tableau est maintenant indiquée comme une erreur.
  - Si un nom de fichier inclu contient un "/", alors toute inclusion imbriquée est relative à ce répertoire. (Issue n°973).
  - Redéfinition des UDOs avec aucun argument en sortie corrigée.
  - Un bogue très obscur dans les sous-instrumenst, qui a été présent pendant presqu'un an, a été corrigé.

- Partition :

  - Nouvelle option du préprocesseut #includestr. Comme #include avec en plus développement de macro de la chaîne de caractères délimitées par doubles apostrophes.
  - Opcode de partition 'd' pour exécution en temps réel. C'était l'issue n°966.
  - Bogue dans l'opération np corrigé.
  - L'utilisation de la syntaxe [] dans une partition pouvait entraîner une perte de précision pour les nombres supérieurs à 1 million ; l'ancienne version a été restaurée.
  - Les appels de macro imbriqués plus de 10 fois provoquaient un plantage ; maintenant l'imbrication n'est plus limitée.
  - Les formes pour fins de sections retardées (e 5 ou s 5) fonctionnent maintenant avec des retards fractionnaires ; auparavant seule la partie entière était lue.
  - Si un nom de fichier inclu contient un "/", alors toute inclusion imbriquée est relative à ce répertoire. (Issue n°973).

- Opcodes et Gens modifiés :

  - Argument facultatif ajouté à ftom pour arrondir la réponse à un entier.
  - flooper2 et syncgrain etc permettent maintenant le reéchantillonnage.
  - chnclear peut prendre maintenant une liste de canaux à effacer au lieu d'un seul.
  - printf et printf_i now sont maintenant conformes au manuel : tous les arguments au-delà de format et de trigger sont facultatifs.
  - prints et printks peuvent recevoir des arguments chaîne de caractères affichés avec %s.
  - GEN2 peut prendre maintenant une taille nulle, qui est interprétée comme la taille suffisante pour le nombre de valeurs fournies.
  - faustcompile comprend maintenant un nouveau paramètre facultatif pour permettre l'exécution en mode bloqué. Par défaut (comme précédemment) il est en mode non-bloqué.
  - fillarray peut être exécuté au taux-k si n'importe lequel de ses arguments/valeurs est au taux-k.
  - slicearray pour les tableaux autres que ceux de taux-i ne s'exécute qu'au taux-k.
  - pvstrace a maintenant l'option de retourner aussi un tableau contenant les numéros de bin.

- Utilités :

  - Une erreur de codage dans mixer a été corrigée. L'opcode était très abimé.

- Bogues corrigés :

  - Une erreur de typographie dans p5glove signifiait que la commande pour lire l'état du bouton comme un bitmap ne retournait que l'état du bouton A.
  - diskin vers tableau corrigé et également l'utilsation avec de petites valeurs de ksmps.
  - loscil échouait parfois à traiter l'argument ibas ; le traitement est correct maintenant.
  - madsr pouvait provoquer un dépassement sur un compteur interne lorqu'un p3 négatif était donné.
  - La correspondance entre threads et lua_States a été corrigée (issue n°959).
  - Le temps de calcul dans flooper2, flooper et syncgrain a été corrigé.
  - Rééchantillonnage et hauteur corrigés dans pvstanal.
  - De rares cas de saturation de tampon ont été corrigés dans faust.
  - pvsftw avait un contrôle de format de TFR incorrect qui produisait un message d'erreur de format ; c'est corrigé.
  - Si ksmps valait 1, l'opcode linenr au taux-a ne fonctionnait pas ; c'est corrigé.
  - Opcode window corrigé.
  - Le contrôle de compatibilité des sous-types de f-valeurs dans plusieurs opcodes pvs était défectueux, provoquant de faux messages d'erreur.
  - cosseg était inopérant pour plus d'un segment. Corrigé maintenant.
  - L'opcode monitor ne fonctionnait pas correctement lors de l'utilisation de plusieurs processus ; c'est corrigé.
  - Dans l'opcode linenr si la chute commençait avant la fin de l'attaque la valeur de sortie sautait à la valeur finale et ensuite diminuait, provoquant une discontinuité. C'est corrigé (n°1048).

- Changements système :

  - Les différentes options -zN rapportent maintenant le nombre d'opcodes pour la demande et diffèrent ainsi sur les opcodes obsolètes et les opcodes polymorphes.
  - La recompilation des instruments nommés a été totalement repensée pour éviter les erreurs et les fuites de mémoire.
  - L'allocation des noms d'instrument à des numéros internes a été réécrite et devrait rester stable lors des remplacements en codage en temps réel.
  - L'affichage du numéro alloué à un instrument nommé s'effectue maintenant normalement, pas seulement en mode débogage.
  - Si la version 0.29 de liblo est disponible, csound peut être construit pour l'utiliser (avec l'option de compilation LIBLO29) et cela corrige certains bogues liés à une utilisation lourde/complexe de OSClisten. Malheureusement l'ancienne version 0.28 version est toujours distribuée sur certaines versions de linux.
  - Le compilateur d'orchestre a plusieurs nouvelles optimisations évitant des affectations inutiles et réalisant un peu plus d'optimisation d'expressions.

- API:

  - csound->ReadScore a été modifié pour avoir le même comportement qu'avec un fichier csd ou sco. Avant cela, il pouvait donner ou pas une partition infinie de manière inattendue.

- Changements sur les plates-formes :

  - Bela : autorise les E/S analogiques avec différents numéros de canaux.

### Notes de parution de Csound 6.11 (mai 2018)

Il y a eu une importante réoganisation en interne qui ne devrait pas affecter la plupart des utilisateurs. Certains composants sont maintenant gérés indépendamment et seront éventuellement installables via un nouveau gestionnaire de paquets. L'option temps réel est considérée comme stable et son étiquette "expérimental" a été supprimée. Un support spécial pour la plate-forme Bela a été introduit. L'intégration des opérations arithmétiques impliquant des tableaux-a a bien avancé.

| Note
Noter que les changements dans GEN01 et dans diskin2 peuvent ne pas être rétrocompatibles si une valeur non nulle est donnée pour le format.

- Nouveaux opcodes :

  - loscilphs, loscil3phs, sont comme loscil mais ils retournent la phase en plus de la sortie audio.

  - Plus d'arithmétique entre les tableaux de taux-a et les valeurs de taux-a ; cela complète l'arithmétique lorsqu'un ou plusieurs arguments sont des tableaux audio.

  - balance2 est comme balance mais il pondère la sortie au taux-a plutôt qu'au taux-k.

- Partition :

  - Les caractères suivant un \ dans une chaîne de caractères de la partition sont échappés. Ainsi \n représente un retour à la ligne plutôt que deux caractères. Les caractères a, b, f, n, r, t et v peuvent être échappés. Les autres caractères suivant un \ ignorent la barre inversée.

- Opcodes et Gens modifiés :

  - print, printk2 prennent maintenant un argument supplémentaire facultatif qui, s'il est non nul, provoque l'affichage du nom de la variable de taux-k en plus de sa valeur.
  - getrow, setrow, getcol et setcol peuvent désormais agir sur les tableaux de taux-i.
  - diskin2 était incorrectement décrit dans le manual quant au paramètre iformat. Maintenant si iformat est nul le fichier est supposé avoir un en-tête audio ; s'il est compris entre 1 et 10 (au lieu de 0 et 9 comme précédemment), le fichier est ouvert comme fichier brut avec le format d'échantillon spécifié. CECI PEUT ETRE INCOMPATIBLE. Pour la plupart des utilisateurs la valeur zéro sera correcte.
  - GEN01 utilise maintenant le format 0 pour lire le type du fichier dans son en-tête ; tout autre valeur indique un fichier brut. CECI PEUT ETRE INCOMPATIBLE. Pour la plupart des utilisateurs la valeur zéro sera correcte.
  - GEN01 n'était pas correctement documenté quant à l'argument du format. Il y a 9 formats brut alors que le manuel n'en renseignait que 6 auparavant.
  - Un petit changement dans slicearray devrait permettre son utilisation sous forme fonctionnelle dans la plupart des cas.
  - La famille d'opcodes tb0 à tb15 et ses opcodes d'initialisation tb0_init à tb15_init sont obsolètes car les fonctions à arguments multiples sont permises.
  - Le filtre mode n'accepte plus une fréquence dans la région instable.
  - Dans scanu et xscanu la valeur de kpos était supposée être dans l'intervalle [0, 1]. C'est maintenant consolidé en traitant toutes les valeurs négatives comme 0 et toutes les valeurs supérieures à 1 comme 1.

- Utilités :

  - src_conv est maintenant disponible sous Windows et sous MacOS.

- Frontaux :

  - Belacsound : un nouveau frontal spécifique pour la plate-forme Bela est introduit dans cette version.

- Bogues corrigés :

  - linen a été retravaillé pour permettre les longues durées et les recouvrements.
  - La réinitialisation de Csound provoquait un plantage si les opdodes Lua étaient utilisés ; c'est corrigé.
  - La famille d'opcodes poscil donnait des résultats incorrects s'ils étaient utilisés dans des orchestres multicoeurs ET qu'un autre instrument changeait la table-f. C'est maintenant corrigé.
  - L'utilisation de out avec un tableau audio ne testait pas si la dimension du tableau était supérieure au nombre de canaux, ce qui provoquait un plantage. La dimension est maintenant testée et tronquée si elle est trop grande, avec un message d'avertissement.
  - Un bogue dans les versions stéréo de loscil provoquait une distortion ; c'est corrigé.
  - Erreur d'intervalle dans phs corrigée.
  - gen49 effaçait la mémoire si le fichier n'était pas trouvé ; corrigé.
  - Le chargement de greffons LADSPA, lorsqu'il reposait sur des chemins de recherche, était défectueux et abrégeait les noms ; c'est corrigé.

- Changements système :

  - OPCODE6DIR{64} peut contenir maintenant une liste de répertoires séparés par des double-points.
  - La distinction quelque peu curieuse entre les temps d'exécution de taux-k et de taux-a a été supprimée du débit, si bien que seuls les threads 1, 2 et 3 sont utilisés, la sortie de type-s n'est pas utilisée et certaines entrées de type-x ont été changées pour un polymorphisme explicite. Ceci ne compte que pour les auteurs d'opcodes car les codes s et x et les threads 4, 5, 6 et 7 seront bientôt supprimés.

- Traductions :

  - La traduction française est complète comme d'habitude.

- API :

  - Pas de changement dans l'API.

- Changements sur les plates-formes :

  - WebAudio : à partir de cette distribution, le portage de Csound vers les plates-formes web a été unifié dans un seul paquet nommé désormais "WebAudio Csound". Cela a provoqué beaucoup de changements en interne, l'interface AudioWorklet étant employée partout où elle est supportée, avec l'alternative de ScriptProcessorNode dans les autres cas. Csound est aussi disponible sous formes de Nodes indépendants, en plus de l'API originale CsoundObj. Le frontal csound.js, conçu à l'origine pour PNaCl Csound, a été aussi porté dans WebAudio Csound, suite à l'obsolescence de ce portage de Csound.

### Notes de parution de Csound 6.10 (décembre 2017)

C'est principalement une distribution de correction de bogues, incluant un bogue important introduit récemment dans loscil. Il y a aussi de nouveaux opcodes et des améliorations d'opcode, ainsi qu'un GEN (53) longtemps ignoré et plusieurs petites améliorations internes. Les changements internes ont supprimé un certain nombres de fuites de mémoire.

- Nouveaux opcodes :

  - midiout_i semblable à midiout, mais travaille au taux-i.
  - chngetks et chnsetks -- version de chnget et chnset pour canaux de chaînes de caractères qui ne sont actifs que pendant l'exécution.
  - squinewave, un oscillateur d'onde carrée-pulsation-dent de scie-sinus à bande limitée et variation de forme avec synchro forcée..

- Nouveaux Gens et macros :

  - GEN53 qui était présent dans le code depuis plusieurs années mais pas documenté) est maintenant reconnu. Il crée une réponse impulsionnelle à phase linéaire ou à phase minimale à partir d'une table contenant une réponse fréquentielle ou une réponse impulsionnelle.

- Orchestre :

  - L'usage incorrect du if..then.. de taux-k dans l'instrument 0 est maintenant traité au taux-i.
  - L'usage incorrect des opérations de taux-k dans l'instrument 0 n'est plus traité comme une erreur mais comme un avertissement.
  - Les balises mises en commentaire dans un fichier csd étaient parfois interprétées, ce qui produisait un orchestre tronqué. C'est corrigé.
  - On peut assigner des tableaux de taux-i et de taux-k vers le taux-k et le taux-i ; auparavant, les taux devaient se correspondre.
  - L'utilisation de ! comme opération booléenne (signifiant la négation) est maintenant supportée, alors qu'avant le parseur l'acceptait mais sans l'utiliser.
  - L'optimisation par résolution des constantes est maintenant largement utilisée dans les calculs arithmétiques.
  - Si on essaie d'utiliser une macro non définie, une erreur de syntaxe est maintenant générée.
  - L'oubli de " (ou de tout autre caractère terminal) dans #include est notifié et le #include est ignoré.

- Partition :

  - Les balises mises en commentaire dans un fichier csd étaient parfois interprétées, ce qui produisait une partition tronquée. C'est corrigé.
  - La forme d'évaluation [..] peut maintenant être imbriquée.
  - L'option d'extraction (-x sur la ligne de commande) fonctionne dorénavant.
  - L'utilisation de l'opcode de partition x pouvait générer de faux messages d'erreur qui ont été supprimés.
  - Après l'appel d'une macro non définie le reste de la ligne est ignoré.
  - Une paire de bogues dans les sections répétées (opcode r) ont été supprimés.
  - L'oubli de " (ou de tout autre caractère terminal) dans #include est notifié et le #include est ignoré.

- Options :

  - L'option --tempo (ou -t) peut désormais être fractionnaire ; elle était auparavant limitée aux entiers.
  - nouvelle option : --udp-console=address:port redirige la console vers une adresse:port distante.
  - nouvelle option : --udp-mirror-console=address:port recopie la console sur une adresse:port distante.
  - nouvelle option : --udp-echo affiche en écho les messages envoyésau serveur UDP.

- Opcodes et Gens modifiés :

  - loscil/loscil3 accepent un incrément en virgule flottante.
  - OSCraw ferme le socket après usage.
  - fout peut maintenant générer le format ogg, et également accepter -1 ce qui signifie l'utilisation du même format que celui de l'option -o.
  - bitwise et l'opcode (&) au taux-a ont été corrigés pour le mode de précision à l'échantillon (--sample-accurate).
  - slicearray a un argument supplémentaire facultatif pour fixer le pas d'incrément de la partie.
  - chnset peut maintenant avoir des variables noms de canal.
  - Les tableaux de taux-a peuvent être additionnés, soustraits, multipliés et mis à l'échelle. C'est le début d'une arithmétique de taux-a sur les tableaux.
  - dssiinit a été amélioré par la suppression de certains plantages.
  - partials a été amélioré pour supprimer un problème de limite.
  - vco2ift a été corrigé pour l'utilisation d'une table existante.

- Frontaux :

  - Emscripten: compilé comme WebAssembly (s'exécute dans les principaux navigateurs). L'API est maintenant plus conforme aux autres APIs pour HTML5.
  - CsoundQT est construit maintenant depuis la branche principale pour une stabilité accrue.

- Bogues corrigés :

  - Le caractère facultatif du dernier argument dans sc_phasor est maintenant traité correctement.
  - Le blocage dans dconv a été corrigé.
  - looptseg ne plante plus si on ne lui présente pas assez d'argments.
  - schedule etc fonctionnent maintenant correctement avec des chaînes de caractères entre guillemets à l'intérieur de chaînes entre {{ }}.
  - Le problème de la gestion d'interruption du frontal CLI est corrigé.
  - outs2 était défectueux (il écrivait toujours sur le canal 1 comme outs1).
  - Diverses erreurs dans le système DSSI/ladspa ont été corrigées.
  - vbap était défectueux dans tous les cas excepté à 4 haut-parleurs. C'est corrigé.
  - L'évaluation d'un code d'orchestre de Csound en direct pouvait produire des erreurs étranges et difficiles à diagnostiquer (par exemple des plantages, des divisions par zéro, NaNs). Cela était dû à un bogue lors de la fusion dans la zone des constantes globales de nouvelles constantes trouvées dans le code.

- Changements système :

  - Le serveur UDP accepte maintenant de nouvelles commandes qui sont préfixées par un opcode. Cela comprend le support des évènements (&) et des partitions ($) ; l'affectation des canaux de contrôle (@ ); l'affectation des canaux de chaîne de caractères (% ) ; la réception des valeurs d'un canal de contrôle via UDP (:@ ) et du contenu d'un canal de chaîne de caractères (:% ).

- Traductions :

  - La traduction française est complète comme d'habitude.
  - La traduction italienne des messages s'est grandement améliorée ; près de la moitié des messages d'erreur et d'avertissement sont maintenant traduits.
  - Quelques progrès ont été faits pour la traduction allemande.

- API :

  - CompileCsdText retourne maintenant une valeur indiquant le succès ou l'échec.
  - Huit nouvelles versions asynchrones de fonctions de l'API sont maintenant disponibles : csoundCompileTreeAsync(), csoundCompileOrcAsync(), csoundReadScoreAsync(), csoundInputMessageAsync(), csoundScoreEventAsync(), csoundScoreEventAbsoluteAsync(), csoundTableCopyOutAsync() et csoundTableCopyInAsync().
  - Pour l'utilisation en serveur, trois nouvelles fonctions de l'API : csoundUDPServerStart, csoundUDPServerStatus et csoundUDPServerClose.

- Changements sur les plates-formes :

  - Windows

    - Désormais compilé avec Microsoft Visual Studio 2017 ou ultérieur.
    - Intégration continue pour Windows avec AppVeyor.

  - GNU/Linux

    - Le back-end ALSA MIDI de GNU/Linux ignore maintenant certains faux codes d'erreur ENOENT.

### Notes de parution de Csound 6.09 (mai 2017)

De nouveaux opcodes et plusieurs corrections et améliorations.

Il y a comme d'habitude un certain nombres de changement internes, y compris plusieurs corrections de fuites de mémoire et un code plus robuste.

- Nouveau opcodes :

  - select -- comparaison échantillon par échantillon sélectionnant la sortie audio.
  - midiarp -- génération d'arpèges basés sur les notes MIDI actuellement tenues.
  - hilbert2 -- une implémentation de la transformée de Hilbert basée sur la TFD.
  - Opcodes de liaison avec Ableton -- pour synchroniser le tempo et la pulsation sur des réseaux locaux.
  - pvstrace -- ne retient que les N bins les plus forts.
  - Plusieurs nouveaux opcodes/fonctions unaires pour les tableaux numériques de taux-k et de taux-i : ceil, floor, round, int, frac, powoftwo, abs, log2, log10, log, exp, sqrt, cos, sin, tan, acos, asin, atan, sinh, cosh, tanh, cbrt, limit1.
  - Plusieurs nouveaux opcodes/fonctions binaires pour les tableaux numériques de taux-k et de taux-i : atan2, pow, hypot, fmod, fmax, fmin.
  - limit -- limitation numérique dans un intervalle donné (pour les tableaux).
  - tvconv -- un opcode de convolution variant dans le temps (filtre RIF).
  - liveconv -- convolution partitionnée avec réponse impulsionnelle rechargeable dynamiquement.
  - bpf, xyscale, ntom, mton -- (de SuperCollider ?).
  - OSCsend -- maintenant implémenté directement au moyen des sockets système. L'ancienne version utilisant liblo a été gardée sous le nom de OSCsend_lo.
  - OSCraw -- pour écouter tous les messages OSC sur un port donné.
  - sorta et sortd -- trient les éléments d'un tableau.
  - dot -- calcule le produit scalaire de deux tableaux.
  - Filtres sans retard -- zdf_1pole_mode, zdf_2pole_mode, zdf_ladder, zdf_1pole et zdf_2pole, diode_ladder, K35_hpf et K35_lpf.
  - product -- prend un tableau numérique (de taux-k ou i) et calcule son produit.
  - Générateurs unitaires de supercollider -- sc_phasor, sc_lag, sc_lagud, sc_trig.

- Orchestre :

  - L'inclusion d'un répertoire de fichiers UDO n'échoue plus s'il y a plus de vingt entrées.
  - kr, sr et ksmps pouvaient être inconsistants dans un cas particulier ; c'est corrigé.
  - Les noms de macro sont mieux contrôlés et appariés avec des crochets.
  - Des valeurs octales sous la forme \000 peuvent apparaître dans des chaînes de caractères.
  - (à partir de la 6.09.1) Dans un UDO, l'opcode out* fonctionne maintenant alors qu'auparavant il ne fonctionnait qu'épisodiquement.

- Partition :

  - Report du numéro de ligne amélioré dans l'opcode r et lors de l'implémentation de macro.
  - opcodes m et n corrigés.
  - développement de [...] corrigé et amélioré.
  - Amélioration des chaînes de caractères dans les partitions.
  - On peut utiliser le caractère ) dans un argument de macro s'il est échappé par \.
  - L'utilisation des caractères e ou s pouvait produire des erreurs ; c'est corrigé.
  - Les noms de macro sont mieux contrôlés et appariés avec des crochets.
  - p2 et p3 ont maintenant une meilleure précision qui n'est plus limitée à six positions décimales.
  - Nouvel opcode d pour interrompre des notes infinies (denote) ; agit comme i avec un p1 négatif.
  - Les instruments nommés peuvent être interrompus avec i si un - suit le ".
  - (à partir de la 6.09.1) Lorsqu'une section d'opcode-r se terminait par un opcode-e, elle s'arrêtait trop tôt.

- Options :

  - Le module midi jack peut maintenant rapporter les périphériques disponibles sous --midi-devices.
  - (à partir de la 6.09.1) La définition de smacros et de omacros sur la ligne de commande n'a lieu qu'une fois.
  - (à partir de la 6.09.1) La définition de smacros sur la ligne de commande fonctionne maintenant.

- Opcodes et Gens modifiés :

  - Traitement des arguments chaîne de caractères amélioré dans ftgentmp.
  - L'opcode hdf5read lit maintenant des ensembles de donnés complets lorsque le nom de l'ensemble de données est suffixé avec un astérisque.
  - L'utilisation de longueurs différentes d'une puissance de deux est maintenant acceptable là où elle était auparavant inconsistante.
  - ampmidid peut tenir compte de 0dbfs en option.
  - dust et dust2 au taux-k sont maintenant conformes au manuel (NOTE : ceci est une modification incompatible).
  - Dans prints le format %% affiche maintenant un %.
  - OSClisten peut maintenant être utilisé sans sortie de données.
  - GEN18 a été corrigé pour écrire dans l'intervalle requis.
  - sockrev peut maintenant lire des chaînes de caractères.
  - Le système vbap peut autoriser dans certains cas un nombre arbitraire de haut-parleurs via des tableaux (chantier en cours).
  - Le serveur websocket ne peut accepter qu'un seul protocole en sortie, limitant ainsi le type en entrée à un seul argument.
  - L'opcode sum additionne aussi les élements d'un tableau.
  - pvs2tab et tab2pvs surchargés peuvent maintenant créer et utiliser des tableaux de magnitude et de phase séparés.

- Utilités :

  - dnoise a été corrigé.

- Frontaux :

  - Retrait de l'éditeur HTML5 de Csound qui ne fonctionne plus.
  - Emscripten : Emscripten Csound (asm.js) nécessite maintenant les sources CsoundObj.js et FileList.js séparément de libcsound.js. Ceci pour permettre l'utilisation de la même API JS avec les backends asm.js ou wasm
  - CsoundQT : CsoundQt 0.9.4 est annoncé : https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release notes 0.9.4.md.
  - L'installer Windows inclue PythonQt avec CsoundQt.

- Bogues corrigés :

  - pwd fonctionne sur OSX.
  - Erreur de fencepost dans sensLine corrigée.
  - OSCsend corrigé pour mettre en cache le nom de l'hôte.
  - Bogue dans les opcodes push/pop corrigé (ces opcodes sont maintenant un greffon qui est obsolète).
  - Bogue dans sprintf supprimé.
  - Bogue dans soundin supprimé.
  - losci/losci3 corrigés dans le cas des tables de grande taille.
  - inrg n'a plus fonctionné pendant un certain temps.
  - Les lois de panoramique channelmask de partikkel présentaient une erreur d'indexation qui a été corrigée.
  - Le module audio de jack autorise maintenant des nombres de canaux d'entrée indépendants de ceux des canaux de sortie.
  - Bogue corrigé dans la copie de chaînes de caractères.
  - Il y avait un bogue dans hdf5read lorsque deux opcodes hdf5read étaient placés en série dans un instrument. Les noms d'argument de l'instance du deuxième opcode étaient incorrects à cause du changement direct de la dernière chaîne de caractères du premier lors de la lecture d'un ensemble de données complet.
  - Fuites de mémoire corrigées dans certains opcodes de greffon.

- Changements système :

  - soundin utilise maintenant le code de diskin2.
  - La famille d'opcodes out a été retravaillée pour réduire le coût de l'entrelacement et pour tenir compte correctement de la valeur de nchnls.
  - (à partir de la 6.09.1) Un plantage sous Linux i386 a été supprimé en relation avec le mode serveur.

- API :

  - Nouvelles facilités présentes seulement dans l'en-tête csound_threaded.hpp, supprimant l'utilisation de csPerfThread.cpp dans certains projets.
  - Ajout de la fonction GetA4.
  - Nouveau cadre pour le développement d'opcode dans un greffon en C++ avec l'utilisation des allocateurs de Csound.
  - Ajout de la fonction StrDup.
  - Dépendances à boost supprimées des interfaces de Csound et de CsoundAC.
  - (à partir de la 6.09.1) Deux nouvelles fonctions de l'API, csoundSetSpinSample et csoundClearSpin.

- Changements sur les plates-formes :

  - iOS

    - Correction + animation de iPad portrait SplitView, redimensionnement de info popover, correction du bouton stop dans Soundfile Pitch Shifter.
    - Mises à jour de l'ApI de Csound-iOS ; exemples nettoyés, améliorés/étendus et réorganisés. Manuel révisé, étendu et mis à jour. L'API et les exemples supportent iOS 10 et Xcode 8.

  - Android

    - Entrée et sortie multi-canaux permises.

  - Windows

    - Bibliothèque d'importation csound64.lib ajoutée à l'installeur Windows.

### Notes de parution de Csound 6.08 (novembre 2016)

Comme d'habitude, il y a un certain nombre de corrections et d'améliorations des opcodes, mais les changements les plus importants apparaissent dans les structures du langage. Tout d'abord, dans le langage de partition, la gestion des macros et le prétraitement ont été entièrement rénovés, pour s'aligner sur les mêmes fonctionnalités de l'orchestre. L'analyse de l'orchestre a reçu un certain nombre de corrections décrites ci-dessous.

Un changement majeur et pas complètement compatible a été opéré dans la lecture et l'écriture des éléments de tableau. Maintenant, le taux de l'indice détermine souvent le taux de traitement ; voir l'entrée Orchestre ci-dessous. Ceci simplifie pas mal de code et semble répondre aux attentes des utilisateurs ; le code précédent comportait plusieurs anomalies.

Il y a également de nouveaux opcodes, des corrections internes de fuites de mémoire et un code plus robuste.

- Nouveaux opcodes :

  - dct: Transformée en cosinus discrète d'un tableau d'échantillons (DCT-II)
  - getftargs: copie des arguments d'un gen dans une variable-S.
  - mfb: implante un banc de filtres mel-fréquence pour un tableau de magnitudes en entrée.

- Nouveaux GEN et macros :

  - quadbezier: génération de courbes de Bézier dans une table de fonction.

- Orchestre :

  - Le caractère ¬ est maintenant traité correctement comme variante de ~ pour la négation binaire.
  - Correction d'un bogue d'analyse lexicale qui pouvait altérer les chaînes de caractères.
  - Absence du symbole de nouvelle ligne garantie dans l'analyse lexicale.
  - Petite amélioration du report des numéros de ligne.
  - Vérification améliorée de la syntaxe des macros.
  - Analyse améliorée de l'affectation des étiquettes.
  - Prise en compte des erreurs de crochets non appairés dans la spécification des arguments pour les UDO.
  - Vérification qu'un fichier #included n'est pas un répertoire.
  - Meilleure gestion des appels de macros imbriqués sur plusieurs niveaux.
  - Pendant des années Csound fixait la fréquence du la médian à 440 Hz. Maintenant, cette fréquence peut être fixée dans l'en-tête par la nouvelle variable-r A4 et lue avec cette même variable.
  - L'exposant des valeurs en virgule flottante peut être écrit e ou E.
  - La sémantique de l'accès aux tableaux a été clarifiée :
    - i[i] => lecture à l'initialisation et pendant l'exécution, écriture seulement à l'initialisation.
    - i[k] => lecture pendant l'exécution, l'écriture génère une erreur d'exécution.
    - k[i], k[k] => lecture et écriture pendant l'exécution.
    - a[i], a[k] => lecture et écriture pendant l'exécution.
    - autres cas (S[], f[]) => lecture et écriture en fonction du type de l'indice (i,k).
    En particulier, i(k[i]) ne fonctionne toujours pas, mais le nouvel opérateur i(k[],i) prend en charge ce cas.
  - la validation de xout n'échoue plus lorsqu'une constante est fournie.

- Partition :

  - Nouveau code pour gérer les macros et les autres commandes de prétraitement. Aligne cette gestion sur le code de l'orchestre.
  - Nouvelle instruction de partition C introduite pour basculer du report inactif (C 0) au report actif (C 1, par défaut).

- Options :

  - Le tempo peut être fixé maintenant par une valeur en virgule flottante (auparavant, on ne pouvait utiliser que des valeurs entières).
  - Nouvelle option --version, affiche l'information de version et termine le programme.

- Opcodes et Gens modifiés :

  - Problèmes dans centroid corrigés.
  - Meilleur traitement de l'arrondi dans printks.
  - OSC étendu pour inclure la multidiffusion.
  - Les opcodes faust ont été mis à jour.
  - oscil1 et oscili peuvent prendre une durée négative.
  - la documentation de l'opcode fout a été clarifée.
  - La durée de relâchement de mxadsr a été corrigée.
  - L'opcode centroid accepte également un tableau en entrée.
  - Les opcodes ptable sont maintenant identiques à ceux de la famille table.
  - ftgen prend maintenant un tableau d'entrée en option.
  - subinstr peut maintenant avoir des arguments chaîne de caractères.
  - Le format i() peut maintenant aussi travailler sur des tableaux de taux-k, le premier argument étant un tableau, suivi par des indices.

- Utilités :

  - pvlook affiche maintenant explicitement le nom de la fenêtre d'analyse.

- Frontaux :

  - HTML5
    - csound.node : implanté pour linux, correction mineure de l'API.
    - pnacl : méthode compileCsdText ajoutée à l'objet csound.

- Usage général :

  - Test de la validité des noms de macro amélioré.
  - #undef corrigé.

- Bogues corrigés :

  - Corrections dans l'utilisation du format pour prints.
  - jitter2 retravaillé pour être plus conforme au manuel.
  - oscbank a reçu plusieurs corrections et fonctionne maintenant selon sa description.
  - bformdec1 avec tableaux et type 4 corrigé.
  - Bogues dans pvsceps corrigés.
  - Dans différents opcodes print, des caractères aléatoires étaient parfois ajoutés -- corrigé.
  - l'affectation de variables avec --sample-accurate pouvait donner des résultats inattendus ; il semble que ce soit corrigé maintenant.
  - La forme carrée du profil de padsynth a été corrigée et l'opcode est moins dépendant du niveau d'avertissements.
  - gen31 corrigé.
  - gen41 corrigé.
  - Bogue dans sensekey corrigé.
  - Plusieurs problèmes dans centroid corrigés.

- Changements système :

  - Nouvelle analyse lexicale et prétraitement de la partition.
  - Les fins de ligne dans le style MAC refonctionnent.
  - Les messages d'information système (taux d'échantillonnage, etc) sont maintenant dirigés sur stdout.
  - rtjack retravaillé pour la gestion des noms et des nombres.
  - L'affichage de la version comprend maintenant l'information de commit afin que les développeurs sachent quels patchs ont été appliqués.

- API :

  - La version de l'API est maintenant 4.0.
  - Les gens nommés sont maintenant supportés.
  - fterror est maintenant dans l'API.
  - Les fonctions SetOutput et GetOutputFormat ont été corrigées.
  - De nombreuses fonctions de l'API utilisent maintenant const si c'est approprié.
  - Les messages peuvent maintenant être redirigés depuis l'API vers stdout en utilisant l'attiribut CSOUNDMSG_STDOUT.
  - Nouvelles interfaces Lisp CFFI et FFI testées avec Steel Bank Common Lisp (architecture CPU 64 bit), exécutées dans un thread séparé.
  - ctcsound.py, une nouvelle interface FFI pour Python avait été introduite dans la version 6.07. C'est maintenant l'interface recommandée pour Python, csnd6.py étant obsolète.

- Changements sur les plates-formes :

  - Android.

    - les entrées et les sorties multicanaux sont permises.

  - Windows.

    - La bibliothèque d'importation csound64.lib a été ajoutée à l'installeur.

### Notes de parution de Csound 6.07 (mars 2016)

De nombreux bogues corrigés, dont certains importants, des éléments internes sont inclus, ainsi que de nouvelles fonctionnalités et extensions. Comme d'habitude, il y a aussi des améliotations du code.

- Nouveaux opcodes :

  - compress2: comme compress mais faisant un usage plus normal des dB (0.0 à pleine échelle).
  - (Expérimental, seulement dans le code source), nouveaux opcodes cuda : cudasynth2 et cudanal2.
  - directory : lit un répertoire et restitue une liste des noms de fichier dans un tableau de chaînes de caractères.
  - ftsamplebank : pour charger une bibliothèque d'échantillons depuis un répertoire.
  - mvclpf1, mvclpf2, mvclpf3, mvclpf4, mvchpf : simulation de filtres de Moog contrôlés en fréquence d'après Fons Andriaensen.
  - S(), convertit un nombre de taux-k ou de taux-i en une chaîne de caractères.
  - Opcode cepsinv pour calculer le cepstre inverse d'un tableau.
  - moogladder2 est plus rapide et moins précis que moogladder.
  - L'opcode paulstretch est une mise en oeuvre légère de l'algorithme d'étirement temporel PaulStretch par Nasca Octavian Paul. Il est idéal pour allonger la durée d'un signal dans de grandes proportions.
  - mp3scal implémente un traitement vocoder à verrouillage de phase à partir de fichiers mp3 sur disque, avec reéchantillonnage si nécessaire.
  - filescal implémente un traitement vocoder à verrouillage de phase à partir de fichiers sur disque, avec reéchantillonnage si nécessaire.

- Orchestre :

  - La construction booléenne ? .. : .. peut maintenant avoir un résultat de type chaîne de caractères, alors qu'auparavant elle n'autorisait que les nombres.
  - Le numéro de ligne rapporté lors de la détection d'une erreur à la fin d'une ligne est maintenant correct. Egalement des améliorations dans les numéros de ligne pour une syntaxe complexe.
  - Boucle while améliorée/corrigée.
  - Lecture des commentaires meilleure et consistante.
  - Lignes de continuation mieux gérées, spécialement par le respect des numéros de ligne.
  - opcode : S(.) syntaxe maintenant permise.

- Partition :

  - La liste des points de tempo dans l'opcode de partition t est maintenant arbitrairement longue.
  - Une incohérence dans les opcodes r et { a été corrigée.

- Options :

  - L'option -z supprime maintenant les opcodes obsolètes, sauf si on lui donne comme argument 2 ou 3.
  - La nouvelle option --fftlib détermine la bibliothèque de TFR réelle à utiliser en interne (FFTLIB = 0, PFFFT = 1, vDSP = 2).

- Opcodes et Gens modifiés :

  - Dans les opcodes OSC on peut maintenant envoyer et recevoir des tableaux, des tables et de l'audio.
  - Meilleur diagnostic si diskin2 échoue.
  - rezzy détecte maintenant une instabilité du filtre et le modifie vers une version stable.
  - adsr a été réécrit pour lever une erreur si la longueur des segments dépasse p3.
  - L'utilisation de diskin vers un tableau redimensionne le tableau de sortie si nécessaire.
  - chnget teste maintenant un changement de nom de canal comme de type de données.
  - interp peut prendre un argument facultatif supplémentaire pour donner une valeur initiale.
  - oscilikts utilise une lecture de table plus permissive.
  - L'opcode in peut lire en mono ou en stéréo, évitant ainsi la distinction in/ins.
  - sensekey a été réécrit pour fournir de meilleurs diagnostics et corriger un bogue mineur.
  - Correction d'un cas de définition de macro avec des arguments.
  - sockrecv now works at a and k rate.
  - GEN49 travaille maintenant depuis un appel de ftgen.
  - GEN34 est plus tolérant dans les tables qu'il accepte.
  - chnget autorise maintenant le changement des noms de canal pendant l'exécution.
  - iceps renommé cepsinv pour éviter les conflits.
  - Support du mp3 amélioré sur plusieur petits détails.
  - Petite correction pour autoriser le rechargement d'un greffon lapsda par l'hôte.

- Frontaux :

  - csdebugger :

    - Quelques problèmes de mémoire réglés.

  - HTML5 :

    - CsoundQT a maintenant ses propres notes à https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release%20Notes%200.9.2.1.md.

- Usage général :

  - Les options multicoeur ont été améliorées.
  - Lors du remplacement d'instruments, la nouvelle version hérite de maxalloc et des options actives.
  - Le code multicoeur fonctionne maintenant avec des instruments MIDI.
  - Les opérations MIDI sont maintenant disponibles via le module jack rtmidi (-+rtmidi=jack).

- Bogues corrigés :

  - Correction de trigseq.
  - Une erreur majeure dans rezzy a été corrigée.
  - p() a été corrigé pour un grand nombres de p-arguments.
  - p() fonctionne maintenant avec les évènements MIDI.
  - Le générateur de nombres aléatoire de 31 bit pouvait produire une boucle très courte s'il était initialisé avec zéro ; corrigé.
  - Les macros dans les fichiers .orc fonctionnent maintenant.
  - Un bogue très ancien dans l'affichage de graphes a été corrigé.
  - Corrections dans les opcodes d'enveloppe linen, expsegr, linsegr, cossegr, transegr, envlpx, comprenant de nouveaux avertissements.
  - De nombreuses corrections dans les opcodes de chaîne de caractères (strsub, strcpy et d'autres).
  - Bogues corrigés dans les formats d'impression (sprintf, printf, prints).
  - Il manquait une initialisation à pvsmooth.
  - L'initialisation des tableaux est maintenant plus robuste.
  - Bogue corrigé dans copya2ftab.
  - Correction dans cudapvsanal (EXPERIMENTAL).
  - partikkel corrigé pour le placement de grain de sous-échantillon.
  - Les opcodes nécessitant un nombre impair d'arguments sont maintenant testés proprement.
  - pvswrite tient maintenant compte correctement de 0dbfs.
  - GEN34 autorise maintenant les tables sources de longueur différente d'une puissance de deux.
  - strcat réparé.
  - nstance réparé.
  - Petits défauts corrigés dans le module rtauhal.
  - L'installeur pour Windows sur architecture CPU 64 bit fixe maintenant correctement les variables d'environnement au niveau système comme il se doit.
  - transeg au taux-k avec itype différent de zéro avait un retard initial d'un cycle.
  - Fonction log pour les tableaux corrigée.
  - Pondération des GENs nommés corrigée.
  - Une erreur de terminaison dans la lecture des fichiers ATS était supposée corrigée ; elle générait de fausses erreurs indiquant trop tôt la fin de fichier.
  - Erreur d'initialisation dans pvbandp corrigée.
  - Allocation de chaîne de caractères dans readfi corrigée.

- Changements système :

  - Utilisation intensive de fichiers en mémoire. Les fichiers .orc et .sco sont toujours traités ainsi, de même que .csound6rc. Cela simplifie grandement le fonctionnement interne.
  - Les longjmps imbriqués ont été corrigés, ce qui affectait certaines utilisations de l'API.
  - Si un fichier .csd qui n'existe pas est présenté, Csound ne plante plus.
  - La valeur kcounter est maintenant une valeur consistante non-signée sur 64 bit, ce qui permet de longues exécutions.

- API :

  - csoundCompileCsdText : nouvelle fonction pour compiler un CSD depuis un texte sous forme de chaîne de caractères.
  - L'appel de fonction csound->GetKcounter(csound) retourne maintenant un entier non-signé sur 64 bit. Auparavant, il retournait un entier long ce qui n'était pas clair.
  - ctcsound.py est un nouveau fichier de liaison entre le langage Python et l'API de Csound. C'est un fichier en pure Python qui utilise le module FFI (Foreign Function Interface) ctypes. Il ne dépend pas de Swig, et il fonctionne aussi bien avec Python2 qu'avec Python3. Il utilise numpy pour ses structures de données, numpy était le paquet fondamental du calcul scientifique avec Python.

- Changements sur les plates-formes :

  - Windows.

    - L'installeur de Csound pour Windows contient maintenant tous les exécutables construits pour une architecture CPU 64 bit.
    - L'installeur pour Windows sur architecture CPU 64 bit fournit maintenant un NW.js fonctionnel. Il exécute toutes les fonctionnalités de Csound ainsi que celles d'HTML5 dans un runtime semblable à un navigateur avec le langage JavaScript, et il comprend un éditeur Csound implémenté en HTML. L'éditeur exécute des pièces sous forme de fichiers .csd incluant une balise <html> ou sous forme de fichiers .html appelant l'objet csound, et il fournit des fonctions de débogage de JavaScript.
    - Un nouveau système simplifié se trouve dans le répertoire csound/mingw64 pour construire Csound à l'aide de la suite d'outils MSYS2/mingw64.
    - Le lien avec pthreads et d'autres bibliothèques est maintenant statique.
    - Support limité des caractères non ASCII dans les noms de fichier.
    - L'installeur pour Windows fournit maintenant Csound et tous ses composants, interfaces, greffons, utilitaires et frontaux pour une architecture de CPU sur 64 bit, compilés en utilisant la suite MSYS2/Mingw64-w64. CsoundQt et csound.node sont construits avec MSVC 2013.

  - OSX.

    - Installeur corrigé pour les noms de liens pour _csnd6 et _CsoundAC.

  - GNU/Linux.

    - L'opcode date est plus précis.

### Notes de parution de Csound 6.06 (septembre 2015)

De nombreux bogues, certains assez importants, ont été corrigés et de nouvelles facilités et extensions ont été ajoutées.

- Nouveau opcodes :

  - getseed lit l'état du générateur PRN à l'opposé de l'opcode seed.
  - tabifd — Distribution de Fréquence Instantanée, analyse en phase et magnitude.
  - websocket — Lecture et écriture de signaux et de tableaux au moyen d'une connexion websocket.
  - framebuffer — Lit des signaux audio dans des tableaux unidimensionnels de taux-k et vice-versa avec une taille de tampon spécifiée.
  - olabuffer — additionne des trames audio tuilées dans des tableaux de taux-k et retourne un signal audio.

- Orchestre :

  - Les étiquettent sont permises dans l'instrument 0.

- Partition :

  - La taille maximale des chaînes de caractères dans les partitions a été augmentée à 1024.

- Opcodes et Gens modifiés :

  - La version tableau de diskin2 utilise la taille du tableau pour donner le nombre de canaux dans le format de fichier brut.
  - Le paramètre kpitch de diskin2 vaut 1 par défaut pour les utilisations simples.
  - La ftable de vibrato dans wgflute et dans wgcar est facultative, étant définie par défaut sur une onde sinus.
  - schedule accepte maintenant les arguments chaîne de caractères.
  - urandom est maintenant disponible sur les plates-formes OSX.
  - GEN18 avait un problème de délimitations ; réécriture importante.
  - Dans la famille des opcodes poscil il est possible de passer la phase d'initialisation.
  - svfilter peut maintenant passer l'initialisation.
  - Lors de l'ouverture d'un fichier d'entrée, nchncls_i est utilisé à la place de nchnls. C'est un changement qui aurait du suivre l'existence de nchnls_i.
  - Le module rtjack rapporte maintenant le taux d'échantillonnage.
  - Les opcodes rfft, rifft, fft, fftinv, r2c et c2r ont maintenant des versions de taux-i.
  - Nouveau paramètre facultatif de seuil dans les opcodes tradsyn, sinsyn et resyn.
  - Nouvelle option de seuil pour partiels.

- Utilités :

  - L'extraction a été corrigée.
  - src_conv a été amélioré et intégré dans les options -U.
  - Corrections dans atsa et heti.

- Frontaux :

  - pnacl :

    - Support du taux d'échantillonnage fixe de 48000 Hz.

  - csound~ :

    - Changements dans le système de processus légers. L'initialisation du canal de chaînes de caractères a été corrigée. D'autres bogues ont également été corrigés.

  - Emscripten :

    - L'objet Javascript Csound peut maintenant recevoir des données de l'opcode outvalue.

  - HTML5 :

    - Integration d'HTML, de JavaScript et d'autres éléments d'HTML5 dans Csound, soit en insérant une page web comme élément <html> dans un fichier CSD pour CsoundQt ou Csound pour Android, soit en intégrant Csound dans le contexte JavaScript d'un navigateur web autonome (Emscripten, PNaCl) ou embarqué (csound.node).

- Utilisation générale :

  - Les macros malformées dans un orchestre sont maintenant interceptées.

- Bogues corrigés :

  - L'utilisation de variables d'environnement dans le style de Windows pour INCDIR, etc, fonctionnent maintenant avec les numéros de périphériques.
  - Opcode vibrato corrigé.
  - Les clics en cas d'échantillonnage de précision en temps réels ont été corrigés.
  - La copie de chaînes de caractères est maintenant correcte ; il y avait parfois des erreurs mémoire.
  - Boque dans pvstanal a été corrigé.
  - Erreur d'arrondi dans cpspch corrigée.
  - Plus de plantage lors de la recompilation d'un instrument nommé.
  - Correction du bogue d'interpolation dans tablexkt.
  - Correction dans plltrack lorsque ksmps vaut 1.

- Changements système :

  - Le message d'erreur du greffon STK est maintenant un avertissement.

- API :

  - Correction de la redéfinition des opcodes et des UDOs.

- Changements sur les plates-formes :

  - OSX.

    - Le lien sur csnd6.jar a été installé au bon endroit.
    - Les problèmes de liaison avec Java JNI sont résolus.
    - Le nom du lien pour libpng dans libfltk_image a été corrigé.

### Notes de parution de Csound 6.05 (Avril 2015)

Comme toujours il y a de nouvelles facilités et de nombreuses corrections de bogues. Une grande partie de cette livraison consiste en la suppression de nombreuses fuites et de saturation de mémoire. Naturellement ces changements ne sont pas très visibles à part une empreinte mémoire moindre. Noter que nous traitons les bogues et les demandes d'amélioration via le system de questions de github, et celles-ci ont grandement affecté cette parution.

- Opcodes :

  - L'opcode sndload est maintenant obsolète.

- Nouveaux Gens et Macros :

  - L'algorithme padsynth de Paul Octavian Nasca a été implanté sous la forme d'un gen.

- Partition :

  - Le bogue du calcul de la position d'une chaîne de caractères lors du traitement des lignes d'une partition a été corrigé [fixes #443]

- Options :

  - Une option de copyright au format court est disponible avec un nombre fixe de licences connues (CC, etc)
  - Nouvelle option de ligne de commande pour rapporter les périphériques MIDI dans un format simple.
  - Nouvelle option de ligne de commande pour fixer ksmps.

- Opcodes et Gens modifiés :

  - adsynt gère mieux les changements d'amplitude.
  - sfont détecte mieux les défauts.
  - Meilleure vérification des fréquences hors-limites dans les modèles physiques.
  - ftgenonce et d'autres acceptent les paramètres chaînes de caractères.
  - gausstrig a été retravaillé et étendu avec de nouvelles caractétistiques.
  - La fonction p() ne donne plus d'avertissement de dépassement de pcnt.
  - Correction de midirecv
  - Le nettoyage de fin d'utilisation d'OSCsend a été amélioré.
  - fillarray est limité à des tableaux à 1 ou 2 dimensions ; en fait, auparavant, il échouait silencieusement pour les dimensions supérieures ou égales à 3.
  - oscbnk fonctionne maintenant lorsque l'égaliseur est utilisé.
  - mp3in fonctionne maintenant avec des fichiers mono et stéréo.
  - flooper & flooper2 acceptent maintenant les tables stéréo.
  - La phase de relâchement d'expsegr a été corrigée.
  - Les ftables crées avec un grand nombre d'arguments pouvaient saturer la mémoire ; c'est corrigé maintenant.
  - L'exécution de plltrack a été améliorée.
  - L'initialisation des tableaux a été clarifiée et testée.
  - gen23 a été corrigé pour stopper une boucle infinie.
  - alwayson démarre maintenant depuis le décalage de la partition.
  - invalue teste dorénavant la taille de chaîne de caractères en sortie et réalloue de la mémoire si elle est inférieure à la taille par défaut (fixée à 256 octets pour une compatibité ascendante)

- Utilitaires :

  - L'utilitaire srconv a été amélioré mais il ne fonctionne pas très bien, avec des passages bruiteux dans une sortie correcte. Nous recommandons l'utilisation du code Secret Rabbit de Erik de Castro Lopo (libsamplerate) qui produit une conversion du taux d'échantillonnage de grande qualité. srconv sera supprimé prochainement pour un remplacement possible par un utilitaire basé sur SRC.

- Frontaux :

  - pnacl

    - Ajout d'une interface permettant l'utilisation du système d'entrée MIDI de Csound.
    - L'entrée audio est conforme à la dernière spécification de l'API Pepper.

- Bogues corrigés :

  - Bogues corrigés dans fastabi,oscktp, phasorbnk, adsr, xadsr, hrtfer.
  - Bogues corrigés dans harmon. harmon2, harmon3 et harmon4.
  - Csound pouvait planter après une erreur d'analyse ; ce cas est maintenant supprimé.

- Changements système :

  - Il y a de nouveaux tests sur la concordance des types de xin/xout avec leur définition dans un UDO.
  - Jack a maintenant un timeout.

- Changements internes :

  - Plusieurs défauts trouvés par coverity ont été corrigés ou le code changé. Cela devrait renforcer Csound dans les cas limites.
  - Des changements du parser simplifient l'allocation des variables temporaires, avec de nouvelles optimisations.
  - Le code du rendu multi-thread a été amélioré et stabilisé quant à la redéfinition des instruments.

- Changements sur les plates-formes :

  - iOS.

    - La fonction de rappel audio a été corrigée pour fonctionner correctement avec la sortie lumineuse et la TV Apple.

  - Android.

    - Nouveau mode d'E/S audio expérimental : csoundPerformKsmps() est appelée depuis la fonction de rappel de l'E/S OpenSL. On peut activer ce mode facultativement en passant une valeur "false" au second paramètre du nouveau constructeur de CsoundObj (bool isAsync). Le constructeur par défaut et celui à un paramètre fixent cette valeur à "true" (ce qui permet une compatibilité ascendante avec le code existant).
    - The OSC opcodes are included in distribution.

    - App Android

      - Il y a de nouvelles boîtes de dialogue pour l'ouverture et la sauvegarde de fichier qui permettent d'accéder à une carte SD, si l'appareil en est équipé, en plus du stockage interne.
      - Un nouveau bouton "Save as..." permettant de sauvegarder le csd comme un nouveau fichier avec un nouveau nom.
      - De nombreux exemples de l'archive Android sont maintenant construits dans l'application et peuvent être lancés depuis le menu.
      - Inclue maintenant l'opcode exciter.

  - OSX.

    - L'installation place maintenant csladspa.so au lieu de csladspa.dylib sur le disque.

  - Linux.

    - La version Linux est maintenant construite sans les threads FLTK. Cela supprime les gels du système et est conforme aux autres distributions.

### Notes de parution de Csound 6.04 (novembre 2014)

Cette nouvelle version comprend de nombreuses extensions et corrections ; de nouveaux opcodes et un nombre important de réorganisations internes. Il y a un nouveau frontal et les versions iOS et Android présentent de nombreuses améliorations.

Nous suivons les bogues et les demandes d'amélioration via le système de signalement de github. Des propositions pour la parution suivante sont déjà faites, mais la quantité de changements impose une parution dès maintenant.

- Nouveaux opcodes :

  - pinker génère du bruit rose de grande qualité.
  - L'opcode power ^ fonctionne maintenant avec des arguments de type tableau.
  - L'opcode exciter est calqué sur le greffon calf.
  - L'opcode vactrol simule un suiveur d'enveloppe analogique.
  - Famille d'opcodes hdf5 pour gérer le format de fichiers hdf5.
  - (expérimental non documenté) l'opcode buchla modélise le filtre lowgate de Buchla.
  - De nouveaux opcodes de taux-k agissant sur les tableaux :
    - transformées: rfft, rifft, fft, fftinv
    - produit complexe : complxprod
    - conversion polaire - rectangulaire : rect2pol, pol2rect, mags, phs
    - reél - complexe: r2c, c2r
    - fenêtrage : window
    - cepstrum : pvscpes, iceps, ceps
    - accès colonne / ligne : getrow, getcol, setrow, setcol
    - copie données de taux-a - tableau de taux-k : shiftin, shiftout
    - déroulement de phase : unwrap

- Nouveaux Gens et Macros :

  - Numéros de ligne corrigés dans les instructions d'instr.
  - Nouvelle opération de contrôle, la boucle while.
  - Un bogue ancien sur les macros qui utilisaient le même nom pour un argument a été corrigé.
  - La redéfinition d'un instrument lors d'un appel unique au compilateur est signalé comme une erreur.
  - Le saut de l'en-tête ID3 des fichiers mp3 est maintenant correctement impléménté.
  - Les erreurs dues à la non-définition de l'endroit où se trouvent les fichiers d'onde bruts de STK ont été supprimées.
  - Un bogue qui empêchait les UDO de lire une chaîne de caractères dans un p-champ a été corrigé.

- Opcodes et Gens modifiés :

  - Les opcodes de manipulation de pile sont obsolètes.
  - lenarray étendu pour la gestion des tableaux multi-dimentisonnels.
  - ftgenonce accepte correctement les arguments chaîne de caractères.
  - max et min ont maintenant une version de taux-i.
  - gen23 amélioré au vu des commentaires et des problèmes rapportés.
  - Dans OSCsend le port est maintenant une valeur de taux-k.
  - socksend travaille maintenant au taux-k.
  - Plusieurs opcodes générateurs d'enveloppe sont maintenant corrects en mode de précision à l'échantillon.
  - La compilation faust est maintenant protégée par un verrou.
  - mp3 a été modifié pour permettre son utilisation avec reinit.
  - Dans les opcodes de contrôle à distance, la nom du réseau peut être fixé via la variable d'environnement CS_NETWORK. Vaut par défaut en0 (OSX) ou eth0.

- Frontaux :

  - icsound : le nouveau frontal icsound est maintenant prêt pour tout usage. icsound est une interface Python pour un usage interactif avec le notebook ipython.
  - csdebugger : plusieurs changements et amélorations ont été faits, comme un parcours pas à pas des instruments actifs, une meilleure utlisation des numéros de ligne.

- Usage général :

  - Le module Jack ne stoppe plus Csound en cas d'échec de la connexion automatique.

- Bogues corrigés :

  - atsinnoi corrigé.
  - ftsavek corrigé.
  - sprintf corrigé.
  - Correction de gen27, en particulier avec de nombreux arguments, ainsi que de nombreuses erreurs dans les arguments de partition en grand nombre.
  - Les opcodes Physem (guiro cabasa, sekere) corrigés pour qu'un second appel fonctionne.
  - flooper corrigé dans le mode 2.
  - OSCsend, plusieurs corrections.
  - UDO corrigé pour le cas d'un ksmps local égal à 1.
  - D'autres changements et corrections au code dssi.
  - xscanu et scanu corrigés.
  - temposcal et mincer corrigés.
  - Le plantage dans ftload a été corrigé.

- Changements système :

  - En mode serveur la sortie se fait maintenant proprement.
  - Corrections dans le module rtalsa.
  - Corrections dans le module temps réel de pulseaudio.
  - Correction pour enlever les entrées de fluidEngine d'une instance de Csound (empêche le plantage dans moduleDestroy).
  - Les opcodes appelés en tant que fonction qui retournaient des tableaux ne synthétisaient pas correctement les arguments en types tableau parce qu'ils ne convertissaient pas le spécificateur de l'argument au format interne.
  - Correction du plantage durant la phase d'initialisation de notes liées à cause du code sauté par le goto.
  - Correction de l'initialisation erronée des p-champs lorqu'ils étaient moins nombreux que ce que l'instrument attendait (décalage d'un p-champ).

- Changements internes :

  - Ajout de l'identification de type à l'exécution pour les variables d'instrument ; on utilise plus XINCODE/XOUTCO.
  - Correction de l'analyse des nombres négatifs pour la taille de malloc et gestion améliorée des nombres négatifs.
  - L'écriture dans circularBuffer est maintenant atomique.
  - Plusieurs fuites de mémoire et des codes potentiellement dangereux ont été corrigés.
  - L'inférence de type a été considérablement retravaillée ainsi que certaines zones du parseur.

- API :

  - Nouvelle fonction de l'API pour retrouver les paramètres GEN utilisés lors de la création d'une table.

- Changement sur les plates-formes :

  - iOS :

    - API refactorisée pour avoir des noms de méthode et d'abstraction plus clairs (par exemple CsoundBinding au lieu de CsoundValueCacheable).
    - Nettoyage du code obsolète.
    - Le code a été significativement retravaillé.

  - Android :

    - API refactorisée pour avoir des noms de méthode et d'abstraction plus clairs (par exemple CsoundBinding au lieu de CsoundValueCacheable).
    - Changements pour permettre d'avoir HTML 5 avec JavaScript, et WebGL si possible, dans l'app Android Csound6.
    - Changement d'orientation de l'écran dans l'app Csound6 sans avoir à redémarrer l'app.
    - Stockage local (utile pour sauvegarder et restaurer les valeurs des widgets, etc.)

  - Windows :

    - Correction de l'arithmétique des pointeurs qui causait un plantage sous Windows.
    - pyexec a été modifié pour utiliser les fontions d'ouverture de fichier de Python afin d'éviter un plantage sous Windows.

  - OSX :

    - CsoundAC est compilé maintenant.

  - Linux :

    - Bogues de threadlocks corrigés sous linux.

### Notes de parution de Csound 6.03 (mai 2014)

Cette nouvelle version corrige de nombreux bogues, comprenant la résolution de tickets sur SourceForge et sur GitHub. Elle apporte également des changements internes pour améliorer l'exécution.

- Nouveaux opcodes :

  - prinks2 affiche une nouvelle valeur chaque fois qu'une variable de contrôle change avec une syntaxe de formatage à la printf()
  - mp3sr, mp3bitrate et mp3nchnls pour obtenir de l'information sur les fichiers mp3
  - EXPERIMENTAL : les opcodes CUDA pour la convolution partitionnée, la convolution directe et le vocodeur de phase : opcode OpenCl pour la synthèse additive
  - compilecsd pour compiler des instruments à partir d'un fichier CSD standard

- Orchestre :

  - i() attendait comme argument une variable pas une expression. C'est maintenant la norme. (bug #90)

- Partition :

  - Nouvelle instruction de partition y fixant la graine de random (pour ~) durant la lecture

- Options :

  - Il y avait un bogue dans CsOptions ; le dernier argument n'était pas lu (issue #296)
  - Les options de ligne de commande expression-opt et no-expression-opt n'ayant plus d'usage dans Csound6, un avertissement est affiché

- Opcodes et Gens modifiés :

  - Il est possible de spécifier pour la sortie ogg une qualité VBR (taux de bloc variable)
  - Le code de dssi4cs a été entièrement retravaillé pour éviter de potentielles fautes de mémoire
  - Plusieurs opérations de tableaux sont désormais disponibles au taux-i ainsi qu'au taux-k
  - fillarray fonctionne avec les tableaux de chaînes de caractères
  - L'affichage des TFR (via dispfft) a été amélioré avec des options de mise à l'échelle et de zoom
  - Les opcodes de graphe de fluence fonctionnent maintenant avec des signaux tableaux de taux-a
  - Dans le code alsa TR, le taux d'échantillonnage provient du périphérique
  - Le système d'opcodes Faust a été mis à jour par rapport à la dernière API de Faust

- Utilitaires :

  - Bogue corrigé dans lpanal

- csound~ :

  - OSX - correctif pour l'exécution avec une architecture à cpu 32 bit
  - Windows - csound~ est maintenant disponible sous Windows

- Emscripten :

  - Intégré désormais dans la base de code

- Utilisation générale :

  - --displays active maintenant le mode graphique comme prévu
  - Nouvelle option de ligne de commande --get-system-sr pour obtenir le taux d'échantillonnage de la machine
  - Nouvelle option de ligne de commande --devices[=in|out] qui donne une liste des périphériques audio disponibles puis termine le programme

- Bogues corrigés :

  - Lorsqu'une table était remplacée sa taille ne changeait pas
  - Plusieurs bogues dans --sample-accurate ont été repérés et corrigés. Cela concerne en particulier les opcodes out, outn et line
  - Plusieurs bogues dans grain3 ont été corrigés
  - Un bogue de str_chanel pouvait provoquer un plantage
  - Petit défaut dans rtjack
  - Une erreur dans l'opcode resize a été corrigée
  - Un bogue aléatoire a été corrigé dans atsa
  - Problème de pause dans rtauhal corrigé
  - Plusieurs bogues/maladresses corrigés dans GEN23
  - Test des bornes des tableaux corrigé
  - Les canaux de chaînes de caractères n'étaient pas correctement réglés pour les chaînes de taille variable
  - L'allocation mémoire pour le formatage de chaîne dans printfsk a été corrigée, supprimant ainsi le troncage de chaîne
  - strcat protégé contre la surcapacité
  - une erreur dans la compilation des tableaux a été corrigée (problème #293)
  - Correction de GetPvsChannel contre un plantage

- Changements système :

  - L'opcode turnoff vérifie maintenant que l'instrument affecé est actif
  - lenarray accepte n'importe quel type de tableau
  - la manière d'arrondir un numéro de table a été modifiée pour un comportement plus prévisible
  - on peut avoir une nouvelle section dans un fichier csd nommée <CsFile...> qui est semblable à csFileB mais avec un texte non encodé
  - La compilation des UDO utilise maintenant le système de types. Les UDOs peuvent ainsi utiliser n'importe quel type de tableau
  - Analyse de l'orchestre plus rapide grâce à de meilleurs algorithmes

- Changements internes :

  - Tout le système a été testé avec l'outil d'analyse statique Coverity qui a identifié plusieur problèmes (mineurs pour la plupart). Ceux-ci ont été traités et vérifiés. En particulier, une meilleure utilisation de l'impression et de la copie de chaîne devrait permettre d'éviter les dépassements de capacité
  - Le système de types et de variables a été entièrement réécrit ; cela a permis un meilleur support des tableaux et des UDOs
  - L'alignement des variables est maintenant correct dans tous les cas
  - La copie de tableau utilise maintenant le système de types pour copier les valeurs ; cela règle les problèmes de copie des tableaux de chaînes de caractères, de f-sigs, etc
  - Csound est réinitialisé lorsqu'il s'arrête restant ainsi dans un état propre ; ce n'était pas le cas lors d'une erreur de compilation si bien que le démarrage suivant ce faisait avec un moteur de Csound invalide (problème #305)

- API :

  - Tous les opcodes, etc, utilisent maintenant les opérations d'allocation de mémoire de l'API, ce qui permet de remplacer complétement l'allocateur de mémoire
  - csoundCompileCsd a été ajouté à l'API et associé avec le nouvel opcode compilecsd
  - csoundGetStringChannel est protégé contre les chaînes courtes ou nulles et un test de la longueur de chaîne a été ajouté
  - Dans plusieurs fonctions de l'API char* a été remplacé par const char* conformément à l'usage

  Le moteur d'exécution a maintenant des capacités de débogage permettant l'interruption de l'exécution et l'inspection de l'état du moteur et des variables d'instrument. Les fonctions suivantes sont disponibles en incluant l'en-tête csdebug.h :

      void csoundDebuggerInit (CSOUND *csound);
      void csoundDebuggerClean (CSOUND *csound);
      void csoundSetInstrumentBreakpoint (CSOUND *csound, MYFLT instr, int skip);
      void csoundRemoveInstrumentBreakpoint (CSOUND *csound, MYFLT instr);
      void csoundClearBreakpoints (CSOUND *csound);
      void csoundSetBreakpointCallback (CSOUND *csound, breakpoint_cb_t bkpt_cb, void *userdata);
      void csoundDebugContinue (CSOUND *csound);
      void csoundDebugStop (CSOUND *csound);
      debug_instr_t *csoundDebugGetInstrInstances(CSOUND *csound);
      void csoundDebugFreeInstrInstances(CSOUND *csound, debug_instr_t *instr);
      debug_variable_t *csoundDebugGetVariables(CSOUND *csound, debug_instr_t *instr);
      void csoundDebugFreeVariables(CSOUND *csound, debug_variable_t *varHead);

- Windows:

  - Soundfonts dans Windows avait un problème d'alignement interne qui a été corrigé

### Notes de parution de Csound 6.02

Cette nouvelle version comporte de nombreuses corrections de bogues (y compris la résolution générale de tous les tickets sur SourceForge). Elle introduit aussi quelques nouvelles facilités telles qu'un serveur, du code pour exécuter Csound dans un navigateur et une large généralisation des opcodes de filtre pour les doter de paramètres modifiables au taux audio.

- Nouveaux opcodes :

  - L'opcode nstance produit une nouvelle instance d'un instrument et mémorise le descripteur de cette instance.
  - L'opcode turnoff nouvelle variante pour arrêter une instance d'un instrument donné.
  - strfromurl pour remplir une chaîne de caractères à partir d'une URL.

- Orchestre :

  - Si la construction de Csound le permet, une chaîne intégrée avec #include peut être une URL ou un fichier.
  - Il est à nouveau permis d'insérer un espace entre le nom d'une fonction et la parenthèse ouvrante pour toutes les fonctions valables dans Csound5 (mais pas en général).
  - La commande Csound peut démarrer avec un CSD vide en mode démon (--daemon): ne quitte pas si le CSD/orchestre n'est pas donné, est vide ou ne compile pas).

- Partition :

  - Si la construction de Csound le permet, une chaîne intégrée avec #include peut être une URL ou un fichier.

- Opcodes et Gens modifiés :

  - Plusieurs filtres ont été modifiés pour accepter des paramètres de taux-k ou de taux-a. En particulier, les filtres suivants sont concernés :

    areson | atonex
    butterworth filters | fofilter
    lowres | lowresx
    lpf18 | mode
    moogladder | moogvcf
    reson | resonr
    resonx | resonz
    statevar | tonex

  - Le nombre maximum de presets dans sfont a été augmenté à 16384.
  - cpsmidinn est désormais plus précis.
  - Le comportement de max_k suit maintenant la documentation. Dans certains cas les résultats étaient bizarres.
  - Dans l'opcode alwayson, modifications pour une meilleure gestion des p-champs et une insertion plus fiable d'une instance d'instrument pour répéter ou redémarrer des sections de partition.
  - On a remplacé dans les opcodes de graphe de fluence la bibliothèque multithread OpenMP par pthreads, ce qui permet une initialisation en une passe des structures statiques.

- Frontaux :

  - PNaCl est maintenant supporté comme plate-forme, ce qui permet d'exécuter Csound dans le navigateur Chrome sur tous les systèmes d'exploitation qui l'acceptent.

- Bogues corrigés :

  - Opcode adsynt2.
  - Opcode ftgentmpd.
  - Opcode dates.
  - Opcode pvsfilter.
  - Sortie stéréo de temposcal et de mincer.
  - Opcode pan2.
  - Dépassement d'indice dans randh et dans randi.
  - pycalln s'il n'y a pas d'entrée.
  - correction/révision des réglages de ksmps et de kr dans les UDOs.
  - correction du problème d'envoi d'un message de partition de max vers csound via csound~ (Ticket 58).
  - lorsque itype dans chn_k était fixé à 3 et que les valeurs étaient inférieures à 1, Csound6 produisait une erreur INIT. (Ticket 67).
  - Plusieurs erreurs de segmentation qui avaient été rapportées ont été traitées.
  - l'opcode xtratim utilisait une valeur de ekr incorrecte venant de csound au lieu d'une instance ; l'utilisation de cet opcode conjointement avec setksmps donnait des notes avec une valeur de xtratim très longue et ainsi ces notes ne se terminaient jamais.

- Changements système :

  - Il y a maintenant un mode serveur qui accepte des entrées via UDP (avec l'option --port).
  - Un bogue très ancien dans extract a été trouvé et corrigé. Cela laisse penser que cet utilitaire est très peu utilisé !
  - La façon dont le générateur de partition externe était écrit a changé de manière conséquente. En particulier, ceci devrait corriger un bogue assez étrange sous Windows.
  - Correction d'un bogue de plantage dans la fonction de rappel d'un canal invalue à cause de l'extraction d'un mauvais objet de données depuis les données d'hôte de csound.
  - Correction d'un bogue dans les UDOs sans ksmps local lorsque kcounter était utilisé de manière incorrecte.
  - Meilleur contrôle dans les canaux.
  - (Expérimental) Si la variable d'environnement CS_UDO_DIR est définie, tous les fichiers du répertoire courant avec une extension .udo sont automatiquement inclus au début de l'orchestre. A vérifier pour voir si c'est ce qui était demandé.
  - (Expérimental) Il y a de nouveaux opcodes GPGPU cuda (seulement le code source) : cudasynth (3 versions pour la synthèse additive, la synthèse additive de fsigs et la resynthèse par vocoder de phase) et cudanal (une version GPGPU de pvsanal).

- Changements internes :

  - Plusieurs tentatives d'accélération du code.
  - Amélioration de l'inférence de type et du parseur.

- iOS:

  - Correction du plantage lorqu'aucun csoundSetHostImplementedMIDIIO n'est utilisé sous iOS alors que la valeur de _RTMIDI est fixée.

- OSX:

  - Correction du nom du périphérique d'entrée pour auhal.

### Notes de parution de Csound6

Csound6 est une réécriture significative d'une grande partie du code. En particulier, l'API n'est plus compatible, mais tous les anciens fichiers au format orc/sco/csd devraient fonctionner.

Il y a de nouvelles facilités comme la précision à l'échantillon et le mode temps réel décrit ci-dessous.

IMPORTANT : la variables d'environnement localisant les greffons se nomme OPCODE6DIR64 ou OPCODE6DIR (noter le 6) afin que Csound6 puisse coexister avec Csound5.

De même .csoundrc est renommé .csound6rc.

Les tableaux sont maintenant intégrés avec le support d'une syntaxe et d'opcodes. Ils existent également en format multidimensionnel. Ils sont habituellement créés avec l'opcode init ou avec l'opcode fillarray.

      k1[]  init 4

génère un tableau de taux-k à une dimension, de longueur 4. De même

      a2[][] init 4, 4

crée un tableau carré 4x4 de taux-a.

      k2[]  fillarray 1, 2, 3, 4

crée un vecteur de 4 éléments rempli avec 1,...4, qui définit aussi sa longueur.

Les éléments sont atteints par indexation entre [] comme k1[2] ou a2[2][3]. Les tableaux unidimensionnels remplaces les tvars et on peut les utiliser dans des opcodes comme maxtab, mintab et sumtab (voir ci-dessous). Un élément de tableau peut être rempli en le plaçant à la gauche d'un opcode :

      aSigs[0] vco2 .1, 440
      aSigs[1] vco2 .1, 880

Le nouveau mode prioritaire temps réel peut être activé en passant --realtime ou en fixant le champ realtime_mode de CSOUND_PARAMS à 1. Cela provoque les effets suivants :

1. tout opcode de lecture/écriture de fichier audio est traité de manière asynchrone dans un thread séparé.
2. toutes les opérations d'initialisation sont exécutées de manière asynchrone.

Le support du multicoeurs a été entièrement réécrit avec l'utilisation d'un algorithme différent pour la répartition des tâches, ce qui devrait consommer moins de mémoire et moins de verroux.

- Nouveaux opcodes :

  - faustgen
  - array -- plusieurs opcodes nouveaux ou révisés -- voir Opcodes de tableaux
  - compileorc reçoit le nom d'un fichier contenant une collection de définitions d'instrument et les compile en remplaçant les versions existantes s'il y en a. Retourne 0 en cas de réussite.
  - compilestr est comme compileorc mais il reçoit une chaîne de caractères.
  - readscore exécute le préprocesseur de partition sur une chaîne de caractères et organise ensuite les nouveaux évènements via le mécanisme d'évènements en temps réel, retournant 0 en cas de réussite.

- Orchestre

  - Les évènements de note peuvent commencer et se terminer au milieur d'un cycle-k. Comme c'est un changement incompatible, ce n'est invoqué que si l'option --sample-accurate est spécifiée dans la ligne de commande. A noter que cela ne fonctionne pas avec les notes liées et que lorsque l'initialisation d'une note est ignorée cela peut poser problème.
  - Les instruments peuvent fonctionner avec des valeurs de ksmps locales en utilisant `setksmps iksmps` comme dans les UDOs de Csound5.
  - La compilation peut s'effectuer à n'importe quel moment, les nouveaux instruments étant ajoutés ou remplaçant les anciens. Les instances actives des anciennes définitions d'instrument ne sont pas affectées. La seule limitation est que les constantes de l'en-tête dans instr0 ne sont lues qu'une fois lors de la première compilation. Du code d'initialisation peut être placé en dehors des instruments dans l'espace global, et il ne sera exécuté qu'une seule fois après la compilation. Dans ce cas, la génération d'évènements de partition peut être complètement remplacée par du code de l'orchestre. Voir aussi les nouveaux opcodes compileorc et compilestr.
  - Nouvelle syntaxe avec les opérateurs +=, -=, *= et /=. Ce sont plus que des bonus de syntaxe ; il est recommandé d'utiliser += et -= pour les réverbérations avec accumulation car ils donnent un meilleur comportement multicoeurs.
  - Les opcodes add, sub, mul et div ont été supprimés ; utiliser les formes + - * /. Peu de gens connaissaient l'existence de ces opcodes.
  - Tout opcode avec une seule entrée et aucune sortie peut être utilisé comme une fonction. Certains opcodes peuvent nécessiter une annotation de type pour résoudre les ambiguïtés. Plus de détails dans Syntaxe fonctionnelle dans Csound6.
  - Une instruction peut aller à la ligne après une virgule, un signe égal ou une opération arithmétique.
  - Il y a un ensemble d'opérations nouvelles ou recodées sur les tableaux de valeurs-k, la plupart restreintes aux tableaux à une dimension (vecteurs) :

         kans minarray ktab       retourne la plus petite valeur du
                                  tableau (peut-être) multidimensionnel
         kans maxarray ktab       comme mintab
         kabs sumarray ktab       somme de toutes les valeurs dans le tableau
         ktab genarray imin, imax[, inc]
                                  génère un vecteur de valeurs entre imin
                                  et imax par pas de inc (1 par défaut)
         ktab2 maparray ktab1, "sin" applique le fonction de taux-k à 1 arg
                                  dans la chaîne, à chaque élément du vecteur
         ktab2 maparray_i ktab1, "sin" applique le fonction de taux-i à 1 arg
                                  dans la chaîne, à chaque élément du vecteur
         ktab2 slicearray ktab1, istart, iend
                                  retourne un bout de ktab1 allant de ktab1[istart]
                                  à ktab1[iend]
         copyf2array ktab, kfn    copie les données d'une ftable dans un vecteur
         copya2ftab  ktab, kfn    copie les données d'un vecteur dans une ftable

    L'arithmétique sur les tableaux est permise. En particulier l'addition, la soustraction, la multiplication et la division élément par élément sont accessibles en format arithmétique. Les mêmes opérations sont permises entre un tableau et un scalaire.
  - Chaque instance d'instrument a un bloc-notes de quatre valeurs persistantes ; on peut ainsi reporter ces valeurs dans une nouvelle utilisation de l'instrument ; peut être utile pour le legato, etc.
  - Si le numéro de table -1 est passé, une onde sinus interne équivalente à `f. 0 16382 10 1` est utilisée. L'écriture dans cette table produira des résultats imprévisibles, mais elle n'est pas interdite. La valeur 16382 peut être changée par l'option de ligne de commande --sine-size=# où # est arrondi à une puissance de deux.
  - Plusieurs opcodes oscil ont maintenant un paramètre de ftable facultatif, prenant par défaut l'onde sinus interne. (oscil1, oscil1i, oscil, oscil3, oscili, foscil, foscil1, loscil, loscil3).

- Partition

  - Les lignes de la partition peuvent avoir plusieurs chaînes de caractères.
  - Changement pour les caractères d'échappement dans les chaînes de caractères de la partition -- ils sont inactifs.
  - Noter aussi l'opcode readscore.

- Opcodes et gens modifiés

  - La fonction k() peut prendre un argument de taux-a et produit dans ce cas un appel à downsamp.

- Utilitaires

  - les fichiers d'analyse hetro/adsyn peuvent être indépendants de l'ordre des octets s'ils sont créés avec -X. La contrepartie est un fichier un peu plus long et un chargement un peu plus lent. L'utilitaire het_export crée le format indépendant à partir de l'ancien, et het_import n'est plus nécessaire.
  - cvanal et lpanal produisent des fichiers indépendants de la machine si l'option -X est utilisée. Les opcodes convolve, lpread, etc, acceptent les deux formats. Il est recommandé d'utiliser le format indépendant de la machine. Les fichiers d'analyse produits avec -X peuvent être utilisés sur d'autres systèmes.

- Frontaux

- Corrections de bogues

- Changements système

  - Sous Linux et OSX le traitement multilingue est maintenant sécurisé pour les threads et local.

- Changements de plate-forme

- API

  Nouvelles fonctions de l'API...

  - Nouvelles fonctions de configuration et de paramètres

                PUBLIC int csoundSetOption(CSOUND *csound, char *option);
                PUBLIC void csoundSetParams(CSOUND *csound, CSOUND_PARAMS *p);
                PUBLIC void csoundGetParams(CSOUND *csound, CSOUND_PARAMS *p);
                PUBLIC void csoundSetOutput(CSOUND *csound, char *name, char *type,
                                            char *format);
                PUBLIC void csoundSetInput(CSOUND *csound, char *name);
                PUBLIC void csoundSetMIDIInput(CSOUND *csound, char *name);
                PUBLIC void csoundSetMIDIFileInput(CSOUND *csound, char *name);
                PUBLIC void csoundSetMIDIOutput(CSOUND *csound, char *name);
                PUBLIC void csoundSetMIDIFileOutput(CSOUND *csound, char *name);

  - Nouvelles fonctions d'analyse et de compilation

                PUBLIC TREE *csoundParseOrc(CSOUND *csound, char *str);
                PUBLIC int csoundCompileTree(CSOUND *csound, TREE *root);
                PUBLIC int csoundCompileOrc(CSOUND *csound, const char *str);
                PUBLIC int csoundReadScore(CSOUND *csound, char *str);
                PUBLIC int csoundCompileArgs(CSOUND *, int argc, char **argv);

  - Nouvelle fonction pour démarrer Csound après la première compilation

                PUBLIC int csoundStart(CSOUND *csound);

  - Nouveaux accès au bus logiciel sécurisés pour les threads

                PUBLIC MYFLT csoundGetControlChannel(CSOUND *csound, const char *name);
                PUBLIC void csoundSetControlChannel(CSOUND *csound, const char *name, MYFLT val);
                PUBLIC void csoundGetAudioChannel(CSOUND *csound, const char *name, MYFLT *samples);
                PUBLIC void csoundSetAudioChannel(CSOUND *csound, const char *name, MYFLT *samples);
                PUBLIC void csoundSetStringChannel(CSOUND *csound, const char *name, char *string);
                PUBLIC void csoundGetStringChannel(CSOUND *csound, const char  *name, char *string);

  - Nouvelles fonctions de copie de table sécurisées pour les threads

                PUBLIC void csoundTableCopyOut(CSOUND *csound, int table, MYFLT *dest);
                PUBLIC void csoundTableCopyIn(CSOUND *csound, int table, MYFLT *src);

  L'API a été sécurisée pour les threads si bien que l'exécution et le contrôle peuvent avoir lieu dans des threads séparés (après un appel à csoundStart() ou à csoundCompile()). La sécurité pour les threads est assurée par

  1. l'usage de lecture/écriture atomique sur les canaux de contrôle
  2. des verroux tournants pour les canaux audio et de chaîne de caractères
  3. des exclusions mutuelles protégeant la compilation, les évènements de partition et les accès aux tables.

- Interne

  - Le système de construction est maintenant cmake (et plus scons comme dans Csound5).
  - Plusieurs opcodes d'accès aux tables ont été réécrits mais ils se comportent de la même façon. De même diskin et diskin2 utilisent maintenant le même code si bien que diskin devrait être plus stable.
  - L'ancien parseur est supprimé.

- Nouvelles fonctions internes dans Csound

          void (*FlushCircularBuffer)(CSOUND *, void *);
          void *(*FileOpenAsync)(CSOUND *, void *, int, const char *, void *,
                                 const char *, int, int, int);
          unsigned int (*ReadAsync)(CSOUND *, void *, MYFLT *, int);
          unsigned int (*WriteAsync)(CSOUND *, void *, MYFLT *, int);
          int  (*FSeekAsync)(CSOUND *, void *, int, int);
          char *(*GetString)(CSOUND *, MYFLT);
                   Extrait une chaîne d'un argument d'évènement de partition.

- Fonctions supprimées

          void *(*FileOpen)(CSOUND *, void*, int, const char*, void*, const char*);

- La partie "privée" de l'API a considérablement changé. Des structures commes EVTBLK ont également changé.

- Les macros LINKAGE1/FLINKAGE1 ont été renommées en LINKAGE_BUILTIN/FLINKAGE_BUILTIN.

- Le modèle pour la passe d'exécution des opcodes de taux-a est

      int perf_myopcode(CSOUND *csound, MYOPCODE *p)
      {
          uint32_t offset = p->h.insdshead->ksmps_offset;
          uint32_t early  = p->h.insdshead->ksmps_no_end;
          uint32_t nsmps = CS_KSMPS;
          ...
          if (UNLIKELY(offset)) memset(p->res, '\0', offset*sizeof(MYFLT));
          if (UNLIKELY(early))  {
            nsmps -= early;
            memset(&p->res[nsmps], '\0', early*sizeof(MYFLT));
          }
          for (n=offset; n<nsmps; n++) {
              .....
              p->res[n] = ....
          }
          return OK;
      }

- Les variables chaîne de caractères ont été réimplantées/

- La structure OENTRY a changé et elle a un nouveau champ de dépendance ; utiliser ce champ selon les nécessités de la sémantique multicoeurs. On peut le mettre à -1 et interdire ainsi tout parallélisme, mais au moins il est sûr.

- Tous les opcodes concernant l'audio doivent prendre en compte le code de précision à l'échantillon.

- Certaines fonctions de la précédente API sont supprimées ; OpenFile et OpenFile2, toutes deux remplacées par la nouvelle OpenFile2 avec argument supplémentaire.

- Des ajouts ont été faits aux spécifications du type d'argument pour les opcodes.

  - Les types quelconques ont été ajoutés comme suit :
    - '.' signifie un argument requis de n'importe quel type
    - '?' signifie un argument facultatif de n'importe quel type
    - '*' signifie une liste variable d'arguments de n'importe quel type
  - Les tableaux sont maintenant spécifiés par "[x]" où x est une spécification de type. Une spécification de type peut-être n'importe quelle spécification courante, y compris celle des types quelconques. Voir Opcodes/arrays.c pour un exemple d'utilisation.

- Nouveau système de type

  Un nouveau système de type a été ajouté à Csound6, et des modifications significatives ont été apportées au compilateur. Le système précédant de gestion des types dépendait de la première lettre du nom de variable à chaque détermination de son type. Cela impliquait de retester de nombreuses fois les types. De plus, l'ajout de nouveaux types était difficile, car il fallait modifier beaucoup de code particulier pour tester les nouvelles lettres de type.

  Dans Csound6, un système de type séparé a été ajouté. Les types sont définis comme CS_TYPE's. La création de variables d'un type et l'initialisation de mémoire sont encapsulées dans les CS_TYPE's. Ce changement facilite l'ajout de nouveaux types ainsi que les calculs génériques de réserve de mémoire, parmi d'autres choses.

  Le compilateur a été modifié depuis Csound5 pour utiliser désormais le système de type comme partie intégrale de sa phase de vérification sémantique. Les variables sont maintenant enregistrées dans un CS_VAR_POOL à leur première définition, la CS_VARIABLE ayant une référence à son CS_TYPE. Après cette première définition dans le bloc, l'information de type est consultée lors des accès ultérieurs à la variable plutôt que recalculée d'après le nom de la variable. Cela ouvre des possibilités pour de nouvelles stratégies de nommage et de typage des variables, à savoir l'utilisation de "myVar:K" pour dénoter un argument de taux-k. Cela ouvre aussi des possibilités pour les types définis par l'utilisateur, tels que "data myType kval, aval", avec l'utilisation ensuite de "myVar:myType" pour définir une variable de ce type. (Ceci est spéculatif, et ce n'est pas une proposition active pour le moment.)

  L'ajout du système de type a formalisé le système de type statique qui existait précédemmment dans Csound avant Csound6. Il a indubitablement simplifié la base de code en terme de gestion des types ainsi que posé les fondations d'une recherche future sur les types à intégrer dans Csound.

### Nouveautés dans la version 5.19 (7 janvier 2013)

C'est principalement une distribution de correction de bogues avec cependant de nouveaux opcodes et des améliorations.

- Nouveaux opcodes :

  - Module ipmidi pour le MIDI sur un réseau.

  - Opcode ppltrack.

  - Opcode combinv.

- GEN et macros :

  - Vérification améliorée dans GEN28.
  - Vérification de l'intervalle dans outrg et option de repliement.

- Orchestre :

  - Une instruction vide provoque un avertissement.
  - Numéros de ligne ajoutés à plusieurs messages d'arguments en entrée (nouveau parseur).

- Opcodes et GENs modifiés :

  - De meilleurs messages d'erreur et d'avertissement.
  - loopseg vérifie maintenant le nombre de ses arguments.
  - harmon2/3/4 ont été améliorés.
  - active : une option a été ajoutée pour ignorer les instances en phase de relâchement.
  - Une nouvelle implémentation mieux testée de ChordSpace.

- Bogues corrigés :

  - L'optimisation bâclée des filtres passe-bas a été corrigée.
  - Les opcodes chn ont été corrigés sous Linux.
  - Un bogue de silence a été corrigé dans loscil.
  - GEN23 a été corrigé lorsqu'un commentaire ne se termine pas par une nouvelle ligne.
  - loopseg a été corrigé.
  - Le nombre de canaux d'entrée et de sortie a été corrigé dans le nouveau parseur.
  - Le problème de GEN43 a été corrigé.
  - fout a été corrigé.
  - centroid avait tendance à planter.
  - Bogue mineur dans le système d'impression qui perdait les %.
  - Il y avait une valeur non initialisée dans fold.
  - Il y avait des valeurs non initialisées dans dconv.
  - L'affectation des fsigs fonctionne maintenant.

- Changements système :

  - Des erreurs de segmentation sont évitées lors de certaines erreurs de l'utilisateur.
  - Les opcodes modal4 sont plus rapides.
  - La compilation cabbage est possible.
  - La taille des pchamps a été rendue dynamique dans le message d'évènement de csoundapi~.
  - Le format de sortie par défaut pour les tuyaux et les réels en double précision est AU.
  - Changement pour ircam avec le format par défaut, '-o stdout' et les tuyaux.
  - Réels en double précision ajouté au format de sortie.

- Changement sur les plates-formes :

  - Linux :

    - Les spinlocks sont initialisés (bogue corrigés dans les opcodes chn).

  - OSX :

    - Sélection des périphériques améliorée dans le module rtauhal.
    - Un tampon circulaire et une opération sans verrou ont été ajoutés à rtauhal.
    - Le programme d'installation sur MacOSX a été corrigé (en créant des liens symboliques vers lib_csnd.dylib).

  - Haiku :

    - Nouvelle plate-forme.

  - Android :

    - On peut utiliser -B pour fixer la taille de tampon circulaire.
    - On a ajouté les opcodes fluidsynth.
    - On a ajouté la méthode inputMessage à CsoundObj.
    - Il est possible d'installer CSDPlayer sur une carte SD.

  - iOS :

    - Routage audio amélioré.
    - Le haut-parleur inférieur est choisi par défaut.

- API :

  - Nouvelle fonction csoundCompileFromStrings().

### Nouveautés dans la version 5.18 (29 août 2012)

C'est principalement une distribution de correction de bogues avec cependant de nouveaux opcodes et des améliorations.

- Nouveaux opcodes :

  - centroid semblable à pvscent mais agissant sur des signaux audio.
  - cosseg comme linseg mais avec interpolation cosinusoïdale.
  - cossegb comme linsegb mais avec interpolation cosinusoïdale.
  - cossegr comme linsegr mais avec interpolation cosinusoïdale.
  - joystick pour lire des valeurs venant d'un joystick externe (seulement sous Linux).
  - log2, fonction logarithme de base 2.
  - platerev modélisant une plaque réverbérante carrée.
  - pwd pour déterminer le répertoire courant
  - readf pour lire des chaînes de caractères d'un fichier
  - readfi pour lire des chaînes de caractères d'un fichier à l'initialisation
  - vbap de la famille vbap, flexible sur le nombre de haut-parleurs et sur le choix des dispositions.
  - vbapg semblable à vbap mais ne calculant que les gains sur les canaux.

- Nouvelles fonctionnalités

  - Changements à <CsOptions> permettant les espaces entre les mots et les caractères d'échappement.
  - fout et fin utilisent une meilleure stratégie de mémoire tampon et sont ainsi plus rapides.
  - Il est possible de ne spécifier qu'un fichier d'orchestre avec l'option --orc. Utile lorsqu'on a pas besoin de partition.
  - Une nouvelle option de ligne de commande, --ogg, a été ajoutée pour avoir aisément une sortie au format ogg/vorbis.
  - On a ajouté alsaseq au midi en temps réel.

- Bogues corrigés et améliorations :

  - Les opcodes dates pouvaient planter sur les architectures 64 bit ; c'est corrigé.
  - Certains inter-verrous multicoeur étaient erronés. On pense que ce n'était pas encore un problème, mais que ça le serait devenu dans le futur.
  - Il y avait des cas de double fermeture d'un fichier conduisant au plantage en fin de programme.
  - Deux nouvelles fonctionnalités dans partikkel. La loi de panoramique pour channelmasks peut maintenant être fixée par une table de fonction (second argument facultatif de partikkel), et les nouveaux opcodes de support partikkelget et partikkelset, pour atteindre et modifier les indices de masquage interne de partikkel.
  - follow2 a été retravaillé pour que les calculs au taux-i et au taux-k soient les mêmes.
  - pvscent a été corrigé car il retournait la moitié de la valeur correcte.
  - vbaplsinit peut créer plus d'une disposition de haut-parleurs utilisables par vbap/vbapg. Egalement des diagnostics bien meilleurs sur les dispositions incorrectes.

- Changements internes :

  - Changement du code pour une possible utilisation de bison 2.6.
  - Il est supposé que la version 1.0.19 ou une version ultérieure de libsndfile est disponible.
  - Si la partition est omise, une boucle d'attente quasi infinie est générée.

### Nouveautés dans la version 5.17 (mars 2012)

C'est principalement une distribution sans changement majeur mais avec de nombreuses corrections.

- Nouvel opcode :

  - opcode cell d'automate cellulaire.

- Opcodes et GENs modifiés :

  - active rapporte maintenant le nombre total d'instruments actifs ou alloués si son argument vaut zéro.
  - Les opcodes de socket TCP stsend et strecv ont été remodelés selon un schéma logique.
  - Le système DSSI accepte maintenant jusqu'à 9 canaux.
  - FLsavesnap fonctionne avec d'autres widgets pour lesquels imin > imax.

- Utilititaires :

  - csbeats est mieux documenté et il est compilé par défaut ; il propose également plus de durées de notes.
  - Quelques failles de sécurité dans les utilitaires ont été corrigées.

- Bogues corrigés :

  - L'opcode unirand au taux-a a été corrigé.
  - Correction des paramètres régionaux pour les constantes virgule flottante dans l'orchestre.
  - transegr a été corrigé.

- Changements système :

  - La partition peut maintenant durer plus longtemps (changement de la taille de variable temporelle).
  - Une partition vide donne une durée d'exécution très longue (de nombreuses années).
  - Le code Android est distribué.
  - Changement dans l'utilisation des fichiers tmp ; ils sont maintenant tous effacés à la fin de l'exécution (auparavant certains d'entre eux restaient) et la variable d'environnement TMPDIR est utilisée.
  - L'interaction entre les commentaires, les fins de ligne et la fin de fichier a été fixée.
  - Les nombres hexadécimaux sont maintenant autorisés dans l'orchestre.
  - Un orchestre vide ne provoque plus de plantage.
  - L'expansion de macro dans une chaîne a changé.
  - Lorsque qu'il y a un eof dans une macro de partition mal formée, la boucle infinie est évité.
  - Les diagnostiques de noms de macro avec arguments et de fuites de mémoire ont été corrigés.
  - Changement du préprocesseur : {{ }} à l'intérieur de "..." et de meilleurs diagnostiques.
  - L'installeur pour Windows a été corrigé afin de supprimer complètement $INSTDIR\bin de PATH durant la désinstallation : cela nettoie la variable d'environnement PATH lors d'une désinstallation sous Windows. Auparavant, il restait un "\bin" résiduel dans le PATH.
  - La classe CsoundAC de MusicModel est plus utilisable par les programmes C++.
  - ftcps manquait en tant que fonction.

- Changement internes :

  - Beaucoup ! Certains messages modérés, amélioration du code, etc.

### Nouveautés dans la version 5.16 (février 2012)

Le changement principal est que le nouveau parseur est maintenant employé par défaut. L'ancien parseur est toujours disponible en cas de difficultés, mais le nouveau parseur a été testé en profondeur depuis le début de l'année, et il a reçu une restructuration complète de l'expansion des macros. Une des conséquences est l'exécution plus rapide de la plupart des orchestres bien que leur analyse soit plus lente. Quelques optimisations sont implémentées sous la forme de réduction en constante dans des cas simples. Les numéros de ligne et les noms de fichier sont mieux tracés qu'auparavant.

Quelques fuites de mémoire ont été aussi corrigées.

- Nouveaux opcodes :

  - Opcodes adaptés de SuperCollider par Tito Latini: dust, dust2, gausstrig, gendy, gendyc et gendyx.
  - Un générateur de bruit fractal par Tito Latini: fractalnoise.
  - Opcodes pour accéder aux valeurs dans les tables par indexation directe, par John ffitch: ptable, ptablei, ptable3 et ptablew. Ces opcodes sont semblables respectivement à table, tablei, table3 et tablew, mais ils ne nécessitent pas des tables ayant une longueur en puissance de deux.

- Opcodes et GENs modifiés :

  - Il y avait un problème de borne d'intervalle dans l'opcode tab qui pouvait induire une référence hors-limites erronée.
  - GEN15 appelait en interne GEN13 et GEN14, en leur passant des valeurs d'amplitude non initialisées. Problème corrigé.
  - fmbell prend maintenant un argument facultatif pour contrôler la durée d'entretien.
  - Changement de base de pvs pour les conversion de tab vers table.
  - poscil est maintenant polymorphique, ce qui permet d'avoir des amplitudes et des fréquences de taux-k ou de taux-a.
  - Le comportement de p() et de i() a changé lorsque l'argument est de taux-k.
  - Le fonctionnement différé GEN49 est corrigé.
  - GEN23 offre maintenant un fonctionnement différé.

- Utilititaires :

  - Indicateur pour utiliser avec le nouveau parseur les fichiers en mémoire.

- Frontaux :

  - Un accès aux tables a été ajouté à csoundapi~ via de nouvelles méthodes get/set.

- Bogues corrigés et améliorations :

  - Un grand nombre dans le nouveau parseur en relation avec la précédence et le multicoeur.
  - De meilleurs diagnostiques lorsqu'un fichier ou un csd est manquant.
  - fichier csd : CsFileB et CsSampleB corrigés.
  - L'instruction de partition 'n' a été corrigée.
  - Un bogue dans diskin2 produisant une boucle infinie a été corrigé.
  - Un bogue dans hrtfmove causant un fondu-enchaîné bruiteux a été corrigé.
  - Des dépassement de tampon aléatoires ont été corrigés dans certains utilitaires.
  - Une erreur de segmentation dans midicN est maintenant évitée.
  - Bogue dans mp3in lorsque skip=0, corrigé.
  - L'instruction de partition 'r' a été corrigée en ce qui concerne les macros.
  - sndwarp pouvait engendrer une erreur de segmentation.

- Changements système :

  - Les commandes de préprocesseur #if #else #endin fonctionnent.
  - La profondeur d'#includes est maintenant limitée à la place d'une récursion infinie.
  - Si --nodisplays ou -d est utilisé, tous les affichages sont réellement supprimés ; cela corrige le bogue qui, lorsque l'on utilisait -d ou --nodisplays, permettait à la fonction csoundModuleInit de winFLTK.c de fixer des procédures de rappel pour l'affichage ; ce bogue était causé par l'appel d'applications python TK et de CsoundYield_FLTK.
  - Les fuites de mémoire dans mp3in et dans mp3len ont été corrigées.

- Changement internes :

  - Très, très, très nombreux ! Et le nouveau parseur ...

### Nouveautés dans la version 5.15 (décembre 2011)

- Nouveaux opcodes:

  - opcode ftab2tab.
  - opcode tab2pvs.
  - opcode pvs2tab.
  - opcode cpumeter, (pas vraiment nouveau mais désormais disponible sous OSX)
  - opcode minmax.
  - opcode ftresize (EXPERIMENTAL).
  - opcode ftresizei (EXPERIMENTAL).
  - opcode hrtfearly.
  - opcode hrtfreverb.

  Nouveau GEN et macros

  - Code permettant de différer GEN49 [NB semble ne pas fonctionner]

- Opcodes et GENS modifiés

  - socksend et sockrecv n'effectuent plus de test MTFU et fonctionnent sous Windows.
  - mpulse a été modifié de façon à ce que si l'évènement suivant a une date négative, sa valeur absolue est utilisée.
  - l'opcode serial fonctionne maintenant sous Windows comme sous Un*x.
  - out, out2, outq, outh, outo, outx et out32 sont maintenant identiques et prennent autant d'arguments que nchnls. Cela remplace le remappage d'opcodes actuel.
  - turnoff2 est maintenant polymorphe quant aux type S et k (il accepte les noms d'instrument).

- Bogues corrigés :

  - GEN42 a été corrigé.
  - jacko : une erreur de segmentation a été corrigée en supprimant l'option inutilisée de JackSessionID.
  - la fuite de mémoire de doppler a été corrigée.
  - transegr a été corrigé en mode release, lorsque la majeure partie de l'enveloppe est ignorée.
  - FLPack est maintenant conforme au manuel.
  - max_k est maintenant conforme au manuel.
  - hrtfreverb a été corrigé.
  - le code atsa fonctionne maintenant sous Windows dans la plupart des cas.
  - bogue de tabmorph corrigé.
  - le problème des opcodes définis par l'utilisateur n'ayant pas de sortie est réglé.
  - Différentes corrections aux commentaires de type /* ... */.

- Changements systèmes :

  - Différents questions de licence ont été réglées.
  - Loris ne fait plus partie de l'arbre de Csound.
  - Des fuites de mémoire ont été corrigées.
  - Si aucune partition n'est fournie, une partition factice avec une durée de 100 ans est créée.
  - Tout le traitement de partition se fait en mémoire sans fichier temporaire.
  - La mémoire des chaînes de caractère est maintenant extensible et sans limitation de taille.
  - #if #else #end sont maintenant dans le nouveau parseur.
  - Ajustements de la précision des fichier MIDI en sortie.
  - Sous OSX, passage de Coreaudio à AuHAL
  - Le multicoeur est maintenant sûr avec ZAK, les canaux d'E/S et la modification de tables.
  - Nouveau module coremidi.
  - Amélioration du clavier virtuel : 1) Menu déroulant pour choisir l'octave de base (celle qui commence avec la touche virtuelle correspondant à la lettre Z du clavier de l'ordinateur). La valeur par défaut est 5, ce qui préserve la compatibilité descendante. 2) Correspondance Maj-X ce qui ajoute deux octaves à la correspondance X pour un total de quatre octaves jouables depuis le clavier de l'ordinateur (en partant de l'octave de base choisie). 3) Correspondances Ctrl-N / Ctrl-Maj-N pour incrémenter / décrémenter la réglette du contrôleur N. 4) La roulette de la souris contrôle maintenant les réglettes.
  - type tsig pour les vecteurs.
  - tsigs et fsigs autorisés comme arguments des UDOs
  - API : version mineure augmentée.

- Changements internes :

  - Très, très, très nombreux !

### Nouveautés dans la version 5.14 (octobre 2011)

- Nouveaux opcodes :

  - opcode mp3len.
  - opcode qnan.
  - opcode qinf.
  - opcode exprandi.
  - opcode cauchyi.
  - opcode gaussi.
  - opcode cpumeter.
  - opcode linsegb.
  - opcode expsegb.
  - opcode transegb.
  - opcode expsegba.
  - opcode pvsgain.
  - opcode pvsbufread2.
  - opcodes serial.
  - opcodes lua.
  - opcode plustab.
  - opcode multtab.
  - opcode maxarray.
  - opcode minarray.
  - opcode sumarray.
  - opcode scalearray.

- Nouvelles fonctionnalités :

  - le processeur beats est renommé csbeats et distribué
  - l'utilité mkdb qui fournit un catalogue des greffons opcodes/bibliothèques
  - la bibliothèque ladspa construite dans le système par défaut
  - les macros sont maintenant déroulées en chaînes dans la partition
  - il y a une syntaxe de boucle until .. do .. od (seulement avec le nouveau parseur)
  - les signaux SIGPIPE sont ignorés plutôt que de provoquer la sortie de Csound
  - il est possible d'utiliser des vecteurs de valeurs de taux-k, appelés variables-t. Ils sont initialisés à une taille donnée et peuvent être lus avec la syntaxe simple []. L'affectation des composantes ne se fait qu'avec =. Il y a aussi quelques nouveaux opcodes qui fournissent des fonctionnalités plus larges.

- Bogues corrigés et améliorations :

  - la lecture de valeurs pour remplir des tables était défectueuse à cause de commentaires
  - l'erreur interne dans wii_data a été corrigée
  - pvsshift a été corrigé
  - jacko a été corrigé
  - petite correction dans gen23
  - wiimote corrigé
  - atsaadd corrigé
  - compress corrigé pour fonctionner avec 0dbfs
  - le compteur de position de pvsbufread a été corrigé
  - l'opcode tempo a été corrigé
  - la section CsFileB des fichiers .csd était défectueuse, c'est corrigé
  - les tables différées de gen01 pouvait avoir une taille erronée
  - vbap_zak rendu fonctionnel (!)
  - le problème de mémoire dans ATSsinoi est corrigé
  - différentes corrections dans cscore
  - différentes corrections dans partials et dans tradsyn
  - transegr pouvait planter dans certains cas
  - les opcodes loris proviennent de la dernière version
  - l'opcode date a une nouvelle origine sur certaines plates-formes pour éviter les dépassements
  - pvsblur fonctionne maintenant après un reinit
  - diskin, diskin2 et soundin peuvent lire maintenant jusqu'à 40 canaux
  - prints se comporte mieux avec les arrondis
  - fmpercfl a maintenant un vibrato qui fonctionne
  - atreson a maintenant un paramètre de gain au taux-k
  - l'opcode comb est consolidé pour pouvoir accepter le même argument en entrée et en sortie
  - précision accrue dans line et expon
  - OSCsend retrouve l'espace préalablement perdu
  - OSCsend peut envoyer une table sous forme d'objet binaire (blob) avec la balise T -- expérimental et non testé
  - lpf18 a maintenant un argument facultatif iskip
  - i() accepte aussi une valeur de taux-i. Dans ce cas, c'est un no-op (opcode neutre)
  - makecsd a été révisé et étendu pour avoir des options pour le traitement du MIDI et des partitions et les licences
  - lpanal revu pour supprimer les boques et des étrangetés
  - un problème de bruit dans alsa et un clic dans portaudio ont été corrigés
  - le pilote portaudio a été modifié pour être plus robuste lors du stop/exit

- Changements internes :

  - De nombreuses modifications dans le nouveau parseur pour le rendre opérationnel, mais à utiliser avec précaution
  - Le système multi-coeurs est distribué en mode expérimental et doit être utilisé avec beaucoup de précautions.

### Nouveautés dans la version 5.13 (janvier 2011)

- Nouveaux opcodes :

  - opcode median.
  - opcodefilevalid.
  - opcodes de traitement spectral pvstanal, pvswarp, temposcal et pvslock.
  - opcode mincer.
  - opcode de suite de fareylen.

- Nouvelles fonctionnalités :

  - Générateurs de nombres aléatoires réels utilisant /dev/random (seulement sur Linux).
  - macro INF ajoutée aux orchestres ; z se lit infini dans les partitions
  - init a été changé pour permettre plusieurs initialisations en une seule instruction
  - GEN pour supporter les suites de Farey
  - maxalloc, cpuprc et active acceptent maintenant les instruments nommés.
  - Si la normalisation dans les opcodes pow vaut 0, elle est traitée comme si elle valait 1
  - inch peut prendre jusqu'à 20 entrées et sorties.
  - pvscale, pvsvoc et pvsmix ont maintenant de très bons modes de préservation d'enveloppe spectrale (1 = cepstrum filtré, 2 = enveloppe véritable).
  - oscil1 pouvait être statique si la durée était trop longue ; maintenant il y a un incrément positive minimum.
  - GEN49 utilise maintenant les chemins de recherche.

- Bogues corrigés et améliorations :

  - Le compte des lignes a été fixé dans les orchestres, ainsi que le caractère \ dans les chaînes.
  - Les opcodes rapides tab sont protégés contre les plantages
  - % dans les impressions formatées pouvait planter
  - La double libération de mémoire dans fgen a été fixée
  - sndwarp est plus discret (il donnait trop de messages)
  - gen41 utilise des probabilités positives
  - adsynt a été retravaillé pour supprimer de nombreux bogues
  - L'erreur de phase deadsynt2 a été fixée
  - Le boque du nombre maximum de gens a été fixé
  - Meilleur test dans grain4
  - Meilleur test dans adsyn
  - Le module était erroné dans le nouveau parseur
  - atonex/tonex faisaient de fausses opérations
  - mp3in pouvait répéter le son en fin de fichier
  - l'opcode changed s'initialise à zéro
  - Un bogue sérieux a été corrigé dans tabmorpha
  - Un bogue sérieux a été supprimé de GEN49, ce qui fait qu'il n'y a plus de longs silences incorrects.
  - Opcode partikkel : un bogue de placement de grain dans un sous-échantillon lorsque l'on utilise la MF du taux de grains a été fixé

- Changements internes :

  - On trouve dans le nouveau parseur seulement les opérateurs @ et @@ pour arrondir l'entier suivant à une puissance de 2 ou à une puissance de 2 + 1
  - Le tri de la partition a été rendu beaucoup plus rapide
  - lineto a été amélioré
  - Les gens nommés sont autorisés
  - Les divers affichages comprennent le nom d'instrument si celui-ci est disponible
  - Une option de ligne de commande pour omettre le chargement d'une bibliothèque
  - Le nombre de canaux de sortie n'est plus contraint à égaler celui des canaux d'entrée
  - Plusieurs corrections au nouveau parseur
  - Les avertissements sont plus utilisés que les messages (ce qui permet de les désactiver)
  - csoundSetMessageCallback est réinitialisé si callback vaut null

### Nouveautés dans la version 5.12 (janvier 2010)

- Nouveaux opcodes :

  - transegr est une version de l'opcode transeg qui a une section de relâchement déclenchée par midi, par un opcode turnoff2 ou par un évènement de partition i dont le numéro d'instrument est négatif.
  - ftgenonce génère une table de fonction depuis la définition d'un instrument, sans duplication de données.
  - passign permet une initialisation rapide de variables de taux-i à partir de p-champs.
  - crossfm implémente la synthèse par modulation de fréquence croisée.
  - loopxseg est comme loopseg mais avec une enveloppe exponentielle.
  - looptseg est comme loopseg mais avec une enveloppe flexible comme transeg.

- Bogues corrigés et améliorations :

  - pvshift écrasait les données en mode double.
  - Le cas 3 de pan2 a été fixé.
  - clockon et clockoff fonctionnent à nouveau.
  - cross2 et interp pouvaient avoir des divisions par zéro.
  - Le numéro de ligne dans les messages d'erreur n'inclut plus de texte de .csoundrc.
  - p5gconnect a été modifié pour utiliser un processus léger séparé afin d'éviter les problèmes de temps mort.
  - transeg vérifie le nombre de ses arguments.
  - sfload se limitait à 10 soundfonts et n'était pas sécurisé. Il n'est plus limité.

- Changements Internes :

  - \" peut être utilisé comme caractère d'échapement dans les chaînes de l'orchestre.
  - Le nouveau parseur a été corrigé pour les arguments facultatifs.
  - Meilleure vérification de l'instruction f avec un nombre négatif.
  - Les soundfonts n'initialisent le tableau des hauteurs qu'une seule fois dans les opcodes de soundfont.
  - La collection usuelle de changements mineurs, de mises en forme et de commentaires.

### Nouveautés dans la version 5.11 (juin 2009)

- Nouveaux opcodes :

  - mp3in : permet la lecture des fichiers mp3 directement dans l'orchestre.
  - wiiconnect, wiidata, wiisend, wiirange opcodes par john ffitch pour recevoir et envoyer des données de ou vers un contrôleur wiimote.
  - Nouveaux opcodes pour recevoir des données directement d'un P5 Glove (gant de données) par john ffitch p5gdata
  - tabsum additionne des sections de ftables
  - MixerSetLevel_i une version du taux d'initialisation seulement de MixerSetLevel
  - doppler implémente une simulation d'effet Doppler.
  - filebit retourne la profondeur binaire d'un fichier.
  - Les nouveaux opcodes de Graphe de Fluence permettent l'utilisation de graphes de fluences (graphes de flots de données asynchrones) dans Csound.

- Nouvelles fonctionnalités :

  - Nouveau type de panning pour l'opcode pan2
  - Nouvelle balise <CsExScore> de partition csd.
  - Nouvelle option -Ma pour le module ALSA RT MIDI qui écoute tous les périphérique.
  - Il y a un GEN49 pour lire des fichiers mp3.
  - Un code d'arrondi de bin a été ajouté à pvscale
  - Le support de taille de table non puissance de 2 a été ajouté à ftload> et à ftsave
  - GEN23 a été totalement réécrit pour être plus consistant dans ce qui constitue un séparateur et des commentaires. (Il n'y a toujours pas de commentaires /* */)

- Bogues corrigés et améliorations :

  - Nouveaux exemples pour les opcodes pvs par by Joachim Heintz : pvsarp, pvscent, pvsbandp, pvsbandr, pvsbufread, pvsadsyn, pvsynth, pvsblur, pvscale, pvscross, pvsfilter, pvsfreeze, pvshift, pvsmaska, pvsmorph
  - L'utilisation de la numérotation automatique des ftables réutilise les numéros de table
  - seed avec un argument positif était défectueux
  - sprintf avec une chaîne vide imprimait des données erronées
  - mute fonctionne maintenant à la fois avec les instruments numérotés et nommés
  - Petites corrections dans diskin et dans tablexkt

- Changements Internes :

  - SConstruct construit maintenant des bibliothèques partagées complètement indépendantes pour les adaptateurs de Python, Lua et Java.
  - Le nouveau Parseur est presque fonctionnel
  - Le retraçage des graphiques a été modifié de façon à ne redessiner que ceux qui sont sélectionnés.
  - Alsa-TR est plus tolérant sur les taux d'échantillonnage approchés.
  - Il est possible d'avoir une partition générée par un programme externe plutôt que d'utiliser le format de partition standard en spécifiant <CScore bin="translater"> pour appeler le programme de traduction des données de la partition.
  - lpc_export corrigé.
  - La limite sur la longueur des noms de macro a été supprimée.
  - PMAX, le nombre d'arguments d'un évènement de partition a été réduit de 2 unités, et un système de dépassement a été introduit pour que les GENs puissent avoir un nombre arbitraire d'arguments.
  - La version de l'API a été incrémentée à 2.1.
  - Nouvelle fonction de l'API ldmemfile2withCB() qui est une version de ldmemfile() qui permet de spécifier un callback appelé exactement une seule fois pour traiter le tampon MEMFIL après son chargement.
  - csound->floatsize corrigé; valait zéro dans les versions précédentes.
  - GetChannelLock ajouté.

### Nouveautés dans la version 5.10 (décembre 2008)

- Nouvelles fonctionnalités :

  - Nouvelle option pour écouter tous les périphériques MIDI avec le module temps réel de portmidi. Pour activer l'écoute de tous les périphériques utiliser "-+rtmidi=portmidi -Ma".
  - Implémentation du dithering sur la sortie ; le dithering rectangulaire et triangulaire est disponible dans certains cas.
  - Le type 6 de GEN20 a maintenant une option pour fixer la variance.

- Bogues corrigés et améliorations :

  - La variable d'environnement Locale a été fixée à "C numeric" pour éviter les problèmes de point décimal (, vs .).
  - Bogue corrigé dans diskin
  - outo était défectueux pour le canal 6
  - Bogue corrigé dans pitchamdf
  - L'initialisation de zfilter2 a été corrigée
  - Bogue corrigé dans s32b14
  - D'autres bogues qui n'avaient pas été publiés ont été corrigés.

- Changements Internes :

  - La version majeure de l'API de Csound est incrémentée à 2, ceci affectant aussi csound.so. Ceci signifie que Csound 5.10 est incompatible avec les applications (frontaux, clients ou hôtes) construites pour Csound 5.08 et pour les versions antérieures qui utilisent la version 1.x de l'API. Il faudra reconstruire ces applications pour qu'elles fonctionnent avec les versions courante ou futures de Csound. Les frontaux pour Csound écrits dans des langages interprétés tels que Python ou Java pourront continuer à fonctionner sans modification. Il est également possible de garder une version antérieure de la bibliothèque de Csound et une version de l'API 2.0 sur la même machine afin que les applications basées sur l'ancienne ou sur la nouvelle version de Csound puissent coexister. Ces changements n'affectent en rien la compatibilité des orchestres et des partitions de Csound : tous les anciens documents devraient continuer à fonctionner comme par le passé.
  - Le temps est maintenant mesuré en interne en échantillons, ce qui résoud un ancien bogue concernant l'arrondi du temps au taux-k.
  - Plusieurs changements internes concernant les branchements. Certains opcodes sont significativement plus rapides.

### Nouveautés dans la version 5.09 (octobre 2008)

- Nouveaux opcodes :

  - Nouvel opcode vosim par Rasmus Ekman qui recrée la technique historique VOSIM (VOcal SIMulator).
  - Nouvel opcode dcblock2 par Victor Lazzarini.
  - Nouveau modèle de l'oscillateur de Chua : chuap par Michael Gogins.
  - Nouveaux opcodes d'Algèbre Linéaire par Michael Gogins. Algèbre linéaire standard sur vecteurs et matrices réels et complexes : arithmétique composante à composante, normes, transposition et conjugaison, produits scalaires, matrice inverse, décomposition LU, décomposition QR et décomposition QR en valeurs propres. Inclut la copie de vecteur de et vers des signaux de taux-a, des tables de fonction et des signaux-f.
  - Nouveaux opcodes ambisonic : bformdec1 et bformenc1. Ces opcodes rendent obsolètes les anciens bformdec et bformenc.
  - Nouveaux opcodes de contrôle de la partition par Victor Lazzarini : rewindscoreet setscorepos.

- Nouvelles fonctionnalités :

  - Les opcodes de la famille vbap (vbap4, vbap8, vbap16 et vbapz) acceptent maintenant des variables de taux-k pour tous leurs arguments en entrée.
  - Nouveau module d'E/S pulseaudio sous Linux.
  - Nouveau paramètre facultatif ienv pour générer des enveloppes pour les opcodes de soundfont : sfplay, sfplay3, sfplaym et sfplay3m.
  - Ajout d'un 'argument de non-normalisation' à la routine GEN nommée "tanh". (Voir Routines GEN Nommées)
  - Ajout d'une option d'ordonnanceur de priorité sur alsa.

- Bogues corrigés et améliorations :

  - Notation scientifique permise dans GEN23 (comme c'était le cas dans csound4 !).
  - Bogue fixé dans l'initialisation de FLTK. L'utilisation de FLTK devrait être plus stable.
  - L'erreur sur les commentaires /* */ dans l'orchestre a été corrigée.
  - poscil n'écrase plus la fréquence si la variable est partagée.
  - printk et printks vérifient que l'opcode est initialisé.
  - soundout et soundouts sont déclarés obsolètes en faveur de fout.
  - L'opcode space a été modifié pour accepter des tables dont la taille n'est pas une puissance de 2 (taille différée).
  - Un bogue de pvsmorph a été corrigé.

- Changements Internes :

  - Le nouveau parseur reconnaît #include et les macros sans argument.
  - Moins de forçage de type entre floats et doubles dans la version float.
  - Un support expérimental multicore a été inclut.
  - L'opcode buzz a été réécrit.
  - Plusieurs autres changements internes et quelques corrections de bogues.

### Nouveautés dans la version 5.08 (février 2008)

- Nouveaux opcodes :

  - imagecreate, imagesize, imagegetpixel, imagesetpixel, imagesave, imageload et imagefree: nouveaux opcodes de traitement d'image par Cesare Marilungo pour lire/écrire des images png depuis Csound.
  - pvsbandp et pvsbandr par John ffitch, qui réalisent le filtrage passe-bande et réjection de bande dans le domaine spectral sur un signal pvs.
  - Nouveaux opcodes HRTF par Brian Carty : hrtfmove, hrtfmove2 et hrtfstat.
  - Nouveau opcodes de distorsion non-linéaire : powershape, polynomial, chebyshevpoly, pdclip, pdhalf, pdhalfy, et syncphasor
  - Nouvel opcode de contrôle de transport jack : jacktransport

- Nouvelles fonctionnalités :

  - Ajout de l'option de ligne de commande --csd-line-nums= pour sélectionner la façon de rapporter la ligne d'une erreur.
  - Nouvel opérateur de "non-report" (!) du langage de partition qui empêche le report implicite des p-champs dans les instructions i.
  - Ajout de l'option de ligne de commande --syntax-check-only (mutuellement exclusive avec --i-only)
  - Balise <CsLicence> pour les CSDs. <CsLicense> est acceptée comme une alternative à <CsLicence>.

- Bogues corrigés et améliorations :

  - L'ordre des sorties pour hilbert a été changé. Ce changement brise la compatibilité avec les versions précédentes, mais il fixe l'opcode qui travaille maintenant comme c'est décrit dans la documentation.
  - Les messages sur le chargement de greffons d'opcode ont été modifiés pour pouvoir être supprimés avec une option de niveau de message.
  - Changements majeurs sur les rapport d'erreur de partition ; les numéros de ligne dans la chaîne des entrées sont rapportés précisement pour la plupart des erreurs.
  - pan2 a été corrigé afin d'être conforme à la documentation.
  - La balise <CsVersion> fonctionne à nouveau en conformité avec le manuel.
  - Les instructions de boucle { et } ont été fixées. Leur documentation ainsi que celles des opérateurs des expressions de partition ~, &, |, et # ont été ajoutées.
  - hilbert avait ses sorties permutées, c'est corrigé. L'exemple de manual a été mis à jour.

- Changements Internes :

  - Changement de la localisation pour gettext ; les traductions en français et en espagnol (Colombie) sont disponibles.
  - Changements internes dans partikkel, interpolation de la lecture de forme d'onde et du fenêtrage, ce qui permet une synthèse granulaire synchrone de hauteur plus précise. Exemples mis à jour pour partikkel.
  - pvscale : algorithme amélioré pour la SDFT, supprimant la variation d'amplitude.

### Nouveautés dans la version 5.07 (octobre 2007)

- Nouveaux opcodes :

  - pan2 : un opcode de spatialisation stéréo
  - cpsmidinn, pchmidinn, octmidinn : des convertisseurs de numéros de note MIDI
  - fluidSetInterpMethod : interpolation dans les SoundFonts de fluid
  - sflooper : une version SoundFont de flooper2
  - pvsbuffer et pvsbufread : mise en tampon/lecture de fsigs pour des changements de retards/échelle temporelle.

- Nouvelles fonctionnalités :

  - SDFT - la Transformée de Fourier Discrète à fenêtre Glissante -- intégrée aux opcodes pvsanal, etc si le recouvrement est inférieur à ksmps ou inférieur à 10. Certains opcodes pvsXXX sont étendus pour prendre des paramètres de taux-a dans cette situation.

  - Nouvelle option (-O null / --logfile=null) qui désactive tous les messages et toutes les impressions sur la console.

- Bogues corrigés et améliorations :

  - partikkel -- la synthèse par particule avait un bogue accidentel, corrigé.
  - La fermeture de l'entrée MIDI sur Windows(MM) échouait ; corrigé.
  - L'opcode fluidEngine prend maintenant comme paramètres facultatifs le nombre de canaux (compris entre 16 et 256) et le nombre de voix à jouer en polyphonie (compris entre 16 et 4096, la valeur par défaut étant 4096).
  - L'utilitaire atsa se comporte de manière plus sûre lorsqu'il reçoit du silence.
  - ATSaddnz : vérifications améliorées.
  - Les ambisonics (bformdec, bformenc) ont plus d'options pour le contrôle des opposés.
  - Le bogue dans turnoff2 est corrigé.
  - het_export : une vérification erronée plantait l'export.

- Changements Internes :

  - L'installeur sous Windows a été amélioré.
  - CsoundVST a été remplacé par CsoundAC, qui ne dépend pas des en-têtes du SDK de VST.
  - Moins de messages lors du démarrage sous Windows(MM).
  - Le type d'argument p (le taux-k vaut alors 1 par défaut) a été ajouté dans les types des paramètres d'entrée et de sortie des opcodes.

### Nouveautés dans la version 5.06 (juin 2007)

- Nouveaux opcodes granulaires : partikkel, partikkelsync et diskgrain.

- Nouvel opcode pour distribuer des évènements : scoreline.

- Plusieurs nouveaux opcodes en provenance de CsoundAV de Grabriel Maldonado : hvs1, hvs2, hvs3, vphaseseg, inrg, outrg, lposcila, lposcilsa, lposcilsa2, tabmorph, tabmorpha, tabmorphi, tabmorphak, trandom, vtable1k, slider8table, slider16table, slider32table, slider64table, slider8tablef, slider16tablef, slider32tablef, slider64tablef, sliderKawai et la version au taux-a de ctrl7.

- Egalement depuis CsoundAV, plusieurs nouveaux widgets FLTK : FLkeyIn, FLslidBnk2, FLvslidBnk, FLvslidBnk2, FLmouse, FLxyin, FLhvsBox, FLslidBnkSet, FLslidBnkSetk, FLslidBnk2Set, FLslidBnk2Setk, FLslidBnkGetHandle,

- De nouveaux opcodes pvs : pvsdiskin, pvsmorph,

- eqfil

- De nouvelles options de ligne de commande (--m-warnings) pour contrôler les messages

- csladspa : un kit de greffon CSD vers LADSPA.

- Et plusieurs corrections de bogues parmi lesquelles : version au taux-k de system ; problèmes de changement d'échelle de vrandh et de vrandi ; plantage occasionnel de turnoff ; bogue OS X ; ATScross et mod.

  Csound5GUI fonctionne maintenant correctement sur toutes les plates-formes et csoundapi~ (objet pd) a été mis à jour.

Précédent | Niveau supérieur | Suivant
Débuter avec Csound | Sommaire | Partie I. Vue d'ensemble