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 18/02/2014, à 07:25

temps

[résolu] Gestion des événements en C

Bonjour,
Je cherche le meilleur moyen pour gérer les événements en C.
Le cas qui me concerne est un piano virtuel qui déforme les sons car l'application va trop vite en laissant le doigt lors de la répétition d'une touche clavier sous qt.
A l'origine l'application fonctionne bien car c'est un code que j'ai écris pour lire des fichiers texte, donc écriture dans un fichier puis lecture dans ce fichier, et ceci en utilisant des fonctions mathématiques.
En améliorant le code (remplaçant les fonctions par des tableaux, et supprimant le passage intermédiaire d'écriture dans un fichier) de manière à le rendre moins gourmand en ressources et plus rapide, je perds l'effet particulier bien agréable obtenue sous qt en maintenant légèrement la touche du clavier, qui est remplacé par un grésillement assez long.

D'après vous quelle est la meilleur technique pour ralentir le code sans pour autant supprimer les tableaux qui apportent une stabilité dans les formes demandées ?

J'envisage de restituer les fichiers textes de manière à ce qu'ils fassent tampon, mais je ne sais pas si cela sera suffisant, car le défaut est apparue après l'ajout des tableaux. La note seule est parfaite, c'est la répétition sous qt de la note qui pose problème qu'il n'y avait pas avant.

Un élément qui peux aider. Dans la réalité les sons ne sont pas des fréquences, mais ce qui pourrait être considérer comme des défauts avec une logique cartésienne. En exemple pour le saxo, c'est une répétition de 4 fronts, deux de grandes amplitudes et deux de petites amplitudes, si nous répétons d'une manière parfaite les fronts à ces durées les sons sont presque inaudibles, plus ils sont parfais, plus ils disparaissent. Ce sont les petits défauts de durées très courtes qui varient qui font naitre le son du saxo (à condition aussi qu'il y ait la porteuse de 4 fronts). C'est un peu le même cas rencontré dans le code, en améliorant le code en vitesse d'exécution, les nouveaux sons bien agréables disparaissent.

Cordialement

Dernière modification par temps (Le 18/02/2014, à 19:22)


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/02/2014, à 14:36

claudius01

Re : [résolu] Gestion des événements en C

Bonjour,

temps a écrit :

D'après vous quelle est la meilleur technique pour ralentir le code sans pour autant supprimer les tableaux qui apportent une stabilité dans les formes demandées ?

Erreur de conception à la base...
On ne ralentit pas du code. On le synchronise avec un événement correspondant au temps réel souhaité.
(cf. Création et synchronisation de processus en autre).
Il n'y a pas de meilleure méthode encore que je déconseillerais l'utilisation des signaux.

temps a écrit :

Un élément qui peux aider. Dans la réalité les sons ne sont pas des fréquences...

Première nouvelle qui ne m'aide pas du tout mais vraiment pas du tout (Caractéristiques d’un son : fréquence, intensité, durée ;-)


Cordialement, A+
--
Claudius

Hors ligne

#3 Le 18/02/2014, à 19:21

temps

Re : [résolu] Gestion des événements en C

Bonjour,
Merci pour la réponse, je vais utiliser sleep en bash car j'ai déja testé les fork pour créer un synthétiseur en temps réel, et c'est pas vraiment ça.
Je poste en résolu.
Concernant la précision acoustique, elle n'était pas sans raison, il y a un lien entre les lois de l'acoustique et les effets produits, une sorte de mixage indésirable.

Concernant le dernier lien, je pense pouvoir me permettre de ne pas le suivre, si un jour quelqu'un arrive à modéliser en utilisant un concept de fréquence la voix humaine, la musique, et les sons avec un format audio aussi léger et d'aussi bonne qualité que mon format audio adn, alors je dirai que ce concept de fréquence peut attirer l'attention. Mais comme pour l'instant j'ai mis dans mon application audio la fonction LM qui prouve le contraire, et même j'ai posté sur wikimedia des démonstrations qui prouvent (j'augmente la fréquence en étant de moins en moins aigue, marteau acoustique, ... ) que le concept de fréquence est faux, je ne vais pas suivre le lien.

Mon souci est de donner une application correcte dans le paquet deb (au sens fonctionnelle consommant peu de ressources), pas d'entrer en conflit. Je ne cherche que des informations utiles en répondant de manière courtoise et évite d'affirmer ce que je ne peux prouver.

Cordialement

Dernière modification par temps (Le 19/02/2014, à 07:50)


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 18/02/2014, à 20:41

temps

Re : [résolu] Gestion des événements en C

Bonjour,
Je viens de faire plusieurs tests et au résultat, c'est que ce sont les derniers sons ajoutés qui posent problèmes.
C'est ma manière de construire tel son de guitare, ou tel son de piano, qui fait apparaître ces effets acoustiques. J'ai testé en reconstruisant le même son en utilisant mon ancienne technique (le même son peut être produit de différentes manière voir la démo sur le son "b") et j'ai retrouvé les effets désirés.

Actuellement, j'ai deux solutions différentes, soit la temporisation, soit la forme des fronts. Comme la bibliothèque est encore en construction, je choisis la deuxième solution.

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