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 09/04/2024, à 18:18

temps

format audio généré

Bonjour,
J'ai déjà créé plusieurs formats audio (en bash, en addon firefox, ..) mais par manque de temps, je n'ai jamais pu finaliser et faire connaître.
J'ai repris mes travaux sur la création d'un format audio il y a peu.
La particularité de ce format est qu'il est ultra léger, que les sons sont inventés, non pas imités.
Comme les sons les plus durs à reproduire sont ceux de la voix humaine, j'ai commencé par ceux là.
Les outils utilisés sont le tableur libre office, ghex, audacity.
Je suis à la recherche de codeurs c++ afin d'améliorer le code.

La page d'accueil en construction du format est là

La page des fichiers audio format texte 200 ondes est là



et le GIT est là

Je dois trouver comment générer les arguments dans la fonction en c++, de manière à ne plus avoir utiliser le tableur.

Je dois trouver comment créer une class en c++ pour chaque voyelle et chaque consonne.

Actuellement le générateur crée un bruit de fond issu de la technique du générateur. Je vais affiner le switch pour que le nombre d'unité de temps ne varie pas trop quelque soit la hauteur du front, car pour la voix humaine il faut des paquets d'unités identique, autrement nous avons l'effet comme ceux présentés sur la page du projet

Le fichier audio serai composé d'une base universelle d'environ 10 Ko, et ensuite les fichiers audio ne pèseraient que quelques dizaine d'octets
Cordialement

Dernière modification par temps (Le 28/04/2024, à 09:21)


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 18/04/2024, à 17:23

temps

Re : format audio généré

Bonjour,
J'annonce la sortie de la deuxième version.
Elle est toujours à la même adresse.
Maintenant nous avons le générateur d'un coté et le fichier audio sous forme de 800 valeurs numériques de l'autre.
La troisième version sera un générateur très léger qui crée les 800 valeurs numériques.
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

#3 Le 18/04/2024, à 19:24

iznobe

Re : format audio généré

Bonjour , pourrais tu preciser ce qu' apporte ton format audio de plus que les formats audio existant ( avec des mots simples , je ne suis absolument pas spécialiste de la chose , simplement , j' aime bien apprendre , m ' instruire et comprendre ) , genre avantage et inconvénients et en quoi il est " supérieur " , qualité ? plus de souplesse ? plus facilement exploitable dans certains domaines ?
j' ai compris qu ' il était très léger , mais je ne comprends pas tellement ce que veut dire " générer des sons " , désolé , je suis totalement noob dans le domaine .

Actuellement pour ma part , je ne vois pas tellement ce qu ' il peut apporter . peut etre faire une comparaison avec d' autres formats connus .

Et félicitations pour ton travail , ca doit pas être une mince affaire !

Dernière modification par iznobe (Le 18/04/2024, à 19:28)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#4 Le 18/04/2024, à 23:01

temps

Re : format audio généré

Bonjour,
Merci pour la réponse.
Ma principale motivation est de transmettre un savoir qui améliorera le monde à mon sentiment même si je le verrai pas. Car si j'arrive à transmettre, il n'y aura pas que l'audio qui sera changé.
Ma deuxième motivation est de dire merci à mes amis du libre avec qui j'ai passé de nombreuses soirées dans les restos aux débuts jusqu'à ce que la situation se dégrade en france et implique la destruction de la communauté.
Ma troisième motivation est de dire merci aux DEV qui m'ont permis de remplir mes missions en apportant des fichiers audio de qualités et vidéo à une époque ou tous déclaraient que c'était impossible. Des milliers de personnes ont pu profiter et doivent beaucoup au libre sans même le savoir.

Le format apporte la possibilité de créer, un outil de création incomparable. La création étant ce qui rempli le plus de joie l'homme, c'est ce qui me semble voir le plus de valeur.
Le format comme il est très léger, consomme très peu de ressources (économie de matière et d'énergie)
Le format n'imite pas, mais je pense que le futur pourra identifier les sons pour les écrire sous mon format sas à avoir à imiter. Le même son peut-être composé d'une multitude de manière. Autant utiliser la plus simple, la plus légère.

Le format permet de retrouver le langage transmis par nos ancêtres, une manière particulière d'associer les idées. En exemple Godard (affiche Coca avec la misère à ses pied qui passe inaperçu)trop d'informations tue l'information, ici id trop de son efface le son. Je suis née dans un monde d'encyclopédie, avec des coutumes en équilibre avec les savoir, un monde d'encyclopédie, et aujourd'hui cette richesse c'est transformé en désert, un dictionnaire(moteur de recherche) qui crée des absolue en des lieu ou il n'y en a pas. Un format audio qui ouvre l'esprit qui permet de créer en opposition à un format audio qui apprend à croire en des dieux qui n'existent pas comme les fréquences. Sans passé plus de présent, pas de futur, ce format audio c'est le passé qui frappe à la porte pour vous protéger. Une idée donnée est une idée de plus, et il est immoral de chercher à le commercialiser l'outil, mais nous pouvons commercialiser les créations.
Si j'étais plus jeune, je créerai des oeuvres d'art avec qui apporteraient des biens pour pouvoir diffuser mais j'ai plus les capacités pour cela, je serai heureux rien que d'avoir su montrer un peu des outils que j'ai utilisés.
Si un Vivaldi ou Bach lit ce texte, qu'il se mette au travail pour sa gloire et notre richesse.
Cordialement

Dernière modification par temps (Le 18/04/2024, à 23:29)


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 21/04/2024, à 07:15

temps

Re : format audio généré

Bonjour,
J'ai commencé la version 2.01 à savoir d'ajouter des générateurs de fichiers audio.jo, je vais ajouter celui avec des zones blanches et celui avec des ondulations de 12 ondes (cela permet de mieux manipuler la dimension cinétique des pressions).
J'ai placé les premiers fichiers sur git ici
La version 3.00 sera celle qui permet de créer la quantité d'onde souhaité, mais avant, je dois créer de nombreux générateur de fichiers audio.jo selon les formes pour montrer les lois et les effets.
Cordialement

Dernière modification par temps (Le 25/04/2024, à 23:58)


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

#6 Le 26/04/2024, à 00:09

temps

Re : format audio généré

Bonjour,
un petit up pour avoir de l'aide.
La première demande concerne le dépot git, j'ai besoin d'aide pour mettre aux normes la présentation du git . Il doit y avoir des règles qui permettent de bien dire et d'être conforme aux coutumes.
La deuxième demande concerne comment classer les app qui génère les fichiers audio.jo

En exemple, si je crée une vague de 6 ondes (12 pour avoir le cycle complet) que je fait varier la pression avec 2 fois x++, j'ai le son a et si je fait varier les 6 ondes 3 fois x++, j'ai le son "o", il s'entend que les ondes vont dans le même sens en pression, si le haut monte, le bas de l'onde doit aussi monter comme les 5 autres. Comment classer cela ? Par forme ? par nombre d'onde, par vitesse des pressions ? par limites, les sons décroche vite avec 6 ondes nous ne pouvons avoir beaucoup d'unité de temps d'écart entre deux ondes ?
En plus de détail dans app40 en entrant une série de 6 ondes trois fois (3-4-5-6-7) puis en indiquant la quantité d'onde au début à enlever par exemple 72, selon la quantité d'onde enlevé nous aurons un début d'onde différent (un son de consonne, si beaucoup le son P, mois le T et aussi le C ..., ce n'est pas la technique future pour produire les consonnes car je préfère les faire surfer mais cela permet d'expliquer les lois physiques et que le même son peut-être produit d'une multitude de manière.
le code est

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
/**pour compiler g++ 'audio.cpp'   -std=c++11 -Wall -Wextra -o 'faitjo' ********************/
int main()
{

    string const construit("audio.jo");
    ofstream ici(construit.c_str());

    int tab[801], tab1[20];
    
    for(int j=0; j<20; j++)
    {
    cout << "Tapez les 4 variations puis k7 " << j << " : ";
    cin >> tab1[j];
    }

    
    for(int i=0; i<800; i++) tab[i] = 128;
    for(int i=1; i<800;i=i+2) tab[i] = 2;



    int j1=1, j2=1, j3=1, j4=1,j5=1, j6=1,ja1=1, ja2=1, ja3=1, ja4=1,ja5=1, ja6=1,jb1=1, jb2=1, jb3=1, jb4=1,jb5=1, jb6=1;

    for(int i=2; i<400;i=i+72) {  tab[i] = 128+(j1*(tab1[0]));  j1++ ; j1++ ; j1++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=6; i<400;i=i+72) {  tab[i] = 128+(j2*(tab1[1]));  j2++ ; j2++ ; j2++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=10; i<400;i=i+72) { tab[i] = 128+(j3*(tab1[2]));  j3++ ; j3++ ; j3++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=14; i<400;i=i+72) { tab[i] = 128+(j4*(tab1[3]));  j4++ ;j4++ ;j4++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=18; i<400;i=i+72) { tab[i] = 128+(j5*(tab1[4]));  j5++ ;j5++ ;j5++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=22; i<400;i=i+72) { tab[i] = 128+(j6*(tab1[5]));  j6++ ;j6++ ;j6++ ; if (tab[i] > 250){tab[i] = 250;}}
    /*************/
    for(int i=26; i<400;i=i+72) {  tab[i] = 128+(ja1*(tab1[6]));  ja1++ ;ja1++ ; ja1++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=30; i<400;i=i+72) {  tab[i] = 128+(ja2*(tab1[7]));  ja2++ ;ja2++ ;ja2++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=34; i<400;i=i+72) { tab[i] = 128+(ja3*(tab1[8]));  ja3++ ;ja3++ ;ja3++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=38; i<400;i=i+72) { tab[i] = 128+(ja4*(tab1[9]));  ja4++ ;ja4++ ; ja4++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=42; i<400;i=i+72) { tab[i] = 128+(ja5*(tab1[10]));  ja5++ ;ja5++ ;ja5++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=46; i<400;i=i+72) { tab[i] = 128+(ja6*(tab1[11]));  ja6++ ;ja6++ ;ja6++ ; if (tab[i] > 250){tab[i] = 250;}}
    /*****************/
    for(int i=50; i<400;i=i+72) {  tab[i] = 128+(jb1*(tab1[12]));  jb1++ ; jb1++ ; jb1++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=54; i<400;i=i+72) {  tab[i] = 128+(jb2*(tab1[13]));  jb2++ ;jb2++ ;jb2++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=58; i<400;i=i+72) { tab[i] = 128+(jb3*(tab1[14]));  jb3++ ;jb3++ ;jb3++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=62; i<400;i=i+72) { tab[i] = 128+(jb4*(tab1[15]));  jb4++ ;jb4++ ;jb4++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=66; i<400;i=i+72) { tab[i] = 128+(jb5*(tab1[16]));  jb5++ ;jb5++ ;jb5++ ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=70; i<400;i=i+72) { tab[i] = 128+(jb6*(tab1[17]));  jb6++ ;jb6++ ;jb6++ ; if (tab[i] > 250){tab[i] = 250;}}


    for(int i=402; i<800;i=i+72) {  tab[i] = 128+(j1*(tab1[0]));j1-- ;  if (tab[i] > 250){tab[i] = 250;}}
    for(int i=406; i<800;i=i+72) {  tab[i] = 128+(j2*(tab1[1]));j2-- ;   if (tab[i] > 250){tab[i] = 250;}}
    for(int i=410; i<800;i=i+72) { tab[i] = 128+(j3*(tab1[2]));j3-- ;   if (tab[i] > 250){tab[i] = 250;}}
    for(int i=414; i<800;i=i+72) { tab[i] = 128+(j4*(tab1[3]));j4-- ;   if (tab[i] > 250){tab[i] = 250;}} 
    for(int i=418; i<800;i=i+72) { tab[i] = 128+(j5*(tab1[4]));j5-- ;   if (tab[i] > 250){tab[i] = 250;}}
    for(int i=422; i<800;i=i+72) { tab[i] = 128+(j6*(tab1[5]));j6-- ;   if (tab[i] > 250){tab[i] = 250;}}
    /********************/
    for(int i=426; i<800;i=i+72) {  tab[i] = 128+(ja1*(tab1[6]));ja1-- ;   if (tab[i] > 250){tab[i] = 250;}}
    for(int i=430; i<800;i=i+72) {  tab[i] = 128+(ja2*(tab1[7])); ja2-- ;  if (tab[i] > 250){tab[i] = 250;}}
    for(int i=434; i<800;i=i+72) { tab[i] = 128+(ja3*(tab1[8]));  ja3-- ; if (tab[i] > 250){tab[i] = 250;}}
    for(int i=438; i<800;i=i+72) { tab[i] = 128+(ja4*(tab1[9])); ja4-- ;  if (tab[i] > 250){tab[i] = 250;}} 
    for(int i=442; i<800;i=i+72) { tab[i] = 128+(ja5*(tab1[10]));ja5-- ;  if (tab[i] > 250){tab[i] = 250;}}
    for(int i=446; i<800;i=i+72) { tab[i] = 128+(ja6*(tab1[11]));ja6-- ;   if (tab[i] > 250){tab[i] = 250;}}
/*****************/
    for(int i=450; i<800;i=i+72) {  tab[i] = 128+(jb1*(tab1[12]));jb1-- ;   if (tab[i] > 250){tab[i] = 250;}}
    for(int i=454; i<800;i=i+72) {  tab[i] = 128+(jb2*(tab1[13]));jb2-- ;  if (tab[i] > 250){tab[i] = 250;}}
    for(int i=458; i<800;i=i+72) { tab[i] = 128+(jb3*(tab1[14])); jb3-- ;  if (tab[i] > 250){tab[i] = 250;}}
    for(int i=462; i<800;i=i+72) { tab[i] = 128+(jb4*(tab1[15]));jb4-- ;   if (tab[i] > 250){tab[i] = 250;}} 
    for(int i=466; i<800;i=i+72) { tab[i] = 128+(jb5*(tab1[16])); jb5-- ;  if (tab[i] > 250){tab[i] = 250;}}
    for(int i=470; i<800;i=i+72) { tab[i] = 128+(jb6*(tab1[17])); jb6-- ;  if (tab[i] > 250){tab[i] = 250;}}
    
    
    int j7=1, j8=1,j9=1, j10=1, j11=1, j12=1,ja7=1, ja8=1,ja9=1, ja10=1, ja11=1, ja12=1,jb7=1, jb8=1,jb9=1, jb10=1, jb11=1, jb12=1;  
    for(int i=4; i<400;i=i+72) {  tab[i] = 128-(j7*(tab1[17]));  j7++ ;j7++ ;j7++ ; if (tab[i] < 5){tab[i] = 5;}}
    for(int i=8; i<400;i=i+72) {  tab[i] = 128-(j8*(tab1[16]));  j8++ ; j8++ ; j8++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=12; i<400;i=i+72) { tab[i] = 128-(j9*(tab1[15]));  j9++ ;j9++ ;j9++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=16; i<401;i=i+72) { tab[i] = 128-(j10*(tab1[14]));  j10++ ;j10++ ;j10++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=20; i<400;i=i+72) { tab[i] = 128-(j11*(tab1[13]));  j11++ ;j11++ ;j11++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=24; i<400;i=i+72) { tab[i] = 128-(j12*(tab1[12]));  j12++ ;j12++ ;j12++ ;  if (tab[i] < 5){tab[i] = 5;}}
    /****************/
    for(int i=28; i<400;i=i+72) {  tab[i] = 128-(ja7*(tab1[11]));  ja7++ ;ja7++ ;ja7++ ; if (tab[i] < 5){tab[i] = 5;}}
    for(int i=32; i<400;i=i+72) {  tab[i] = 128-(ja8*(tab1[10]));  ja8++ ;ja8++ ;ja8++ ;   if (tab[i] < 5){tab[i] = 5;}}
    for(int i=36; i<400;i=i+72) { tab[i] = 128-(ja9*(tab1[9]));  ja9++ ;ja9++ ;ja9++ ;   if (tab[i] < 5){tab[i] = 5;}}
    for(int i=40; i<401;i=i+72) { tab[i] = 128-(ja10*(tab1[8]));  ja10++ ;ja10++ ;ja10++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=44; i<400;i=i+72) { tab[i] = 128-(ja11*(tab1[7]));  ja11++ ;ja11++ ;ja11++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=48; i<400;i=i+72) { tab[i] = 128-(ja12*(tab1[6]));  ja12++ ;ja12++ ;ja12++ ;  if (tab[i] < 5){tab[i] = 5;}}
    /**********/
    for(int i=52; i<400;i=i+72) {  tab[i] = 128-(jb7*(tab1[5]));  jb7++ ;jb7++ ;jb7++ ; if (tab[i] < 5){tab[i] = 5;}}
    for(int i=56; i<400;i=i+72) {  tab[i] = 128-(jb8*(tab1[4]));  jb8++ ;jb8++ ;jb8++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=60; i<400;i=i+72) { tab[i] = 128-(jb9*(tab1[3]));  jb9++ ;jb9++ ;jb9++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=64; i<401;i=i+72) { tab[i] = 128-(jb10*(tab1[2]));  jb10++ ;jb10++ ;jb10++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=68; i<400;i=i+72) { tab[i] = 128-(jb11*(tab1[1]));  jb11++ ; jb11++ ; jb11++ ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=72; i<400;i=i+72) { tab[i] = 128-(jb12*(tab1[0]));  jb12++ ;jb12++ ;jb12++ ;  if (tab[i] < 5){tab[i] = 5;}}
    /*****************************/
    
    for(int i=404; i<800;i=i+72) {  tab[i] = 128-(j7*(tab1[17]));j7--  ; if (tab[i] < 5){tab[i] = 5;}}
    for(int i=408; i<800;i=i+72) {  tab[i] = 128-(j8*(tab1[16]));j8--  ;   if (tab[i] < 5){tab[i] = 5;}}
    for(int i=412; i<800;i=i+72) { tab[i] = 128-(j9*(tab1[15])); j9-- ; if (tab[i] < 5){tab[i] = 5;}}
    for(int i=416; i<800;i=i+72) { tab[i] = 128-(j10*(tab1[14]));j10-- ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=420; i<800;i=i+72) { tab[i] = 128-(j11*(tab1[13]));j11--;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=424; i<800;i=i+72) { tab[i] = 128-(j12*(tab1[12]));j12--  ; if (tab[i] < 5){tab[i] = 5;}}
    /*********************/
    for(int i=428; i<800;i=i+72) {  tab[i] = 128-(ja7*(tab1[11]));ja7-- ;   if (tab[i] < 5){tab[i] = 5;}}
    for(int i=432; i<800;i=i+72) {  tab[i] = 128-(ja8*(tab1[10])); ja8-- ; if (tab[i] < 5){tab[i] = 5;}}
    for(int i=436; i<800;i=i+72) { tab[i] = 128-(ja9*(tab1[9])); ja9-- ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=440; i<800;i=i+72) { tab[i] = 128-(ja10*(tab1[8])); ja10-- ;   if (tab[i] < 5){tab[i] = 5;}}
    for(int i=444; i<800;i=i+72) { tab[i] = 128-(ja11*(tab1[7])); ja11-- ;   if (tab[i] < 5){tab[i] = 5;}}
    for(int i=448; i<800;i=i+72) { tab[i] = 128-(ja12*(tab1[6])); ja12-- ;   if (tab[i] < 5){tab[i] = 5;}}
    /**********************/
    for(int i=452; i<800;i=i+72) {  tab[i] = 128-(jb7*(tab1[5]));jb7-- ;   if (tab[i] < 5){tab[i] = 5;}}
    for(int i=456; i<800;i=i+72) {  tab[i] = 128-(jb8*(tab1[4]));jb8-- ;   if (tab[i] < 5){tab[i] = 5;}}
    for(int i=460; i<800;i=i+72) { tab[i] = 128-(jb9*(tab1[3]));jb9-- ;    if (tab[i] < 5){tab[i] = 5;}}
    for(int i=464; i<800;i=i+72) { tab[i] = 128-(jb10*(tab1[2]));jb10-- ;    if (tab[i] < 5){tab[i] = 5;}}
    for(int i=468; i<800;i=i+72) { tab[i] = 128-(jb11*(tab1[1])); jb11-- ;  if (tab[i] < 5){tab[i] = 5;}}
    for(int i=472; i<800;i=i+72) { tab[i] = 128-(jb12*(tab1[0])); jb12-- ;  if (tab[i] < 5){tab[i] = 5;}}
    
    for(int i=2; i<tab1[18];i=i+2) {  tab[i] = 128; } //intégration du son P
    
    tab[1] = tab1[19];
 
    if(ici)    
    {
      
        for(int i = 0; i < 800; i++) { ici<<tab[i]<< " "; }
       ici.close();
    }
    else
    {
        cout << "ERREUR: Impossible d'ouvrir le fichier." << endl;
    }
    return 0;
}

Cordialement

Dernière modification par temps (Le 26/04/2024, à 00:59)


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 26/04/2024, à 01:09

krodelabestiole

Re : format audio généré

temps a écrit :

La première demande concerne le dépot git

lequel ?

En ligne

#8 Le 26/04/2024, à 08:46

temps

Re : format audio généré

Bonjour,
merci pour la réponse.
Le dépot est indiqué dans le message juste au dessus.
Mais voici à nouveau le lien

C'est dit en d'autres mots, une des principales dimension qui cré les sons c'est la pression cinétique, plus nous nous éloignons du centre (le point d'équilibre), moins nous avons de pression, d'où la forme donnée aux ondes dans le générateur.
Le générateur n'est pas parfais, même si je sais ce que je dois écrire, avec ce générateur j'ai du mal à produire tous les sons que je voudrais. J'ai corrigé hier encore un gros défaut qui produisait un bruit quand j'ai voulu montrer une technique pour générer les consonnes. En fait, il faut créer des suites de pressions cinétiques différentes, donc avoir des hauteurs d'onde différentes, mais comme le générateur n'a pas le même nombre d'unité de temps quelque soit la hauteur de l'onde, c'est pas évident. Dommage que les signaux carrés ne m'apporte pas la richesse d'une pente exponentielle amortie.

Pour le GIT, en détail, je pense que l'emplacement ou j'ai injecté le fichier main n'est peut-être pas prévu pour ça.
En second, il faut trouver un classement, car trop d'information tue l'information.
Peut-être, je devrais commencer par créer des modèles cristallins novateur de sons pour composer, puis seulement après expliquer

P.S maintenant que la série app5 montre comment créer les voyelles j'ai voulu commencer à créer les licornes pour pouvoir montrer qu'avec une toute petite forme nous pouvions créer la plupart des consonnes. Oups, il faut que je corrige le générateur wav, j'ai négligé les petites ondes en hauteur, elles sont indispensable pour les licornes. Je vais essayer de le faire avant la fin du WE, le git frama est en maintenance

Cordialement

Dernière modification par temps (Le 27/04/2024, à 06:53)


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 28/04/2024, à 09:04

temps

Re : format audio généré

Bonjour,
Je viens d'effectuer un update majeur sur le fichier qui génère les wav, la main.cpp je l'ai poussé sur le git
Je corrigerai plus tard sur mon site internet

En détail, avant j'avais un seul switch pour les front montant et descendant des ondes, ce qui générait de nombreux cas dans le switch. J'ai séparé les deux fronts en créant un switch pour les fronts montant et un swicht pour les fronts descendant. ça alège beaucoup le code et le rend plus lisible.
j'ai corrigé dans le swich le cas ou la hauteur est faible en ajoutant au switch les cas particulier de hauteur de 1 à 5. cela va apporter une plus grande qualité audio, ça va me permettre de créer mes licornes, mais il va falloir que je corrige tous les générateurs de fichier 200 ondes car j'avais mis des sécurités pour éviter les déformations d'onde, avec ce nouveau main, elles sont inutiles et même gênante.
P.S.
Sortie de la première forme standardisée, nous entrons 3 valeurs, la première donne le ton, la deuxième la quantité pour la forme la troisième ne nombre d'unité de temps la app53

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
/**pour compiler g++ 'app53.cpp'   -std=c++11 -Wall -Wextra -o 'joapp53' ********************/
// version app5a nous changeons la forme de l'inertie que sur le pt haut onde 1
int main()
{

    string const construit("audio.jo");
    ofstream ici(construit.c_str());

    int tab[830], tab1[3],j1,j2; // tableau plus grand a cause ecriture over flow
    
    for(int j=0; j<3; j++)
    {
    cout << "Tapez 3 valeurs.(1-valeur directrice)(2-nb-ondes)(3-k7) " << j << " : ";
    cin >> tab1[j];
    }

j1=1,j2=2;
//    if (tab1[0]  >20){tab1[1]  = 20;}
     j1=1,j2=1;
    for(int i=0; i<800; i++) {tab[i] = 128;}// je remplis les cases du tableau utile
    for(int i=1; i<800;i=i+2){ tab[i] = 2;}// tous les plateaux de crete sont mis a 2
       j1=1,j2=1;  
    //en entree nous creons la licorne pour que le son se marie avec les sons precedents   
    for(int i=0; i<21;i=i+4) 
    {tab[i] = 128-(j1* tab1[0]);if (j1 >5){j2=2;};if (j1<2){j2=1;};if (j2 ==2){j1=1;};  if (j2 ==1){j1++;};if (tab[i]<5){tab[i]=5;}}
        j1=1,j2=1;
    for(int i=2; i<21;i=i+4) 
    {tab[i] = 128+(j1* tab1[0]);if (j1 >5){j2=2;};if (j1<2){j2=1;};if (j2 ==2){j1=1;};  if (j2 ==1){j1++;};if (tab[i]>250){tab[i]=250;}}
    //nous creons notre son 
        j1=1,j2=1;
    for(int i=22; i<781;i=i+4) 
    {if (j1 >tab1[1]){j2=2;};if (j1<2){j2=1;};if (j2 ==2){tab[i]= tab[18];j1=1;};  if (j2 ==1){tab[i]= tab[18]+j1;j1++;};if (tab[i]>250){tab[i]=250;}}
        j1=1,j2=1;
    for(int i=24; i<781;i=i+4) 
    { if (j1 >tab1[1]){j2=2;};if (j1<2){j2=1;};if (j2 ==2){tab[i] =tab[20];j1=1;};  if (j2 ==1){tab[i] =tab[20]+j1;j1++;};if (tab[i]>250){tab[i]=250;};if (tab[(i)]<5){tab[i]=5;}}

//  Nous creons une licorne de sortie pour que le son ne perturbe pas le son suivant
         j1=1,j2=1;
    for(int i=782; i<800;i=i+4) 
    {tab[i]= tab[778]-(j1* tab1[0]);j1++;if (tab[i]<127){tab[i]=127;}}
        j1=1,j2=1;
    for(int i=784; i<800;i=i+4) 
    {tab[i]= tab[780]+(j1* tab1[0]);j1++;if (tab[i]>128){tab[i]=128;}}
  /*******************************/



   
    tab[1] = tab1[2];
 
    if(ici)    
    {
      
        for(int i = 0; i < 800; i++) { ici<<tab[i]<< " "; }
       ici.close();
    }
    else
    {
        cout << "ERREUR: Impossible d'ouvrir le fichier." << endl;
    }
    return 0;
}

Dernière modification par temps (Le 02/05/2024, à 10:18)


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