Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

7 - Développer/Traduire/Documenter/Annoncer une application

Dernier post

splitvinyl version 0.01

cjpsimon utilisateur non connecté
Bonsoir à tous.

Pour tous ceux que cela intéresse :

le code source de la version 0.01 de splitvinyl est accessible sur le site https://sites.google.com/site/splitvinyl/ (je n'ai pas réussi à poster sur linuxMAO mrgreen.

On peut charger, compiler et tester cette version. Je l'ai testée sur des fichiers wav et ogg.

Cette version ne fait que rechercher les plages blanches et non blanches d'un fichier son. Elle ne réalise pas encore le découpage.

Usage : splitvinyl file options
file : sound file name
options : -m file meta data file name : album info
-p path path to put generated files : one file by title
-t sec minimum amount of blanks between titles in seconds
-f factor max sound for blank : between 0.O and 1.0
-b sec keep sec sound at blank beginning except for blank head
-e sec keep sec sound at blank ending except for blank tail
-c crescent sound for time_begin
-d decrescent sound for time_begin
-s n album side : n = 1 => first side, n = 2 => second side

Seul les paramètres file et options -t et -f sont actuellement opérationnels.

Le version V 0.02 devrait fournir un diagnostique du fichier son et permettre un premier découpage (approximatif) en autant de fichiers que de titres.

Les critiques mêmes acerbes mrgreen sont les bienvenues, tant sur le code que sur les fonctionnalités.

Claude Simon

jy_moustache utilisateur non connecté
salut
quelques remarques rapides :
  • un peu plus de commentaires ne ferait pas de mal mais bon moi j'aime bien quand c'est très commenté
  • le code est clair et lisible
  • j'ai lu le principal, scan_blanks.c, je pense que la variable blank_zone est inutile. si tu initialises blank_duration à 0 il suffit de faire blank_duration++ et de tester que blank_duration > blank_min_duration.
  • pour l'instant c'est basique mais y'a pas de raison que ça ne marche pas.

quelles sont les prochaines évolutions prévues ?
jy

jy_moustache utilisateur non connecté
par ailleurs, il existe de méthodes de détection/suppression de craquements éprouvées... faut un peu chercher mais c'est assez simple.
il me semble que c'est juste basé sur la durée du craquement si c'est < qq msec alors c'est un craquement...
jy

cjpsimon utilisateur non connecté
jy_moustache écrit :
salut
quelques remarques rapides :
* un peu plus de commentaires ne ferait pas de mal mais bon moi j'aime bien quand c'est très commenté
* le code est clair et lisible
* j'ai lu le principal, scan_blanks.c, je pense que la variable blank_zone est inutile. si tu initialises blank_duration à 0 il suffit de faire blank_duration++ et de tester que blank_duration blank_min_duration.
* pour l'instant c'est basique mais y'a pas de raison que ça ne marche pas.

quelles sont les prochaines évolutions prévues ?
jy


Bien vu eek, j'ai éliminé deux variables et cela m'a fait gagne quatorze lignes de code.

Pour les commentaires j'en ai ajouté un peu mais j'essaie de ne pas paraphraser le code, sinon on ne sait pas ce qui prévaut du code ou du commentaire twisted.

Je poste les modifs sur https://sites.google.com/site/splitvinyl/ dans la page Code source version 0.01-1


Pour la prochaine version je teste les diagnostiques suivant :
  • zone non blanche trop courte
  • saturation
  • pics
  • saut de sillon

Claude Simon

mysterious utilisateur non connecté France
je suis aussi d'accord avec jy_moustache, un peu plus de commentaires dans le code serait la bienvenue :-)

Sinon,j'ai vu à un moment que tu avais créé une fonction char_to_double ou je ne sait plus quoi, mais il me semble que la fonction double atof(const char *str) doit faire la même chose (ne t'inquiète pas pour le lien, tu tombe sur le site du C++, mais c'est bien une fonction C wink )

My?terious

cjpsimon utilisateur non connecté
mysterious écrit :
je suis aussi d'accord avec jy_moustache, un peu plus de commentaires dans le code serait la bienvenue :-)

Sinon,j'ai vu à un moment que tu avais créé une fonction char_to_double ou je ne sait plus quoi, mais il me semble que la fonction double atof(const char *str) doit faire la même chose (ne t'inquiète pas pour le lien, tu tombe sur le site du C++, mais c'est bien une fonction C wink )

My?terious


Merci pour tes remarques.

J'ai ajouté quelques commentaires dans scan_blanks .

Pour les fonctions de conversion, j'ai préféré pouvoir tester la validité des données. La fonction atof retourne 0.0 et atoi retourne 0 dans le cas d'une mauvaise saisie, ce qui n'est pas le meilleur choix dans ce contexte à mon humble avis. Le C ne gère pas les exceptions hélas.

PS : Je ne suis pas un spécialiste du C (bien que l'ayant utilisé très souvent) et je ne possède pas de manuel de référence mrgreen. J'essaie seulement d'être portable, donc je reste basique.

Claude Simon

jy_moustache utilisateur non connecté
autre remarque, pour detecter que tu es dans du silence ou dans du son il faudrait que tu crées une fonction.
la boucle for est dans scan_blanks puis tu fais appel à ta fonction de comparaison.

l'avantage c'est la modularité, si un jour tu changes ta fonction de détection, il suffit de changer l'appel.
tu pourrais meme encore faire plus souple par la suite....
:-)

jy

cjpsimon utilisateur non connecté
jy_moustache écrit :
autre remarque, pour detecter que tu es dans du silence ou dans du son il faudrait que tu crées une fonction.
la boucle for est dans scan_blanks puis tu fais appel à ta fonction de comparaison.

l'avantage c'est la modularité, si un jour tu changes ta fonction de détection, il suffit de changer l'appel.
tu pourrais meme encore faire plus souple par la suite....
:)

jy


Je suis assez d'accord avec ça. J'ai même pensé à faire un système de hook basé sur des plugins. Mais dans un premier temps je me concentre sur le possible, pour le souhaitable, je verrais plus tard. Quand j'atteindrais les 5000 lignes de code, j'envisagerais une réorganisation totale. Et je changerais peut-être de langage de programmation.

En ce moment je teste une possibilité intéressante :
j'examine le ratio de blancs dans les zones non blanches ainsi que la durée de la zone. Avec ces deux critères j'arrive à éliminer les zones trop courtes ou trop blanches pour être du son. Il ne restera plus qu'à les fusionner avec les zones blanches adjacentes. J'ai testé cela sur une plage de disque pas mal abimée et çà marche nickel. L'intérêt est que je n'ai pas besoin de faire d'analyse poussée du son.

Et en plus j'arrive à affiner les limites des zones au centième de seconde simplement en abaissant le plafond du blanc et en prenant un ratio de blanc supérieur à 99%, je peux fusionner toutes mes zones et obtenir un découpage impécable au centième de seconde. C'est largement au delà de mes besoins.

J'espère que je ne me suis pas trompé dans mon code. Je vais vérifier cela sur d'autres enregistrements dans les jours qui viennent. Si c'est confirmé, j'aurais une bonne base pour continuer. Je posterais le code en version 0.02 lol

A plus.

Claude Simon

jy_moustache utilisateur non connecté
content que ca marche et que ca corresponde à tes besoins :-)
Citation :
Quand j'atteindrais les 5000 lignes de code, j'envisagerais une réorganisation totale
vaudrait mieux tout organiser avant parce que c'est très chronophage la réorganisation...

jy

cjpsimon utilisateur non connecté
jy_moustache écrit :
content que ca marche et que ca corresponde à tes besoins :-)
Citation :
Quand j'atteindrais les 5000 lignes de code, j'envisagerais une réorganisation totale
vaudrait mieux tout organiser avant parce que c'est très chronophage la réorganisation...

jy


Merci de ton soutient.

Je sais tout cela, j'ai 43 ans de développement logiciel derrière moi mrgreen. Je suis seulement novice dans tout ce qui concerne le son. Mais j'ai pas mal appris ces derniers jours ideaeek

Claude Simon

PS : pour le fichier des infos des albums, je dois décider du format. Je pense à XML, mais est-ce que quelqu'un sait ce qui se fait pour ce genre d'info. J'essaie de ne pas réinventer la roue.

jy_moustache utilisateur non connecté
Citation :
j'ai 43 ans de développement logiciel derrière moi

waou ! eek t'as donc commencé à coder en 1968 !!! t'es un vieux de la vieille alors !!! wink

regarde du côté du format des tags ID3 (v1 et v2) qui sont utilisé pour le mp3, où sinon du côté de musicbrainz qui est une base de données sur ce genre d'infos....

http://fr.wikipedia.org/wiki/ID3
http://musicbrainz.org/

jy

cjpsimon utilisateur non connecté
jy_moustache écrit :
Citation :
j'ai 43 ans de développement logiciel derrière moi

waou ! eek t'as donc commencé à coder en 1968 !!! t'es un vieux de la vieille alors !!! wink

regarde du côté du format des tags ID3 (v1 et v2) qui sont utilisé pour le mp3, où sinon du côté de musicbrainz qui est une base de données sur ce genre d'infos....

http://fr.wikipedia.org/wiki/ID3
http://musicbrainz.org/

jy


Et oui, un vieux de la vielle mrgreen

Merci pour les liens.

J'ai regardé les tags ID3.
J'ai regardé ce que faisait Audacity quand on exporte un fichier audio, il renseigne un fichier XML.

Je crois que je vais partir sur cette piste.
Mon problème concerne les formats audio et ce qu'ils permettent comme tags. Je vais surement devoir me limiter a un petit sous-ensemble de tags compatible avec lib sndfile que j'utilise mrgreen

D'autre part la lib sndfile ne gère pas le MP3. Ce format est-il indispensable aujourd'hui ?
Je peux toujours le remplacer par du OGG.

Il faut donc que je fasse les tests de formats audio pour savoir ce qu'ils permettent comme tag.

Encore du travail en perspectivetwisted

jy_moustache utilisateur non connecté
ben le mp3 ca reste un peu la base même si la qualité n'est pas forcément au rendez-vous...

Afficher les articles :
Aller au forum :

Documentation [Afficher / Cacher]

Connexion
[Afficher / Cacher]

sub26nico


Mégaphone [Afficher / Cacher]

sub26nico, 20:38, ven. 17 Nov 2017: Salut et bienvenue à caline10mao :-)
sub26nico, 18:33, jeu. 16 Nov 2017: Salut et bienvenue à BlackVelvet :-)
sub26nico, 13:47, jeu. 16 Nov 2017: Salut et bienvenue à RnoxMadTan :-)
sub26nico, 23:32, mer. 15 Nov 2017: Salut et bienvenue à niconico :-)
sub26nico, 23:53, mar. 14 Nov 2017: Salut et bienvenue à jpcima :-)
olinuxx, 17:25, dim. 12 Nov 2017: Bonjour et bienvenue à loik56 :-)
sub26nico, 14:52, dim. 12 Nov 2017: Salut et bienvenue à NahMecl :-)
sub26nico, 01:23, dim. 12 Nov 2017: Salut et bienvenue à pitoufo3 :-)
olinuxx, 18:47, sam. 11 Nov 2017: bonjour et bienvenue à jmtrivial et à pacorabano :-)
sub26nico, 09:20, sam. 11 Nov 2017: Salut et bienvenue à sincosta et SamanTortega :-)
bluedid29, 00:04, sam. 11 Nov 2017: Merci m2v2 ;)
m2v2, 10:53, ven. 10 Nov 2017: @bluedid29 : j'ai ajouté s/pdif ok dans m-audio 2496