FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Philharmusique
Lecteur de musique Emptypar jjn4 Aujourd'hui à 13:58

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Lecteur de musique Emptypar papydall Hier à 16:57

» PANORAMIC V 1
Lecteur de musique Emptypar papydall Hier à 3:22

» select intégrés [résolu]
Lecteur de musique Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Lecteur de musique Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Lecteur de musique Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Lecteur de musique Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Lecteur de musique Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Lecteur de musique Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Lecteur de musique Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Lecteur de musique Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Lecteur de musique Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Lecteur de musique Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Lecteur de musique Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Lecteur de musique Emptypar jjn4 Ven 26 Avr 2024 - 17:39

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

 

 Lecteur de musique

Aller en bas 
2 participants
AuteurMessage
jjn4

jjn4


Nombre de messages : 2705
Date d'inscription : 13/09/2009

Lecteur de musique Empty
MessageSujet: Lecteur de musique   Lecteur de musique EmptySam 1 Juil 2023 - 20:13

Ce programme est plutôt un exercice de style, pour s'amuser.
Une sorte de devoir de vacances, pour ne pas perdre la main.
C'est l'équivalent d'un lecteur de CD,
sauf que les CD ont été enregistrés sur disque dur ou clé USB.
Et ça a l'avantage d'être en langage panoramic !
Choisissez un répertoire où il y a des mp3,
et c'est parti pour l'écoute votre musique préférée !
Lecteur de musique Lm12
Si vous ne trouvez pas un tel répertoire dans votre machine,
j'ai inclu une douzaine de morceaux qui accompagne ce pg.

(il est sur le website d'identifiant panoramic@jjn42)
Bonne relaxation musicale !
geek
PS: Et souvenez-vous à quel point j'adore les tiroirs secrets de façon immodérée...
Laughing Laughing Laughing


Dernière édition par jjn4 le Mar 12 Sep 2023 - 17:59, édité 3 fois
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
jjn4

jjn4


Nombre de messages : 2705
Date d'inscription : 13/09/2009

Lecteur de musique Empty
MessageSujet: Re: Lecteur de musique   Lecteur de musique EmptySam 1 Juil 2023 - 21:06

En fait, ce programme comporte un petit problème que je ne sais pas résoudre :
J'ai applique ce qu'on m'a conseillé, remplaçant le play_wait par un simple play
avec calcul de la durée du mp3 afin d'arrêter l'écoute au bon moment
tout en pouvant faire plein d'autres opérations (arrêter, passer au suivant...).
study
Pour cela, j'ai repris la formule que Marc m'avait donnée durant la construction
du programme Philharmusique - voir l'adresse suivante :
https://panoramic.1fr1.net/t6763-defi-mp3
J'y avais déjà remarqué qu'il y avait quelquefois des erreurs, mais comme c'était
rare et que cela ne faisait que rajouter à des faibles durées, j'avais trouvé cela sans importance.
Mais là, pour des mp3 plus longs, je me retrouve avec des différences de temps importantes,
ce qui est plus gênant.
affraid
Par exemple :
(j'ai accompagné mon logiciel de 12 mp3 à titre d'illustration)
et j'en ai rajouté deux autres pour montrer l'inconvénient décrit ci-dessus :
Albrechtsberger Johann Georg 12 Préludes.mp3
Hear my prayer by Mendelssohn.mp3
Le premier dure 19 min 52 sec
et le deuxième : 11 min 56 sec.
Mais la formule utilisée donne :
31 min 49 sec pour le premier
et 19 min 07 sec pour le second,
11 min et 57 sec de différence pour le premier
et 07 min 11 sec de trop pour le 2°.
Et le pire est que cela arrive très souvent !
(je me demande si ceux avec qui cela fait cela ne sont pas
des mp3 que j'ai chopés sur Internet ?)
scratch scratch scratch
J'ai beau essayer de voir comment résoudre ce problème, mais...
Le problème a l'air de venir de la routine suivante :
(voir le listing de Lecteur-musique)
Code:
sub calcul() : rem Calcul de la durée du morceau de musique ===================
   dim_local octet1$, octet2$, octet3$, octet4$, index%
   dim_local quartet$, debit%, longueurAudio%, duree%
   filebin_open_read 1,CDR$+caption$(150)
      while octet1$ <> "FF"
         filebin_hexa_read 1,1,octet1$
         if octet1$ = "FF"
            filebin_hexa_read 1,1,octet2$
            if left$(octet2$,1) = "E" or left$(octet2$,1) = "F"
               filebin_hexa_read 1,1,octet3$
               filebin_hexa_read 1,1,octet4$
               exit_while
            end_if  
         end_if
         octet1$ = ""
      end_while
      index% = filebin_pos(1)
      longueurAudio% = filebin_size(1) - index%
   filebin_close 1
   quartet$ = left$(octet3$,1)
   debit% = BITRATE%(hex(quartet$)) * 1000
   duree% = int(longueurAudio% * 8 / debit%)
   DT%=duree%
   M% = int(duree%/60)
   S% = ((duree%/60)-M%) * 60
   caption 200,str$(M%)+" Min  "+str$(S%)+" Sec"+string$(20," ")+"N° 1/"+str$(count(50))
end_sub
scratch scratch scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2392
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Lecteur de musique Empty
MessageSujet: Re: Lecteur de musique   Lecteur de musique EmptyDim 2 Juil 2023 - 0:02

Bonsoir à tous !

JJN4 a écrit:
Mais là, pour des mp3 plus longs, je me retrouve avec des différences de temps importantes,
ce qui est plus gênant.

Oui, c’est normal !
Dans l’article https://panoramic.1fr1.net/t6763-defi-mp3, j’ai bien précisé que :
Marc a écrit:
Le programme ne fonctionne qu’avec un MP3 contenant qu’un seul et unique fichier audio de type MPEG version 1 (ISO/IEC 11172-3) layer III.

Or, le fichier «Albrechtsberger Johann Georg 12 Préludes.mp3 » est un MPEG version 1 layer I.

Ce n’est pas la même table de débit binaire ce qui explique le mauvais calcul de durée.

Pour remédier à cela, je vais ajouter la prise en charge des :
- MPEG 1 layer I
- MPEG 1 layer II
- MPEG 2 layer I
- MPEG 2 layer II
- MPEG 2 layer III
- MPEG 2.5 layer I
- MPEG 2.5 layer II
- MPEG 2.5 layer III

... et, si je ne me trompe pas, tout devrait rentrer dans l'ordre !

Je suis absent dimanche, je le ferai lundi.

Bon week-end à tous !


EDIT :
@JJN4
J’ai essayé ton nouveau programme. Bravo !  cheers
il est sympa avec une belle présentation.

Le légende «Volume»  serait à supprimer, je pense :
Lecteur de musique Jjn4-710


A bientôt !
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2705
Date d'inscription : 13/09/2009

Lecteur de musique Empty
MessageSujet: Re: Lecteur de musique   Lecteur de musique EmptyDim 2 Juil 2023 - 14:37

Marc a écrit:
Le légende «Volume» serait à supprimer
Effectivement, petit oubli de remise à zéro d'une variable...
Je corrigerai à la prochaine version.
Merci de tes remarques et aussi d'avance pour ton aide !
cheers alien sunny
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2392
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Lecteur de musique Empty
MessageSujet: Re: Lecteur de musique   Lecteur de musique EmptyLun 3 Juil 2023 - 18:22

Bonjour à tous !

@JJN4

Voici une nouvelle version pour le calcul de la durée d’un fichier MP3.

A tester !
Code:
' Durée fichier audio MP3
' Marc - Juillet 2023
' Ecrit en langage PANORAMIC 0.9.29.i9

dim buffer%(32), bitRate%(16,2), l%, c%, stringHexa$, nomFichier$, tailleFichier%, index%
dim longueurTagID3v1%, longueurTagID3v2%

label ouvrirFichierMP3

' MPEG 1 layer III
data 0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,0

' MPEG 2 et 2.5 layer III
data 0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,0

' Charger les datas ci-dessus dans le tableau bitRate%(a,b)
for c% = 1 to 2
    for l% = 0 to 15
        read bitRate%(l%,c%)
    next l%
next c%

interfaceUtilisateur()

end
' ------------------------------------------------------------------------------
sub interfaceUtilisateur()
    button 1
    top 1,20
    left 1,200
    caption 1,"MP3"
    on_click 1,ouvrirFichierMP3
  
    open_dialog 2
    filter 2,"Fichier MP3 (*.mp3)|*.mp3"
end_sub
' ------------------------------------------------------------------------------
ouvrirFichierMP3:
    nomFichier$ = file_name$(2)

    if nomFichier$ = "_"
        return
    end_if

    ' ouvrir le fichier sélectionné en lecture
    filebin_open_read 10,nomFichier$

    RechercherPresenceTagID3v1()
    RechercherPresenceTagID3v2()
    RechercherEnteteMPEG()
return
' ------------------------------------------------------------------------------
sub RechercherPresenceTagID3v1()
    longueurTagID3v1% = 0
    index% = filebin_size(10) - 128
    filebin_position 10,index%
    stringHexa$ = filebin_hexa_read$(10,128)

    if left$(stringHexa$,6) = "544147"
        longueurTagID3v1% = 128    
    end_if
end_sub
' ------------------------------------------------------------------------------
sub RechercherPresenceTagID3v2()
    index% = 0
    longueurTagID3v2% = 0
    filebin_position 10,index%
    stringHexa$ = filebin_hexa_read$(10,10)

    if left$(stringHexa$,6) = "494433" :' "ID3" en hexa
        ' calcul de la longueur du tag ID3v2. 4 octets codés sur 7 bits. Big-endian
        longueurTagID3v2% = hex(mid$(stringHexa$,13,2)) * power(128,3)
        longueurTagID3v2% = longueurTagID3v2% + hex(mid$(stringHexa$,15,2)) * power(128,2)
        longueurTagID3v2% = longueurTagID3v2% + hex(mid$(stringHexa$,17,2)) * 128
        longueurTagID3v2% = longueurTagID3v2% + hex(mid$(stringHexa$,19,2))
        longueurTagID3v2% = longueurTagID3v2% + 10 :' (10 = les dix octets de l'entête)
    end_if
end_sub
' ------------------------------------------------------------------------------
sub RechercherEnteteMPEG()
    dim_local octet1$, octet2$, octet3$, octet4$, longueurAudio%, quartet$, debit%, duree%, mn%, sec%, versionMPEG%
    
    ' sauter un éventuel tag IDV3 v2
    index% = longueurTagID3v2%
    filebin_position 10,index%

    ' recherche de la séquence de synchronisation composée de 11 bits successifs à 1
    while octet1$ <> "FF"
        filebin_hexa_read 10,1,octet1$
        if octet1$ = "FF" :' les huit premiers bits sont à 1
            filebin_hexa_read 10,1,octet2$
            if left$(octet2$,1) = "E" or left$(octet2$,1) = "F" :' les 3 bits de poids fort sont à 1
                filebin_hexa_read 10,1,octet3$
                filebin_hexa_read 10,1,octet4$
                exit_while
            end_if  
        end_if
        octet1$ = ""
    end_while

    ' calcul de la longueur des données audio MP3
    index% = filebin_pos(10)
    longueurAudio% = filebin_size(10) - index% - longueurTagID3v1%

    ' déterminer la version de MPEG (1, 2 ou 2.5, codée par les bits 3 et 4 de l'octet 2)
    ' test uniquement du bit 3 : s'il est à 0 c'est un MPEG v2 ou v2.5
     versionMPEG% = (bin_and(hex(octet2$),8))
     if versionMPEG% = 8
         versionMPEG% = 1
     else
         versionMPEG% = 2
     end_if
    
    ' Déterminer la version de layer (I, II ou III, codée par les bits 1 et 2 de l'octet 2)
    ' La version de layer n'est pas recherchée : la norme MP3 impose le layer III

    ' Déterminer le débit binaire
    quartet$ = left$(octet3$,1)
    debit% = bitRate%(hex(quartet$),versionMPEG%) * 1000

    ' calcul de la durée
    duree% = longueurAudio% * 8 / debit%

    mn% = int(duree%/60)
    sec% = ((duree%/60)-mn%) * 60
    
    print "Durée estimée : " + str$(mn%) + "min " + str$(sec%) + "s"

    ' fermer le fichier binaire
    filebin_close 10

end_sub
' ------------------------------------------------------------------------------

EDIT ce jour à 21h40 :
J’ai modifié le code source ci-dessus pour pouvoir effectuer plusieurs mesures d’affilées (remise à zéro de deux variables).

Dans la SUB RechercherPresenceTagID3v1()
=> Ajout en début de sub : longueurTagID3v1% = 0

Dans la SUB RechercherPresenceTagID3v2()
=> Ajout en début de sub : longueurTagID3v2% = 0


Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2705
Date d'inscription : 13/09/2009

Lecteur de musique Empty
MessageSujet: Re: Lecteur de musique   Lecteur de musique EmptyMar 4 Juil 2023 - 16:12

Super !!!
Là, ça marche impecc !!!!!
Merci et Bravo, Marc !!!!
Très fort !!!
cheers cheers cheers
Et bonne écoute à tous !
jocolor geek santa flower king
Et une petite question de type Laughing Laughing Laughing Laughing Laughing Laughing Laughing
(combien y a-t-il de tiroirs secrets dans ce programme ?)
lol! lol! lol!
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2392
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Lecteur de musique Empty
MessageSujet: Re: Lecteur de musique   Lecteur de musique EmptyMer 5 Juil 2023 - 18:53

Bravo JJN 4 !

C’est un bel utilitaire !
Je l’ajouterai à la logithèque Panoramic.

Revenir en haut Aller en bas
Contenu sponsorisé





Lecteur de musique Empty
MessageSujet: Re: Lecteur de musique   Lecteur de musique Empty

Revenir en haut Aller en bas
 
Lecteur de musique
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Un lecteur MP3
» lecteur MP3 aléatoire
» Un lecteur de Ebook...
» un petit lecteur navigateur PDF
» Lecteur PDF open source léger pratique.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: