Obligement - L'Amiga au maximum

Mercredi 01 décembre 2021 - 14:24  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Twitter

Suivez-nous sur Twitter




Liste des jeux Amiga

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


Trucs et astuces

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


Glossaire

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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Sites de téléchargements
Associations
Pages Personnelles
Matériel
Réparateurs
Revendeurs
Presse et médias
Programmation
Logiciels
Jeux
Scène démo
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


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 :

Rave
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 :

Rave

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 :

Rave

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...


[Retour en haut] / [Retour aux articles]