Format David Whittaker *.dw

A partir de maintenant la course à l'armement est lancée.

Modérateurs : Papy.G, fneck, Carl

Répondre
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Format David Whittaker *.dw

Message par jasz »

jasz a écrit :Bien voilà le mod après quelques petites corrections mais je n'ai pas trouvé de solution pour résoudre le problème des leads (à la fin). Le son fait plutôt électro style vst :? Aussi avec un seul évènement de dispo par piste et un sample de 20 octets, la manœuvre est assez compliquée. Bah, je verrais plus tard. :)

Download
nicolho a écrit :Salut jasz, merci de nous proposer le résultat de ton boulot. Tu l'avais annoncé il y a quelques jours, et j'étais impatient de l'écouter, mais j'avoue que le résultat, bien que pas mal du tout, m'a quand même laissé perplexe... et pour en avoir le coeur net, je viens de passer un peu de temps sur une écoute comparative entre ton mod sur ProTracker pour Windows et l'original sous WinUAE (je précise que je suis musicien de formation, mais sans aucune expérience de l'Amiga et de l'assembleur 68000 :)). Quelques observations en vrac :

- Déjà, en ré-écoutant l'original, je constate qu'il est plus simple que je pensais, avec 4 pistes distinctes et mono (pas polyphoniques) : un "lead" mélodique (essentiellement à base de samples), une basse, une ligne d'accompagnement (souvent à l'octave de la basse) et la boite à rythme (basée uniquement sur 3 sonorité je crois) donc je ne vois pas bien ce qui empêcherait de le convertir intégralement en un MOD Protracker, même avec les samples longs de la fin.
Comme je n'ai constaté dans l'original aucune polyphonie sur la même piste (c'est à dire le même instrument qui jouerait plusieurs notes simultanément, comme des accords par exemple), pourrais-tu préciser ce que tu veux dire par "deux événements par piste" ?

- Tu nous avais dit avoir réussi à isoler les samples et je retrouve tout à fait celui du "marimba" qui joue la mélodie principale 8) , avec ses harmoniques caractéristiques et son "détimbrage" dans les graves, mais j'ai beau écouter, je n'en ai pas reconnu d'autre... Est-ce qu'éventuellement tu pourrais poster les samples "hors mix" et séparés ?

- J'ai bien conscience des diverses problématiques de conversion qui se posent pour obtenir un MOD proche de l'original. Si les samples vont sonner à peu près pareil (même avec une qualité moindre), les synthés intégrés (comme celui pour la basse, peut-être?) peuvent être plus difficile à régler pour "sonner" de la même manière. Et puis certains effets peuvent manquer (comme le vibrato appliqué au marimba du thème principal) mais c'est subtil et secondaire.

Par contre, conserver au moins les mêmes notes ne devrait poser aucun problème (celles-ci restent les mêmes, quel que soit l'instrument ou le tracker) et là, ça m'a sauté aux oreilles :) : la musique est parfois très différente, avec des erreurs d'interprétation plutôt grossières. Je parle d'erreurs et pas de différences, parce que ce sont justement une bonne partie des subtilités musicales (qui font aussi le sel du morceau) qui sont passées à la trappe :o : variations mélodiques du thème principal (simples mais efficaces), cycle raccourci à 3 mesures (au lieu des 4 habituelles), les différentes modulations.. et même quelques erreurs dans les arpèges du motif rapide qui ponctue le thème. Clairement, les notes n'ont pas été extraites et converties, mais plutôt plus ou moins reconstituée à l'oreille, on dirait, et pourquoi pas, après tout .
(et désolé pour le jargon musical :oops: enfin ça change un peu de celui des électroniciens/informaticiens. :wink:)

Enfin l'essentiel est là, rien de bien grave ou qui ne puisse être facilement corrigé, juste un peu dommage en l'état, et à part le sample principal récupéré, on ne peut pas vraiment parler de conversion de format, mais plutôt d'adaptation musicale, plutôt réussie même si il y a pas mal de différences.
jasz a écrit :On peut dire que ce format est pour le moins intéressant pour ceux qui aiment se casser la tête ^^.
Justement, comme tu t'es attaqué à ce code pour le moins obscur, ce serait en effet très intéressant que tu nous parles de la façon dont tu as procédé concrètement, que tu donnes des détails sur l'organisation du code pour le synthèse et les données (éventuellement les zones du binaires qui contiennent ces "données" musicales : pistes, séquences de notes et samples, qu'on puisse les extraire à notre tour).
Bref, ce serait certainement passionnant si tu nous faisais découvrir un peu les entrailles de cette compo mythique et les techniques utilisées par le légendaire David Whittaker (peut-être en ouvrant un sujet dédié, ou en publiant ça sur un blog ?).
Je libère le sujet "Signal MAP sur Oric Atmos" de la discussion commencée > ici < pour répondre (j'espère que c'est la bonne place pour continuer le fil) à nicolho (rappel ci-dessus)
Dernière modification par jasz le 14 févr. 2017 10:18, modifié 1 fois.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Format David Whittaker *.dw

Message par jasz »

nicolho a écrit :Clairement, les notes n'ont pas été extraites et converties, mais plutôt plus ou moins reconstituée à l'oreille, on dirait, et pourquoi pas, après tout .
En fait, il ne s'agit pas d'une conversion "à l'oreille" mais bien à partir du fichier original. Il est vrai qu'il y a quelques petites erreurs dans la retranscription mais tu vas comprendre la raison.

Le format .dw, bien nommé est un fichier exécutable exclusif Amiga (Systeme Paula). Ce format qualifié d'exotique est assez particulier dans sa façon d'interpréter la partition pour ensuite "jouer" le morceau. Un vrai casse tête loin des formats conventionnels connus sur cette machine.

Le programme gère 4 paramètres uniquement.
- L'adresse du sample
- La longueur du sample
- Sa fréquence
- Son volume
Le DMA se chargera ensuite d'interpréter le son selon ces derniers.

Ma conversion est une conversion manuelle et non automatisée. C'est à dire que j'ai exécute le programme pas à pas afin d'obtenir les variables et surtout de la période. Ainsi selon la table, j'ai pu déterminé la "note" et ensuite l'instrument grâce à sa position dans la mémoire.

Par exemple pour la première ligne musicale (le début) nous avons

Code : Tout sélectionner

1024a8 0010 0231 0030 -> dff0a0
101bfa 0441 0111 0040 -> dff0b0
0fe8a2 05b4 0109 0040 -> dff0c0
0ff410 0729 00bd 0040 -> dff0d0
La premier groupe correspond au sample eq2 (reconnaissable par son adresse mémoire $001024a8) joué à une fréquence de $0231 à un volume de $0030. Cette fréquence se rapproche de la note G1 selon la table ($023a protracker et $023f .dw).

Jusque là c'est assez simple à comprendre. Mais le format .dw gère deux évènements sur un même instrument et c'est là que le travail devient approximatif.
nicolho a écrit :pourrais-tu préciser ce que tu veux dire par "deux événements par piste" ?
C'est à dire que le programme peut à la fois gérer un vibrato et un vslide. Dans le cas du vibrato, la période change et forcement la hauteur peut se confondre avec une autre note ($021a pour G# par exemple) d'où la nécessité d'une correction auditive. Après c'est un choix entre ce qui est perceptible et ce qui ne l'est pas, entre un vibrato subtil ou un vslide mais protracker ne sait pas gèrer les deux simultanément.

C'est ainsi à partir de ces 4 paramètres que j'ai construit le module. :)
nicolho a écrit :Tu nous avais dit avoir réussi à isoler les samples et je retrouve tout à fait celui du "marimba" qui joue la mélodie principale 8) , avec ses harmoniques caractéristiques et son "détimbrage" dans les graves, mais j'ai beau écouter, je n'en ai pas reconnu d'autre...
Les samples sont au nombre de sept est situés à l'adresse $00001940 du fichier. Ils sont tous précédés d'un header qui contient la longueur de l'instrument sur 4 octets et un diviseur sur 2 octets. On peut établir la liste suivante
- marimba
- bd
- sn
- hh
- bass
- eq1
- eq2

Il est intéressant de noter que eq1 et eq2 sont des samples très courts (32 octets) et chose amusante le derniers est créé par le programme suivant

Code : Tout sélectionner

   move.w  $7,d1
1  move.w  $c0c0,(a0)+
   dbf d1, 1
   move.w  $7,d1
2  move.w  $3f3f,(a0)+
   dbf d1, 2
Je puis t'assurer qu'il s'agit bien des samples originaux ;)

Edit:
jasz a écrit : entre un vibrato subtil ou un vslide mais protracker ne sait gère pas les deux simultanément.
En fait si par le bias de la commande 6. Mais le traitement est plus sommaire. ;)
Dernière modification par jasz le 14 févr. 2017 18:46, modifié 2 fois.
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: Format David Whittaker *.dw

Message par nicolho »

Déja, merci d'avoir créé ce sujet et reproduit mon message pour y répondre.

Donc c'est uniquement des samples ? Enfin ça revient au même, et je n'étais pas loin : "marimba" pour le lead, les 3 sons de la boite à rythme ( bd/sn/hh pour grosse caisse/caisse claire/charley), et la basse. Pour eq1 et eq2, s'ils sont très courts, j'aurais tendance à penser à un des deux pour l'accompagnement continue du synthé. Et je me demande lequel correspond aux samples des notes longues de le fin ( que je n'entend absolument pas dans ton mod).
Est-ce qu'éventuellement, et comme je te l'avais vaguement suggéré précédemment, tu pourrais nous indiquer les offsets dans le fichier ".dw" , peut-être en précisant aussi le format (ou reproduire le contenu audio en hexa dans un fichier texte, ça irait aussi, par exemple pour les samples de 32 octets ?).

Comme j'avais déjà cherché le nom du circuit dédié au son dans l'Amiga et lu ce qu'en disait brièvement Wikipedia ( https://fr.wikipedia.org/wiki/Original_ ... pset#Paula), grâce à tes explications je comprends mieux le rôle prépondérant du DMA dans l'utilisation de celui-ci.
Si j'ai bien compris, pour récupérer la séquence des paramètres musicaux, tu as "intercepté" petit à petit tous ces appels DMA (adresse du sample en mémoire, longueur, fréquence, volume), et donc ce n'est pas si comme si tu avais directement trouvé un listing isolé et complet des notes et durées dans le binaires, je suppose.

Dans ce cas, il est possible qu'en compilant plus ou moins à la main cette quantité importantes de données, il y ait pu avoir quelques oublis, ou encore que certaines extrapolations incorrectes aient pu être faites à posteriori, du genre : "il doit y avoir 4 fois ce pattern, comme d'habitude", je ne sais pas mais ça se comprendrait très bien.
jasz a écrit :...c'est là que le travail devient approximatif car avec le vibrato, la période change et forcement la hauteur peut se confondre avec une autre note d'où la correction auditive...
Les différences musicales dont je parlais,notamment les oublis de modulation (dans le sens musical et classique du terme : https://fr.wikipedia.org/wiki/Modulation_(musique), très remarquables même sans être musicien) n'ont pas de rapport avec le vibrato, que j'avais d'ailleurs pris soin de mentionner comme un effet sonore facultatif, pas assimilé aux mélodies.
Mais ce que tu expliques m'étonne beaucoup : tu sembles dire que dans ces données (les 4 paramètres), il est parfois difficile de faire le distinguo entre variation de note (avec des intervalles d'un ou plusieurs demi-tons) et le vibrato ? :?

D'accord, le vibrato correspond à une variation (rapide) de fréquence (en principe inférieure au demi-ton) mais uniquement autour de la fréquence principale de la note. Du coup, d'habitude c'est généralement traité comme un effet (qui peut avoir ses propres paramètres par ailleurs. EDIT: ok, apparemment ça se fait en modulant avec une fréquence envoyée sur un autre canal) et je vois pas bien le rapport avec celui des quatre paramètres dont tu parlais et qui correspond forcément à la fréquence principale de la note, ni le risque de les confondre... :?:
(en revanche, je comprends mieux que "vitesse/amplitude vibrato" + "volume du sample" soient davantage un souci à gérer simultanément si ProTracker ne le gère pas, mais là on peut s'en passer)
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Format David Whittaker *.dw

Message par jasz »

nicolho a écrit :Est-ce qu'éventuellement, et comme je te l'avais vaguement suggéré précédemment, tu pourrais nous indiquer les offsets dans le fichier ".dw" , peut-être en précisant aussi le format (ou reproduire le contenu audio en hexa dans un fichier texte, ça irait aussi, par exemple pour les samples de 32 octets ?).
Les samples amiga sont au format raw (je crois) unsigned et tu pourras trouver leur position dans le programme avec le tableau ci-contre

Code : Tout sélectionner

adr prg   lenght sample
------------------------------
$00001946 $0b68  1-marimba
$000024b4 $0e52  2-bd
$0000330c $11b6  3-sn
$000044c8 $07d0  4-hh
$00004c9e $0882  5-bass
$00005526 $0020  6-eq1
$0000554c $0020  7-eq2
nicolho a écrit : Mais ce que tu expliques m'étonne beaucoup : tu sembles dire que dans ces données (les 4 paramètres), il est parfois difficile de faire le distinguo entre variation de note (avec des intervalles d'un ou plusieurs demi-tons) et le vibrato .
En effet, le vibrato est une commande traitée par le programme de la même manière que le portamento up/down et selon ma méthode c'est assez difficile à déterminer s'il s'agit de l'une ou de l'autre. Souviens toi de mon exemple cité plus haut:
0fe8a2 05b4 0109 0040 -> dff0c0
Dans cette ligne la marimba à une fréquence de $0109 qui correspond approximativement au G#2 or selon la table du programme elle devrait avoir comme période $010f. Il y a donc une différence que je ne comprends pas encore dans le traitement. Mais je cherche. Maintenant si j'applique un vibrato, je n'ai que 6 cycles pour le déterminer. Je veux bien essayer de refaire le traçage car je ne me souviens plus des fluctuations. Peut-être suis allé un peu vite :oops:
Dernière modification par jasz le 14 févr. 2017 23:17, modifié 1 fois.
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: Format David Whittaker *.dw

Message par nicolho »

Tu as déjà fait un gros boulot, vu la difficulté de la tâche et la limitation à 4 pistes pour Protracker, et c'est très sympa de donner ces détails. Merci pour les offsets des samples, ça m'a permis d'explorer plus facilement le fichier et jouer avec les samples, juste avec un éditeur hexadécimal et Audacity.

Alors le format des samples, c'est du PCM 8bit signé (je suppose que c'est toi qui leur a donné leurs noms ?). J'ai bien retrouvé leur longueur dans les entêtes qui précèdent chacun d'eux dans le fichier, à part pour le premier: tu as donné $b68, du coup ça empiète sur le sample suivant (il faudrait plutôt $b28, mais dans l'en-tête on a $4b26... :| :?:).
Tu ne l'avais pas précisé mais on pouvait s'en douter : les petits samples eq1 et eq2 sont des formes d'ondes basiques (eq1 = 2 cycles en dents de scie, et eq2 = 1 cycle d'onde carrée).
Pour la basse, j'ai vu que tu l'as bouclée sur son dernier cycle dans ton mod, au lieu de jouer la petite dizaine de cycles dont l'échantillon est composé (ça sonne un peu plus lisse, du coup).

Par contre, tu ne parlais que de samples, mais il n'y aurait-t-il pas de la synthèse, sans table d'onde ni DMA ? Je me suis amusé à remplacer par du silence tous les samples que tu as listé et au final, il reste le synthé d'accompagnement (avec sa note répétée), les arpèges rapides, les longues notes de la fin et toutes les mélodies autres que le marimba... mais on entend encore légèrement la mélodie normalement jouée par ce dernier, sous forme de très courtes attaques, discrètes mais présentes et à la bonne hauteur :o !

Tu l'avais évoqué, on dirait que même sans être présent dans le fichier, les petits samples de formes d'ondes semblent également générés dynamiquement, à un moment par le code. Sans désassemblage, j'ai seulement pu identifier le bout de code qui tu avais donné et remplacer les deux valeurs $3f et $c0 de l'onde carrée (équivalente à eq2) par du silence : mais ça ne retire aucune musique, il y a juste moins d'harmoniques dans le son du synthé... le mod joue possiblement un mix de 2 ondes, peut-être quelque chose comme eq1+eq2 ?
Je crois que c'est à peu près ce que tu as fait dans ta version. J'ai encore du mal avec l'éditeur, mais même quand je baisse à zéro le volume de tous tes samples dans ProTracker (y compris eq1 et eq2), j'ai toujours l'arpège rapide :shock: ! Pas compris... :? (d'ailleurs il sonne assez brut, comme sans enveloppe).

Donc, pour éviter de consommer une des 4 pistes de Paula juste pour ajouter un vibrato, Whittaker à préféré faire osciller rapidement les fréquences de la mélodie... je comprends mieux tes soucis pour extraire le bonne fréquence (principale) de chaque note. Peut-être pourrais-tu filtrer tout ce qui ne correspond pas à une note juste ?

Dernière question (après j'expérimenterai peut-être davantage de mon côté) : est-ce que as extrait la table des périodes (correspondance entre vitesse de lecture du sample et hauteur de note souhaitée) ou est-ce que tu l'as constituée toi-même après quelques repérages ?
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Format David Whittaker *.dw

Message par jasz »

nicolho a écrit :Alors le format des samples, c'est du PCM 8bit signé (je suppose que c'est toi qui leur a donné leurs noms ?).
Aussi, mais à l'époque (avant l'avènement des pc) on disait RAW signé ou non. Remarque le fait qu'un sample soit signé ou non n'a guère d'importance car on peut passer de l'un à l'autre avec ce tout petit code ;)

Code : Tout sélectionner

eor.b #$80,d0
nicolho a écrit :J'ai bien retrouvé leur longueur dans les entêtes qui précèdent chacun d'eux dans le fichier, à part pour le premier: tu as donné $b68, du coup ça empiète sur le sample suivant (il faudrait plutôt $b28, mais dans l'en-tête on a $4b26... :| :?:).
Sur mon fichier j'ai bien $b68. En fait lors du calcul de l'offset j'ai du me tromper :oops: . Je viens de le modifier sur le message précédent.
nicolho a écrit :Pour la basse, j'ai vu que tu l'as bouclée sur son dernier cycle dans ton mod, au lieu de jouer la petite dizaine de cycles dont l'échantillon est composé (ça sonne un peu plus lisse, du coup).
Pour être franc, je n'ai rien bouclé. C'est le programme lui même qui disposait de ces données de manière préenregistrées à l'adresse $000007b6. Je n'ai fait que reprendre les informations. ;)
nicolho a écrit :est-ce que as extrait la table des périodes (correspondance entre vitesse de lecture du sample et hauteur de note souhaitée) ou est-ce que tu l'as constituée toi-même après quelques repérages ?
Voilà la table des périodes du format .dw légèrement différente du format PT. Elle est située à l'adresse $000006dc

Code : Tout sélectionner

2000 1e30 1c80 1ae8 1968 17f8 16a0 1558
1428 1308 11f8 10f0 1000 0f18 0e40 0d74
0cb4 0bfc 0b50 0aac 0a14 0984 08fc 0878
0800 078c 0720 06ba 065a 05fe 05a8 0556
050a 04c2 047e 043c 0400 03c6 0390 035d
032d 02ff 02d4 02ab 0285 0261 023f 021e
0200 01e3 01c8 01ae 0196 017f 016a 0155
0142 0130 011f 010f 0100 00f1 00e4 00d7
00cb 00bf 00b5 00aa 00a1 0098 008f 0087
nicolho a écrit :J'ai encore du mal avec l'éditeur, mais même quand je baisse à zéro le volume de tous tes samples dans ProTracker (y compris eq1 et eq2), j'ai toujours l'arpège rapide :shock: ! Pas compris... :? (d'ailleurs il sonne assez brut, comme sans enveloppe).
C'est tout à fait normal car j'ai appliqué un vslide up (combiné à un vslide down) pour reproduire l'effet "haché" de l'arpège avec eq1. J'ai également appliqué sur le même sample un vslide up sur les sons longs (qui ressemblent davantage à un signal vst qu'un lead :? ). Quand tu minimises le volume du sample, tu ne définies en fait pas un niveau maximum. Il s'agit juste d'un volume par défaut si aucun paramètres n'est donné. Avec un vslide tu commences donc de ce niveau par défaut pour monter ou descendre.
Dernière modification par jasz le 15 févr. 2017 00:10, modifié 1 fois.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Format David Whittaker *.dw

Message par __sam__ »

Vous jouez comment le Whattaker ? Il y a un logiciel sous workbench ou PC pour les jouer ?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Format David Whittaker *.dw

Message par jasz »

__sam__ a écrit :Vous jouez comment le Whattaker ? Il y a un logiciel sous workbench ou PC pour les jouer ?
Sous workbench je crois que oui mais pas sur pc sauf en passant par l'émulateur amiga. Pour le pc, Il y avait deliplayer mais le site est down et xmplayer ne semble plus les accepter :(
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Format David Whittaker *.dw

Message par __sam__ »

Si j'ai bien compris la description, le format inique, pour chaque canal, quel sample jouer avec quel volume et quelle fréquence. S'il fait cela à des instants régulier (au pif toutes les VBL), alors il est très très voisin de ce que mon player fait lui-même sur thomson. :)

Comment interceptes tu le fonctionnement du DW ? Tu analyses le fichier à la mano ou tu a une version de UAE qui "log" toutes les écriture sur les registres de paula permettant de retracer le déroulement du morceau ?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: Format David Whittaker *.dw

Message par nicolho »

Ah ok jasz, je n'y avais pas pensé, les vslides "remettent le son" en ajoutant du volume à ma place :)
Tu as trouvé quand même pas mal de presets dans le fichier, bien joué et merci encore d'avoir précisé tout ça.
__sam__ a écrit :Vous jouez comment le Whattaker ? Il y a un logiciel sous workbench ou PC pour les jouer ?
Les softs qui le lisent sont listés en bas de cette page : http://www.exotica.org.uk/wiki/David_Wh ... t)#Players
Ces derniers jours, sur Windows j'ai utilisé sans souci Deliplayer 2.5 et aussi XMPlay 3.8 avec le plugin Delix.
Je crois que toutes les solutions sont basées sur EaglePlayer.
__sam__ a écrit :Comment interceptes tu le fonctionnement du DW ? Tu analyses le fichier à la mano ou tu a une version de UAE qui "log" toutes les écriture sur les registres de paula permettant de retracer le déroulement du morceau ?
jasz te répondra, mais "loguer" systématiquement les commandes envoyées au chip paraît logique pour glaner un maximum de paramètres et faciliter la conversion/reconstruction du mod. Finalement Paula fonctionne elle-même (?) comme une sorte de player (la manière dont on doit lui envoyer les paramètres est bien documentée) et idéalement, en simulant son fonctionnement, tu pourrais rejouer beaucoup de mods Amiga juste en "dumpant" préalablement tout ce qu'ils lui envoient...

Plutôt que de s'embêter avec l'émulateur complet, je me disais qu'on pourrait sortir ces données simplement en modifiant UADE, un simulateur partiel basé sur UAE et dédié aux mods (pour Linux, http://zakalwe.fi/uade/uade.html), ne serait-ce qu'en ajoutant quelques print pour les différents accès aux registres et DMA, mais pourquoi pas implémenter un export sur mesure.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Format David Whittaker *.dw

Message par jasz »

A propos de la table des fréquence, vous remarquerez qu'elle s'arrête à $0087 soit un G#3 les trois autre demi-tons ne semblent pas exister sur ce format. Chose aussi remarquable la table commence par A trois octaves en dessous soit un total de 5 octaves. Pour les sons longs de la fin c'est eq1 qui est joué deux octaves en dessous. Il est impossible de faire ça avec le format PT à moin de resampler eq1 et de rajouter ce sample à la liste. Je pense que c'est ce que je vais faire :)
__sam__ a écrit :Si j'ai bien compris la description, le format inique, pour chaque canal, quel sample jouer avec quel volume et quelle fréquence. S'il fait cela à des instants régulier (au pif toutes les VBL), alors il est très très voisin de ce que mon player fait lui-même sur thomson. :)
Sauf qu'il ne joue pas un échantillon à chaque vbl mais beaucoup plus. Sinon on peut dire les choses comme ça ;)
__sam__ a écrit :Comment interceptes tu le fonctionnement du DW ? Tu analyses le fichier à la mano (...) ?
Exactement! Je travaille à l'ancienne. Je désassemble le programme. Pour ensuite executer la routine qui interprète la partition (si on peut l'appeler ainsi) et tout les évènements DMA sont dérouté pour en "déduire" (j'insiste sur ce terme) la partition. Un simple ripper suffit pour cette opération ^^ Cette routine implantée en $0000019a est exécutée 8 fois par ligne (row) soit 8x64 par pattern. Ca fait beaucoup de données :?

nicolho a soulevé un point auquel je n'avais pas pensé. Je vais donc reprendre tout ceci pour mieux comprendre le fonctionnement complet car il y a encore des zones d'ombre qui restent relativement flous pour moi.

PS
nicolho a écrit :Ces derniers jours, sur Windows j'ai utilisé sans souci Deliplayer 2.5 et aussi XMPlay 3.8 avec le plugin Delix.
Mince, il fallait le plugin delix. Okay ^^.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Format David Whittaker *.dw

Message par __sam__ »

En fouillant mes archives, je suis tombé sur un MOD de estrayk qui ne contient que le 3 premiers patterns de la musique.

Je trouve que ca ne sonne pas pareil que ta version Jasz. Le son est différent. Dans ta version il y a une sorte de bourdonnement dans le fond. Est-ce qu'en examinant les traks ci-dessous pourquoi ca me donne cette impression, ou alors est-ce que ca vient des samples qui sont différents ?

Code : Tout sélectionner

Pattern00             Jasz                                             Elektrayk
|E-507...229|C-507...229|G-507...229|C-407...F04   |A#509...F04|A#509...101|...........|...........
|........229|........229|........229|........229   |...........|...........|...........|...........
|........227|........227|........227|........227   |...........|...........|...........|...........
|........227|........227|........227|........227   |...........|...........|...........|...........
|........D..|...........|...........|...........   |...........|...........|...........|...........
                                                   |...........|........D..|...........|...........

Pattern01             Jasz                                             Elektrayk
|G-407...A05|G-505...A09|G#501......|C-602......   |G#501......|C-603......|G-608...A05|G#506...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G-501......|C-604......   |G-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|D-501......|C-604......   |D-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-602......   |...........|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D-501......|C-604......   |D-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|...........|C-604......   |...........|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G#501......|C-602......   |G#501......|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G#501......|C-604......   |G#501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G-501......|C-603......   |G-501......|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|D-501......|C-604......   |D-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-602......   |...........|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D-501......|C-604......   |D-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|...........|C-604......   |...........|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D#601......|C-602......   |D#601......|C-603......|...08...A05|G#506...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D#601......|C-604......   |D#601......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D-601......|C-603......   |D-601......|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|G-501......|C-604......   |G-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-602......   |...........|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G-501......|C-604......   |G-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|...........|C-604......   |...........|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D#501......|C-602......   |D#501......|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D#501......|C-604......   |D#501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D-501......|C-603......   |D-501......|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|G-501......|C-604......   |G-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-602......   |...........|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G-501......|C-603......   |G-501......|C-604...217|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........217|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...217|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........217|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...217|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........217|........A05|........A09

Pattern02             Jasz                                             Elektrayk
|D#407...A05|D#505...A09|D#501......|C-602......   |D#501......|C-603......|D#608...A05|E-506...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D#501......|C-604......   |D#501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D#501......|C-603......   |D#501......|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|C-501......|C-604......   |C-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-602......   |...........|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|C-501......|C-604......   |C-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|...........|C-604......   |...........|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G#401......|C-602......   |A-401......|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G#401......|C-604......   |A-401......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G#401......|C-603......   |A-401......|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|G-401......|C-604......   |G-401......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-602......   |...........|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G-401......|C-604......   |G-401......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|...........|C-604......   |...........|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D#501......|C-602......   |D#501......|C-603......|...08...A05|E-506...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D#501......|C-604......   |D#501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D#501......|C-603......   |D#501......|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|D-501......|C-604......   |D-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-602......   |...........|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|D-501......|C-604......   |D-501......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|...........|C-604......   |...........|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G#401......|C-602......   |A-401......|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G#401......|C-604......   |A-401......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G#401......|C-603......   |A-401......|C-604...206|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........206|........A05|........A09
|...07...A05|...05...A09|G-401......|C-604......   |G-401......|C-605......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|...........|C-602......   |...........|C-603......|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|...........|........A05|........A09
|...07...A05|...05...A09|G-401......|C-603......   |G-401......|C-604...217|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........217|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...217|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........217|........A05|........A09
|...07...A05|...05...A09|...........|C-603......   |...........|C-604...217|...08...A05|...06...A09
|........A05|........A09|...........|...........   |...........|........217|........A05|........A09
Pièces jointes
speedball_by_estrayk.zip
(14.63 Kio) Téléchargé 178 fois
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Format David Whittaker *.dw

Message par jasz »

Oui, je connais ce module malheureusement inachevé...
Deux choses à son propos et cela concerne plus particulièrement les samples. En effet le son (9) du premier pattern a été samplé donc on ne peut pas réellement le comparer à une quadraphonie (ensemble de 4 notes jouées simultanément). Ensuite le square (le son carré 8 ) pour moi le 7 pèse plus de 8000 octets contre 32 pour l'original et sa période fait 128 octets. C'est la raison pour laquelle il a du harmoniser en l'augmentant d'un demi-ton. Sinon les autres sont à peu près identiques.

Maintenant pour en revenir au "bourdonnement", cela viens du fait que l'attaque (commande A) du son 7 n'est pas assez prononcée. Il suffit de remplacer le A09 par A0F ou baisser le volume général du sample. ;)

Après si ce dernier sonne mieux c'est que j'ai du me tromper quelque part dans l'interprétation des données :?

Voici la séquence que j'obtiens pour le pattern 0

Code : Tout sélectionner

1024a8 0010 014e 0010    1024a8 0010 01a5 0010    1024a8 0010 0118 0010    1024a8 0010 034a 0010
            014f                     01a6                     0119                     034b
            0178                     01cf                     0142                     0372
            019f 0018                01f6 0018                0169 0018                0399 0018
            01c6                     021d                     0190                     03c2
            01ed                     0244                     01b7                     03eb
            0214 0020                026b 0020                01de 0020                0412 0020
            023d                     0294                     0207                     0439
            0266                     02bd                     0230                     0462
            028f 0028                02e6 0028                0259 0028                048b 0028
            02b8                     030f                     0282                     04b2
            02df                     0336                     02a9                     04d9
            0306 0030                035d 0030                02d0 0030                0502 0030
            032d                     0384                     02f7                     052b
            0354                     03ab                     031e                     0552
            037d 0038                03d4 0038                0347 0038                0579 0038
            03a6                     03fd                     0370                     05a2
            03cf                     0426                     0399                     05cb
            03f8 0030                044f 0030                03c2 0030                05f2 0030
            041f                     0476                     03e9                     0619
            0446                     049d                     0410                     0642
            046d                     04c4                     0437                     066b
            0494                     04eb                     045e                     0692
            0494                     04eb                     045e                     0692
On peut voir qu'il s'agit du sample eq2 implanté en $1024a8-$0fcf5c de longueur $10x2 d'après les périodes (3ème paramètre) on peut déduire les notes E2 C2 G2 et C1 de la table protracker (ci-dessous). On constate ensuite une variation de la note (la fréquence augmente) vers le bas continue de ces dernières ce qui correspond à un portamento down. L'idée de détourner les paramètres adressés au blitter n'était finalement pas une si bonne idée car même si l'ensemble reste correct, il est basé sur des résultats parfois aléatoires (qui peuvent varier d'une note). Donc seul le décryptage des données partitionnées pourra donner plus de satisfaction ;)

ps. Table des fréquences protracker

Code : Tout sélectionner

0358 C1
0328 C#1
02fa D1
02d0 D#1
02a6 E1
0280 F1
025c F#1
023a G1
021a G#1
01fc A1
01e0 A#1
01c5 B1
01ac C2
0194 C#2
017d D2
0168 D#2
0153 E2
0140 F2
012e F#2
011d G2
010d G#2
00fe A2
00f0 A#2
00e2 B2
00d6 C3
00ca C#3
00be D3
00b4 D#3
00aa E3
00a0 F3
0097 F#3
008f G3
0087 G#3
007f A3
0078 A#3
0071 B3
Répondre