Les nouveautés de Csound 6.13.0
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.
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.
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. |
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.
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.
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.
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.
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.
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.
génère un tableau de taux-k à une dimension, de longueur 4. De même
crée un tableau carré 4x4 de taux-a.
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 :
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 :
- tout opcode de lecture/écriture de fichier audio est traité
de manière asynchrone dans un thread séparé.
- 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) :
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
- Nouvelles fonctions d'analyse et de compilation
- Nouvelle fonction pour démarrer Csound après la première compilation
- Nouveaux accès au bus logiciel sécurisés pour les threads
- Nouvelles fonctions de copie de table sécurisées pour les
threads
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
- l'usage de lecture/écriture atomique sur les canaux de
contrôle
- des verroux tournants pour les canaux audio et de chaîne
de caractères
- 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
-
Fonctions supprimées
-
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
-
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.
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.
Nouveautés dans la version 5.17 (mars 2012)
C'est principalement une distribution sans changement majeur mais avec de
nombreuses corrections.
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.
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)
Nouveautés dans la version 5.13 (janvier 2011)
Nouveautés dans la version 5.12 (janvier 2010)
Nouveautés dans la version 5.11 (juin 2009)
Nouveautés dans la version 5.10 (décembre 2008)
Nouveautés dans la version 5.09 (octobre 2008)
Nouveautés dans la version 5.08 (février 2008)
Nouveautés dans la version 5.07 (octobre 2007)
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.