Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/02/2011, à 22:22

temps

codage de caractères [résolu]

Bonjour,
je suis à la recherche d'informations concernant les codage de caractères. Par habitude je paramètre ubuntu en UTF-8, depuis 7.4 instable c'est celui proposé par défaut et depuis je l'ai gardé. Je me suis aperçu que mes scripts en bash contenant des accents rencontraient des problèmes avec firefox et que je devais copier/coller les caractères spéciaux dans firefox pour les faire fonctionner. Dernièrement j'ai entrepris d'écrire des fichiers audio directement en mode texte. Je voulais commencer sur des fichiers en RAW, mais je n'ai pas réussit à les ouvrir ou à les créer. J'ai donc essayé avec du wav PCM bien plus fourni en documentation et la encore, je n'ai pas réussi. J'ai donc ressorti vi qui a bien ouvert les fichiers, mais qui m'a aussi permis de m'apercevoir que je n'avais pas le codage de caractère qu'il fallait. Est-ce que quelqu'un peut me donner des renseignements sur les différents codages ou encore des liens qui pourraient m'instruire cordialement

Dernière modification par temps (Le 16/02/2011, à 22:14)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#2 Le 16/02/2011, à 16:45

ehmicky

Re : codage de caractères [résolu]

Alors en gros :

  - un charset est un tableau qui attribue à chaque caractère une valeur numérique. Les premiers charsets datent de la télégraphie il y a 100 ans, avec la morse puis le code Baudot (l'ancêtre de ASCII, avec déjà les caractères NUL, LF, CR, BEL et l'utilisation d'un SHIFT).

  - dans les années 60, avec l'essor de l'informatique, y'a la standardisation d'un charset, ISO-464, ayant une partie commune et une partie propre à chaque région. La version américaine de ce charset, connue sous le nom de ASCII. Utilisé par AT&T, devenu un standard encore fondamental aujourd'hui. Chaque caractère est codé sur 8 bits. Le 8ème bit avait une fonction de contrôle (bit de parité) qui n'est plus utilisé, du coup il est toujours 0 aujourd'hui. En gros, tu as donc un codage de 128 caractères allant de 00000000 (0x00) à 01111111 (0x7f).

  - Puis viennent une phase de charsets utilisant les 128 autres caractères disponibles (0x80 à 0xff) pour décrire des caractères propres aux langues régionales. En effet, ASCII est à la base prévu pour l'anglais américain, et il n'y a pas par exemple ç, à ou ù. Ces charsets utilisent donc les octets 0x80 à 0xff pour cela, ce qui permet en plus d'être rétro-compatible avec ASCII, puisqu'on ne touche pas aux 128 premiers caractères. Il y a d'abord l'ISO 8859, qui est décliné en 15 versions suivant la région ciblée. Par exemple, ISO-8859-1 est la déclinaison pour les langues européennes, connu aussi sous le nom de Latin1, ou ISO-8859-15, une version de Latin1 avec quelques caractères nordiques et français en plus, ainsi que le symbole €.

  - En parallèle, DOS puis Windows utilisent leur propre charset "étendu", en concurrence direct avec le standard ISO 8859. Il s'agit du même principe, on utilise les 128 autres caractères. C'est juste que c'est un autre charset, avec d'autres symboles, donc qui posera des problèmes d'interopérabilité pendant 15 ans (merci Microsoft). Ces charsets contiennent au début également des symboles permettent de dessiner des interfaces en ligne de commande, qui seront peu à peu remplacés avec l'arrivée de Windows et la disparition de DOS. Ces charsets sont, dans l'ordre, notamment : CP437, CP850, CP858, Windows-1252. Au final, Windows 1252 et assez proche de Latin1, et deviennent les deux charsets les plus utilisés dans les années 90.

  - dans les années 90, on commence à se rendre compte que c'est bien beau tout ça, on arrive à représenter toutes les langues occidentales, mais on a rien de standardisé pour le chinois, les langues indiennes, etc. Jusqu'ici ces pays sont obligés de développer des techniques et de bidouiller dans leur coin. Le problème, c'est : comment réduire au maximum le nombre d'octets requis pour écrire des caractères pour toutes les langues du monde entier, tout en restant rétro-compatible avec ASCII ? La réponse a été donnée par l'ISO 646 qui définit les tables Unicode. Les tables Unicode représentent l'ensemble des caractères du monde entier, en leur attribuant un nombre, le "codepoint". Mais il ne s'agit que d'une interface, pas d'une implémentation. En clair, le but n'est pas d'encoder les caractères directement avec ces codepoints, mais d'utiliser un encodage intermédiaire. Les deux encodages les plus populaires sont devenus UTF-8 et UTF-16 (UTF-32 n'est pas utilisé). UTF-8 est utilisé quasi-universellement aujourd'hui sous Linux ; UTF-16 est utilisé quasi-universellement aujourd'hui sous Mac OS X, Windows, mais aussi avec Java ou Qt.
UTF-8 est rétro-compatible ASCII, pas UTF-16.

Exemple (fictif) : j'ai deux caractères : a et .
Codepoints Unicode : a -> U+0061 (codepoint Unicode numéro 0x61)
                                    -> U+2341
Transcription UTF-8 : a -> U+0061 -> encodage UTF-8 -> 0x61
                                   -> U+2341 -> encodage UTF-8 -> 0xe2540a
Transcription UTF-16 : a-> U+0061 -> encodage UTF-16 -> 0x0061
                                     -> U+2341 -> encodage UTF-16 -> 0x2341

Ce qui est inscrit dans le fichier texte (que tu peux voir avec un éditeur hexa), c'est la valeur finale encodée. Comme tu le vois UTF-8 utilise des caractères de taille variable (1 à 4 octets). Tout caractères commençant par 0x00 à 0x7f aura une taille de 1 octet (ce qui permet d'être rétro-compatible ASCII), tout caractère commençant par 0xc2 à 0xcf aura une taille de 2 octets, etc.
UTF-16 quant à lui fait toujours (du moins pour les 99,99% caractères les plus courants, dont le chinois, langues indiennes, etc.) 2 octets et conserve en fait le codepoint Unicode sans rien faire de plus. Or, ASCII n'est donc pas compatible avec UTF-16, car par exemple 'a' en ASCII est 0x61, et en UTF-16 0x0061 (deux octets et non un).

Au final, ce qu'il y a à retenir :
   - au début ASCII, codé sur 8 bits, mais n'en utilisant que 7, avec 128 caractères, encore fondamental.
   - puis, Latin1 et Windows-1251, codé sur 8 bits, utilisant 256 caractères, pour les caractères européens, en disparition année après année.
   - Unicode, avec les encodages concurrents UTF-8 et UTF-16, pouvant coder tout caractère, mais avec UTF-8 ayant des caractères variables et étant rétro-compatible ASCII, et UTF-16 l'inverse.

Autres considérations :
   - IBM a une "gamme maison" de charsets concurrents de l'ASCII, puis de Latin1, puis d'UTF-8, qui s'appelle EDBDIC. Tout le monde les critique : pas interopérable, codage bizarre, mais bon c'est utilisé que sur les mainframes IBM.
  - faire attention à l'endianness si tu t'attaques à un fichier bit par bit : renseigne-toi dessus. Fait gaffe aussi à l'alignement (padding) de l'architecture.

Si tu veux, je me suis fait une documentation personnelle sur le sujet, si ça t'intéresse. Par exemple, synthèse des principaux charsets, hors Unicode (le forum ne permet pas l'affichage de tous les caractères CP850, etc.) :

ESPACE    ==>      #Indique qu'il n'y a aucun caractère assigné. L'espace
                                  #lui-même est nommé "SPC"
ASCII, FORME           #Pour savoir la forme ^LETTRE d'un control character en
^LETTRE ==>             #ASCII, voir la lettre quatre rangée dessous


              +-----------------------------------------------------------------
ASCII         | 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F 
(DONT +---+---+-----------------------------------------------------------------
UNI-  | 0 | 0 | NUL SOH STX ETX EOT ENQ ACK BEL BS  HT  LF  VT  FF  CR  SO  SI
CODE) |   |   |
==>   | 16| 1 | DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM  SUB ESC FS  GS  RS  US
      |   |   | 
      | 32| 2 | SPC !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /
      |   |   | 
      | 48| 3 | 0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?
      |   |   | 
      | 64| 4 | @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O
      |   |   | 
      | 80| 5 | P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _
      |   |   | 
      | 96| 6 | `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
      |   |   | 
      |112| 7 | p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~   DEL
      +---+---+-----------------------------------------------------------------
                
ASCII COMMUN ==>        #Tous les charsets suivants partagent l'ASCII pour leurs
                        #128 premiers caractères :

              +-----------------------------------------------------------------
LATIN-1       | 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F 
(DONT +---+---+-----------------------------------------------------------------
UNI-  |128| 8 | PAD HOP BPH NBH IND NEL SSA ESA HTS HTJ VTS PLD PLU RI  SS2 SS3
CODE) |   |   | 
==>   |144| 9 | DCS PU1 PU2 STS CCH MW  SPA EPA SOS SGC SCI CSI ST  OSC PM  APC
      +---+---+-----------------------------------------------------------------


              +-----------------------------------------------------------------
WINDOWS-      | 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F 
1251  +---+---+-----------------------------------------------------------------
==>   |128| 8 | €       ‚   ƒ   „   …   †   ‡   ˆ   ‰   Š   ‹   Œ       Ž   
      |   |   | 
      |144| 9 |     '   '   "   "   •   –   —   ˜   ™   š   ›   œ       ž   Ÿ
      +---+---+-----------------------------------------------------------------

                
              +-----------------------------------------------------------------
LATIN-1 ET    | 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F 
WIN-  +---+---+-----------------------------------------------------------------
DOWS  |160| A | NBS ¡   ¢   £   ¤   ¥   ¦   §   ¨   ©   ª   «   ¬   -   ®   ¯
1251  |   |   | 
(DONT |176| B | °   ±   ²   ³   ´   µ   ¶   ·   ¸   ¹   º   »   ¼   ½   ¾   ¿
UNI-  |   |   | 
CODE) |192| C | À   Á   Â   Ã   Ä   Å   Æ   Ç   È   É   Ê   Ë   Ì   Í   Î   Ï
==>   |   |   | 
      |208| D | Ð   Ñ   Ò   Ó   Ô   Õ   Ö   ×   Ø   Ù   Ú   Û   Ü   Ý   Þ   ß
      |   |   | 
      |224| E | à   á   â   ã   ä   å   æ   ç   è   é   ê   ë   ì   í   î   ï
      |   |   | 
      |240| F | ð   ñ   ò   ó   ô   õ   ö   ÷   ø   ù   ú   û   ü   ý   þ   ÿ
      +---+---+-----------------------------------------------------------------


              +-----------------------------------------------------------------
CP437 ET      | 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F 
CP850 +---+---+-----------------------------------------------------------------
==>   | 0 | 0 | NUL SOH STX ETX EOT ENQ ACK BEL BS  HT  LF  VT  FF  CR  SO  SI
      |   |   |     ☺   ☻   ♥   ♦   ♣   ♠   ●   ◘   ◦   ◙   ♂   ♀   ♪   ♬   ☼
      |   |   | 
      | 16| 1 | DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM  SUB ESC FS  GS  RS  US
      |   |   | ►   ◄   ↕   ‼   ¶   §   ▁   ↨   ↑   ↓   →   ←   ⌙   ↔   ▲   ▼
      |   |   | 
      |112| 7 |                                                             DEL
      |   |   |                                                             ⌂
      +---+---+-----------------------------------------------------------------


              +-----------------------------------------------------------------
CP437 ==>     | 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F 
      +---+---+-----------------------------------------------------------------
      |128| 8 | Ç   ü   é   â   ä   à   å   ç   ê   ë   è   ï   î   ì   Ä   Å
      |   |   | 
      |144| 9 | É   æ   Æ   ô   ö   ò   û   ú   ÿ   Ö   Ü   ¢   £   ¥   ₧   ƒ
      |   |   | 
      |160| A | á   í   ó   ú   ñ   Ñ   ª   º   ¿   ⌐   ¬   ½   ¼   ¡   «   »
      |   |   | 
      |176| B |                                              
      |   |   | 
      |192| C |                                              
      |   |   | 
      |208| D |                                     ▆         
      |   |   | 
      |224| E | α   ß   Γ   π   Σ   σ   µ   τ   Φ   Θ   Ω   δ   ∞   φ   ε   ∩
      |   |   | 
      |240| F | ≡   ±               ÷      °      ·      ⁿ   ²      NBS
      +---+---+-----------------------------------------------------------------


              +-----------------------------------------------------------------
CP850 ==>     | 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F 
      +---+---+-----------------------------------------------------------------
      |128| 8 | Ç   ü   é   â   ä   à   å   ç   ê   ë   è   ï   î   ì   Ä   Å
      |   |   | 
      |144| 9 | É   æ   Æ   ô   ö   ò   û   ú   ÿ   Ö   Ü   ø   £   Ø   ×   ƒ
      |   |   | 
      |160| A | á   í   ó   ú   ñ   Ñ   ª   º   ¿   ®   ¬   ½   ¼   ¡   «   »
      |   |   | 
      |176| B |          ◊      Á   Â   À   ©               ¢   ¥   
      |   |   | 
      |192| C |                   ã   Ã                        ¤
      |   |   | 
      |208| D | ð   Ð   Ê   Ë   È   ı   Í   Î   Ï            ▆   ¦   Ì   
      |   |   | 
      |224| E | Ó   ß   Ô   Ò   õ   Õ   µ   þ   Þ   Ú   Û   Ù   ý   Ý   ¯   ´
      |   |   | 
      |240| F |     ±   ‗   ¾   ¶   §   ÷   ¸   °   ¨   ·   ¹   ³   ²      NBS 
      +---+---+-----------------------------------------------------------------

CP858 ==>               #Comme CP850, mais a un symbole € en D5

J'ai aussi des choses sur des moyens mémotechniques que j'ai élaboré pour convertir des codepoints Unicode en UTF-8 et inversement, des trucs sur l'histoire de l'encodage, sur l'utilisation en cryptographie, etc.

Edit : Sinon Vim te permet de sélectionner l'encodage que tu veux (et en théorie le détecte lui-même à l'ouverture).
Edit2 : Attention, aussi à comprendre que certains outils sont compatibles UTF-8 parce qu'ils utilisent une librarie ou un shell (Bash, glibc, libstdc++, etc.) qui est compatible UTF-8 et propose de manière explicite ou non des outils pour (cf wchar_t en C et C++ implémenté par glibc et ibstdc+++). D'autres outils n'ont pas besoin de travailler caractère par caractère, mais seulement octet par octet, par exemple cat (et la plupart des coreutils), qui se fiche donc de l'encodage utilisé, et qui laisse au terminal (shell interactif, par exemple Bash) le soin d'afficher correctement ce qu'il (re)produit.

Dernière modification par ehmicky (Le 16/02/2011, à 17:19)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#3 Le 16/02/2011, à 21:50

temps

Re : codage de caractères [résolu]

Merci pour ces précieux renseignement. C'est grace à vi que j'ai compris que je n'avais pas le bon codage. j'ai installé ce que j'ai trouvé sur ascii dans synaptic mais edit ne me propose toujours pas ascii. Je vais relire le poste plus lentement de manière à comprendre les fonctionnement. Je reviendrai poster plus tard.


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#4 Le 16/02/2011, à 22:13

temps

Re : codage de caractères [résolu]

Ok voilou la solution.
en gratant dans synaptic avec les informations données j'ai trouvé hexedit qui m'a permis d'ouvrir un fichier wav je le met en dessous. Je n'ai plus qu'à trouver un fichier RAW et faire la même chose, car je veux travailler sur des fichiers RAW placés en mode tampon pendant la lecture. Le fichier son sera un bash qui ecrit des fichier RAW en zone tampon. Ceci me permettra d'avoir de la reconnaissance vocale ultra léger.

00000000   52 49 46 46  A4 84 00 00  57 41 56 45  66 6D 74 20  RIFF....WAVEfmt
00000010   10 00 00 00  01 00 01 00  44 AC 00 00  88 58 01 00  ........D....X..
00000020   02 00 10 00  64 61 74 61  80 84 00 00  91 F6 ED F6  ....data........
00000030   8C F7 33 F7  8A F7 9C F7  66 F7 2B F7  02 F9 AA F9  ..3.....f.+.....
00000040   A3 FC 54 FA  D4 F9 1F F6  D6 F3 9B F4  D1 F4 A0 F8  ..T.............
00000050   C5 FA E3 FB  DC FA A8 F6  96 F2 9B F1  AA F0 1B F4  ................
00000060   5C F8 06 F9  FF FA 9E F8  FD F5 78 F4  1E F3 E0 F4  \.........x.....
00000070   EF F5 6B F7  ED F9 C7 F9  A8 F9 19 FA  02 FA BF F9  ..k.............
00000080   FA F8 E4 F8  07 F9 63 F9  A6 F9 03 FA  8B FA F6 F9  ......c.........
00000090   E2 F9 B5 F8  91 F9 2C F8  3D F7 86 F6  DD F4 62 F4  ......,.=.....b.
000000A0   03 F4 2F F5  1F F6 79 F6  EA F7 21 F5  FF F2 D6 F0  ../...y...!.....command, press F1 for help
000000B0   9E EE C3 EF  6F F1 31 F4  2A F6 9D F6  03 F7 E3 F3  ....o.1.*.......  (press any key)
000000C0   CF F2 74 F2  24 F2 A9 F3  D3 F4 85 F6  D9 F8 15 FB  ..t.$...........
000000D0   93 FB C5 FA  68 FA B1 F7  76 F4 BD F4  D1 F4 BC F7  ....h...v.......
000000E0   2B FB 79 FC  47 FF A0 FB  55 F9 E7 F5  4D F3 F1 F2  +.y.G...U...M...
000000F0   5A F3 00 F5  2D F8 72 F8  03 FA A6 F9  39 F8 1E F6  Z...-.r.....9...
00000100   59 F3 03 F2  DE F1 AA F3  82 F4 75 F7  64 F9 27 F9  Y.........u.d.'.
00000110   C0 F9 10 F9  72 F8 49 F7  6D F6 F4 F5  D2 F6 F3 F8  ....r.I.m.......
00000120   8A FA 99 FC  22 FE C1 FD  76 FD 59 FB  EF F8 50 F8  ...."...v.Y...P.
00000130   FF F7 FE FA  92 FE F9 FE  E4 00 B6 FE  D0 FC CF FB  ................
00000140   FD FA B1 FC  EC FC 27 FE  ED FF EE 00  A9 01 37 03  ......'.......7.
00000150   03 05 58 03  A3 03 48 01  D1 00 BD 01  1A 02 6C 07  ..X...H.......l.
00000160   BB 0A 0E 0D  48 0D 7A 09  B1 07 27 04  05 02 1B 04  ....H.z...'.....
---  son_s.wav       --0x0/0x84AC----------------------------------------------






---  son_s.wav       --0x0/0x84AC----------------------------------------------

Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#5 Le 16/02/2011, à 23:51

ehmicky

Re : codage de caractères [résolu]

Ok visiblement ton problème ne concernait pas l'encodage de caractère, tu voulais en fait éditer un fichier en hexa ?
Sinon, tu as hexer qui a des commandes "Vim-like".
Et juste par curiosité, pourquoi veux-tu modifier un fichier son avec un éditeur hexa ? Il s'agit des samples RAW ou des headers ?


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#6 Le 17/02/2011, à 00:19

temps

Re : codage de caractères [résolu]

Merci pour l'intérêt. Je pense que ce n'est pas un problème d'encodage que je rencontrais mais bien un problème de codage.
En fait je cherche à travailler sur un fichier son temporaire. Après avoir regardé les caractéristiques des différents formats, le format RAW est celui qui correspond à mes besoins. A savoir pas d'entête et la possibilité d'écrire directement en ASCII.

Interleaved    [L] [R] [L] [R] [L] [R] ...

En d'autres mots, il faut que je vois comment est l'intérieur d'un fichier RAW, puis ensuite que je crée un bash qui puisse ecrire des fichier RAW codé en ASCII
l'objectif étant de développer la reconnaissance vocale dans un bash "GKRI" que j'ai déja créé. J'ai presque fini l'encodeur, il me manque le player, c'est pourquoi je cherchais des informations pour pouvoir le réalisé.
Nous pouvons traduire aussi ma démarche comme étant celle d'être à la recherche de création de fichiers ASCII en utilisant bash
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#7 Le 17/02/2011, à 00:32

ehmicky

Re : codage de caractères [résolu]

Et pourquoi ne pas utiliser un langage comme C ou C++, avec des bibliothèques prévues pour la manipulation de fichiers sons ?


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#8 Le 17/02/2011, à 07:51

temps

Re : codage de caractères [résolu]

J'ai au debut pensé utiliser une bibliothèque il y a un peu moins d'un mois, au moment ou je découvrait java. Mais voila les bibliothèques déforment les formes des ondes. Elles ne sont pas prévues pour de la modélisation, elles sont prévues pour de l'imitation (elles singe), et donc ne sont pas compatibles avec les modèles physiques que j'ai créés. En regardant ici sur ce script, on voit bien que je suis obligé de faire plusieurs corrections, la plus importante étant sur une dérivation d'ordre 1


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#9 Le 18/02/2011, à 00:09

temps

Re : codage de caractères [résolu]

Après plusieurs test d'éditeur, celui qui me convient le mieux dans la manipulation des ASCII c'est GHex, pour jouer avec les sons c'est vraiment amusant. Je pars maintenant sous bash à la recherche de la technique qui permet à bash de dire que le fichier que je crée est au bon format. J'entends par là en exemple si je prends mon code ASCII et que je l'écris avec gedit, celui-ci ne sera pas reconnu car ce sera de l'ASCII sous UTF-8, alors que si je l'édite avec GHex qui est paramétré je ne sais comment, les lecteurs de musique le reconnaisse et joue les sons sans problème.


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#10 Le 18/02/2011, à 01:29

ehmicky

Re : codage de caractères [résolu]

Franchement, ça me paraît un peu brute de manipuler directement tes fichiers sons en hexa. Je suis pas assez calé en audio (je connais que SFML en C++ et SDL en C, mais ils ne permettent pas une manipulation aussi bas-niveau que tu le veux je pense), mais je pense vraiment qu'une bibliothèque manipulant les samples un par un sans déformation du reste doit exister en C, C++, Python ou Java. Tu devrais peut-être poster cette question sur la section relative à la programmation ou à l'audio, ce serait une bonne occasion d'apprendre un nouveau langage.
Parce qu'en l'état actuel, Bash + éditeur hexa pour manipuler un fichier son, je pense que tu vas passer beaucoup de temps là où tu pourrais automatiser, et ça va te prendre du temps aussi à maintenir, où si tu veux ajouter de nouvelles fonctionnalités.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#11 Le 20/02/2011, à 11:54

temps

Re : codage de caractères [résolu]

Voici quelques nouvelles de l'avancement.
Je suis allé à la recherche d'informations et j'ai testé plusieurs bibliothèques son de manière à pouvoir réaliser mon projet de reconnaissance vocale. J'ai ressortie code block ... j'ai refais le tour des langages, mais décidément je n'ai pas trouvé un outil assez cohérent pour que je puisse travailler. Aussi ce matin, j'ai décidé de créer mon propre outil, sa base est très simple quelques octets composé de quelques fichiers binaire me permettant ainsi de pouvoir créer une base plus avancée de toutes les formes utiles à la création et à la reconnaissance vocale. Cette étape était indispensable car je n'ai pas trouvé d'autre solution pour manipuler les fichiers binaires en bash, donc je concatène des fichier binaires en bash. Je place dans la journée le repertoire compressée de la base ainsi que le son O pour montrer que je joue le son que je veux, mais il n'est pas encore modélisé il est juste traduis pour être joué avec mon système. Je vais faire aussi une vidéo qui montre comment je travaille et comment on peut créer ses sons avec ma technique. L'esprit se veut être dans l'esprit linux "dire les choses le plus simplement possible" et je pense que ma future base avec mes modèles sera plus que novatrice, elle sera très simple à comprendre et à utiliser. Je regrette toutefois que depuis le début de mon travail, j'ai contacté plusieurs fois les gens d'audacity pour avoir des informations, mais à chaque fois j'ai eu une réponse soit agressive sans renseignement  soit indifférente (audacity reste pourtant toujours pour moi la référence).
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#12 Le 21/02/2011, à 18:55

temps

Re : codage de caractères [résolu]

La base est en ligne comme le montre la vidéo elle pèse quelques centaines d'octets sur mon site à wget -c http://www.constructeur-exo.com/gkri-son-base en terminal
il suffit d'ajouter le bash ci-dessous pour créer un nouveau bash nommé lanceur.sh qui va faire le fichier son o.aiff
Je commence maintenant à créer les fonctions les plus courantes de la voix humaine pour mon comparateur

#!/bin/bash
# Version 00/00/01 composante son de GKRI
#logiciel gkri son créé et imaginé par Andre pierre jocelyn
#contact mail : temps.jo@gmail.com 

#Je cree le fichier lanceur.sh
fichier1="
#!/bin/bash "
echo $fichier1 >> lanceur.sh


echo "# Version 00/00/02
#logiciel gkri son créé et imaginé par Andre pierre jocelyn
#contact mail : temps.jo@gmail.com 
 
cat lentete.aiff FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF > o.aiff
#ici on entre la formule qui cré la forme du son pour les voyelles la forme est = 126 (1-exp(-t/jo)) c'est la raison pour laquelle la voie humaine n'est pas symétrique 
#cette forme de courbe implique l'hystérésis\ " | tee -a lanceur.sh

#######je cree ma table de conversion
declare -a jo
jo[1]=01 # debut valeur positive
jo[2]=02 #
jo[3]=03 #
jo[4]=04 #
jo[5]=05 #
jo[6]=06 #
jo[7]=07 #
jo[8]=08 #
jo[9]=09 #
jo[10]=0A #
jo[11]=0B #
jo[12]=0C #
jo[13]=0D #
jo[14]=0E #
jo[15]=0F #

jo[16]=10 # 
jo[17]=11 #
jo[18]=12 #
jo[19]=13 #
jo[20]=14 #
jo[21]=15 #
jo[22]=16 #
jo[23]=17 #
jo[24]=18 #
jo[24]=19 #
jo[25]=1A #
jo[26]=1B #
jo[27]=1C #
jo[28]=1D #
jo[29]=1E #
jo[30]=1F #

jo[31]=20 # 
jo[32]=21 #
jo[33]=22 #
jo[34]=23 #
jo[35]=24 #
jo[36]=25 #
jo[37]=26 #
jo[38]=27 #
jo[39]=28 #
jo[40]=29 #
jo[41]=2A #
jo[42]=2B #
jo[43]=2C #
jo[44]=2D #
jo[45]=2E #
jo[46]=2F #

jo[47]=30 # 
jo[48]=31 #
jo[49]=32 #
jo[50]=33 #
jo[51]=34 #
jo[52]=35 #
jo[53]=36 #
jo[54]=37 #
jo[55]=38 #
jo[56]=39 #
jo[57]=3A #
jo[58]=3B #
jo[59]=3C #
jo[60]=3D #
jo[61]=3E #
jo[62]=3F #

jo[63]=40 # 
jo[64]=41 #
jo[65]=42 #
jo[66]=43 #
jo[67]=44 #
jo[68]=45 #
jo[69]=46 #
jo[70]=47 #
jo[71]=48 #
jo[72]=49 #
jo[73]=4A #
jo[74]=4B #
jo[75]=4C #
jo[76]=4D #
jo[77]=4E #
jo[78]=4F #

jo[79]=50 # 
jo[80]=51 #
jo[81]=52 #
jo[82]=53 #
jo[83]=54 #
jo[84]=55 #
jo[85]=56 #
jo[86]=57 #
jo[87]=58 #
jo[88]=59 #
jo[89]=5A #
jo[90]=5B #
jo[91]=5C #
jo[92]=5D #
jo[93]=5E #
jo[94]=5F #

jo[95]=60 # 
jo[96]=61 #
jo[97]=62 #
jo[98]=63 #
jo[99]=64 #
jo[100]=65 #
jo[101]=66 #
jo[102]=67 #
jo[103]=68 #
jo[104]=69 #
jo[105]=6A #
jo[106]=6B #
jo[107]=6C #
jo[108]=6D #
jo[109]=6E #
jo[110]=6F #


jo[111]=70 # 
jo[112]=71 #
jo[113]=72 #
jo[114]=73 #
jo[115]=74 #
jo[116]=75 #
jo[117]=76 #
jo[118]=77 #
jo[119]=78 #
jo[120]=79 #
jo[121]=7A #
jo[122]=7B #
jo[123]=7C #
jo[124]=7D #
jo[125]=7E #
jo[126]=7F # valeur max positive


jo[127]=FF # debut valeur negative
jo[128]=FE #
jo[129]=FD #
jo[130]=FC #
jo[131]=FB #
jo[132]=FA #
jo[133]=F9 #
jo[134]=F8 #
jo[135]=F7 #
jo[136]=F6 #
jo[137]=F5 #
jo[138]=F4 #
jo[139]=F3 #
jo[140]=F2 #
jo[141]=F1 #
jo[142]=F0 # 


jo[143]=EF # 
jo[144]=EE #
jo[145]=ED #
jo[146]=EC #
jo[147]=EB #
jo[148]=EA #
jo[149]=E9 #
jo[150]=E8 #
jo[151]=E7 #
jo[152]=E6 #
jo[153]=E5 #
jo[154]=E4 #
jo[155]=E3 #
jo[156]=E2 #
jo[157]=E1 #
jo[158]=E0 # 


jo[159]=DF # 
jo[160]=DE #
jo[161]=DD #
jo[162]=DC #
jo[163]=DB #
jo[164]=DA #
jo[165]=D9 #
jo[166]=D8 #
jo[167]=D7 #
jo[168]=D6 #
jo[169]=D5 #
jo[170]=D4 #
jo[171]=D3 #
jo[172]=D2 #
jo[173]=D1 #
jo[174]=D0 # 

jo[175]=CF # 
jo[176]=CE #
jo[177]=CD #
jo[178]=CC #
jo[179]=CB #
jo[180]=CA #
jo[181]=C9 #
jo[182]=C8 #
jo[183]=C7 #
jo[184]=C6 #
jo[185]=C5 #
jo[186]=C4 #
jo[187]=C3 #
jo[188]=C2 #
jo[189]=C1 #
jo[190]=C0 # 

jo[191]=BF # 
jo[192]=BE #
jo[193]=BD #
jo[194]=BC #
jo[195]=BB #
jo[196]=BA #
jo[197]=B9 #
jo[198]=B8 #
jo[199]=B7 #
jo[200]=B6 #
jo[201]=B5 #
jo[202]=B4 #
jo[203]=B3 #
jo[204]=B2 #
jo[205]=B1 #
jo[206]=B0 # 

jo[207]=AF # 
jo[208]=AE #
jo[209]=AD #
jo[210]=AC #
jo[211]=AB #
jo[212]=AA #
jo[213]=A9 #
jo[214]=A8 #
jo[215]=A7 #
jo[216]=A6 #
jo[217]=A5 #
jo[218]=A4 #
jo[219]=A3 #
jo[220]=A2 #
jo[221]=A1 #
jo[222]=A0 # 

jo[223]=9F # 
jo[224]=9E #
jo[225]=9D #
jo[226]=9C #
jo[227]=9B #
jo[228]=9A #
jo[229]=99 #
jo[230]=98 #
jo[231]=97 #
jo[232]=96 #
jo[233]=95 #
jo[234]=94 #
jo[235]=93 #
jo[236]=92 #
jo[237]=91 #
jo[238]=90 # 

jo[239]=8F # 
jo[240]=8E #
jo[241]=8D #
jo[242]=8C #
jo[243]=8B #
jo[244]=8A #
jo[245]=89 #
jo[246]=88 #
jo[247]=87 #
jo[248]=86 #
jo[249]=85 #
jo[250]=84 #
jo[251]=83 #
jo[252]=82 #
jo[253]=81 #
jo[254]=80 # valeur max negative
##################
#je cree ma boucle de conversion mais elle ne marche pas
#a=124
#for i in `seq 1 $a`;
#do
#forme$i= printf "%x" $i
#done
##########################
#je cré mes fonctions ici =126*(1-EXP(t/14)) en attendant que j'apprenne les math sous bash
abadiejoris1() {
echo "cat ${jo[9]} ${jo[17]} ${jo[24]} ${jo[31]} ${jo[38]} ${jo[44]} ${jo[50]} ${jo[55]} ${jo[60]} ${jo[64]} ${jo[69]} ${jo[73]} ${jo[76]} ${jo[80]} ${jo[83]} ${jo[86]} ${jo[89]} ${jo[91]} ${jo[94]} ${jo[96]} ${jo[98]} ${jo[100]} ${jo[102]} ${jo[103]} ${jo[105]} ${jo[106]} ${jo[108]} ${jo[109]} ${jo[110]} ${jo[111]} >> o.aiff" | tee -a lanceur.sh
}
abadiejoris2() {
echo "cat $forme2 >> o.aiff" | tee -a lanceur.sh

}

#j'appelle la fonction et plus elle sera appelée plus le fichier sera légé par rapport aux autres systèmes qui encodent, ici C de la modelisation
abadiejoris1 


echo "exit 0;" | tee -a lanceur.sh

##j'envoie le lanceur pour creer le fichier son o.aiff
#./lanceur.sh #tentative inutile j'ai pas les droits faut lancer en manuel

##je sors de la
exit 0;

Dernière modification par temps (Le 21/02/2011, à 20:14)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#13 Le 22/02/2011, à 00:09

temps

Re : codage de caractères [résolu]

Voici un autre exemple le constructeur pèse 8,0 Kio (8212 octets), et produit un fichier audio de 62,2 Kio (63707 octets), il n'est la que pour expliquer l'avantage de modéliser par rapport aux autres systèmes qui encodent car le constructeur varie très peu et peu produire des heures de musique, c'est la complexité qui fait la taille de mon constructeur et non point la durée du fichier son joué.

#!/bin/bash
# Version 00/00/01 composante son de GKRI
#logiciel gkri son créé et imaginé par Andre pierre jocelyn
#contact mail : temps.jo@gmail.com 

#Je cree le fichier lanceur.sh
fichier1="
#!/bin/bash "
echo $fichier1 >> lanceur.sh


echo "# Version 00/00/02
#logiciel gkri son créé et imaginé par Andre pierre jocelyn
#contact mail : temps.jo@gmail.com 
 
cat lentete.aiff FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF > o.aiff
#ici on entre la formule qui cré la forme du son pour les voyelles la forme est = 126 (1-exp(-t/jo)) c'est la raison pour laquelle la voie humaine n'est pas symétrique 
#cette forme de courbe implique l'hystérésis\ " | tee -a lanceur.sh

#######je cree ma table de conversion
declare -a jo
jo[1]=01 # debut valeur positive
jo[2]=02 #
jo[3]=03 #
jo[4]=04 #
jo[5]=05 #
jo[6]=06 #
jo[7]=07 #
jo[8]=08 #
jo[9]=09 #
jo[10]=0A #
jo[11]=0B #
jo[12]=0C #
jo[13]=0D #
jo[14]=0E #
jo[15]=0F #

jo[16]=10 # 
jo[17]=11 #
jo[18]=12 #
jo[19]=13 #
jo[20]=14 #
jo[21]=15 #
jo[22]=16 #
jo[23]=17 #
jo[24]=18 #
jo[24]=19 #
jo[25]=1A #
jo[26]=1B #
jo[27]=1C #
jo[28]=1D #
jo[29]=1E #
jo[30]=1F #

jo[31]=20 # 
jo[32]=21 #
jo[33]=22 #
jo[34]=23 #
jo[35]=24 #
jo[36]=25 #
jo[37]=26 #
jo[38]=27 #
jo[39]=28 #
jo[40]=29 #
jo[41]=2A #
jo[42]=2B #
jo[43]=2C #
jo[44]=2D #
jo[45]=2E #
jo[46]=2F #

jo[47]=30 # 
jo[48]=31 #
jo[49]=32 #
jo[50]=33 #
jo[51]=34 #
jo[52]=35 #
jo[53]=36 #
jo[54]=37 #
jo[55]=38 #
jo[56]=39 #
jo[57]=3A #
jo[58]=3B #
jo[59]=3C #
jo[60]=3D #
jo[61]=3E #
jo[62]=3F #

jo[63]=40 # 
jo[64]=41 #
jo[65]=42 #
jo[66]=43 #
jo[67]=44 #
jo[68]=45 #
jo[69]=46 #
jo[70]=47 #
jo[71]=48 #
jo[72]=49 #
jo[73]=4A #
jo[74]=4B #
jo[75]=4C #
jo[76]=4D #
jo[77]=4E #
jo[78]=4F #

jo[79]=50 # 
jo[80]=51 #
jo[81]=52 #
jo[82]=53 #
jo[83]=54 #
jo[84]=55 #
jo[85]=56 #
jo[86]=57 #
jo[87]=58 #
jo[88]=59 #
jo[89]=5A #
jo[90]=5B #
jo[91]=5C #
jo[92]=5D #
jo[93]=5E #
jo[94]=5F #

jo[95]=60 # 
jo[96]=61 #
jo[97]=62 #
jo[98]=63 #
jo[99]=64 #
jo[100]=65 #
jo[101]=66 #
jo[102]=67 #
jo[103]=68 #
jo[104]=69 #
jo[105]=6A #
jo[106]=6B #
jo[107]=6C #
jo[108]=6D #
jo[109]=6E #
jo[110]=6F #


jo[111]=70 # 
jo[112]=71 #
jo[113]=72 #
jo[114]=73 #
jo[115]=74 #
jo[116]=75 #
jo[117]=76 #
jo[118]=77 #
jo[119]=78 #
jo[120]=79 #
jo[121]=7A #
jo[122]=7B #
jo[123]=7C #
jo[124]=7D #
jo[125]=7E #
jo[126]=7F # valeur max positive


jo[127]=FF # debut valeur negative
jo[128]=FE #
jo[129]=FD #
jo[130]=FC #
jo[131]=FB #
jo[132]=FA #
jo[133]=F9 #
jo[134]=F8 #
jo[135]=F7 #
jo[136]=F6 #
jo[137]=F5 #
jo[138]=F4 #
jo[139]=F3 #
jo[140]=F2 #
jo[141]=F1 #
jo[142]=F0 # 


jo[143]=EF # 
jo[144]=EE #
jo[145]=ED #
jo[146]=EC #
jo[147]=EB #
jo[148]=EA #
jo[149]=E9 #
jo[150]=E8 #
jo[151]=E7 #
jo[152]=E6 #
jo[153]=E5 #
jo[154]=E4 #
jo[155]=E3 #
jo[156]=E2 #
jo[157]=E1 #
jo[158]=E0 # 


jo[159]=DF # 
jo[160]=DE #
jo[161]=DD #
jo[162]=DC #
jo[163]=DB #
jo[164]=DA #
jo[165]=D9 #
jo[166]=D8 #
jo[167]=D7 #
jo[168]=D6 #
jo[169]=D5 #
jo[170]=D4 #
jo[171]=D3 #
jo[172]=D2 #
jo[173]=D1 #
jo[174]=D0 # 

jo[175]=CF # 
jo[176]=CE #
jo[177]=CD #
jo[178]=CC #
jo[179]=CB #
jo[180]=CA #
jo[181]=C9 #
jo[182]=C8 #
jo[183]=C7 #
jo[184]=C6 #
jo[185]=C5 #
jo[186]=C4 #
jo[187]=C3 #
jo[188]=C2 #
jo[189]=C1 #
jo[190]=C0 # 

jo[191]=BF # 
jo[192]=BE #
jo[193]=BD #
jo[194]=BC #
jo[195]=BB #
jo[196]=BA #
jo[197]=B9 #
jo[198]=B8 #
jo[199]=B7 #
jo[200]=B6 #
jo[201]=B5 #
jo[202]=B4 #
jo[203]=B3 #
jo[204]=B2 #
jo[205]=B1 #
jo[206]=B0 # 

jo[207]=AF # 
jo[208]=AE #
jo[209]=AD #
jo[210]=AC #
jo[211]=AB #
jo[212]=AA #
jo[213]=A9 #
jo[214]=A8 #
jo[215]=A7 #
jo[216]=A6 #
jo[217]=A5 #
jo[218]=A4 #
jo[219]=A3 #
jo[220]=A2 #
jo[221]=A1 #
jo[222]=A0 # 

jo[223]=9F # 
jo[224]=9E #
jo[225]=9D #
jo[226]=9C #
jo[227]=9B #
jo[228]=9A #
jo[229]=99 #
jo[230]=98 #
jo[231]=97 #
jo[232]=96 #
jo[233]=95 #
jo[234]=94 #
jo[235]=93 #
jo[236]=92 #
jo[237]=91 #
jo[238]=90 # 

jo[239]=8F # 
jo[240]=8E #
jo[241]=8D #
jo[242]=8C #
jo[243]=8B #
jo[244]=8A #
jo[245]=89 #
jo[246]=88 #
jo[247]=87 #
jo[248]=86 #
jo[249]=85 #
jo[250]=84 #
jo[251]=83 #
jo[252]=82 #
jo[253]=81 #
jo[254]=80 # valeur max negative
##################
#je cree ma boucle de conversion mais elle ne marche pas
#a=124
#for i in `seq 1 $a`;
#do
#forme$i= printf "%x" $i
#done
##########################
#je cré mes fonctions ici =126*(1-EXP(t/14)) en attendant que j'apprenne les math sous bash (m42)
abadiejoris1() {
echo "cat ${jo[9]} ${jo[17]} ${jo[24]} ${jo[31]} ${jo[38]} ${jo[44]} ${jo[50]} ${jo[55]} ${jo[60]} ${jo[64]} ${jo[69]} ${jo[73]} ${jo[76]} ${jo[80]} ${jo[83]} ${jo[86]} ${jo[89]} ${jo[91]} ${jo[94]} ${jo[96]} ${jo[98]} ${jo[100]} ${jo[102]} ${jo[103]} ${jo[105]} ${jo[106]} ${jo[108]} ${jo[109]} ${jo[110]} ${jo[111]} ${jo[112]} ${jo[113]} ${jo[114]} ${jo[115]} ${jo[116]} ${jo[116]} ${jo[117]} ${jo[118]} ${jo[118]} ${jo[119]} ${jo[119]} ${jo[120]} >> o.aiff" | tee -a lanceur.sh
}
#je cré mes fonctions ici =126*(1-EXP(t/20)) en attendant que j'apprenne les math sous bash (m42)
abadiejoris2() {
echo "cat ${jo[6]} ${jo[12]} ${jo[18]} ${jo[23]} ${jo[28]} ${jo[33]} ${jo[37]} ${jo[42]} ${jo[46]} ${jo[50]} ${jo[53]} ${jo[57]} ${jo[60]} ${jo[63]} ${jo[66]} ${jo[69]} ${jo[72]} ${jo[75]} ${jo[77]} ${jo[80]} ${jo[82]} ${jo[84]} ${jo[86]} ${jo[88]} ${jo[90]} ${jo[92]} ${jo[93]} ${jo[95]} ${jo[96]} ${jo[98]} ${jo[99]} ${jo[101]} ${jo[102]} ${jo[103]} ${jo[104]} ${jo[105]} ${jo[106]} ${jo[107]} ${jo[108]} ${jo[109]} ${jo[110]} ${jo[111]} >> o.aiff" | tee -a lanceur.sh
}
#je cré mes fonctions ici =126*(1-EXP(t/16)) en attendant que j'apprenne les math sous bash (m42)
abadiejoris3() {
echo "cat ${jo[8]} ${jo[15]} ${jo[22]} ${jo[28]} ${jo[34]} ${jo[39]} ${jo[45]} ${jo[50]} ${jo[54]} ${jo[59]} ${jo[63]} ${jo[66]} ${jo[70]} ${jo[73]} ${jo[77]} ${jo[80]} ${jo[82]} ${jo[85]} ${jo[88]} ${jo[90]} ${jo[92]} ${jo[94]} ${jo[96]} ${jo[98]} ${jo[100]} ${jo[101]} ${jo[103]} ${jo[104]} ${jo[105]} ${jo[107]} ${jo[108]} ${jo[109]} ${jo[110]} ${jo[111]} ${jo[112]} ${jo[113]} ${jo[114]} ${jo[114]} ${jo[115]} ${jo[116]} ${jo[116]} ${jo[117]} >> o.aiff" | tee -a lanceur.sh
}
#je cré mes fonctions ici =126*(1-EXP(t/7.5)) en attendant que j'apprenne les math sous bash (d23)
abadiejoris4() {
echo "cat ${jo[119]} ${jo[118]} ${jo[117]} ${jo[116]} ${jo[115]} ${jo[113]} ${jo[111]} ${jo[109]} ${jo[107]} ${jo[104]} ${jo[101]} ${jo[97]} ${jo[93]} ${jo[88]} ${jo[83]} ${jo[76]} ${jo[69]} ${jo[61]} ${jo[52]} ${jo[42]} ${jo[29]} ${jo[16]} ${jo[01]} >> o.aiff" | tee -a lanceur.sh
}
#je cré mes fonctions ici =126*(1-EXP(-t/10,2)) en attendant que j'apprenne les math sous bash en negatif donc jo= jo[la valeur + 126] (d24)
abadiejoris5() {
echo "cat ${jo[138]} ${jo[148]} ${jo[158]} ${jo[167]} ${jo[175]} ${jo[182]} ${jo[189]} ${jo[194]} ${jo[200]} ${jo[205]} ${jo[209]} ${jo[213]} ${jo[217]} ${jo[220]} ${jo[223]} ${jo[226]} ${jo[228]} ${jo[230]} ${jo[232]} ${jo[234]} ${jo[236]} ${jo[237]} ${jo[239]} ${jo[240]} >> o.aiff" | tee -a lanceur.sh
}
#je cré mes fonctions ici =126*(1-EXP(-t/16)) en attendant que j'apprenne les math sous bash en negatif donc jo= jo[la valeur + 126] (m37)
abadiejoris6() {
echo "cat ${jo[240]} ${jo[239]} ${jo[238]} ${jo[237]} ${jo[236]} ${jo[235]} ${jo[234]} ${jo[233]} ${jo[231]} ${jo[230]} ${jo[229]} ${jo[227]} ${jo[226]} ${jo[224]} ${jo[222]} ${jo[220]} ${jo[218]} ${jo[216]} ${jo[214]} ${jo[211]} ${jo[208]} ${jo[206]} ${jo[203]} ${jo[199]} ${jo[196]} ${jo[192]} ${jo[189]} ${jo[185]} ${jo[180]} ${jo[176]} ${jo[171]} ${jo[165]} ${jo[160]} ${jo[154]} ${jo[148]} ${jo[141]} ${jo[134]} ${jo[127]} >> o.aiff" | tee -a lanceur.sh
}
#je cré mes fonctions ici =126*(1-EXP(-t/82)) armonique basse (m24)
abadiejoris7() {
echo "cat ${jo[2]} ${jo[3]} ${jo[5]} ${jo[6]} ${jo[7]} ${jo[9]} ${jo[10]} ${jo[12]} ${jo[13]} ${jo[14]} ${jo[16]} ${jo[17]} ${jo[18]} ${jo[20]} ${jo[21]} ${jo[22]} ${jo[24]} ${jo[25]} ${jo[26]} ${jo[27]} ${jo[28]} ${jo[30]} ${jo[31]} ${jo[32]} >> o.aiff" | tee -a lanceur.sh
}
#je cré mes fonctions ici =126*(1-EXP(-t/65)) armonique basse (d19)
abadiejoris8() {
echo "cat ${jo[32]} ${jo[30]} ${jo[29]} ${jo[27]} ${jo[26]} ${jo[24]} ${jo[23]} ${jo[21]} ${jo[20]} ${jo[18]} ${jo[16]} ${jo[15]} ${jo[13]} ${jo[11]} ${jo[9]} ${jo[8]} ${jo[6]} ${jo[4]} ${jo[2]} ${jo[127]} >> o.aiff" | tee -a lanceur.sh
}
#je cré mes fonctions ici =126*(1-EXP(-t/29)) armonique basse en negatif donc jo= jo[la valeur + 126] (d23)
abadiejoris9() {
echo "cat ${jo[130]} ${jo[134]} ${jo[138]} ${jo[142]} ${jo[146]} ${jo[150]} ${jo[153]} ${jo[156]} ${jo[160]} ${jo[163]} ${jo[166]} ${jo[169]} ${jo[172]} ${jo[174]} ${jo[177]} ${jo[179]} ${jo[182]} ${jo[184]} ${jo[187]} ${jo[189]} ${jo[191]} ${jo[193]} ${jo[195]} >> o.aiff" | tee -a lanceur.sh
}
#je cré mes fonctions ici =126*(1-EXP(-t/31.5)) armonique basse en negatif donc jo= jo[la valeur + 126] (m25)
abadiejoris10() {
echo "cat ${jo[195]} ${jo[193]} ${jo[191]} ${jo[189]} ${jo[187]} ${jo[185]} ${jo[183]} ${jo[181]} ${jo[179]} ${jo[176]} ${jo[174]} ${jo[171]} ${jo[169]} ${jo[166]} ${jo[163]} ${jo[160]} ${jo[157]} ${jo[154]} ${jo[151]} ${jo[148]} ${jo[144]} ${jo[141]} ${jo[137]} ${jo[134]} ${jo[130]} >> o.aiff" | tee -a lanceur.sh
}
abadiejoris50() {
echo "cat $forme2 >> o.aiff" | tee -a lanceur.sh

}
###### je cré une boucle sur une fréquence
av=500
for i in `seq 1 $av`;
do
#######



#j'appelle la fonction et plus elle sera appelée plus le fichier sera légé par rapport aux autres systèmes qui encodent, ici C de la modelisation
abadiejoris1 
abadiejoris4
abadiejoris5
abadiejoris6
abadiejoris7
abadiejoris8
abadiejoris9
abadiejoris10
########
done
########
abadiejoris2
abadiejoris3

echo "exit 0;" | tee -a lanceur.sh

##j'envoie le lanceur pour creer le fichier son o.aiff
#./lanceur.sh #tentative inutile j'ai pas les droits faut lancer en manuel

##je sors de la
exit 0;

Après avoir modélisé les sons, je modifierai le lanceur (le fichier provisoire) de manière à ce qu'il soit moins lourd, j'envisage plusieurs solutions, comme le morcelé.

Dernière modification par temps (Le 22/02/2011, à 07:48)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#14 Le 24/02/2011, à 03:36

temps

Re : codage de caractères [résolu]

J'avance sur mon projet de format audio.jo le player en bash fonctionne très bien de manière à pouvoir créer une bibliothèque je viens de commencer ce soir un petit script en C (en bash j'ai pas réussit à avoir l'expo), voici le code

int main ()
{

    double jo, codebash, nbdepoints, amplitude;

  printf("Quelle est la valeur de jo ? ");
  scanf("%lf", &jo);

  printf("Combien de point dans la courbe du son ? ");
  scanf("%lf", &nbdepoints);

  printf("Quelle est la valeur de l'amplitude ? ");
  scanf("%lf", &amplitude);


  codebash = 126 * amplitude * ( 1 - exp (-nbdepoints/jo))/100;// une boucle plus tard incremente le nbdepoints

  //printf ("fd", codebash, "fd");
  printf ("${jo[%lf]}", codebash );//ajout plus tard dans ecrit fichier du bash
  return 0;
}

Il faut encore que je l'améliore mais l'idée principale y est, l'étape suivante sera de faire une bibliothèque de son entier et un script de manière à pouvoir faire varier les intonations de voix. La seule particularité du système c'est qu'il est conçu sur un système mathématique incompatible avec l'algèbre qui pense pouvoir avoir une base de temps commune et pouvoir utiliser le zéro. Dans ce système chaque chose n'est analysable que par rapport à elle-même et chaque niveau d'analyse a ses propres lois.


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#15 Le 24/02/2011, à 09:47

grim7reaper

Re : codage de caractères [résolu]

Salut,

2-3 remarques sur ton code en C.
- le C n'est pas un langage de script, donc on ne parle pas de « script en C ».

- sinon

int main()

est faux, ce n'est pas du C mais du C++. Il faut utiliser

int main(void)

ou

int main(int argc, char** argv)

-enfin, les commentaires // c'est pas forcément faux, mais c'est uniquement autorisé en C99 (et en C++), si tu veux faire de l'ANSI-C, faut utiliser que les commentaires /* */ (même remarque pour le format %lf).


Sinon méfie toi avec scanf, c'est une fonction puissante mais difficile à utiliser. La ton programme plante sévèrement si j'entre autres choses que des double.

Dernière modification par grim7reaper (Le 24/02/2011, à 14:09)

Hors ligne

#16 Le 19/03/2011, à 20:38

temps

Re : codage de caractères [résolu]

Au final pour récupérer les donnée dans un binaire ici un fichier audio j'utilise

/* Imaginer et creer par Abadie joris andre*/
/*Sur un concept de Andre pierre jocelyn*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#define jo0 0x0
#define jo1 0x1
#define jo2 0x2
#define jo3 0x3
#define jo4 0x4
#define jo5 0x5
#define jo6 0x6
#define jo7 0x7

et pour créer un fichier binaire toujour pour moi ici un fichier audio j'utilise

/* Imaginer et creer par Andre pierre jocelyn*/
/* modifier par Abadie joris andre*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>


int main(int argc, char *argv[])

{

char jo0 = 0x00;
char jo1 = 0x01;
char jo2 = 0x02;
char jo3 = 0x03;
char jo4 = 0x04;
char jo5 = 0x05;
char jo6 = 0x06;
char jo7 = 0x07;
char jo8 = 0x08;
char jo9 = 0x09;
char jo10 = 0x0A;
char jo11 = 0x0B;
char jo12 = 0x0C;

Si l'information peut aider quelqu'un la voici.
Je ne dis pas que c'est la meilleure méthode, je ne dis pas que c'est propre, mais comme personne ne m'a aidé, c'est celle que j'ai trouvé et ceci d'une manière empirique après plusieurs jours de tests à force de volonté de vouloir trouver
Cordialement

Dernière modification par temps (Le 19/03/2011, à 21:08)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#17 Le 19/03/2011, à 21:35

FRUiT

Re : codage de caractères [résolu]

Imaginé et créé (et modifié) par...


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#18 Le 20/03/2011, à 01:34

temps

Re : codage de caractères [résolu]

Il étaient deux et il ne faisaient qu'un, il étaient trois et il ne faisaient qu'un.
Désole l'algèbre ou_ l'or aux gras pfe ne fonctionne pas avec la modélisation des découvreurs du siècle des lumières, et même Laplace a écris que les titres en science provoquaient de grandes misères pour des générations.
Moins sérieusement voici la dernière vidéo que j'ai faite elle contient lien vers un code qui permet de synthétiser les voyelles.
derniere video faite ce soir
cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne