logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 30-11-2014 14:07:54

temps
Membre
Inscription : 01-03-2014

LecBaul et BVUL

Bonjour,
J'ai l'intention de monter un nouveau projet, un simple lecteur pour fichiers musicaux diffusés au format .adn

Objectif 1- L'application doit être écrite soit en C ou C++ sans gestionnaire graphique (car beaucoup trop lourd)
Objectif 2- L'application doit pouvoir mixer plusieurs fichiers, pour les compositeurs ayant créé avec SequenBaul
Objectif 3- L'application devra dans ses futures versions pouvoir créer des flux audio.

Je ne sais pas comment, par quoi commencer, si quelqu'un a une idée de structure, je suis preneur, d'architecture pour que le code soit compréhensible.

Toujours, dans le même registre, je voudrais aussi commencer à jeter les bases d'un format vidéo sous linux nommé Bibliothèque Visuelle Universelle sous Linux.
Le principe est toujours le même, des mouvements projetés sur des paysages pour obtenir une quantité astronomique des cas. La seule différence est qu'au lieu d'avoir 2 valeurs (une pression et une base de temps constante) nous allons avoir 4 valeurs ( 3 couleurs et une base de temps constante).

Du poids et de la mesure dans toutes choses (CNAM) en d'autres mots les millions de pixel ne semblent pas raisonnable
Troisieme tome de l'academie françoise ... en d'autres mots les millions de pixel ne semblent pas raisonnable
On peut remonter encore, et on trouve toujours que nous devrions essayer d'avoir un projet à la mesure de la vision humaine, d'ou lancer le projet BVUL

Id, je n'ai d'idée de la structure ou encore du fonctionnement des cartes vidéo, ceci n'est que des propositions de projets


Cordialement

P.S. j'ai commencé à identifier les sons générés par la BAUL en identifiant les instruments qui créent les mêmes,
en plus j'indique qui fait quoi dans les différentes AdnForme, c'est ici dans BAUL utilisation http://www.letime.net/baul/index.html

J'ai mis aussi des exemples de sons créés sur wikimedia, c'est ici http://commons.wikimedia.org/w/index.ph … uselang=en

Dernière modification par temps (01-12-2014 22:24:12)

Hors ligne

#2 11-12-2014 01:04:05

temps
Membre
Inscription : 01-03-2014

Re : LecBaul et BVUL

Bonjour,
Sur la route de la construction du simple lecteur, j'ai créé une version SDL2 de SequenBaul.
cette nouvelle version se nomme SequanBaul et est en téléchargement ici http://www.letime.net/baul/SequanBaul.tar.gz et aussi sur github.
Il manque le texte des boutons, soit j'utiliserai SDL_TTF, soit des images png contenant le texte, il faudrait aussi que je modifie la ligne de compilation de manière à ne pas avoir de dépendances externe avec la SDL, que la compilation utilise juste le répertoire accompagnant... que j'améliore en factorisant, que je place des fork, ... (je sais pas ou plus faire la compilation avec répertoire accompagnant, j'ai oublié comment si quelqu’un sait je suis preneur ). Je vais reprendre l'écriture de LecBaul et aussi d'une formeAdn 24 fronts que j'ai en tête. (les deux premiers octets sont pour indiquer quelle forme, les 12 octets suivant indiquent le delta amplitude d'un front haut et d'un front bas, si la valeur supérieur à 128 je crée un effet, le 15 octet sert à donner la durée pour tout les fronts (ceux qui ont testé savent maintenant que plusieurs causes donnent le même effet et qu'à fréquence constante je peux produire le son que je veux), le 16 ème front sert à dire combien de fois je boucle le tout pour produire la durée du son.

Cordialement

P.S.
La version SDL2 n'a pas encore de texte, mais elle est assez décevante car elle fait déjà le même poids que la version Qt.
J'ai presque finie la version LecBaul annoncée elle est sur github et elle explique pourquoi, en fait LecBaul qui lit directement les fichier binaire au format .adn fait presque le même poids. Le gestionnaire graphique, joue très peu dans le poids de l'application. https://github.com/temps9/LecBaul

Les projets à court termes; sont de continuer à écrire les différentes formes, de trouver une solution pour éviter la boucle qui lit les octets en binaire

int abadie = 0;

unsigned char tab1[total] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,
0xC7,0xC8,0xC9,0xCA,0xCB,
0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};


if (fichierjo1 != NULL)
{

if (fichierjoa1 != NULL)
{


abadie = fgetc(fichierjo1); /* abadie vient chercher tout ce qui bouge*/
while (abadie != EOF)
{



for (ouaitu=0; ouaitu<255; ouaitu++)
{
if ( abadie == tab1[ouaitu])
{
force1 = ouaitu;
assemble++;
}
}



pour la remplacer par une lecture directe avec

uint8_t abadie

mais le problème avec uint8_t c'est que la boucle du while ne trouve pas la fin du fichier avec uint8_t, alors qu'avec un int cela ne pose pas de problème.
Je vais mettre de coté le format vidéo BVUL, car sans équipe encore pour l'audio, je suis trop pris par l'audio et n'ai pas le temps pour la vidéo.

Dernière modification par temps (16-12-2014 06:54:35)

Hors ligne

#3 30-12-2014 10:40:29

temps
Membre
Inscription : 01-03-2014

Re : LecBaul et BVUL

Bonjour,
J'ai fini le remplacement de la boucle par uint8_t, j'ai remarqué que l'application est plus lourde, certainement du à la bibliothèque ajoutée, mais je pense que l'application gagne en rapidité.
J'ai créé quelques exemples de musiques sous la BAUl, ceux-ci pèse dans les 500 octets et génèrent des musiques de +3mn de la meilleure qualité.
Les premier exemples utilisent le format adn compressé, le dernier exemple ajouté composition 10 est tout simplement une boucle en c++.
En d'autres mots, le fichier audio est en c++ donc très léger.
La page ou se trouve les fichiers audio est ici :
http://www.letime.net/abadie_jo/wav3/

La prochaine étape est de créer une zone tampon de manière à pouvoir commencer la lecture du fichier audio avant que celui-ci est fini de se créer.
Actuellement l'application crée le premier fichier audio, puis crée le second, ... x fichier à mixer, puis mixe tous les fichier et enfin joue le résultat. Si le fait de demander une seule note produit un effet instantané, le fait de demander de générer des centaine de notes demande un certain temps. Ce certain temps crée une attente, que je voudrai supprimer à l'aide d'un fichier tampon.
Pour se faire, il va falloir que j'étudie en premier les notion de flux, ensuite que je reprenne le code, je ne suis pas sure d'être à la hauteur.

Cordialement

Hors ligne

#4 30-12-2014 10:58:17

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : LecBaul et BVUL

Tu fais rêver temps. Persévère ! big_smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#5 02-01-2015 18:07:46

temps
Membre
Inscription : 01-03-2014

Re : LecBaul et BVUL

Merci pour le commentaire.
Il est possible de lire un fichier audio avant que celui-ci soit créé avec sox

system("play -t wav --ignore-length -r 44100 -e signed-integer -b 16 -c 1 1.wav");


Quand j'ai testé, j'ai pu me rendre compte que le code générait un fichier .jo et un fichier wav à chaque nouvelle note.
j'ai corrigé le code de manière à créer un seul jo et un seul wav par piste.
Le génération de fichier est maintenant instantanée rendant la zone tampon et la lecture du stream complètement inutile.
J'intègre actuellement mon propre mix des pistes audio sans passer par sox. Ceci fait ressortir un offset de 10% par piste.
Si sur une piste cela ne gène pas, sur 2 pistes 20%, sur 3 pistes 30% vers le bas, ça gène. Je ne sais pas d'ou ça vient. Il me semble que le déplacement de 10% vers le bas est apparue depuis que j'ai remplacé la boucle d'identification par la bibliothèque pour introduire

uint8_t



Je pense pouvoir corriger facilement à l'aide des valeurs dans le tableau de correction qui crée la disposition des formats audio, mais j'aimerai bien savoir d’où provient ce décalage dans le code.

J'hésite à essayer de créer des compositions, ou à modéliser des musiques existantes, il faudrait quelles soient libre et pourrait être diffusées sans streaming  en html car en prenant comme repère mes compositions complexes, les musiques pèsent dans les 500 octets dans le lien precedement indiqué.
En d'autres mots, créer une application audio html en profitant de la légèreté du format de de l'appli qui permet de le déployer et encore de sa vitesse d'exécution, encore plus rapide que le streaming.

Concept de l'appli html:
Un plug-in firefox qui contient l'application dans les 200 ko (c'est le plus lourd)
Le plug-in en premier décompile le répertoire de 500 octets placé en pop-up dans la page html
puis le plug-in génère l'audio, c'est instantané,
puis le plug-in lit l'audio

Dommage que les vacances finissent, j'essaierai de faire ça aux prochaines

Cordialement


P.S.
J'ai trouvé ce qui introduit l'offset de 10% vers le bas.
Le fait d'aller chercher les valeurs dans un tableau uint8_t produit l'offset

          uint8_t tab[total] =
            { 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
      129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
      144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
      159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
      174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
      189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
      204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
      219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
      234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
      249, 250, 251, 252, 253, 254, 255,
      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
      21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
      40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
      59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
      78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
      97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
      112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
      127
          };



      uint8_t *ptr;
      uint8_t *petr;



Alors qu'en reprenant ma première technique avec un tableau de char donne une sortie parfaite

      char tab[total] =
        { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
      0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
      0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0,
      0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC,
      0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8,
      0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4,
      0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
      0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC,
      0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8,
      0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4,
      0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00,
      0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
      0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
      0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24,
      0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30,
      0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C,
      0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
        0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51,
          0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A,
          0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63,
          0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C,
          0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
          0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
          0x7F
      };



      char *ptr;
      char *petr;



Je n'ai aucune idée pourquoi, c'est empirique en testant ce que j'ai changé un à un jusqu'à trouvé ce qui a introduit l'offset

Dernière modification par temps (02-01-2015 20:20:49)

Hors ligne

#6 10-01-2015 02:40:22

temps
Membre
Inscription : 01-03-2014

Re : LecBaul et BVUL

Bonjour,

Je suis entrain d'ajouter les voix humaines à l'application.
La première s'appelle avec AdnForme56
Elle est composée comme suit :
Un début modifiable pour pouvoir créer les consonnes (dans la partie que je nomme matière) (la consonne est toujours relative à la voyelle qui suit, la même forme s'entend sous différentes consonnes selon la forme de la voyelle après
Une base fixe pour la forme de voyelle qui donne le son "o" dans la partie que je nomme (phénomène) et la encore une partie matière qui va intervenir sur le phénomène pour donner des différentes formes de la voyelle.

Après cette forme, j'ai l'intention de commencer à créer et placer dans la bibliothèque (sous les premières compositions) les boites à rythme. Car en surfant sur les tutoriaux des autres applications audio, j'ai pu m’apercevoir que c'était recherché.
Pour bien faire ressortir la puissance de l'outil, et de manière à avoir un outil de comparaison, je vais reprendre les boites à rythme d'Hydrogen. si Hydrogen utilise des sample très lourd et très lent, je vais créer les boites à rythme avec une simple boucle en c++, ce qui donne une boite à rythme de quelques centaines d'octets générant les sons de très très grande qualité instantanément. Voir sur wikimedia, j'en ai créé une il y a quelques temps et montre comment créer une boite à rythme sans sample, juste avec quelques lignes en c++, j'ai mis le code en accompagnement du fichier audio généré par celui-ci
Je suis toujours à la recherche de DEV pour m'aider à avancer sur le projet.

J'ai ajouté une vidéo de SequenBaul ici,
https://www.youtube.com/watch?v=qGeWWu3WnGk
lors de l'enregistrement avec recordmydesktop, je n'ai pas le bouton rouge d'arrêt d'enregistrement, j'ai du faire Ctrl+Alt+s pour arrêter, je sais qu'en terminal c'est Ctrl + c mais je n'ai pas su le faire.

Cordialement

Dernière modification par temps (10-01-2015 02:53:43)

Hors ligne

#7 15-02-2015 06:52:30

temps
Membre
Inscription : 01-03-2014

Re : LecBaul et BVUL

Bonjour,
Quelques nouvelles du projet SequenBaul.
J'ai commencé à ouvrir les cas du deuxième octet, et donc je vais devoir mettre en oeuvre le concept énoncé sur le forum, il y a quelques mois.
A savoir le tri des données.
En base celles-ci ne doivent pas se répéter et nous utilisons tous les nombres premier jusqu'à 256.
La technique pour retrouver l'emplacement prévue est celle présenté par captnfab à savoir une structure.

Pour s'y retrouver dans le projet actuellement, il y a :
1-un fichier nommé convertisseur.cpp qui permet d'adapter les lois physiques aux cartes audio actuelles
2-des constructions sur le premier octet de trie qui permettent de jouer avec les équilibres entre les différentes lois physiques (celles-ci sont différentes en fonction des dimensions). Cette technique permet de créer les voix humaines et les instruments de musique
3- La structure oubliée bien qu'elle soit préconisée par les chercheurs du siècle des lumières, à savoir ne jamais travailler sur les effets toujours sur les causes. Les causes étant les phénomènes qui varient sur différentes matières. Les phénomène étant les fichiers AdnForme.cpp et la matière les 16 octets qui permettent de tout piloter. Les effets étant les sons entendus (une quantité astronomique dans le cas de SequenBaul)
4- les tableaux de trie, une base par valeur du deuxième octet. A savoir si le deuxième octet égal 2 nous avons les tableaux de 4, si égal 3 les tableaux de 5. C'est cette partie qui est à améliorer en créant une structure pour éviter de remettre tous les tableaux dans chaque cas

Les projets LecBaul et BVUL sont au fond du tiroir, la priorité étant la création de la structure qui pourra être utile à tous les tableaux de la BAUL, déployés dans SequenBaul puis dans PianoBaul

Cordialement

Dernière modification par temps (15-02-2015 06:57:25)

Hors ligne

Pied de page des forums