diff --git a/dist/modeles/audio.html b/dist/modeles/audio.html
index 5cf4315f3f2ae561952a820ecd297da572582280..6d4475bfa4212702f19464a9ac16fa67f38b1af8 100644
--- a/dist/modeles/audio.html
+++ b/dist/modeles/audio.html
@@ -1,32 +1,15 @@
-<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID}>[
-(#REM) on trouvera plusieurs variable de hauteur/largeur
-- les balises #HAUTEUR et #LARGEUR
-- #ENV{hauteur} et {largeur} correspondant <emb|hauteur=xx...>
-- #GET{hauteur} et #GET{largeur} correspondent prioritairement a #ENV,
-  puis #LARGEUR/HAUTEUR sauf si il y a un controleur
-]
-#SET{hauteur,#ENV{hauteur,#HAUTEUR}} #SET{largeur,#ENV{largeur,#LARGEUR}}
-[(#ENV{controls}=={PlayButton}|?{#SET{hauteur,25},''})][
- (#ENV{controls}=={PlayButton}|?{#SET{largeur,40},''})][
- (#ENV{controls}=={PositionSlider}|?{#SET{hauteur,25},''})][
- (#ENV{controls}=={PositionSlider}|?{#SET{largeur,#GET{largeur}|moins{40}},''})
-][(#ENV{controls,''}|?{'',' '})
-<div class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})]'[
-style='[(#ENV{align}|match{^(left|right)$}|?{' '})float:#ENV{align};] (#ENV{align,center}|=={center}|?{'',' '})[width:(#GET{largeur}|max{120})px]']>
-	<div>
-	[(#MODELE{emb,controls=ImageWindow,type=audio/x-pn-realaudio-plugin,console=Console#ID_DOCUMENT,nojava=true})]
-	</div>
-	[(#MODELE{emb,controls=PlayButton,type=audio/x-pn-realaudio-plugin,console=Console#ID_DOCUMENT,nojava=true})]
-	[(#MODELE{emb,controls=PositionSlider,type=audio/x-pn-realaudio-plugin,console=Console#ID_DOCUMENT,nojava=true})]
-	#SET{done,1}
-]
-<object width='#GET{largeur}' height='#GET{hauteur}'>
-<param name='movie' value='#URL_DOCUMENT' />
-<param name='src' value='#URL_DOCUMENT' />
-[(#ENV*|env_to_params)]
-<embed src='#URL_DOCUMENT' [(#ENV*|env_to_attributs)] width='#GET{largeur}' height='#GET{hauteur}'></embed></object>
-
-[(#ENV{controls,''}|?{'',' '})
-[<div class='spip_doc_titre'><strong>(#TITRE)</strong></div>][<div class='spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>]</div>
-]
+<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID}>
+<div	class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})]'[
+	style='[(#ENV{align}|match{^(left|right)$}|?{' '})float:#ENV{align};] (#ENV{align,center}|=={center}|?{'',' '})[width:(#ENV{largeur}|max{120})px]']>
+<object	data='#URL_DOCUMENT' 
+	type='#MIME_TYPE'
+	width='#ENV{largeur, #LARGEUR}'
+	height='#ENV{hauteur, #HAUTEUR}' >
+	<param name='src' value='#URL_DOCUMENT' />
+	[(#ID_DOCUMENT|appliquer_filtre{#MIME_TYPE})]
+	[(#ENV*|env_to_params)]
+</object>
+[<div class='spip_doc_titre'><strong>(#TITRE)</strong></div>]
+[<div class='spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>]
+</div>
 </BOUCLE_tous>
diff --git a/dist/modeles/text.html b/dist/modeles/text.html
index db00d95fe0d200afebed47e63534b4d0234a3853..152a82d6bd9de3a3642d9b38576e37c2788c679e 100644
--- a/dist/modeles/text.html
+++ b/dist/modeles/text.html
@@ -1,3 +1,3 @@
 <BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID}>[(#ID_DOCUMENT|
-contenu_document|appliquer_filtre{#MIME_TYPE}
+contenu_document|appliquer_filtre{#MIME_TYPE,filtre_text_txt}
 )]</BOUCLE_tous>
diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 756e53e62f943bbecfc75d14c03ed7ac6dec6edf..d91c98a238bf3411e8b0017ee1b84f2f95a9d08c 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -28,9 +28,9 @@ function chercher_filtre($fonc, $default=NULL) {
 		return $default;
 }
 
-function appliquer_filtre($arg, $filtre) {
-	$f = chercher_filtre(preg_replace('/\W/','_', $filtre),'filtre_text_txt_dist');
-	return $f($arg);
+function appliquer_filtre($arg, $filtre, $default=NULL) {
+	$f = chercher_filtre(preg_replace('/\W/','_', $filtre), $default);
+	return !$f ? '' : $f($arg);
 }
 
 function filtre_text_txt_dist($t) {
@@ -44,6 +44,16 @@ function filtre_text_csv_dist($t)
 		      . "|\n");
 }
 
+function filtre_audio_x_pn_realaudio($id)
+{
+  return "
+	<param name='controls' value='PositionSlider' />
+	<param name='controls' value='ImageWindow' />
+	<param name='controls' value='PlayButton' />
+	<param name='console' value='Console$id' />
+	<param name='nojava' value='true' />";
+}
+
 // http://doc.spip.org/@spip_version
 function spip_version() {
 	$version = $GLOBALS['spip_version_affichee'];
@@ -1935,7 +1945,7 @@ function env_to_params ($texte, $ignore_params=array()) {
 	$texte = "";
 	foreach ($tableau as $i => $j)
 		if (!in_array($i,$ignore_params))
-			$texte .= "<param name='".$i."' value='".$j."' />";
+			$texte .= "<param name='".$i."'\n\tvalue='".$j."' />";
 	return $texte;
 }
 // A partir d'un #ENV, retourne des attributs
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index 6c1175622de0d0bf02deae416c87913c98f56708..aebf986f55e223c5d3e3ad61166fd593a1fcef6a 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -1068,6 +1068,7 @@ function balise_MODELE_dist($p) {
 		if ($primary = $p->boucles[$idb]->primary) {
 			$id = champ_sql($primary, $p);
 			$code_contexte[] = "'$primary='.".$id;
+			$code_contexte[] = "'id='.".$id;
 		}
 	}