MSX Village forum

La Place des Développeurs Recherche programmeur

TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 03/11/2014 à 14h40

Reprise du message précédent

Ca serait cool d'avoir un player permettant de lire un fichier en streaming d'un lecteur CF/SD ou d'un Ram disc ^^
Perso je vise plutot une banque de sons courte qu'une musique de 4 minutes.

Un player LM avec une instruction sous basic :glass, le top pour une application et une démocratisation du genre :top

10 IF....... THEN player"LOL.PCM" ^^ Edité par TurboSEB Le 03/11/2014 à 15h14



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 03/11/2014 à 15h53
GDX :
De toutes façons, si c'est vraiment en streaming, je maintiens qu'on ne peut rien faire d'autre en même temps. Le fait que ça lit un octet en même temps pour la vidéo ne change pas grand-chose mais faire autre en même temps, ça serait une prouesse.


Je suis entièrement d'accord avec GDX.



Dès que la fréquence de sortie est supérieure à la fréquence de rafraîchissement du VDP (et ici on est bien au-delà), cela implique que la synchronisation est faite par le programme lui-même, sur base du temps existant entre deux instructions d'envoi d'un octet. Pour prendre un exemple, si la fréquence de sortie voulue est de 22kHz, cela signifie que le programme devra envoyer un octet toutes les 45 microsecondes (1/22000). A la fréquence du Z80 (3.579545 MHz), cela se traduit donc en 161 "T-states", soit à peu près 20 instructions en moyenne (en incluant le WAIT state). Le temps pour faire autre chose est donc nul.



En revanche, il est possible, si le module COVOX possède une petite RAM intégrée ET que celle-ci est accessible ET gérable en tâche de fond par le convertisseur DA (je ne connais pas la structure du COVOX), d'alimenter cette RAM à intervalle régulier pour obtenir le même effet, mais en se synchronisant cette fois-ci sur le VBLANK du VDP, ce qui laisse alors la possibilité de faire autre chose.






MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 03/11/2014 à 16h13
Je n'ai pas prévu de faire autre chose pendant la lecture sinon tester la touche echap pour arrêter la lecture.
Je n'ai pas prévu non plus d'ajouter une RAM (qu'il faudrait gérer en VHDL alors que le CPLD est déjà plein).

Non un simple lecteur PCM en streaming ce serait déjà une bonne avancé pour cette carte.
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 03/11/2014 à 16h15
GDX :
Ça n'est pas possible. Il faut faire un système comme dans le Music Module. Il faut une mémoire dédiée et une puce sonore (ou un contrôleur) capable de lire les données de sa mémoire indépendamment.




Oui et non.



Faudrait évaluer quelle sont les performances attendues par Fabf?

Si on part sur du 16Khz de replay en mono phonique, une page de mapper nous donne 1.024s de son. Si on utilise deux page de mapper une pour lire l'autre pour bufferiser...

Et si on est capable de lire au minimum 328 octets par VBL (à 50Hz, ou 274 si on est à 60Hz ) depuis le fichier. Alors pendant la lecture d'une page de 16K on est capable de remplir la seconde page de 16K.

Quand on aura fini de lire la première page de 16K on aura rempli la seconde avec la suite de la musique (du son), du coup on bascule la lecture sur la seconde page et on rempli la première avec la lecture du fichier.

Et ainsi de suite...



Si on fait l'ensemble avec notre bon vieux Z80, il va devoir passer son temps à gérer des interruptions lignes du VDP. En son temps Frank GERARDIN. avec fait un petit exemple avec le PCM du Turbo-R l'échantillon était avec la voix de Jipé, la phrase c'était quelque chose comme "ça va pas durée longtemps" :)



@Fabf:

Dans l'idéal faudrait au moins 32K de SRAM (ou deux SRAM de 32K) dans ta cartouche et que ton CPLD divise le 3.59MHz pour avoir une fréquence ligne de 15625Hz (les fameux 64us des lignes vidéo).

Il faut aussi que le CPLD embarque un mécanisme qui permette au MSX de charger la "bonne" partie de 16K de la SRAM. Ou alors prévoir un système de registre avec flag pour signaler au Z80 qu'il peut écrire les données, que le COVOX attend des donné, qu'il joue un son, que son buffer est plein et qu'il faut attendre pour continuer à charger, etc...)



Du coup le player devient plus simple dans le sens ou il charge la SRAM au début, puis lance la lecture, rempli tant qu'il y a un truc à jouer, puis soit ne remplie plus jusqu'à ce le covox ai lu toute les donnée, soit le player arrête la lecture parce que on ne veut plus jouer de son ou tout simplement qu'on change de morceau à jouer.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 03/11/2014 à 16h23
z80 :
Si on fait l'ensemble avec notre bon vieux Z80, il va devoir passer son temps à gérer des interruptions lignes du VDP


C'est vrai que j'avais oublié les interruptions ligne du VDP, mais elles sont uniquement disponibles sur MSX2.



Ceci dit, pas sur qu'elles puissent fournir une synchro intermédiaire au VBLANK, parce que, sauf erreur de ma part, le VDP "traite" l'équivalent de 313 lignes par frame complète. Or l'interruption de ligne n'est disponible que pour les 212 lignes réellement affichées. Il y aurait donc un trou dans la synchronisation ...



z80 :
Il faut aussi que le CPLD embarque un mécanisme qui permette au MSX de charger la "bonne" partie de 16K de la SRAM. Ou alors prévoir un système de registre avec flag pour signaler au Z80 qu'il peut écrire les données, que le COVOX attend des donné, qu'il joue un son, que son buffer est plein et qu'il faut attendre pour continuer à charger, etc...)


Cela revient à ce qui est dit depuis le début : il faudrait un contrôleur intégré, pour décharger le MSX.



Fabf :
Je n'ai pas prévu de faire autre chose pendant la lecture sinon tester la touche echap pour arrêter la lecture.

Je n'ai pas prévu non plus d'ajouter une RAM (qu'il faudrait gérer en VHDL alors que le CPLD est déjà plein).

Non un simple lecteur PCM en streaming ce serait déjà une bonne avancé pour cette carte.


Alors c'est du domaine du possible, pour autant que le temps de lecture d'un octet sur son support soit inférieur au temps de cadencement de l'écriture à la fréquence voulue. Edité par Metalion Le 03/11/2014 à 16h26


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 03/11/2014 à 17h45
GDX :
Je n'ai jamais essayé le lire un EVA mais Konamiman dit que le DOS2 patché Fat16 ou même Nextor ne supporte pas les fichiers de plus de 32Mo.




Avant, le driver F16 avait un bug qui limitait l'accès à la moitié seulement d'un fichier contenu dans une partition F16.

Le drivers à été fixé depuis le début de l'année et depuis, tout le contenu des disques F16 est pleinement exploitable.



@fabf: comment tu fais pour créer un EVA ou EV2 sans y implanter l'image?

C'est intéressant ça :)


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6284

Le 03/11/2014 à 20h09
Piqure de rappel !!!
Les fichiers EVA sont lu en streaming . 128k suffise. J'ai testé une vidéo de plus de 1 GB et ça passe.
Le PCM doit être intégralement chargé en memoire avant d'être lu !! 1mn=1mo sur 15khz

L'astuce pour écouter de l'audio (tant qu'il y a de la place sur la cf), c'est de transformer le PCM en EVA avec un fond noir !!! Audio en vidéo
J'ai longuement cherché une méthode pour lire l'EVA et le PCM sous basic, et il existerait une méthode correene mais je n'ai pas encore réussi. Je suis donc bloque aussi :( pour le moment) Edité par MSXlegend Le 03/11/2014 à 20h10


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 03/11/2014 à 20h39
Sinon il est possible d'utiliser un micro contrôleur en lieu et place du CPLD/FPGA pour jouer le pcm voir plus, décoder du MP3! Choisir un micro de préférence avec au moins 32Ko de RAM pour ne pas avoir à ajouter de la RAM externe.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 03/11/2014 à 20h49
igal :
@fabf: comment tu fais pour créer un EVA ou EV2 sans y implanter l'image?

C'est intéressant ça :)


Je l'ai jamais fait :oups

MSXlegend et Bibizen eux l'ont fait ;)



Je vais faire des tests en C, c'est le maximum que je puisse faire niveau langage.

J'espère que ce sera assez rapide :hum Edité par Fabf Le 04/11/2014 à 20h52
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 04/11/2014 à 01h06
igal :
GDX :
Je n'ai jamais essayé le lire un EVA mais Konamiman dit que le DOS2 patché Fat16 ou même Nextor ne supporte pas les fichiers de plus de 32Mo.




Avant, le driver F16 avait un bug qui limitait l'accès à la moitié seulement d'un fichier contenu dans une partition F16.

Le drivers à été fixé depuis le début de l'année et depuis, tout le contenu des disques F16 est pleinement exploitable.


Tu as peut-être raison. Ça doit être faisable.

Ça serait juste le calcul de la taille du fichier qui foire. Je ne sais pas si ça a cause problème pour la copie de ces gros fichiers avec le MSX ou pas mais avec un PC, ça ne doit pas causer de problème à la partition.
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 04/11/2014 à 11h13
Pour info, BlueMSX émule parfaitement le covox.
Il suffit d'aller dans l'onglet du pot imprimante et sélectionner le covox.

Pour revenir au player EV2, il faut savoir que si l'on diminue la fréquence d'échantillonnage audio, la vitesse de lecture vidéo sera plus rapide.

En fait, la somme additionnelle des données composant chaque frame semble servir de "temporisation".

Il y a fort à parier que si l'on supprime la vidéo, on pourra augmenter d'autant de données L'audio.

D'ailleurs, sur le même principe que les bribes vidéos, on pourrait créer des images ne pesant que quelques octets ce qui laisserait un maximum de la bande passante pour L'audio.

Je suis en panne de pc.

@fabf: essais la chose suivantes (si tu veux bien):
1) Tu créer une vidéo avec le tutoriel Eva 2 dont le lien est un peu plus haut.
2) Tu remplaces 15750hz par 22khz mono.
3) Tu prends tes centaines d'images.SC2 que tu places dans une cf msx.
4) tu bload"image.sc2 et tu BSAVE"image.sc2,?!?!

De la sorte, le générateur de ni kir ri aura bien les 12 images.sc2 à compiler chaque seconde.
Chaque image ne pensant que quelques octets, son player lira le tout bcp bcp bcp plus rapidement de sorte à ce que la bande audio deviennent cohérente.

Soyons optimiste ça va marcher :D


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 04/11/2014 à 12h11
igal :
@fabf: essais la chose suivantes (si tu veux bien):

1) Tu créer une vidéo avec le tutoriel Eva 2 dont le lien est un peu plus haut.

2) Tu remplaces 15750hz par 22khz mono.

3) Tu prends tes centaines d'images.SC2 que tu places dans une cf msx.

4) tu bload"image.sc2 et tu BSAVE"image.sc2,?!?!





C'est pas que je veux pas mais j'ai jamais fais de EVA car j'ai pas le matos pour les lire :oups



Par contre j'ai maintenant MSX C installé sur une CF pour la BEER ^^

C'est long à la compilation mais une fois le .COM généré, ça pédale du tonnerre.

Je vais pourvoir commencer à tester la lecture de fichiers PCM.
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 04/11/2014 à 13h33
Au cas où tu changes d'avis, il te faut juste un msx2 et un covox :)

Le Music module est aussi compatible.


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 04/11/2014 à 13h39
igal :
Au cas où tu changes d'avis, il te faut juste un msx2 et un covox :)



Le Music module est aussi compatible.




Non il faut une sunrise CF et j'en ai pas, idem pour le Music Module.
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 04/11/2014 à 23h02
Est ce que tu as un exemple de fichier à jouer avec la covox ?



Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 05/11/2014 à 07h51
Oui je te le passe ce soir.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie