[MZ-700] Space Rally

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Carl, Papy.G, fneck

Avatar de l’utilisateur
rendomizer
Messages : 346
Inscription : 17 juin 2016 21:00
Contact :

Re: [MZ-700] Space Rally

Message par rendomizer »

hlide a écrit : 16 juin 2021 20:40 Si tu lis le post précédent, il y a plusieurs étapes (et honnêtement, ce n'est pas ce qui donne le meilleur résultat). Le logiciel pcm2pwm se trouve facilement avec Google : "pcm2pwm".
j'arrive pas à utiliser le fichier pcm2pwm... Pourriez vous m'aider siouplais
le mot de passe c'est quoi ? quoi.
Daniel
Messages : 14050
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [MZ-700] Space Rally

Message par Daniel »

Tout est dans la documentation :

Code : Tout sélectionner

pcm2pwm 1.0 - a utility for 1-bit audio weirdos   // code by:  jeffalyanak@gmail.com
===========================================            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

pcm2pwm is a simply utility for converting 8-bit PCM wave audio into a delta PWM byte stream.
It's output is intended for use with any 1-bit audio devices which require a simple playback
routine or relatively high degree of compression.


Running the utility
-------------------
pcm2pwm is a simple tool. It will reject formats it cannot read, feed it only mono 8-bit wave
files. Audacity is a great, multi-platform tool for preparing your audio (see section below)
and will allow you to export in this format.

Basic use is simple just run the tool and hand it a filename with the -i option:

$ pcm2pwm -i input.wav

The pcm2pwm tool will output to standard output, so if you'd like to save the output
to a file, just use:

$ pcm2pwm -i input.wav > output.txt

Additionally, you may specify two values to act as the high and low crossovers, using the -H
and -L options. These values must be between 255 and 0. For example:

$ pcm2pwm -H 240 -L 15 -i input.wav

This would trigger the high and low states slightly earlier and might be useful if your input
wav file isn't very loud. Moving these two values too close or too far from your average
amplitude will ruin timbre of the resulting output sound. Experiment to see what works best.


MODES
-----

BINARY OUTPUT
As of version 1.0, the -b option can be used to provide a filename for direct binary output.

$ pcm2pwm -i input.wav -b output.bin <...>

HOUSTON TRACKER 2, INVERSE OUTPUT
As of version 0.8, you may also add the -h option before the input file to toggle an inverted output format
suitable for Houston Tracker 2.

$ pcm2pwm -h -i input.wav <...>

Remember that HT2 requires a <b>0x00</b> terminator after your sample data.

For best results, ensure that the source sample frequency is around 16kHz to match the tracker speed (which
is also depending on model & battery state).

DASM, TABBED OUTPUT
As of version 1.0, the -d option can be used to provide output suitable for use in DASM, which requires a
tab at the start of each .byte statement.

$ pcm2pwm -d -i input.wav <...>

Preparing your input audio
--------------------------
With the addition - in version 0.5 - of custom high and low crossovers, a wider range of
audio can be run through the pcm2pwm tool. However, the following advice may still return
the best results:

  The input audio must be compressed, limited or otherwise overdriven in order to keep 
  most of the samples below 3 and above 252 (basically, you want it to be clipping or
  nearly clipping as much as possible. The easiest way to do this is to use an audio
  program like audacity to heavily amplify your audio with the "allow clipping" box ticked.
  If you know what you're doing with audio then you already know the tricks for maximizing
  your output "loudness", do this to the extreme.


Using the output
----------------
Each output byte represents the number of samples since a zero-crossover. That is
to say, it's the number of samples since a state change. The output sample-rate will
match the input sample-rate, therefor a 11024Hz wav will produce byte data based on
the same reference rate. If your playback routine is faster or slower than this rate,
the pitch/speed of the resulting audio will be altered.


Playback routine
----------------
If you're even thinking of using this utility you probably already know what you want
to use it for but here's an extremely simple explanation of what you need your playback
routine to do:

-read byte
-wait that many samples length of time (your playback routine may be slightly faster or
slower given limitations of limited processors)
-toggle state
-read next byte
-etc

Pretty simple, eh!

Version History
----------------

0.2   - Basic functionality
0.5   - Added the ability to set high and low crossover values.
0.7   - pcm2pwm now checks the input file's header to ensure compatibility.
0.8   - Added the -h option for outputting in a Houston Tracker 2 format.
0.8.1 - Added the -h option for outputting in a Houston Tracker 2 format.
1.0   - Switched to POSIX-style options/arguments, added binary output modeto output
        directly to a binary file, added DASM output mode to append a `\t` to each
        line.
1.1   - Fixed HoustonTracker 2 output to be frequency factor rather than cycle counts
and fixed clamping/truncation. Big thanks to thomasj for these fixes!
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
rendomizer
Messages : 346
Inscription : 17 juin 2016 21:00
Contact :

Re: [MZ-700] Space Rally

Message par rendomizer »

l'exe ne veut pas marcher Daniel , I need HELP !
le mot de passe c'est quoi ? quoi.
Avatar de l’utilisateur
gleike
Messages : 943
Inscription : 16 oct. 2014 11:12
Localisation : Ludres (54710) Meurthe & Moselle

Re: [MZ-700] Space Rally

Message par gleike »

Fonctionne très bien chez moi en invite de commande.
Avatar de l’utilisateur
rendomizer
Messages : 346
Inscription : 17 juin 2016 21:00
Contact :

Re: [MZ-700] Space Rally

Message par rendomizer »

j'ai windows 10 ça vient peut-être de la ? :?
le mot de passe c'est quoi ? quoi.
Avatar de l’utilisateur
hlide
Messages : 2325
Inscription : 29 nov. 2017 10:23

Re: [MZ-700] Space Rally

Message par hlide »

Si tu te contentes de prendre un fichier wav sans le transformer adéquatement, tu auras un fichier binaire de 0 octets. Je t'invite à t'informer sur ce qu'est un échantillonnage, l'enveloppe, etc. puis ce qu'est un PCM, un PWM ou un PFM. Et comment on passe de l'un à l'autre. L'outil ne te servira à rien sans un minimum de connaissance pour pouvoir transformer ton WAV convenablement en quelque chose d'exploitable avec pcm2pwm. Et pour ma part, je me demande si je ne vais pas tenter de me créer un pcm2pwm sur la base des techniques décrites ici (non que je m'attende à quelque miracle...) : https://en.wikipedia.org/wiki/Pulse-width_modulation.

Aussi la différence entre PWM et PFM est résumé par cette image :
pwm_pf11.jpg
pwm_pf11.jpg (41.06 Kio) Consulté 822 fois
Daniel
Messages : 14050
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [MZ-700] Space Rally

Message par Daniel »

rendomizer a écrit : 18 juin 2021 14:20 l'exe ne veut pas marcher Daniel , I need HELP !
Tu n'expliques pas ce que tu as fait, ni le résultat obtenu. Sans aucune information il est impossible de te conseiller.
Donne au moins une copie d'écran avec la ligne de commande que tu as tapée et la réponse du programme.
Donne aussi une copie du fichier .wav en entrée.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
rendomizer
Messages : 346
Inscription : 17 juin 2016 21:00
Contact :

Re: [MZ-700] Space Rally

Message par rendomizer »

très très intéressant Mr hilde ! J'ai pour ma part coder un logiciel qui découpe un fichier wav, je m'interresse beaucoup au sujet de la reconstruction d'un signal wav en 1 bit
le mot de passe c'est quoi ? quoi.
Avatar de l’utilisateur
rendomizer
Messages : 346
Inscription : 17 juin 2016 21:00
Contact :

Re: [MZ-700] Space Rally

Message par rendomizer »

Voila, je vous ai fait un dessin pour mieux comprendre le but de ce que je cherche à faire.
je vous fais un dessin ?
je vous fais un dessin ?
2.jpg (168.39 Kio) Consulté 794 fois
le mot de passe c'est quoi ? quoi.
Avatar de l’utilisateur
hlide
Messages : 2325
Inscription : 29 nov. 2017 10:23

Re: [MZ-700] Space Rally

Message par hlide »

Ça ressemble plus à du PFM et ce n'est pas que fait PCM2PWM.
__sam__
Messages : 6065
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [MZ-700] Space Rally

Message par __sam__ »

Randomizer: de ce que tu veux faire c'est détecter le franchissement du 0 (je vais présumer dans les deux sens). C'est facile!

Déjà tu transforme le fichier wav en fichier binaire 0/1, avec 0 si l'échantillon est <=0 et 1 si l'échantillon est >0. Ensuite tu fais le xor de deux échantillons ainsi transformés à chaque pas. Ton fichier binaire ressemblera alors à ton croquis. A haque franchissement du 0, tu aura un bit à 1 en face (toutes les fréquences du fichier wav en entrée sont conservées, mais pas les amplitudes.)

En gros tu as x(t) en entrée. Tu le passe dans la fonction f(x) = (x>0 ? 1 : 0), et tu sors un y(t) = xor( f(x(t)), f(x(t-1)) ) ou xor(x,y) est le ou exclusif de x et de y.

Note: f(x) = (x + abs(x))/(2x) et g(x,y)=abs(x-y) conviennent si le langage n'a pas d'opérateur ternaire (x ? y : z) ou ne sait pas faire de xor binaire.
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
Avatar de l’utilisateur
rendomizer
Messages : 346
Inscription : 17 juin 2016 21:00
Contact :

Re: [MZ-700] Space Rally

Message par rendomizer »

comment reperer les phases creuses des phases hautes dans la ligne de temps car les hautes frequences suivent la courbe des basses frequences...
3.jpg
3.jpg (181.46 Kio) Consulté 760 fois
le mot de passe c'est quoi ? quoi.
__sam__
Messages : 6065
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [MZ-700] Space Rally

Message par __sam__ »

Regardes ton dessin du signal. Les hautes fréquences ont une plus petite amplitude. Les oscillations qu'elles engendrent de font pas changer le signe du signal. Le signal binaire est donc dans ce cas celui que tu as dessiné en dessous. En reprenant mes notation, ce signal est f(x(t)). Cela n'est pas le même que le dessin encore avant. Dans celui là la courbe binaire affichait le front de la dernière courbe binaire. Le front s'obtient par l'operation de "xor" entre deux valeurs consécutives du dernier signal binaire que tu as dessiné.
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
Avatar de l’utilisateur
rendomizer
Messages : 346
Inscription : 17 juin 2016 21:00
Contact :

Re: [MZ-700] Space Rally

Message par rendomizer »

merci sam j'ai copris je pense :D

je demare plitzplus un vieux logiciel mais on peut faire des executables !
le mot de passe c'est quoi ? quoi.
Avatar de l’utilisateur
hlide
Messages : 2325
Inscription : 29 nov. 2017 10:23

Re: [MZ-700] Space Rally

Message par hlide »

J'apprécie grandement l'intervention technique de __sam__, c'est ça de gagné par rapport à cette sortie du sujet.
Répondre