(1927 - 2013). For half a century Bernard Parmegiani has produced over a hundred major works, more than sixty of which are considered "concert" pieces. Some have defined the progress of electro-acoustic music (Violostries, Jazzex, Capture Ephémère, De Natura Sonorum, Exercismes...), others are quite simply lodged in in the French collective unconscious like the jingle tone at Roissy airport. He has composed innumerable scores for cinema and television, videos, theatre and mime...
The music of Bernard Parmegiani consists of movements, continuums, straight lines, curves, repetitions and distortions...he functions as a genuine sonic designer, an utopian inventor of a music to be watched with the ears and heard with the eyes. He is constantly counterpoising opposites: natural and artificial, acoustic and electro-acoustic, interior and exterior, dense and sparse...The titles of his works explicitly announce this his intention. The interweaving of such notions may lead the listener to the brink of a vertiginous chasm, an aural parallel to Escher's tortuous tessellations. Nonetheless, frequent repetition, impromptu refrains "techno" treatments way ahead of their time, all make his work relatively accessible, easily crossing over into the world of contemporary electronica. Beginning as a sound engineer for French television, Bernard Parmegiani soon joined G.R.M. (Musical Research Group) heartily encouraged by Pierre Schaeffer. His first major work "Violostries" appeared in 1963, a confrontation between sounds extracted exclusively from the violin and a violin soloist. He has explored other fields too: His piece "Jazzex" (1966) is a rare and successful meeting between "musique concrète" and jazz. "Du Pop à l'âne (1968) is an admixture of Pink Floyd bass lines, scattered piano notes, African percussion, church organ...He left GRM in 1992 moving to his own studio « Fabriquasons ». His collaboration with Cézame began in 1995 with «Génériques Potentiels» (CEZ 4009) followed by «Questions de Temps» (CEZ 4021) in 2001. "
Awards received:
Grand Prix du disque 1979
Grand Prix des Compositeurs de la SACEM 1981 - 5ème Victoires de la musique 1989
Prix Magisterium Concours International de Bourges 1991
Chevalier de l'ordre du mérite 1991
Prix « Golden Nica » de Ars Electronica de LINZ 1993
« Coup de Coeur» Académie Charles Cros pour Portrait Polychrome CDMC/INA GRM 2003
Prix du Président de la République de l'Académie Charles Cros pour le coffret CD comportant une grande partie de son oeuvre 2008.
Álbum | Título | Versions | Duração | compositor / artista | Descrição | Palavras chaves | Key | BPM |
|
|
---|---|---|---|---|---|---|---|---|---|---|
|
![]() |
Question de Temps [CEZ4021 - 1] |
0 | 3'13 | Bernard Parmegiani | Accident & disturbing. Tense. Staccato.Drones. | programação música eletroacústica arte contemporânea insetos ... | Fm | 162 |
|
|
![]() |
The Red Grass [MAG6100 - 25] |
0 | 1'58 | Bernard Parmegiani | Electroacoustic, experimental music, cosmic music. Aerial, ... | música eletroacústica atmosférico estranho misterioso ... | Bb | 68 |
|
|
![]() |
The Red Grass [MAG6042 - 1] |
0 | 1'58 | Bernard Parmegiani | Aerial, atmospheric, paranormal & weird. Experimental music. Electro ... | música eletroacústica misterioso atmosférico interrogativo ... | Bb | 68 |
|
|
![]() |
En Phase Hors Phase [CEG5020 - 24] |
0 | 2'28 | Bernard Parmegiani | Haunting, unnerving & bizarre. Suggested for the "mad scientists". ... | hipnótico não classificável mecânico teimoso ... | E | 151 |
|
|
![]() |
Staccanite Aigüe 1 [CEZ4009 - 24] |
1'19 | Bernard Parmegiani | Vibrating & haunting. Electro-acoustic & violin. | música eletroacústica vibrante formigamento teimoso ... | Em | 148 |
|
|
|
![]() |
Staccanite Aigüe 2 [CEZ4009 - 27] |
Alt.. | 1'10 | Bernard Parmegiani | Vibrating & hypnotic. Electro-acoustic & violin. | instrumental | Em | 103 |
|
|
![]() |
Le Temps du Passage [CEZ4021 - 27] |
0 | 1'33 | Bernard Parmegiani | Mysterious. Drones and drop of water. | úmido fx água música eletroacústica arte contemporânea ... | A | 110 |
|
|
![]() |
Cadavre Exquis [MAG6042 - 2] |
0 | 2'48 | Bernard Parmegiani | Mysterious, interrogative & suspended. Electric keyboard & constant ... | música eletroacústica misterioso atmosférico complexo ... | Db | 65 |
|
|
![]() |
Minstrels from Another World [MAG6042 - 4] |
0 | 1'25 | Bernard Parmegiani | Eerie, supernatural & haunting. Electro sound like an harmonica, pads ... | ovni música eletroacústica formigamento insidioso ... | Db | 149 |
|
|
![]() |
Le Temps d'en Rire [CEG5022 - 22] |
0 | 1'06 | Bernard Parmegiani | Very unusual, weird & quirky. Sampled women's laughter & percussion. ... | não classificável terror - horror fx risada psicótico ... | Cm | 120 |
|
|
![]() |
Le Temps Perdu [CEG5022 - 10] |
0 | 1'46 | Bernard Parmegiani | Surreal, worrying & ghostly. Soprano ethereal voice & reverberated ... | terror - horror paranormal psicótico aterrorizante ... | Gbm | 62 |
|
|
![]() |
Le Temps Perdu [CEZ4021 - 25] |
0 | 1'43 | Bernard Parmegiani | Horrror. esoteric. Electro-acoustic. | paranormal aterrorizante música eletroacústica terror - horror ... | Gbm | 98 |
|
|
![]() |
The Bells of Abeth [MAG6042 - 7] |
0 | 4'03 | Bernard Parmegiani | Deep, funereal, surreal & weird. Treated sound of death bell & analog ... | música eletroacústica abismal fx sino da morte metálico ... | Dm | 96 |
|
|
![]() |
Le Temps Installé [CEZ4021 - 17] |
0 | 2'52 | Bernard Parmegiani | Atonal. Experimental. | música eletroacústica arte contemporânea não classificável programação ... | A | 70 |
|
|
![]() |
Alors, Kess? [CEZ4021 - 10] |
0 | 1'26 | Bernard Parmegiani | Sampled vocal. Cycles & sound intrusion. | música eletroacústica fx voz arte contemporânea excêntrico ... | Ebm | 78 |
|
|
![]() |
Le Temps pour Soi [CEZ4021 - 24] |
0 | 2'36 | Bernard Parmegiani | Space. Mysterious. Sci-fi. | música eletroacústica atmosférico complexo suspenso ... | Gbm | 111 |
|
|
![]() |
Ce que Nous Dit la Nuit [CEZ4021 - 4] |
0 | 2'59 | Bernard Parmegiani | Weird. Futuristic. | música eletroacústica barulhento perturbardor programação ... | Bbm | 100 |
|
|
![]() |
L'Espace-Temps [CEZ4021 - 8] |
0 | 4'19 | Bernard Parmegiani | Acceleration & cycles. Drones. | música eletroacústica ficção científica teimoso programação ... | Dbm | 116 |
|
|
![]() |
Un Temps pour Tout [CEZ4021 - 20] |
0 | 1'16 | Bernard Parmegiani | Voices. Keybords & violin. | música eletroacústica excêntrico programação arte contemporânea ... | Abm | 62 |
|
|
![]() |
De Temps en Temps [CEZ4021 - 3] |
0 | 3'00 | Bernard Parmegiani | Horror. Menacing. Extract from 2nd movement of "Violostries". For ... | Música contemporânea música eletroacústica arte abstrata arte contemporânea ... | Gm | 102 |
|
|
![]() |
Tricks of the Mind [CEZ4577 - 12] |
0 | 1'33 | Bernard Parmegiani | Experimental electro. Ominous, weird & mysterious. Sound design. ... | estranho aterrorizante funeral misterioso ... | Cm | 117 |
|
|
![]() |
Infinity and Beyond [MAG6042 - 5] |
0 | 3'33 | Bernard Parmegiani | Space, icy, threatening & toxic. Experimental cosmic music from the ... | drama da natureza suspenso abismal drone ... | Ebm | 82 |
|
|
![]() |
Motorismo [MAG6042 - 17] |
0 | 2'51 | Bernard Parmegiani | Very bizarre, percussive, discontinued & erratic. Treated sounds & ... | 1970 programação caótico estranho ... | Bbm | 133 |
|
|
![]() |
Entropy [MAG6042 - 16] |
0 | 1'53 | Bernard Parmegiani | Erratic, threatening, jerky, chaotic & dislocated. Treated sounds & ... | psicótico teimoso sintetizador analógico urgente ... | Bbm | 129 |
|
|
![]() |
Obsessive Vibrations [MAG6042 - 15] |
0 | 2'36 | Bernard Parmegiani | Constant, agressive & tenacious. Vintage synth with filter fx. ... | teimoso pulsação hipnótico perturbardor ... | B | 135 |
|
|
![]() |
Empty City [MAG6042 - 14] |
0 | 1'50 | Bernard Parmegiani | Suspended, wanderin, punctuated & investigative. Electronic keyboard ... | perturbardor interrogativo música eletroacústica Sinistro ... | C | 111 |
|
|
![]() |
Subtle Radiation [MAG6042 - 13] |
0 | 1'45 | Bernard Parmegiani | Vibrant, abyssal & weird. Vintage analog synth & filter fx. ... | música eletroacústica drama da natureza paranormal sound design ... | Gm | 65 |
|
|
![]() |
The Walls are Speaking [MAG6042 - 12] |
0 | 2'26 | Bernard Parmegiani | Creepy, horrifying & tormented. Treated sound & vintage synth. ... | perturbardor desolado música eletroacústica Sinistro ... | C | 72 |
|
|
![]() |
Urban Tribalism [MAG6042 - 10] |
0 | 2'57 | Bernard Parmegiani | Percussive, bizarre & disjointed. Treated percussion & analog vintage ... | estranho música eletroacústica sintetizador analógico interrompido ... | Ebm | 166 |
|
|
![]() |
Tuning into the Waves [MAG6042 - 9] |
0 | 1'32 | Bernard Parmegiani | Ondulating, repetitive & mechanical. Electro fx evoking the radio ... | música eletroacústica 1960 perturbardor abismal ... | Bm | 67 |
|
|
![]() |
Fairground Dream [MAG6042 - 3] |
0 | 2'12 | Bernard Parmegiani | Dreamy, crystalline, magical, ethereal & bizarre. Experimental music. ... | música eletroacústica brilhante ovni cristalino ... | Ebm | 116 |
|
|
![]() |
Mental Chronometry [MAG6042 - 8] |
0 | 1'13 | Bernard Parmegiani | Urgent, determined & fast. Treated sound f harspichord & sequence ... | música eletroacústica interrogativo programação insidioso ... | Am | 102 |
|
|
![]() |
Tricks of the Mind [MAG6042 - 6] |
0 | 1'33 | Bernard Parmegiani | Ominous, freaky, oddly & obsessive. Experimental electro music from ... | abismal estranho música eletroacústica esperando ... | Fm | 117 |
|
|
![]() |
Impulse and Pulsation [MAG6042 - 11] |
0 | 2'58 | Bernard Parmegiani | Waving, repetitive & obstinate. Vintage modular synth with filter fx. ... | música eletroacústica 1970 perturbardor atmosférico ... | B | 90 |
|
|
![]() |
Ce que Nous dit la Nuit [CEG5015 - 30] |
0 | 3'01 | Bernard Parmegiani | Weird. Futuristic. | espaço música eletroacústica programação floresta tropical ... | Bbm | 147 |
|
|
![]() |
Sekenoudi l'Afrique [CEG5011 - 33] |
0 | 1'14 | Bernard Parmegiani | Fiery, chaotic & bustling. Electronic tablas, sound design & ... | selvagem vivaz África caótico ... | A | 120 |
|
|
![]() |
Infony (part 9) [CEZ4014 - 9] |
0 | 0'07 | Bernard Parmegiani | Sting. descending. Electro-acoustic. | link pausa misterioso descendente ... | Am | 82 |
|
|
![]() |
Infony (part 10) [CEZ4014 - 10] |
0 | 0'16 | Bernard Parmegiani | Link. Percussion & electronic sound. | link metálico suspense indústria ... | Abm | 110 |
|
|
![]() |
Infony (part 11) [CEZ4014 - 11] |
0 | 0'08 | Bernard Parmegiani | Sting. Link. Electro-acoustic. | link pausa final não classificável ... | Am | 129 |
|
|
![]() |
Infony (part 12) [CEZ4014 - 12] |
0 | 0'06 | Bernard Parmegiani | Sting. Ufo. Sci-Fi. Electro acoustic. | pausa espaço não classificável ficção científica ... | Ab | 86 |
|
|
![]() |
Infony (part 13) [CEZ4014 - 13] |
0 | 0'06 | Bernard Parmegiani | Logo. Jingle. Analog synth. | jingle videogame erros de gravação pausa ... | Ab | 124 |
|
|
![]() |
Infony (part 14) [CEZ4014 - 14] |
0 | 0'06 | Bernard Parmegiani | Sting. Percussive. Electro-acoustic. | pausa design e arquitetura indústria complexo ... | Ebm | 113 |
|
|
![]() |
Infony (part 15) [CEZ4014 - 15] |
0 | 0'18 | Bernard Parmegiani | Mechanical & percussive. Electro-acoustic. | indústria link mecânico barulhento ... | Gbm | 90 |
|
|
![]() |
Infony (part 16) [CEZ4014 - 16] |
0 | 0'06 | Bernard Parmegiani | Nervous & eccentric. Electro-acoustic. | pausa não classificável arte contemporânea excêntrico ... | Bb | 178 |
|
|
![]() |
Infony (part 17) [CEZ4014 - 17] |
0 | 0'10 | Bernard Parmegiani | Cosmic & triumphal. Electro-acoustic. | pausa espaço majestoso repentino ... | F | 126 |
|
|
![]() |
Infony (part 18) [CEZ4014 - 18] |
0 | 0'14 | Bernard Parmegiani | Ufo. Retro news. Telex sound & analog synth. | ovni ficção científica notícias de Última Hora filme corporativo ... | D | 104 |
|
|
![]() |
Infony (part 19) [CEZ4014 - 19] |
0 | 0'21 | Bernard Parmegiani | Urgent. Retro news. telex sound & analog synth. | link filme corporativo urgente notícias de Última Hora ... | E | 122 |
|
|
![]() |
Infony (part 2) [CEZ4014 - 2] |
0 | 0'12 | Bernard Parmegiani | Sting. Link. Ufo & Sci-fi. Electro-acoustic. | ovni pausa espaço link ... | Eb | 155 |
|
|
![]() |
Infony (part 20) [CEZ4014 - 20] |
0 | 0'15 | Bernard Parmegiani | Urgent. Retro news. Chronometer fx & analog synth. | fx cronômetro pausa jingle urgente ... | Bm | 103 |
|
|
![]() |
Infony (part 7) [CEZ4014 - 7] |
0 | 0'05 | Bernard Parmegiani | Sting. Finale. Electro-acoustic. | pausa previsão do tempo notícias 1960 ... | Am | 166 |
|
|
![]() |
Infony (part 8) [CEZ4014 - 8] |
0 | 0'14 | Bernard Parmegiani | Link. Ascending. Electro-acoustic. | link 1960 1970 ascendente ... | D | 80 |
|
login
password
Nom
Loading ' + file.name + ' ' + (file.size ? (file.size/1024|0) + 'K' : ''); fichier=file.name; } } //--- //- recog readfiles //--- readfiles = function(files) { var formData = tests.formdata ? new FormData() : null; for (var i = 0; i < files.length; i++) { if (tests.formdata) formData.append('file', files[i]); // previewfile(files[i]); en commentaire pcq nom du fichier pas important et pas beau } // now post a new XHR request if (tests.formdata) { var xhr = new XMLHttpRequest(); xhr.open('POST', '/recog/upload.php'); xhr.onload = function() { progress.value = progress.innerHTML = 100; }; xhr.onloadend = function() { JSONreponse= xhr.responseText.trim(); if(JSONreponse=="ERR"){ spinnerStopCancellable(); $('#progress_external_recommendation_file').hide(); document.getElementById('file_external_recommendation').files = null; document.getElementById('file_external_recommendation_lbl').innerHTML = 'Choose file from your computer'; getAlertDanger("An error has occured, please try again with another file"); }else if(JSONreponse=="ERR_NOT_CONNECTED"){ //jQuery('#infoBoxListePage_connect').show(); TipNotConnected(); }else{ $('#fichiercharge').remove(); $('#chargementde').remove(); $('progress').hide(); spinnerStop(); reponses = JSON.parse(JSONreponse); reponsesMots = reponses.mots; suggestiontitres(files[0].name, 'mp3'); /** SG 21/10/2021 : POUR CACHER LA BOX QD RESULTAT AFFICHÉ **/ if($('.external_recommendationbox').length){ /** SG 22/10/2021 : POUR PROGRESS BAR EXTERNAL_RECOMMENDATION **/ $('#progress_external_recommendation_file').width('100%'); $('.external_recommendationbox').hide(); $('#progress_external_recommendation_file').width('0%'); $('#progress_external_recommendation_file').hide(); $('#file_external_recommendation').val(''); document.getElementById('file_external_recommendation_lbl').innerHTML = 'Drop your file here.'; } } }; if (tests.progress) { $('progress').show(); $('#progress_external_recommendation_file').show(); spinnerStart(); xhr.upload.onprogress = function (event) { if (event.lengthComputable) { var complete = (event.loaded / event.total * 100 | 0); if(complete!=100){ $('#recogdiv').each(function(){$(this).remove();}); } /** SG 22/10/2021 : PR PROGRESS BAR EXTERNAL_RECOMMENDATION **/ if($('#progress_external_recommendation_file').length){ $('#progress_external_recommendation_file').width((event.loaded/event.total*100)+'%'); } progress.value = progress.innerHTML = complete; } } } xhr.send(formData); } } //--- //- recog readfiles //--- readfiles_image = function(files) { var formData = tests.formdata ? new FormData() : null; for (var i = 0; i < files.length; i++) { if (tests.formdata) formData.append('file', files[i]); // previewfile(files[i]); en commentaire pcq nom du fichier pas important et pas beau } // now post a new XHR request if (tests.formdata) { var xhr = new XMLHttpRequest(); xhr.open('POST', '/ajax/get_keywords_from_brief.php'); xhr.onload = function() { progress.value = progress.innerHTML = 100; }; xhr.onloadend = function() { JSONreponse= xhr.responseText.trim(); if(JSONreponse=="ERR"){ spinnerStopCancellable(); $('#progress_external_recommendation_file').hide(); document.getElementById('file_external_recommendation').files = null; document.getElementById('file_external_recommendation_lbl').innerHTML = 'Choose file from your computer'; getAlertDanger("XXXXXAn error has occured, please try again with another file"); }else if(JSONreponse=="ERR_NOT_CONNECTED"){ //jQuery('#infoBoxListePage_connect').show(); TipNotConnected(); }else{ $('#fichiercharge').remove(); $('#chargementde').remove(); $('progress').hide(); spinnerStop(); var parsedRes = JSON.parse(JSONreponse); var div_error = document.getElementById('external_brief_errors'); if ( parsedRes.error !== undefined ) { var txt_error = "Error : "; if ( parsedRes.error == "brief_empty" ) { txt_error += "Your brief is empty"; } else if ( parsedRes.error == "brief_too_long" ) { txt_error += "Your brief is too long, it must be 1000 characters long maximum"; } div_error.innerHTML = txt_error; div_error.style.display = 'block'; spinnerStop(); } else { div_error.innerHTML = ''; div_error.style.display = 'none'; var responseJSON = parsedRes; var response = responseJSON; var url = "/liste_resultats.php?"; var params = []; var tab_mots = []; for( var valou of response ) { params.push("mot[]=" + encodeURI(valou + "@@@@" + valou + "@@@@" + valou)); tab_mots.push(valou); } if ( params.length == 0 ) { div_error.innerHTML = 'No results found, please try again later.'; div_error.style.display = 'block'; spinnerStop(); return; } url += params.join("&"); xajax_check_multiple_words(tab_mots.join(' '), [], false, true, false, ''); //window.location.href = url; } } }; if (tests.progress) { $('progress').show(); $('#progress_external_recommendation_file').show(); spinnerStart(); xhr.upload.onprogress = function (event) { if (event.lengthComputable) { var complete = (event.loaded / event.total * 100 | 0); if(complete!=100){ $('#recogdiv').each(function(){$(this).remove();}); } /** SG 22/10/2021 : PR PROGRESS BAR EXTERNAL_RECOMMENDATION **/ if($('#progress_external_recommendation_file').length){ $('#progress_external_recommendation_file').width((event.loaded/event.total*100)+'%'); } progress.value = progress.innerHTML = complete; } } } xhr.send(formData); } } //--- //- afficherPanneauEntree //--- afficherPanneauEntree = function(){ var zeObj = $('#header-search-query'); if(zeObj.val()!=""){ $('#boiteAdviceRico').show(500); } } //--- //- jelancenoresult //--- jelancenoresult = function(){ in_search=false; $('#msgdbg').text($("#header-search-query").attr('value')); spinnerStart(); //xajax_check_multiple_words($("#header-search-query").attr('value'), xajax.getFormValues('search_form')); }; var mytimeoutrb; var randomPercent = 0 randomBar = function( ){ randomPercent = randomPercent + 5 if(randomPercent > 100) { randomPercent = 0 } progress = document.getElementById('uploadprogress'); progress.value = progress.innerHTML = randomPercent; mytimeoutrb = setTimeout( function(){randomBar( );} , 300); } todoOnKeyDown = function(zeObj,e){ $carousel_gallery_home.flickity('pausePlayer'); /** le moteur suggest est désactivé quand on tape une touche, cela empeche le masque "Entrée" de s'afficher, et lance le timeout de 3 secondes pour l'ouvrir **/ spinnerStop(); clearTimeout(timeoutAfficherPanneauEntree); in_search=true; timeoutAfficherPanneauEntree = setTimeout(function(){afficherPanneauEntree();},3000); //var kc=e.keyCode; var kc = e.key || e.code; if(kc=="Enter" || kc==13 || kc==37 || kc==38 || kc==39 || kc==40 || zeObj.value=='' || zeObj.value.indexOf('?+')!=-1){ spinnerStop(); } if($('#btn_external_recommendation').length > 0){ /** SG 21/20/2021 : POUR CACHER BOUTON external_recommendation QD QQUE CHOSE DE TAPER **/ if((zeObj.value).length>0){ /////16/04/2024 Eric / on ne le retire plus. : document.getElementById('btn_external_recommendation').style.display = 'none'; }else{ document.getElementById('btn_external_recommendation').style.display = 'flex'; } } if(( kc==13 || kc=='Enter') && zeObj.value!='' ){ var r = $(".text-tags .text-label").map( function(){return $(this).text();}).get().join(' '); if(r!=''){ var phrase=r + ' ' + zeObj.value; }else{ var phrase=zeObj.value; } $.ajax({ type: "POST", url: "/ajax/check_is_prompt.php", data: { phrase: phrase, langue: 'pt' } }).done(function(reponse) { if (reponse === "OK" && "cn"!=="pt") { /**vider le formulaire de recherche**/ empty_search_form(); /**appeler la fonction de recommandation par brief**/ searchExternalRecommendationFromBrief(phrase); } else { //bouton entrée tappé fct_menuzonehidden(); spinnerStart(); clearTimeout('jelancelenoresultdansxsecondes'); xajax_check_multiple_words(phrase, xajax.getFormValues('search_form')); } }); }else if(( kc==13 || kc=='Enter') && zeObj.value==''){ fct_menuzonehidden(); } } todoOnBlur = function(zeObj,e){ var v = zeObj.value; $carousel_gallery_home.flickity('pausePlayer'); spinnerStop(); clearTimeout(timeoutAfficherPanneauEntree); in_search=true; timeoutAfficherPanneauEntree = setTimeout(function(){afficherPanneauEntree();},3000); spinnerStop(); /** SG 24/10/2023 : POUR CACHER BOUTON external_recommendation QD QQUE CHOSE DE TAPER **/ if($('#btn_external_recommendation').length > 0){ if((zeObj.value).length>0){ /////16/04/2024 Eric / on ne le retire plus. : document.getElementById('btn_external_recommendation').style.display = 'none'; }else{ document.getElementById('btn_external_recommendation').style.display = 'flex'; } } if(v!=''){ fct_menuzonehidden(); spinnerStart(); clearTimeout('jelancelenoresultdansxsecondes'); zeObj.value = ''; var r = $(".text-tags .text-label").map( function(){return $(this).text();}).get().join(' '); var phrase = ''; if ( r!='' ) { phrase = r + ' ' + v; } else { phrase = v; } $.ajax({ type: "POST", url: "/ajax/check_is_prompt.php", data: { phrase: phrase, langue: 'pt' } }).done(function(reponse) { if (reponse === "OK") { /**vider le formulaire de recherche**/ empty_search_form(); /**appeler la fonction de recommandation par brief**/ searchExternalRecommendationFromBrief(phrase); } else { //bouton entrée tappé fct_menuzonehidden(); spinnerStart(); clearTimeout('jelancelenoresultdansxsecondes'); xajax_check_multiple_words(phrase, xajax.getFormValues('search_form')); ////////show_bpm_key_zone("search"); } }); } else { //fct_menuzonehidden(); //remettre cette ligne si problème sur le onblur //SG 03/11/2023 : afin que la cartouche ne se ferme plus au onblur de l'input et que le bouton ai search se cache quand des mots sont présents dans l'input var r = $(".text-tags .text-label").map( function(){return $(this).text();}).get().join(' '); if ( r!="" ) { /////16/04/2024 Eric / on ne le retire plus. : $("#btn_external_recommendation").hide(); } else { if (document.getElementsByClassName('recogbutton').length == 0) { fct_menuzonehidden(); } } } } //Tooltip sur liste track search v4 pour les recommandations tooltip_menu_media = function(button,id_media,name,mode='modal'){ $.ajax({ url: "/ajax/get_tooltip_template.php", // Ton script PHP qui va générer le bon template type: "POST", data: { name: name, id_media: id_media }, success: function(responseHTML) { if(mode === 'modal'){ // On reçoit le HTML dynamisé en fonction des paramètres jcAlertTT(responseHTML, { boxWidth: 'calc(600px + 10%)', theme: 'cez-'+name, },name,mode); }else if(mode === 'tooltip'){ jcAlertTT(responseHTML, { boxWidth:'300px', theme: 'cez-'+name, },name,mode,button); } const $tooltip = $("#" + name + "_" + id_media); const modalBackdrop = $(".jconfirm-cez-"+name+" .jconfirm-cell"); //on charge pour ce contenu le code pour la region if(name === "tooltiprecommandation"){ $(document).on("mousedown", function (e) { if (modalBackdrop.is(e.target)) { $tooltip.find('.Ttr_timingdebut').val(''); $tooltip.find('.Ttr_timingfin').val(''); fctclearRegions(); } }); from_last_click ="recommandationedit"; if (!myPlaylist || typeof myPlaylist.playlist !== 'object') { //console.error("myPlaylist.playlist n'est pas un objet valide."); return; } //console.log("",myPlaylist.playlist); //! Cas ajaxify surtout, où le titre du player ne fait pas parti de la liste de lecture de la page nouvellement affichée // Vérifier si l'id_media est présent dans la playlist const idExistsInPlaylist = myPlaylist.playlist.some( item => String(item.id_media) === id_media ); if (!idExistsInPlaylist) { // Récupérer les IDs dans l'attribut onclick du bouton Tl_play let $parentTr = $(button).closest('tr'); let $parentUl = $parentTr.find('td:first ul.boxcontroleplayer'); let id_mediaAttr = $parentUl.attr('id_media'); let positionAttr = $parentUl.attr('position'); let onclickAttr = $parentUl.find("button.Tl_play").attr("onclick"); //console.log(id_mediaAttr+" pos"+positionAttr); // Extraire les IDs avec une expression régulière let match = onclickAttr.match(/PlayPauseUnTitreButton\('([^']+)'/); if (match && match[1]) { let idsList = match[1]; xajax_load_player_playlist(idsList,0,positionAttr,from_last_click,"oui"); } }else{ //! Si le titre existe dans la playlist, c'est que la page a été rechargé. Ici 2 problematiques, soit on a cliqué sur un bouton de lecture de la liste de titre et on a prechargé une playlist contenant les alernates, ou bien c'est une version playlist allegée //--playlist avec les alernates if (String(id_media).startsWith("0")) { id_media_alt = String(id_media).slice(1); // Supprime le premier caractère pos = $('#boxcontrol_'+id_media_alt).attr('curposition'); //--sinon c'est la playlist allegée }else{ const playlistValues = Object.values(myPlaylist.playlist); // Rechercher l'index const index = myPlaylist.playlist.findIndex( item => String(item.id_media) === id_media ); //console.log("Index trouvé :", index, "Données :", playlistValues); if (index !== -1) { const currentItem = playlistValues[index]; pos = index; } } window.setCurrentSongLOAD(pos); } setTimeout(() => { let dureetrack = $("#time-total").html(); let [minutesDT, secondsDT] = dureetrack.split(':').map(Number); let newseconds = (minutesDT * 60) + secondsDT; window.createRegion('0', newseconds, 'false', 'false', '', 'recommandation_' + id_media); jQuery('.wavesurfer-handle-start').css('width','4px').css('background-color','#222222'); jQuery('.wavesurfer-handle-end').css('width','4px').css('background-color','#222222'); }, 150); $(document).on("click", ".Ttr_validate", function (e) { let timingdebut = $tooltip.find('.Ttr_timingdebut').val(); let timingfin = $tooltip.find('.Ttr_timingfin').val(); //console.log(timingdebut+" "+timingfin+" Suivant"); //launch_recommendation('https://stream.cezamemusic.com/albums/CEZ4014/mp3/128/08-Infony-part-8-.mp3','16281');" }); $(document).on("click", ".Ttr_cancel", function (e) { $tooltip.find('.Ttr_timingdebut').val(''); $tooltip.find('.Ttr_timingfin').val(''); $('.jconfirm-cez-tooltiprecommandation .jconfirm-closeIcon').trigger("click"); fctclearRegions(); }); } }, error: function(xhr) { console.error("Erreur lors du chargement du tooltip :", xhr); } }); } // Variable globale pour stocker le timeout let tooltipTimeout; // Gestionnaire d'événements avec délai $(document).on({ mouseenter: function(e) { const button = this; const id_media = $(button).data("id-media"); const name = $(button).data("name"); tooltip_gestion_alternative(button, id_media, name); /* clearTimeout(tooltipTimeout); tooltipTimeout = setTimeout(() => { tooltip_gestion_alternative(button, id_media, name); }, 500); */ }, mouseleave: function() { clearTimeout(tooltipTimeout); } }, ".tooltip-trigger-alt"); const tooltip_gestion_alternative = function(button, id_media, name) { let isTooltipOpen = false; let isMouseOverButton = false; let isMouseOverTooltip = false; let closeTimeout; // Création du conteneur du tooltip avec styles pour l'animation if (!$('#tooltip-container').length) { $('body').append(`
`); } const tooltipContainer = $('#tooltip-container'); // Fonction pour positionner le tooltip const updateTooltipPosition = function() { if (!isTooltipOpen) return; const buttonPos = $(button).offset(); const buttonHeight = $(button).outerHeight(); const buttonWidth = $(button).outerWidth(); let tooltipTop = buttonPos.top + buttonHeight -175; let tooltipLeft = buttonPos.left + (buttonWidth / 2) + 10; const tooltipWidth = tooltipContainer.outerWidth(); const windowWidth = $(window).width(); if (tooltipLeft + tooltipWidth > windowWidth) { tooltipLeft = windowWidth - tooltipWidth - 10; } tooltipContainer.css({ top: tooltipTop, left: tooltipLeft }); }; // Fonction pour ouvrir le tooltip avec animation const openTooltip = function() { if (isTooltipOpen) return; $.ajax({ url: "/ajax/get_tooltip_template.php", type: "POST", data: { name: name, id_media: id_media }, success: function(responseHTML) { tooltipContainer.html(responseHTML); tooltipContainer.css('display', 'block'); // Force un reflow pour assurer que la transition fonctionne tooltipContainer[0].offsetHeight; // Applique l'animation tooltipContainer.css({ 'opacity': '1', 'transform': 'translateY(0)' }); isTooltipOpen = true; updateTooltipPosition(); }, error: function() { console.error('Erreur lors du chargement du tooltip'); } }); }; // Fonction pour fermer le tooltip avec animation const closeTooltip = function() { if (!isMouseOverButton && !isMouseOverTooltip) { closeTimeout = setTimeout(() => { tooltipContainer.css({ 'opacity': '0', 'transform': 'translateY(-5px)' }); // Attendre la fin de l'animation avant de cacher setTimeout(() => { tooltipContainer.css('display', 'none'); isTooltipOpen = false; }, 200); }, 300); } }; // Gestionnaire d'événements pour le bouton $(button).on({ mouseenter: function() { isMouseOverButton = true; clearTimeout(closeTimeout); openTooltip(); }, mouseleave: function() { isMouseOverButton = false; closeTooltip(); } }); // Gestionnaire d'événements pour le tooltip tooltipContainer.on({ mouseenter: function() { isMouseOverTooltip = true; clearTimeout(closeTimeout); }, mouseleave: function() { isMouseOverTooltip = false; closeTooltip(); } }); // Mettre à jour la position lors du défilement ou redimensionnement $(window).on('scroll resize', updateTooltipPosition); // Ouvrir immédiatement le tooltip openTooltip(); return { destroy: function() { clearTimeout(closeTimeout); $(button).off('mouseenter mouseleave'); tooltipContainer.off('mouseenter mouseleave'); $(window).off('scroll resize', updateTooltipPosition); tooltipContainer.remove(); } }; }; launch_recommendation = function(localurl,last_item_played, debut=null, fin=null){ let logged_in = false; jQuery.ajax({url: "/ajax/check_conn.php", type: "GET", async: false, success: function(JSONreponseFromAjax){ logged_in = JSONreponseFromAjax; }} ); var cookiepubai = document.cookie.match('(^|;) ?no_pub_ai=([^;]*)(;|$)'); var test_pubai = false; if ( cookiepubai !== null ) { test_pubai = cookiepubai[2]; } //SG 14/11/2023 : si pas connecté, on affiche la popup de pub pour les fonctionnalités complémentaires de l'IA // if ( logged_in != "OK" && !test_pubai ) { ///pour l'instant on met ça de côté ... TipNotConnectedPubAi(false); // } $('progress').hide(); spinnerStart(); /**on supprime le div de recog, vu que l'on va en charger un nouveau**/ jQuery('#recogdiv').remove(); if ( !$('body').hasClass('mobile') ) { randomBar( ); } if (debut !== null && fin !== null && Number.isFinite(debut) && Number.isFinite(fin)) { paramjson = {localurl: localurl, id_media: last_item_played, debut: debut, fin: fin}; }else{ paramjson = {localurl: localurl, id_media: last_item_played}; } jQuery.ajax({url: "/recog/upload.php", type: "POST", data : paramjson, success: function(JSONreponseFromAjax){ if(JSONreponseFromAjax=="ERR"){ $('progress').hide(); spinnerStop(); }else if(JSONreponseFromAjax=="ERR_NOT_CONNECTED"){ TipNotConnected(); $('progress').hide(); spinnerStop(); }else if(JSONreponseFromAjax.match(/^ERR_/) ){ $('progress').hide(); spinnerStop(); clearTimeout(mytimeoutrb); }else { clearTimeout(mytimeoutrb); if ( !$('body').hasClass('mobile') ) { progress = document.getElementById('uploadprogress'); progress.value = progress.innerHTML = 0; } jQuery('progress').hide(); spinnerStop(); reponses = JSON.parse(JSONreponseFromAjax); reponsesMots = reponses.mots; JSONreponse = JSONreponseFromAjax; suggestiontitres(last_item_played,'equal'); } } }); } // Fonction pour obtenir le début et la fin d'une région spécifique function getRegionTiming(idMedia) { // Supposons que votre instance WaveSurfer est dans la variable 'wavesurfer' const regionId = 'recommandation_' + idMedia; const regionKey = hasRegionStartingWith(); let region = null; //ne jamais clear les (climax[0-9]) //if(regionKey.some(item => item.startsWith('climax'))){ if(regionKey){ regionKey.forEach(key => { if(key==regionId){ region=myPlaylist.regions.list[key]; } }); } if (region!=null) { return { start: region.start, // Début en secondes end: region.end // Fin en secondes }; } return { start: null, // Début en secondes end: null // Fin en secondes }; } //--- //- changeScrollHeight //--- changeScrollHeight = function() { var h = parseInt(window.prompt('Please type new scroll height (number in pixels):', jQuery.Autocompleter.defaults.scrollHeight)); if(h > 0) { $("#suggest1").setOptions({ scrollHeight: h }); } } //--- //- focus_header_search_query //--- focus_header_search_query = function(){ //$("#header-search-query").trigger("activate.autocomplete"); $("#header-search-query").click(); } //--- //- RemoveAccents //--- RemoveAccents = function(strAccents) { var strAccents = strAccents.split(''); var strAccentsOut = new Array(); var strAccentsLen = strAccents.length; var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñÿý'; var accentsOut = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz"; for (var y = 0; y < strAccentsLen; y++) { if (accents.indexOf(strAccents[y]) != -1) { strAccentsOut[y] = accentsOut.substr(accents.indexOf(strAccents[y]), 1); } else strAccentsOut[y] = strAccents[y]; } strAccentsOut = strAccentsOut.join(''); //return strAccentsOut.replace(/ +/,"-"); strAccentsOut=strAccentsOut.replace(/'/g,"-").replace(/&+/g," ").replace(/ +/g,"-").replace(/\-+/,'-'); return strAccentsOut; } //--- //- addAlbumAndLaunch //--- addAlbumAndLaunch = function(id_album,e,f){ e.after(""); f.submit(); } //--- //- launchSearch //--- launchSearch = function(){ jQuery('.loupe').click(); } /**tout ce qui se rapoporte au filtrage par bpm et key**/ load_bpm_key_slider = function(){ jQuery('#slider').slider({ range: true, min: 10, max: 300, step: 1, values: [ 10, 300 ], slide: function( event, ui ) { jQuery('.slider-min').html(ui.values[ 0 ]); jQuery('.slider-max').html(ui.values[ 1 ]); }, change: function( event, ui ) { var min = ui.values[ 0 ]; var max = ui.values[ 1 ]; jQuery('#customFilterBpm').val(''); jQuery.ajax({ url: '/ajax/ajax_search_filters.php?minbpm='+min+'&maxbpm='+max} ).done(function(){ var only_word_search = jQuery('#search_form').serialize().replace('search_external_recommendation_youtube=&search_external_recommendation_brief=', ''); const url_params = new URLSearchParams(window.location.search); const id_media_str = url_params.get('id_media_str'); var tmp_url = ""; if ( id_media_str !== null ) { tmp_url = '/liste_resultats.php?id_media_str='+id_media_str+'&randkeybpm='+Math.random().toString(36).substring(7); }else if(only_word_search!=''){ tmp_url = '/liste_resultats.php?'+jQuery('#search_form').serialize()+'&randkeybpm='+Math.random().toString(36).substring(7); } goLaunchAjaxify(tmp_url,'#searchlink','search_' + Math.random().toString(36).substring(7)); }); } }); } -->