Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| problèmes entre file_load et sound! | |
| | Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: problèmes entre file_load et sound! Sam 9 Mai 2015 - 10:18 | |
| Bonjour à tous! J'ai des soucis avec sound, et je ne sais pas ce qui se passe. Peut-être que quelqu'un peut m'éclairer! Je peux charger dans 2 picture une même image, mais je ne peux pas charger un même son dans 2 sound: voici des exemples: - Code:
-
picture 1 picture 2:left 2,200 file_load 1,"c:\mesprog\bouton.jpg" file_load 2,"c:\mesprog\bouton.jpg"
" /> Là on voit la même image dans les 2 pictures. Maintenant essayez avec soit un fichier wav soit un fichier mp3 comme ceci: - Code:
-
sound 1 sound 2 file_load 1,"C:\mesprog\Zynth\Inst\Antistatic\C1.wav" file_load 2,"C:\mesprog\Zynth\Inst\Antistatic\C1.wav"
ou - Code:
-
sound 1 sound 2 file_load 1,"C:\mesprog\C1.mp3" file_load 2,"C:\mesprog\C1.mp3"
Là, on obtient l'erreur " (99) Impossible to load the FILE. Line: 4." Je n-y comprend rien. D'autre part, je suis en train de mettre au point un petit programme de musique où j'essaye de faire jouer plusieurs sound simultanément et je tombe régulièrement sur la même erreur. Je vous met pour essai sur mon web dav le dossier zynth.zip avec une première ébauche de mon programme. Il devrait pouvoir jouer jusqu'à 8 sound en même temps. Sur l'image ci-dessous, on sélectionne colonne 1 trois sound, ici un sol mineur, puis 13ème colonne, un fa tout seul, puis on appuie sur le bouton start. Le programme joue bien le sol mineur avec les trois sound en même temps, mais quand il arrive sur le fa, qui n'est pourtant pas le même fichier, on a l'erreur " (99) Impossible to load the FILE. Line: 4." " /> Voilà, si quelqu'un comprend pourquoi, j'en serais très heureux. A moins que ce ne soit encore un bug de panoramic! A+ | |
| | | Mumu
Nombre de messages : 176 Localisation : 45 Date d'inscription : 20/12/2012
| Sujet: Re: problèmes entre file_load et sound! Sam 9 Mai 2015 - 16:04 | |
| Bonjour Bignono
Euh.. juste une idée en passant et sans savoir... Une image on la lit point barre. tandis qu'un son, la lecture est par définition évolutive, donc tributaire d'un pointeur ou assimilé. Peut être que le fichier son est allergique à ça... ? A moins que ce ne soit Panoramic...
Edit
Allergique à plusieurs pointeurs simultanés | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: problèmes entre file_load et sound! Sam 9 Mai 2015 - 17:52 | |
| Salut bignono Je viens de faire quelques tests avec SOUND et FILE_LOAD. - Code:
-
sound 1 sound 2 file_load 1,"C:\mesprog\Zynth\Inst\Antistatic\C1.wav" file_load 2,"C:\mesprog\Zynth\Inst\Antistatic\C1.wav" Il s’est avéré que pour le 2ème SOUND le fichier chargé par le 1er SOUND est en cours d’utilisation et on ne peut plus le réutiliser pour un autre SOUND tant qu’il est ouvert dans SOUND 1 : je crois que c’est un bug. Pour contourner cet obstacle : • Charger le 1er fichier dans SOUND 1 • Copier (dupliquer) ce même fichier sous un autre nom • Charger ce nouveau fichier dans SOUND 2 • A la fin du traitement , supprimer la copie du fichier Si ce n’est pas clair, voici le code qui marchera j’espère ! - Code:
-
sound 1 sound 2 file_load 1,"C:\mesprog\Zynth\Inst\Antistatic\C1.wav" ' copier ce fichier sous un autre nom file_copy "C:\mesprog\Zynth\Inst\Antistatic\C1.wav","C:\mesprog\Zynth\Inst\Antistatic\C1_copy.wav" ' charger dans SOUND 2 la copie du fichier file_load 2, "C:\mesprog\Zynth\Inst\Antistatic\C1_copy.wav" ' traitements ' ... delete 2 : ' Détruire l'objet pour libérer le fichier ouvert ' Détruire la copie file_delete "C:\mesprog\Zynth\Inst\Antistatic\C1_copy.wav"
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: problèmes entre file_load et sound! Sam 9 Mai 2015 - 19:28 | |
| J’ai téléchargé le ZIP et après essai, j’ai modifié le code. Fais un test pour voir s’il fonctionne comme il faut. Les ajouts sont dans les lignes suivantes : Ligne 3, Lignes 27 à 35 Ligne 48 - Code:
-
dim rep$:rep$="C:\mesprog\Zynth\":dir_change rep$ dim i,j,k,p,q,x,y,f$,inst$,nt$,not$(8) dim copie$ : ' ======================================================== Papydall label ecrit,change,joue,pattern,song,playing clavier():listesynth() sound 10:for i=11 to 18:sound i:not$(i-10)="":next i timer 100:timer_off 100:timer_interval 100,125:on_timer 100,playing end
song: return
playing: timer_off 100 ' message q j=j+21:k=k+1:if k=66 then k=2:j=56 left 4,j for i=2 to 41 nt$=dir_current$+"\"+inst$+"\" if grid_read$(3,i,k)<>"" p=92-i note():' file_load 10,nt$:play 10 if q<9 not$(q)=nt$ ' message nt$:message not$(q)+" - "+not$(1) ' delete q+10:sound q+10 ' ===================================================================== Papydall ' On duplique le fichier en le recopiant sous le nom xxx...xxx_copy.wav copie$ = mid$(nt$,1,len(nt$)-4) + "_copy"+ right$(nt$,4) if file_exists(copie$) = 0 file_copy nt$,copie$ end_if ' On charge la copie file_load q+10,copie$ : q = q + 1 ' ================================================================= FIN Papydall end_if end_if next i if not$(8)<>"" then play 18:not$(8)="":q=q-1 if not$(7)<>"" then play 17:not$(7)="":q=q-1 if not$(6)<>"" then play 16:not$(6)="":q=q-1 if not$(5)<>"" then play 15:not$(5)="":q=q-1 if not$(4)<>"" then play 14:not$(4)="":q=q-1 if not$(3)<>"" then play 13:not$(3)="":q=q-1 if not$(2)<>"" then play 12:not$(2)="":q=q-1 if not$(1)<>"" then play 11:not$(1)="":q=q-1 ' On détruit la copie : =============================================== Papydall if file_exists(copie$) > 0 then file_delete copie$ : ' ============= Papydall timer_on 100 return
pattern: if caption$(6)="START" j=35:k=1:q=1:show 4:caption 6,"STOP":timer_on 100 else hide 4:caption 6,"START":timer_off 100 end_if return
joue: p=number_click:nt$=dir_current$+"\"+inst$+"\" if p=3 then p=92-y note() file_load 10,nt$:play 10 return
change: inst$=item_read$(9,item_index(9)) caption 1," "+str$(item_index(9))+" - "+inst$ return
ecrit: caption 0,"ligne = " + str$(grid_y_to_row(3,mouse_y_position(3)))+" colonne = " + str$(grid_x_to_column(3,mouse_x_position(3))) x=grid_x_to_column(3,mouse_x_position(3)):y=grid_y_to_row(3,mouse_y_position(3)) if grid_read$(3,y,x)="" grid_write 3,y,x,chr$(219)+chr$(219):gosub joue else grid_write 3,y,x,"" end_if return
sub note() select p case 51:nt$=nt$+"A0.wav" case 52:nt$=nt$+"Bb0.wav" case 53:nt$=nt$+"B0.wav" case 54:nt$=nt$+"C1.wav" case 55:nt$=nt$+"Db1.wav" case 56:nt$=nt$+"D1.wav" case 57:nt$=nt$+"Eb1.wav" case 58:nt$=nt$+"E1.wav" case 59:nt$=nt$+"F1.wav" case 60:nt$=nt$+"Gb1.wav" case 61:nt$=nt$+"G1.wav" case 62:nt$=nt$+"Ab1.wav" case 63:nt$=nt$+"A1.wav" case 64:nt$=nt$+"Bb1.wav" case 65:nt$=nt$+"B1.wav" case 66:nt$=nt$+"C2.wav" case 67:nt$=nt$+"Db2.wav" case 68:nt$=nt$+"D2.wav" case 69:nt$=nt$+"Eb2.wav" case 70:nt$=nt$+"E2.wav" case 71:nt$=nt$+"F2.wav" case 72:nt$=nt$+"Gb2.wav" case 73:nt$=nt$+"G2.wav" case 74:nt$=nt$+"Ab2.wav" case 75:nt$=nt$+"A2.wav" case 76:nt$=nt$+"Bb2.wav" case 77:nt$=nt$+"B2.wav" case 78:nt$=nt$+"C3.wav" case 79:nt$=nt$+"Db3.wav" case 80:nt$=nt$+"D3.wav" case 81:nt$=nt$+"Eb3.wav" case 82:nt$=nt$+"E3.wav" case 83:nt$=nt$+"F3.wav" case 84:nt$=nt$+"Gb3.wav" case 85:nt$=nt$+"G3.wav" case 86:nt$=nt$+"Ab3.wav" case 87:nt$=nt$+"A3.wav" case 88:nt$=nt$+"Bb3.wav" case 89:nt$=nt$+"B3.wav" case 90:nt$=nt$+"C4.wav" end_select end_sub
sub clavier() form 1:border_small 1:width 1,screen_x-180:height 1,height(0)+80 height 0,300:top 0,height(1):color 0,50,65,100 command_target_is 1 picture 2:full_space 2:color 2,70,80,85 ' Le clavier de 3 octaves 1/4 ==> ****** [ objets PICTURE de 51 à 90 ] ****** ' touches blanches j=500 for k=0 to 3:for i=1 to 12 if i<>2 and i<>5 and i<>7 and i<>10 and i<>12 and j>20 p=50+i+k*12 if p=56 or p=61 or p=63 or p=68 or p=73 or p=75 or p=80 or p=85 or p=87 j=j-6:picture p:color p,255,255,255:width p,48:height p,23:top p,j:j=j-18 else picture p:color p,255,255,255:width p,48:height p,17:top p,j:j=j-18 end_if on_click p,joue:' sound p+50 end_if next i:next k ' touches noires j=500 for k=0 to 3:for i=1 to 12 if i<>2 and i<>5 and i<>7 and i<>10 and i<>12 and j>20 p=50+i+k*12 if p=56 or p=61 or p=63 or p=68 or p=73 or p=75 or p=80 or p=85 or p=87 j=j-24 else j=j-18 end_if else if i=2 or i=5 or i=7 or i=10 or i=12 and j>48 p=50+i+k*12:picture p:color p,10,10,20:width p,40:height p,12:top p,j+12 on_click p,joue:' sound p+50 end_if end_if next i:next k ' la grille grid 3:left 3,49:top 3,30:height 3,490:width 3,1348 grid_row 3,41:grid_row_height 3,11:grid_one_row_height 3,1,0.01:grid_one_row_height 3,2,17 grid_column 3,65:grid_column_width 3,20:grid_one_column_width 3,1,0.01 font_name 3,"Terminal":font_size 3,12:font_color 3,255,120,255 on_click 3,ecrit print_target_is 2:font_name 2,"Lucida Console":font_bold 2:2d_target_is 2 for i=1 to 64:print_locate i*21+34,20:print i:next i for i=1 to 64:2d_circle i*21+40,12,5:2d_flood i*21+40,12,0,130,0:next i 2d_flood 61,12,200,0,0 picture 4:width 4,10:height 4,10:top 4,7 image 5:2d_image_copy 5,56,7,66,17:2d_target_is 4:2d_image_paste 5,0,0:hide 4 2d_target_is 2:2d_flood 61,12,0,130,0 button 6:width 6,50:top 6,3:caption 6,"START":on_click 6,pattern end_sub
sub listesynth() ' la liste des instruments form 8:border_small 8:left 8,width(1):width 8,screen_x-width(1):height 8,height(1) command_target_is 8 list 9:full_space 9:color 9,128,255,255 dir_change "C:\mesprog\Zynth\Inst\" f$=file_find_first$ repeat if f$<>"." and f$<>".." then item_add 9,f$ f$=file_find_next$ until f$="_" file_find_close inst$="Antistatic" on_click 9,change end_sub
| |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: problèmes entre file_load et sound! Dim 10 Mai 2015 - 10:17 | |
| Bonjour Papydall Oui, effectivement cela fonctionne en faisant une copie du fichier. Mais le fichier copie$ n'est jamais supprimé dans le répertoire! Mais je viens juste de comprendre pourquoi. Donc je vais creuser pour essayer de résoudre mon problème. Mais effectivement, je pense qu'il y a un bug avec sound car je ne vois pas pourquoi un même fichier ne peut être utilisé par plusieurs sound! A moins que ce ne soit voulu par Jack, auquel cas je ne pourrais pas pousser mon programme plus loin. Merci de ton aide Papydall, et A + | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: problèmes entre file_load et sound! Dim 10 Mai 2015 - 10:30 | |
| C'est clair, c'est assurément un bug dans la gestion du fichier (qui devrait être libéré après chargement) | |
| | | Invité Invité
| Sujet: Re: problèmes entre file_load et sound! Dim 10 Mai 2015 - 12:39 | |
| Bonjour,
Personnellement j'ai un problème sur mon ordi: si un fichié est sélectionné par la souris sans qu'il soit cliqué, Panoramic ne peut sauvegardé. Est-ce que le faite de faire une copie, fait qu'il n'y a pas de sélection, et que ça fonctionne? |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: problèmes entre file_load et sound! Dim 10 Mai 2015 - 13:06 | |
| Je pense (et c'est à confirmer par Jack) que Panoramic joue un fichier son par l'API "sndPlaySound", ou par la fonction Delphi du même nom qui ne fait rien d'autre que d'appeler cet API.
Or, cette fonction est appelée avec certaines options, dont une est SND_ASYNC qui permet de lancer le son et de le jouer, alors que le programme continue. C'est le mode "asynchrone". On arrête le son en spécifiant un nouveau ou en passant un 0 ou un pointeur nul comme nom de son (chaîne de caractères vide).
Ceci implique que le fichier doit rester ouvert par Windows (et pas par Panoramic !) pour que le son puisse être joué, et ce jusqu'à ce qu'on ferme le son. Ceci explique le blocage sur le fichier. Il ne s'agit pas d'un bug Panoramic, mais du fonctionnement normal de Windows.
Solution: seule la duplication est techniquement possible, puisque dans ce cas, chaque son joué sera dans on propre fichier. Ou alors, attaquer par les APIs par l'interface DLL... | |
| | | Contenu sponsorisé
| Sujet: Re: problèmes entre file_load et sound! | |
| |
| | | | problèmes entre file_load et sound! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |