Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Point de vue : Le développement de Rave (deuxième partie)
(Article écrit par Daniel Jedlicka et extrait de Rear Window - août 2021)
|
|
Note : traduction par David Brunet.
Les vacances d'été ont commencé depuis six semaines - bien que cette année, le mot "vacances" sonne un peu de manière
ironique pour moi car je ne me souviens pas d'avoir été aussi occupé pendant un été. Dieu merci, ma
charge de travail actuelle n'est pas liée à mon emploi principal, donc aussi paradoxal que cela puisse paraître,
je prends beaucoup de plaisir à transpirer à grosses gouttes par cette chaleur. Oui oui oui, je suis enfin
de retour sur les rails, essayant de rattraper mon travail sur mes projets Amiga ! Et comme mon dernier
rapport d'activité
remonte à quatre mois, je pense qu'il est temps de faire une petite pause dans la programmation
et de mettre mes lecteurs au courant. Alors, quelles sont les dernières nouvelles de l'éditeur audio Rave ?
La majorité du travail que j'ai effectuée ces dernières semaines concernait les fonctions d'édition de
l'échantillon et l'amélioration de la gestion du presse-papiers. Ce que je considère comme ma principale
réalisation est que toutes les opérations d'édition sont maintenant asynchrones. Ainsi, lorsque vous
copiez, par exemple, un gros morceau de données audio dans le presse-papiers (ce qui peut prendre un
certain temps, surtout sur les machines d'entrée de gamme), vous pouvez continuer à travailler sur un
autre échantillon. Cela semble facile, mais dans un environnement multi-projets, rendre les choses asynchrones
implique bien plus que de simplement désengager le pointeur d'occupation de la fenêtre ! Comme chaque
projet s'exécute sur un processus DOS distinct, vous devez concevoir un système sous-jacent qui gère
le fonctionnement des composants du programme et synchronise l'accès aux ressources partagées. Rave
dispose d'un tel système depuis le premier jour, mais l'édition asynchrone a nécessité de le rendre
plus sophistiqué et plus robuste. Pensez à la construction d'une maison : vous voulez vraiment qu'elle
repose sur des fondations solides, sinon les choses vont commencer à s'effondrer au fur et à mesure que
la construction se poursuit !
Dans un programme où certaines fonctionnalités sont fournies par des composants s'exécutant sur des
processus distincts, la première chose à faire est de s'assurer qu'aucun processus "perdu" ne reste
en cours d'exécution lorsque le programme se termine. AmigaOS 4 rend cela plus facile grâce à certaines
nouvelles fonctionnalités de la bibliothèque DOS. L'un des nombreux ajouts apportés par le DOS d'AmigaOS 4
est que les processus peuvent être placés dans une relation parent-enfant. En d'autres termes : lorsque
vous démarrez un sous-processus qui sert le processus du programme principal, vous pouvez identifier
le sous-processus comme un "enfant" qui dépend des ressources de son "parent". Contrairement aux anciennes
versions d'AmigaOS, le processus parent ne peut pas s'arrêter alors que ses enfants sont toujours en cours.
Pour aider à synchroniser la fin des processus, le DOS d'AmigaOS 4 a introduit les "messages de mort",
par lesquels les processus enfants peuvent informer leur parent qu'ils sont sur le point de se terminer.
L'implémentation des messages de mort dans Rave représentait une étape vers la solidification du système
de gestion de projet du programme.
D'autres mesures visaient à mieux organiser l'activité du projet et à protéger l'accès aux ressources
partagées du programme. À cette fin, Rave utilise un mécanisme de passage de messages simple mais
efficace qui se résume à ce qui suit. Chaque fois qu'une interaction quelconque a lieu entre le programme
principal et un composant enfant (un module ou un greffon), celui qui initie cette interaction envoie
un message et attend une réponse confirmant que tout est correct : une opération a commencé, des
données ont été reçues, etc. Ce n'est qu'après avoir reçu le message de confirmation que le programme
principal ou le composant est autorisé à continuer. Cela permet de garder les choses en ligne et d'éviter
toutes sortes de conflits et de situations
de compétition potentielles. Un "effet secondaire" bienvenu est
que, en imposant un ordre sur ce que les différentes parties du programme font et quand elles le font,
les messages de confirmation aident également à arbitrer l'accès aux ressources partagées. Avec la protection
des mutex
(une autre nouvelle fonctionnalité apportée par AmigaOS 4), ils représentent une couche supplémentaire
de robustesse contribuant à une plus grande stabilité du programme.
J'ai été un peu technique ici pour vous donner une idée du genre de travail qui a été fait sous le capot,
et je vais maintenant me concentrer sur les choses qui sont, je l'espère, plus "visibles", ou du moins,
moins abstraites à décrire.
L'édition asynchrone a logiquement conduit à une autre amélioration : la gestion de plusieurs unités
de presse-papiers. Je dis logiquement car les opérations couper, copier ou coller ne seraient pas
vraiment asynchrones si le projet devait attendre qu'un autre projet ait fini d'utiliser le presse-papiers.
J'ai mentionné plus haut qu'une opération de presse-papiers impliquant une grande partie des données
peut prendre un certain temps sur l'Amiga (Vous avez déjà essayé de copier 20 minutes d'audio haute
définition ?...). Pendant ce temps, l'unité actuelle du presse-papiers est
occupée, mais Rave vous permet maintenant de basculer entre les unités 0 et 2 à la volée, ce qui permet
d'avoir jusqu'à trois opérations accédant au presse-papiers simultanément si nécessaire. L'unité par défaut
peut bien sûr être configurée dans les paramètres. Pendant l'exécution du programme, la sélection de
l'unité se fait à partir du menu principal, ou par le biais de raccourcis clavier qui - comme le montre
la capture d'écran ci-dessous - ne peuvent pas être plus mnémotechniques :
Sélection des unités du presse-papiers dans le menu
En parlant de cela, je devrais probablement expliquer - au risque de redevenir technique - comment
Rave stocke les données du presse-papiers. AmigaOS spécifie que les données du presse-papiers doivent
être conformes au format Interchange File Format
(IFF). Cependant, cette spécification n'est pas
assez bonne pour les applications audio modernes car la norme IFF originale ne prend en compte que les
données audio 8 bits. Contrairement à MorphOS, qui a dit adieu à cet héritage et a sagement adopté
le conteneur AIFF, beaucoup plus polyvalent, pour les séquences sonores, AmigaOS 4 n'a pas encore
osé aller aussi loin. Sans une spécification officielle mise à jour indiquant clairement comment mettre
des sons 16, 24 ou 32 bits dans le presse-papiers, l'implémentation réelle est plutôt laissée au
développeur. Ce qui n'est jamais une bonne chose, compte tenu de la créativité légendaire des programmeurs Amiga.
Par sécurité, j'ai utilisé la même solution hybride que Fredrik Wikstrom pour son éditeur AmiSoundEd :
les données audio 8 bits sont stockées dans l'ancien format IFF-8SVX pour rendre l'échange de presse-papiers
rétrocompatible, tandis que tout ce qui est supérieur à 8 bits est formaté en AIFF. Pour être honnête,
je préférerais suivre la voie de MorphOS et me débarrasser complètement du 8SVX (d'autant plus qu'il n'y
a quasiment aucun logiciel qui est compatible avec ce format). Mon code est parfaitement prêt pour le
changement, mais à moins qu'AmigaOS 4 n'adopte un nouveau standard, les choses resteront ainsi.
Parce qu'en utilisation réelle il est facile de perdre la trace de ce que vous avez mis dans le presse-papiers,
j'ai implémenté une simple fenêtre d'information qui affiche les propriétés des données stockées dans
chaque unité du presse-papiers. Les images ci-dessous montrent le contenu actuel des trois unités gérées :
Et comme vous trouverez sans doute utile d'avoir des informations similaires sur les projets sur
lesquels vous travaillez, j'ai ajouté une fenêtre qui affiche les propriétés détaillées du projet. La
fenêtre "Informations" sur le projet est accessible à partir du menu ainsi que de la barre d'outils du
programme. La fenêtre comprend également une section "Métadonnées", dans laquelle vous pouvez afficher
et modifier certaines chaînes de métadonnées courantes qui seront stockées avec le fichier audio :
La fenêtre Informations sur le projet
Bon, c'est à peu près tout ce que je peux partager à ce stade - je pense que je ferais mieux de me
remettre au travail maintenant. Je publierai une autre mise à jour dans quelques semaines, au cours
de laquelle j'espère revoir et mettre à jour le cadre des greffons de Rave (ou tout autre élément nécessitant
une attention particulière). Restez à l'écoute, affaire à suivre...
|