Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
Un fichier ''.avi'' peut contenir une vidéo encodée en DivX, mpeg, ..., ce qui cause souvent des problèmes de lecture et de reconnaissance.
À l'opposé, une extension de fichier son indique toujours un son encodé de la même manière: par exemple, un lecteur de fichiers .mp3 lira toujours un fichier .mp3, quelles que soient les variations des paramètres d'encodage.
''@@3D vidéo × 3D audio@@'':
On ne peut pas penser une 3D vidéo de la même façon qu'une 3D audio - les géométries sont très différentes. En particulier, cela a une incidence sur les processus de captation: plusieurs "points d'écoute" comme on a plusieurs points de vue?
On pense notamment aux espaces de modélisation (voir CdC).
<<option chkGenerateAnRssFeed>> Création flux RSS
<<option chkOpenInNewWindow>> Ouverture des liens externes dans une nouvelle fenêtre
<<option chkSaveEmptyTemplate>> Sauvegarde du fichier de base 'empty.html' de la dernière version
<<option chkToggleLinks>> Recliquer sur un lien ferme l'élément qu'il a ouvert
^^(hors fonction en appuyant sur la touche Ctrl)^^
<<option chkInsertTabs>> Insérer des espaces avec la touche TAB au lieu de passer au champ suivant
<<option chkHttpReadOnly>> Masque les fonctions d'édition lorsque le fichier est accédé depuis le Web
<<option chkForceMinorUpdate>> L'entrée d'une modification ne modifie pas la date et l'heure déjà enregistrées pour l'élément
^^(hors fonction en cliquant 'valider' avecla touche Maj enfoncée, ou en appuyant Ctrl-Maj-Entrée^^
<<option chkConfirmDelete>> Confirmations avant suppressions
Nombre maximum de lignes de la fenêtre d'édition: <<option txtMaxEditRows>>
Répertoire des backups : <<option txtBackupFolder>>
>apporter déjà quelques commentaires sur les formats audio
*~DolbyE et la compression en général: pourquoi le mastering dans le cinéma serait différent du mastering audio "en général"? Le mastering d'un disque est fait pour passer partout - après la salle de cinéma, on pourrait dire que c'est aussi le cas pour l'audiovisuel.
**exigences (en compression, p.ex.) des différentes chaînes: pourquoi ne pas prendre un master non compressé et le passer par son propre compresseur? (les techniques de compression sont bien documentées et un compresseur ouvert serait assez facile à produire)
[[Centre de recherche Informatique et Création Musicale|http://cicm.mshparisnord.org]]
Diffusion: http://www.cst.fr/spip.php?rubrique51
Dossiers techniques: http://www.cst.fr/spip.php?rubrique84
[[Google Calendar du CICM P8|http://www.google.com/calendar/embed?src=cicm.p8%40gmail.com]]
@@font-size:0.8em;<<tiddler [[FoldUnfold caractEnvir]]>>@@
*+++(caractEnvir){{mySlide{[description des équipements et des usages... ↓]}}}>
caractéristiques acoustiques des lieux +++^[...]
exigences des normes de diffusion en salle
===
quantité et qualité des enceintes et des microphones
distribution des enceintes et des microphones dans l'espace
mesure des réponses de ces différents dispositifs d'écoute et d'enregistrement
altération éventuelle des contenus par les dispositifs
répartition des canaux audio (à l'enregistrement et à la diffusion)
son surround - généalogie et usages
normes de diffusion employées +++^[...]
Dolby
DTS
THX
...
===
méthodes d'enregistrement +++^[...]
traditionnelles
XY
AB
ambisonique
sound field (Trinnov)
ORTF
5.1
multipistes
...
===
===
**+++(caractEnvir){{mySlide{[pour les différents environnements de restitution... ↓]}}}>
studio
auditorium
salle de cinéma
home theater
télévision, écoute de salon
ordinateur
lecteur DVD portable
iPod, PSP et similaires
téléphones portables
===
*+++(caractEnvir){{mySlide{[critères d'évaluation de ces environnements... ↓]}}}>
relevé des critères courants d'évaluation
proposition éventuelle de nouveaux critères
===
[[Cahier des Charges du Lot C2.2|https://wiki.mikrosimage.fr:7443/daisy/hd3d-iio/g10/1199.html;jsessionid=e04teq9ds8pc]]
~~il faut le login et le mote de passe~~
@@margin-left: 40em;^^<<tiddler [[FoldUnfold etape3]]>>^^@@
+++(etape3)!!!![.cohérence et continuité sonore]
<<tiddler CohérenceSonore>>
===
+++(etape3)!!!![.cohérence et continuité image/son]
<<tiddler CohérenceImageSon>>
===
+++(etape3)!!!![.critères d'évaluation]
<<tiddler CritèresDiffusion>>
===
@@font-size:0.8em;<<tiddler [[FoldUnfold cohImSon]]>>@@
*+++(cohImSon){{mySlide{[étude des éléments à prendre en compte pour penser la cohérence image/son... ↓]}}}>
@@font-size:0.6em;<<tiddler [[FoldUnfold elemImSon]]>>@@
+++(elemImSon){{mySlide{[synchronisation... ↓]}}}>
le son comme témoin de synchronisation +++^[...]
garantie de la cohérence image/son dans le workflow
===
marges tolérables pour la perception
usages et pratiques
contraintes des formats audio pour la diffusion +++^[...]
désynchronisation dans le cas du DolbyE
===
perception intersensorielle du temps audiovisuel
===
+++(elemImSon){{mySlide{[interactions entre audio et visuel... ↓]}}}>
@@font-size:0.6em;<<tiddler [[FoldUnfold interactions]]>>@@
+++(interactions){{mySlide{[contributions de l'audio... ↓]}}}>
parole: présence d'un discours intelligible +++^[...]
voix off
dialogues
===
bruitages: sons figuratifs +++^[...]
reconnaissance des sources
narrativité du son
===
musique: exploitation de codes établis et reconnus +++^[...]
musique symphonique
musiques populaires
orchestrations/harmonies/rythmes typés
===
===
+++(interactions){{mySlide{[contributions du visuel... ↓]}}}>
narrativité +++^[...]
cinéma muet
séquence d'actions
...
===
séquences illustratives +++^[...]
génériques
publicités
...
===
...
===
+++(interactions){{mySlide{[prédominance de l'audio ou du visuel... ↓]}}}>
film muet
doublages
...
===
+++(interactions){{mySlide{[interférences éventuelles... ↓]}}}>
renforcement ou affaiblissement du sens
perception de l'espace altérée par l'encodage audio
effet ~McGurk
...
===
===
+++(elemImSon){{mySlide{[espace / spatialisation... ↓]}}}>
l'espace sonore par rapport au contexte visuel +++^[...]
réalisme/crédibilité de l'espace sonore
rapports entre localisation des sons et espace visuel
===
immersion sonore et dispositifs surround +++^[...]
comment conserver l'espace sonore dans différentes diffusions?
qu'est-ce qui se perd dans un upmix ou un downmix?
===
perception intersensorielle de l'espace audiovisuel
===
+++(elemImSon){{mySlide{[morphologies, traits similaires entre son et image... ↓]}}}>
articulations temporelles
rythmes
complexité
stabilité
genre de mouvements
vitesses
distributions
...
===
fidélité à l'original
===
*+++(cohImSon){{mySlide{[cohérence image/son et écriture audiovisuelle... ↓]}}}>
en particulier à l'échelle temporelle du montage (localement)
===
*+++(cohImSon){{mySlide{[continuité et fidélité à travers les différents supports ou étapes de diffusion... ↓]}}}>
salle de cinéma, DVD, télévision, internet... +++^[...]
bandes passantes des réseaux de diffusion
qualité et quantité des enceintes
contraintes au mastering
automatisations vs. remixages manuels
...
===
dans la réutilisation +++^[...]
jeux vidéo
sampling
création d'une banque d'échantillons
films anciens
...
===
réexploitation +++^[...]
images de synthèse ajoutées aux premiers Star Wars
restaurations
...
===
===
*+++(cohImSon){{mySlide{[approches prospectives... ↓]}}}>
+++{{mySlide{[le cas des jeux vidéo: une autre approche de la dynamique audiovisuelle... ↓]}}}>
la cohérence image/son modifiée par l'interactivité +++^[...]
une narrativité dirigée par le joueur
une part plus déterminante du son
l'espace audiovisuel dépend de l'action du joueur
===
l'immersion par la situation de jeu +++^[...]
plutôt d'ordre psychologique que physique (pas forcément de surround)
l'investissement actif entre en jeu
===
===
le terrain expérimental des installations multimédia et des arts de la scène
potentiels de l'ambisonie et autres techniques
codage orienté objet des contenus audiovisuels (~MPEG4)
===
*+++(cohImSon){{mySlide{[perspectives... ↓]}}}>
spécification de bonnes pratiques à partir des études ci-dessus
===
*+++{{mySlide{[étude des éléments à prendre en compte pour penser la cohérence sonore... ↓]}}}>
dynamique et gain +++^[...]
entre fichiers d'une même œuvre, d'un document ou d'une playlist
entre supports
entre chaînes de radio ou de TV
...
===
uniformité de la qualité spectrale
++++{{mySlide{[importance de la qualité spectrale elle-même ↓]}}}>
en fonction du +++^[contenu]
paroles
bruitage
musique=== et de sa +++^[diffusion]
cinéma
internet
diffuseurs (télévision et chaînes)
dispositifs nomades
...
===
===
espace sonore et image spatiale +++^[...]
en particulier dans le cas du son surround
et par rapport aux questions de downmix et upmix
===
fidélité à l'original (après validation du mixage)
===
*la question de la cohérence sonore dans la réutilisation et la réexploitation +++^[...]
remastering
remix
===
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<html><div><iframe style="width:100%;height:500px" src="http://www.haloscan.com/comments/cicm/Commentaires"></iframe></div></html>
{{{
/% commentaires
en plusieurs
lignes
%/
}}}
/% commentaires
en plusieurs
lignes
%/
~~passez en mode d'édition pour voir~~
@@margin-left:10em;''~~en collaboration avec LouisLumière~~''@@
*contribution au corpus de fichiers test, à partir des descriptions et usages repérés précédemment
@@font-size:0.8em;<<tiddler [[FoldUnfold critDiff]]>>@@
*+++(critDiff){{mySlide{[relevé des critères et des tests existants... ↓]}}}>
pour la cohérence sonore
pour les outils de spatialisation
pour la cohérence image/son
===
*nouveaux critères objectifs, établis à partir des études ci-dessus
*+++(critDiff){{mySlide{[nouveaux critères subjectifs, établis à partir des usages et de tests... ↓]}}}>
++++{{mySlide{[pour la cohérence et la continuité... ↓]}}}>
à travers les différentes étapes de diffusion (oeuvre entière)
à l'échelle du montage (localement)
===
pour les outils de conversion upmix et downmix
===
*relevé des critères existants
*éventuels nouveaux critères objectifs +++^[...]
établis à partir des informations détaillées recueillies ci-dessus
===
*éventuels nouveaux critères subjectifs +++^[...]
établis à partir de tests d'écoute,
ils dépendront éventuellement des différents dispositifs et conditions: salon, studio, dispositif nomade...
===
@@margin-left:10em;''~~en collaboration avec LouisLumière~~''@@
*+++{{mySlide{[état de l'art... ↓]}}}>
relevé des équipements
relevé des tests et des critères d'évaluation existants
relevé des usages
prise en compte des travaux de la [[FICAM]] et de la [[CST]]
===
*proposition éventuelle de nouveaux critères
*établir un workflow type
**préciser les formats, supports et environnements de la prise de son au PAD
*relevé des moyens de diffusion
http://www.dolby.com/professional/pro_audio_engineering/solutions_dolbye.html
{{button{[[télécharger|download.php?]]}}}
<html><a href='http://hd3d.c22.tiddlyspot.com/download' class='button'>download</a></html>~~depuis tiddlyspot~~
+++![1) Généralités]
Sur quel(s) type(s) de projets travaillez vous ?
Voici un workflow-type pour un projet LM/TV/... Quelles modifications/précisions apporteriez vous afin de la préciser ?
A quelle étape du workflow intervenez vous ?
Pouvez également nous renseigner sur d'autres types de projets ? (si oui, lesquels ?) ainsi que d'autres étapes du workflow ?
===
+++![2) Equipements]
Pour chaque étape (du workflow), pouvez vous :
*nous indiquer les caractéristiques des locaux dans lesquels vous exercez vos activités (si spécificités) ?
*nous indiquer quels équipements vous utilisez (matériels/logiciels) ainsi que leur cadre d'utilisation (fonction) ?
===
+++![3) Description des tâches]
Pour chaque étape, pouvez vous nous :
*indiquer quels types de documents (média, notices...) vous sont fournis et par qui ? Merci de détailler (supports, formats, méta-données...) ?
*indiquer quelle est la nature du travail effectué, en décrivant une situation-type ? Merci de préciser, notamment, les conversions de formats effectuées.
*indiquer sous quelle forme et à qui est transmis le résultat de votre travail ?
*dire si il y a une validation ? Par qui est-elle effectuée et comment ?
*indiquer si vous effectuez des sauvegardes et/ou archivages ? Si oui, merci de préciser sous quelle forme.
*présenter un problème-type (plus précisément en rapport avec les formats/fichiers) ? Comment y remédiez vous ?
===
+++![4) Evaluations]
D'après vous, pourquoi utilise-t-on ces +++^[équipements]Avid=== et ces +++^[formats]Dolby E, Dolby Digital=== dans votre travail ?
Pensez-vous qu'ils sont adaptés ?
Quels sont les problèmes et/ou limitations que vous rencontrez ?
Sont-ils liés aux formats, encodages ou supports de manière intrinsèque ?
Quelles améliorations peuvent être apportées ?
Quelle partie de votre travail est automatisée ?
Pensez-vous que d'autres étapes peuvent (ou doivent) être automatisées ?
Y a-t-il des étapes qui ne doivent pas être automatisées ?
===
+++![5) Compléments]
<<tiddler [[sujets d'enquête]]>>
===
<script label="déplier/replier">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
var prefix="chkSlider";
var cookie=$1;
var cookie=prefix.concat(cookie);
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie==cookie)
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="↓ ↑" title="déplier/plier">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSlidercaractEnvir")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="↓ ↑">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSlidercohImSon")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="↓ ↑">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSlidercritDiff")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="↓ ↑">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSlidercritFormats")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="↓ ↑">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSliderelemImSon")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="déplier/replier étape1">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSlideretape1")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="déplier/replier étape2">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSlideretape2")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="déplier/replier étape3">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSlideretape3")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="↓ ↑">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSliderformats")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="↓ ↑">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSliderinteractions")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="↓ ↑">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSlideroutilsUpDown")
window.onClickNestedSlider({target:elems[e]});
</script>
<script label="déplier/replier">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie=="chkSlidertopLvl")
window.onClickNestedSlider({target:elems[e]});
</script> le Plan Général
<script label="déplier/replier 'ok' et 'some'">
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
var cookieList=["thisCookie","someCookie"];
var prefix="chkSlider";
var newList=[];
for (var i=0; i<cookieList.length; i++)
newList[i]=prefix.concat(cookieList[i]);
var x;
for (x in newList)
for (var e=0; e<elems.length; e++)
if (elems[e].sliderPanel && elems[e].sliderPanel.button.sliderCookie==newList[x])
window.onClickNestedSlider({target:elems[e]});
</script>
+++(thisCookie)^[slider ok]
okay
===
+++(notThisCookie)[slider not ok]
nope
===
+++(someCookie)[slider some]
tchans
===
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.6 (2006-09-16)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|© 2005-2006 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description
Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.
''Syntax:''
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].
+++(chkForEachRevisions)![Revision history]
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features:
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen)
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features:
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs:
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features:
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version
===
+++(chkForEachCode)![Code]
***/
//{{{
//============================================================================
//============================================================================
// ForEachTiddlerPlugin
//============================================================================
//============================================================================
// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {
if (!window.abego) window.abego = {};
version.extensions.ForEachTiddlerPlugin = {
major: 1, minor: 0, revision: 6,
date: new Date(2006,8,16),
source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
copyright: "Copyright (c) abego Software GmbH, 2005-2006 (www.abego-software.de)"
};
// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
TiddlyWiki.prototype.forEachTiddler = function(callback) {
for(var t in this.tiddlers) {
callback.call(this,t,this.tiddlers[t]);
}
};
}
//============================================================================
// forEachTiddler Macro
//============================================================================
version.extensions.forEachTiddler = {
major: 1, minor: 0, revision: 5, date: new Date(2006,2,5), provider: "http://tiddlywiki.abego-software.de"};
// ---------------------------------------------------------------------------
// Configurations and constants
// ---------------------------------------------------------------------------
config.macros.forEachTiddler = {
// Standard Properties
label: "forEachTiddler",
prompt: "Perform actions on a (sorted) selection of tiddlers",
// actions
actions: {
addToList: {},
write: {}
}
};
// ---------------------------------------------------------------------------
// The forEachTiddler Macro Handler
// ---------------------------------------------------------------------------
config.macros.forEachTiddler.getContainingTiddler = function(e) {
while(e && !hasClass(e,"tiddler"))
e = e.parentNode;
var title = e ? e.getAttribute("tiddler") : null;
return title ? store.getTiddler(title) : null;
};
config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);
if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
// --- Parsing ------------------------------------------
var i = 0; // index running over the params
// Parse the "in" clause
var tiddlyWikiPath = undefined;
if ((i < params.length) && params[i] == "in") {
i++;
if (i >= params.length) {
this.handleError(place, "TiddlyWiki path expected behind 'in'.");
return;
}
tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the where clause
var whereClause ="true";
if ((i < params.length) && params[i] == "where") {
i++;
whereClause = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the sort stuff
var sortClause = null;
var sortAscending = true;
if ((i < params.length) && params[i] == "sortBy") {
i++;
if (i >= params.length) {
this.handleError(place, "sortClause missing behind 'sortBy'.");
return;
}
sortClause = this.paramEncode(params[i]);
i++;
if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
sortAscending = params[i] == "ascending";
i++;
}
}
// Parse the script
var scriptText = null;
if ((i < params.length) && params[i] == "script") {
i++;
scriptText = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the action.
// When we are already at the end use the default action
var actionName = "addToList";
if (i < params.length) {
if (!config.macros.forEachTiddler.actions[params[i]]) {
this.handleError(place, "Unknown action '"+params[i]+"'.");
return;
} else {
actionName = params[i];
i++;
}
}
// Get the action parameter
// (the parsing is done inside the individual action implementation.)
var actionParameter = params.slice(i);
// --- Processing ------------------------------------------
try {
this.performMacro({
place: place,
inTiddler: tiddler,
whereClause: whereClause,
sortClause: sortClause,
sortAscending: sortAscending,
actionName: actionName,
actionParameter: actionParameter,
scriptText: scriptText,
tiddlyWikiPath: tiddlyWikiPath});
} catch (e) {
this.handleError(place, e);
}
};
// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {
var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);
var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
context["tiddlyWiki"] = tiddlyWiki;
// Get the tiddlers, as defined by the whereClause
var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
context["tiddlers"] = tiddlers;
// Sort the tiddlers, when sorting is required.
if (parameter.sortClause) {
this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
}
return {tiddlers: tiddlers, context: context};
};
// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
return this.getTiddlersAndContext(parameter).tiddlers;
};
// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
// The following properties are supported:
//
// place
// whereClause
// sortClause
// sortAscending
// actionName
// actionParameter
// scriptText
// tiddlyWikiPath
//
// All properties are optional.
// For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
var tiddlersAndContext = this.getTiddlersAndContext(parameter);
// Perform the action
var actionName = parameter.actionName ? parameter.actionName : "addToList";
var action = config.macros.forEachTiddler.actions[actionName];
if (!action) {
this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
return;
}
var actionHandler = action.handler;
actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};
// ---------------------------------------------------------------------------
// The actions
// ---------------------------------------------------------------------------
// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
// Parse the parameter
var p = 0;
// Check for extra parameters
if (parameter.length > p) {
config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
return;
}
// Perform the action.
var list = document.createElement("ul");
place.appendChild(list);
for (var i = 0; i < tiddlers.length; i++) {
var tiddler = tiddlers[i];
var listItem = document.createElement("li");
list.appendChild(listItem);
createTiddlyLink(listItem, tiddler.title, true);
}
};
abego.parseNamedParameter = function(name, parameter, i) {
var beginExpression = null;
if ((i < parameter.length) && parameter[i] == name) {
i++;
if (i >= parameter.length) {
throw "Missing text behind '%0'".format([name]);
}
return config.macros.forEachTiddler.paramEncode(parameter[i]);
}
return null;
}
// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
// Parse the parameter
var p = 0;
if (p >= parameter.length) {
this.handleError(place, "Missing expression behind 'write'.");
return;
}
var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
p++;
// Parse the "begin" option
var beginExpression = abego.parseNamedParameter("begin", parameter, p);
if (beginExpression !== null)
p += 2;
var endExpression = abego.parseNamedParameter("end", parameter, p);
if (endExpression !== null)
p += 2;
var noneExpression = abego.parseNamedParameter("none", parameter, p);
if (noneExpression !== null)
p += 2;
// Parse the "toFile" option
var filename = null;
var lineSeparator = undefined;
if ((p < parameter.length) && parameter[p] == "toFile") {
p++;
if (p >= parameter.length) {
this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
return;
}
filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
p++;
if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
p++;
if (p >= parameter.length) {
this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
return;
}
lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
p++;
}
}
// Check for extra parameters
if (parameter.length > p) {
config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
return;
}
// Perform the action.
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
var count = tiddlers.length;
var text = "";
if (count > 0 && beginExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
for (var i = 0; i < count; i++) {
var tiddler = tiddlers[i];
text += func(tiddler, context, count, i);
}
if (count > 0 && endExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);
if (count == 0 && noneExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
if (filename) {
if (lineSeparator !== undefined) {
lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
text = text.replace(/\n/mg,lineSeparator);
}
saveFile(filename, convertUnicodeToUTF8(text));
} else {
var wrapper = createTiddlyElement(place, "span");
wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
}
};
// ---------------------------------------------------------------------------
// Helpers
// ---------------------------------------------------------------------------
// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
return {
place : placeParam,
whereClause : whereClauseParam,
sortClause : sortClauseParam,
sortAscending : sortAscendingParam,
script : scriptText,
actionName : actionNameParam,
actionParameter : actionParameterParam,
tiddlyWikiPath : tiddlyWikiPathParam,
inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
};
};
// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
if (!idPrefix) {
idPrefix = "store";
}
var lenPrefix = idPrefix.length;
// Read the content of the given file
var content = loadFile(this.getLocalPath(path));
if(content === null) {
throw "TiddlyWiki '"+path+"' not found.";
}
// Locate the storeArea div's
var posOpeningDiv = content.indexOf(startSaveArea);
var posClosingDiv = content.lastIndexOf(endSaveArea);
if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
throw "File '"+path+"' is not a TiddlyWiki.";
}
var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
// Create a "div" element that contains the storage text
var myStorageDiv = document.createElement("div");
myStorageDiv.innerHTML = storageText;
myStorageDiv.normalize();
// Create all tiddlers in a new TiddlyWiki
// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
var tiddlyWiki = new TiddlyWiki();
var store = myStorageDiv.childNodes;
for(var t = 0; t < store.length; t++) {
var e = store[t];
var title = null;
if(e.getAttribute)
title = e.getAttribute("tiddler");
if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
title = e.id.substr(lenPrefix);
if(title && title !== "") {
var tiddler = tiddlyWiki.createTiddler(title);
tiddler.loadFromDiv(e,title);
}
}
tiddlyWiki.dirty = false;
return tiddlyWiki;
};
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
//
// (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
var script = context["script"];
var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
var fullText = (script ? script+";" : "")+functionText+";theFunction;";
return eval(fullText);
};
// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
var result = [];
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
tiddlyWiki.forEachTiddler(function(title,tiddler) {
if (func(tiddler, context, undefined, undefined)) {
result.push(tiddler);
}
});
return result;
};
// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
var message = "Extra parameter behind '"+actionName+"':";
for (var i = firstUnusedIndex; i < parameter.length; i++) {
message += " "+parameter[i];
}
this.handleError(place, message);
};
// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
var result =
(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
? 0
: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
? -1
: +1;
return result;
};
// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
var result =
(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
? 0
: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
? +1
: -1;
return result;
};
// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
// To avoid evaluating the sortClause whenever two items are compared
// we pre-calculate the sortValue for every item in the array and store it in a
// temporary property ("forEachTiddlerSortValue") of the tiddlers.
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
var count = tiddlers.length;
var i;
for (i = 0; i < count; i++) {
var tiddler = tiddlers[i];
tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
}
// Do the sorting
tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);
// Delete the temporary property that holds the sortValue.
for (i = 0; i < tiddlers.length; i++) {
delete tiddlers[i].forEachTiddlerSortValue;
}
};
// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
displayMessage(message);
};
// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
var message ="<<"+macroName;
for (var i = 0; i < params.length; i++) {
message += " "+params[i];
}
message += ">>";
displayMessage(message);
};
// Internal.
//
// Creates an element that holds an error message
//
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
var message = (exception.description) ? exception.description : exception.toString();
return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};
// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
if (place) {
this.createErrorElement(place, exception);
} else {
throw exception;
}
};
// Internal.
//
// Encodes the given string.
//
// Replaces
// "$))" to ">>"
// "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
var reGTGT = new RegExp("\\$\\)\\)","mg");
var reGT = new RegExp("\\$\\)","mg");
return s.replace(reGTGT, ">>").replace(reGT, ">");
};
// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
//
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
// Remove any location part of the URL
var hashPos = originalPath.indexOf("#");
if(hashPos != -1)
originalPath = originalPath.substr(0,hashPos);
// Convert to a native file format assuming
// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
var localPath;
if(originalPath.charAt(9) == ":") // pc local file
localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
localPath = unescape(originalPath.substr(7));
else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
localPath = unescape(originalPath.substr(5));
else // pc network file
localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");
return localPath;
};
// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
"forEachTiddler");
//============================================================================
// End of forEachTiddler Macro
//============================================================================
//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
var n = prefix.length;
return (this.length >= n) && (this.slice(0, n) == prefix);
};
//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
var n = suffix.length;
return (this.length >= n) && (this.right(n) == suffix);
};
//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
return this.indexOf(substring) >= 0;
};
//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
for (var i = 0; i < this.length; i++) {
if (this[i] == item) {
return i;
}
}
return -1;
};
//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false.
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
return (this.indexOf(item) >= 0);
};
//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
for(var i = 0; i < items.length; i++) {
if (this.contains(items[i])) {
return true;
}
}
return false;
};
//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
//
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null]
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
for(var i = 0; i < items.length; i++) {
if (!this.contains(items[i])) {
return false;
}
}
return true;
};
} // of "install only once"
// Used Globals (for JSLint) ==============
// ... DOM
/*global document */
// ... TiddlyWiki Core
/*global convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink,
displayMessage, endSaveArea, hasClass, loadFile, saveFile,
startSaveArea, store, wikify */
//}}}
/***
===
+++(chkForEachLicence)![Licence and Copyright]
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
===
***/
http://ghiles.free.fr/HD3D/Site/index.html
@@font-size:0.8em;<<tiddler [[FoldUnfold formats]]>>@@
*+++(formats){{mySlide{[relevé des formats d'encodage... ↓]}}}>
description du codage informatique
résolution possible (temporelle et dynamique)
analyse des éventuelles pertes lors de l'encodage
réversibilité
réduction de la taille du fichier (lorsqu'il y a compression)
temps d'encodage
+ un lien vers un site officiel
===
*+++(formats){{mySlide{[types de support... ↓]}}}>
architecture matérielle
technologie utilisée
encodages spécifiques au support
temps d'accès
débit
fiabilité
type d'utilisation
===
@@margin-left: 40em;^^<<tiddler [[FoldUnfold etape1]]>>^^@@
+++(etape1)!!!![.formats et supports]
<<tiddler FormatsAudio>>
===
+++(etape1)!!!![.détermination de critères d'évaluation de ces formats et supports]
<<tiddler CritèresFormats>>
===
+++(etape1)!!!![.outils de transcodage]
<<tiddler OutilsTranscodage>>
===
+++(etape1)!!!![.outils pour l'upmix, le downmix et la spatialisation]
<<tiddler FormatsUpDownMix>>
===
+++(etape1)!!!![.perspectives]
<<tiddler PerspectivesFormats>>
===
*++++{{mySlide{[relevé des outils... ↓]}}}>
@@font-size:0.8em;<<tiddler [[FoldUnfold outilsUpDown]]>>@@
+++(outilsUpDown){{mySlide{[upmix... ↓]}}}>
mono vers stéreo +++^[...]
graves d'un côté, aigus de l'autre
modifications de phases et d'intensités
algorithme Q-sound
algorithmes HRTF
...
===
mono vers 5.1 et plus +++^[...]
généralisation des techniques mono → stéreo
autres techniques
===
stereo vers 5.1 et plus
===
+++(outilsUpDown){{mySlide{[downmix... ↓]}}}>
stéreo vers mono
5.1 ou plus vers stéreo
===
spatialisation
/***
|''Name:''|GotoPlugin|
|''Source:''|http://www.TiddlyTools.com/#GotoPlugin|
|''Author:''|Eric Shulman - ELS Design Studios|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.0.10|
''View a tiddler by typing its title and pressing //enter//.'' Input just enough to uniquely match a single tiddler title and ''press //enter// to auto-complete the title for you!!'' If multiple titles match your input, a list is displayed. You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press //escape// to close the listbox to resume typing. When the listbox is ''//not//'' being displayed, press //escape// to clear the current text input and start over.
Note: ''At any time, you can move the focus directly to the text input field by using the ~ALT-G keyboard shortcut.''
!!!!!Example
<<<
syntax: {{{<<goto quiet inputstyle liststyle>>}}}
All parameters are optional.
* ''quiet'' prevents //automatic// display of the list as each character is typed. To view the list when ''quiet'', use //down// or //enter//.
* ''inputstyle'' and ''liststyle'' are CSS declarations that modify the default input and listbox styles. Note: styles containing spaces must be surrounded by ({{{"..."}}} or {{{'...'}}}) or ({{{[[...]]}}}).
{{{<<goto>>}}}
<<goto>>
{{{<<goto quiet>>}}}
<<goto quiet>>
{{{<<goto width:20em width:20em>>}}}
<<goto width:20em width:20em>>
<<<
!!!!!Configuration
<<<
The following ~TiddlyWiki search options (see AdvancedOptions) are applied when matching tiddler titles:
><<option chkRegExpSearch>> use regular expressions (text patterns)
><<option chkCaseSensitiveSearch>> use case sensitive matching
You can also create a tiddler tagged with <<tag systemConfig>> to control listing of tiddlers/shadows/tags, as well as the maximum height of the listbox. //The default values are shown below://
//{{{
config.macros.goto.includeTiddlers=true;
config.macros.goto.includeShadows=true;
config.macros.goto.includeTags=true;
config.macros.goto.listMaxSize=10;
//}}}
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''GotoPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revisions
<<<
''2006.05.10 [1.1.2]'' when filling listbox, set selection to 'heading' item... auto-select first tiddler title when down/enter moves focus into listbox
''2006.05.08 [1.1.1]'' added accesskey ("G") to input field html (also set when field gets focus). Also, inputKeyHandler() skips non-printing/non-editing keys.
''2006.05.08 [1.1.0]'' added heading to listbox for better feedback (also avoids problems with 1-line droplist)
''2006.05.07 [1.0.0]'' list matches against tiddlers/shadows/tags. input field auto-completion... 1st enter=complete matching input (or show list)... 2nd enter=view tiddler. optional "quiet" param controls when listbox appears.
''2006.05.06 [0.5.0]'' added handling for enter (13), escape(27), and down(40) keys. Change 'ondblclick' to 'onclick' for list handler to view tiddlers (suggested by Florian Cauvin - prevents unintended trigger of tiddler editor). shadow titles inserted into list instead of appended to the end.
''2006.05.05 [0.0.0]'' started
<<<
!!!!!Credits
>This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
!!!!!Code
***/
//{{{
version.extensions.goto= {major: 1, minor: 1, revision: 2, date: new Date(2006,5,10)};
config.macros.goto= {
handler:
function(place,macroName,params) {
var quiet=(params[0] && params[0]=="quiet"); if (quiet) params.shift();
var instyle=params.shift(); if (!instyle) instyle="";
var liststyle=params.shift(); if (!liststyle) liststyle="";
createTiddlyElement(place,"span").innerHTML
=this.html.replace(/%quiet%/,quiet).replace(/%instyle%/,instyle).replace(/%liststyle%/,liststyle);
},
html:
'<form onsubmit="return false" style="display:inline;margin:0;padding:0">\
<input name=goto type=text autocomplete="off" accesskey="G" style="%instyle%"\
title="enter a tiddler title"\
onfocus="this.setAttribute(\'accessKey\',\'G\'); this.select();"\
onkeyup="return config.macros.goto.inputKeyHandler(event,this,this.form.list,%quiet%);">\
<select name=list style="%liststyle%;display:none;position:absolute"\
onchange="if (!this.selectedIndex) this.selectedIndex=1;"\
onblur="this.style.display=\'none\';"\
onkeyup="return config.macros.goto.selectKeyHandler(event,this,this.form.goto);"\
onclick="return config.macros.goto.openItem(this.value,this.form.goto,this);">\
</select>\
</form>',
getItems:
function() {
var items=[];
var tiddlers=store.reverseLookup("tags","excludeSearch",false,"title");
if (this.includeTiddlers) for(var t=0; t<tiddlers.length; t++) items.push(tiddlers[t].title);
if (this.includeShadows) for (var t in config.shadowTiddlers) items.pushUnique(t);
if (this.includeTags) { var tags=store.getTags(); for(var t=0; t<tags.length; t++) items.pushUnique(tags[t][0]); }
return items;
},
includeTiddlers: true, includeShadows: true, includeTags: true,
getItemSuffix:
function(t) {
if (store.tiddlerExists(t)) return ""; // tiddler
if (store.isShadowTiddler(t)) return " (shadow)"; // shadow
return " (tag)"; // tag
},
openItem:
function(title,here,list) {
if (!title.length) return; here.value=title; list.style.display='none'; story.displayTiddler(null,title); return false;
},
inputKeyHandler:
function(event,here,list,quiet) {
var key=event.keyCode;
// non-printing chars... bubble up, except: backspace=8, enter=13, escape=27, space=32, down=40, delete=46
if (key<48) switch(key) { case 8: case 13: case 27: case 32: case 40: case 46: break; default: return true; }
// escape... hide list (2nd esc=reset input)
if (key==27) { if (list.style.display=="none") here.value=here.defaultValue; else list.style.display="none"; return false; }
// blank input... if down/enter... fall through (list all)... else, hide list
if (!here.value.length && !(key==40 || key==13)) { list.style.display="none"; return false; }
// find matching items...
var pattern=config.options.chkRegExpSearch?here.value:here.value.escapeRegExp();
var re=new RegExp(pattern,config.options.chkCaseSensitiveSearch?"mg":"img");
var found = []; var items=this.getItems(); for(var t=0; t<items.length; t++) if(items[t].search(re)!=-1) found.push(items[t]);
// matched one item... enter... not *exact* match... autocomplete input field
if (found.length==1 && quiet && key==13 && here.value!=found[0]) { list.style.display="none"; here.value=found[0]; return false; }
// no match/exact match... enter... create/show it
if (found.length<2 && key==13) return this.openItem(found.length?found[0]:here.value,here,list);
// quiet/no match... hide list...
list.style.display=(!quiet && found.length)?"block":"none";
// no matches... key bubbles up
if (!found.length) return true;
// down/enter... show/move to list...
if (key==40 || key==13) { list.style.display="block"; list.focus(); }
// list is showing... fill list...
if (list.style.display!="none") {
while (list.length > 0) list.options[0]=null; // clear list...
found.sort();
list.options[0]=new Option(found.length==1?this.listMatchMsg:this.listHeading.format([found.length]),"",false,false);
for (var t=0; t<found.length; t++) // fill list...
list.options[t+1]=new Option(found[t]+this.getItemSuffix(found[t]),found[t],false,false);
list.size=(found.length<this.listMaxSize?found.length:this.listMaxSize)+1; // resize list...
list.selectedIndex=(key==40 || key==13)?1:0;
}
return true; // key bubbles up
},
listMaxSize: 10,
listHeading: 'Found %0 matching titles:',
listMatchMsg: 'Press enter to open tiddler...',
selectKeyHandler:
function(event,list,editfield) {
if (event.keyCode==27) // escape... hide list, move to edit field
{ editfield.focus(); list.style.display="none"; return false; }
if (event.keyCode==13 && list.value.length) // enter... view selected item
{ this.openItem(list.value,editfield,list); return false; }
return true;
}
}
//}}}
/***
|Name|HaloscanMacro|
|Created by|JimSpeth|
|Location|http://end.com/~speth/HaloscanMacro.html|
|Version|1.1.0|
|Requires|~TW2.x|
!Description
Comment and trackback support for TiddlyWiki (via Haloscan).
!History
* 16-Feb-06, version 1.1.0, drastic changes, now uses settings from haloscan account config
* 31-Jan-06, version 1.0.1, fixed display of counts for default tiddlers
* 30-Jan-06, version 1.0, initial release
!Examples
|!Source|!Output|h
|{{{<<haloscan comments>>}}}|<<haloscan comments>>|
|{{{<<haloscan trackbacks>>}}}|<<haloscan trackbacks>>|
!Installation
Register for a [[Haloscan|http://www.haloscan.com]] account. It's free and painless.
Install the HaloscanMacro in a new tiddler with a tag of systemConfig (save and reload to activate).
In the macro configuration code (below), change //YourName// to your Haloscan account name.
Use the macro somewhere in a tiddler (see ViewTemplate for an example).
!Settings
You can adjust various options for your account in the member configuration area of Haloscan's web site. The macro will use these settings when formatting the links.
!Code
***/
//{{{
/* change "YourName" to your Haloscan account name */
config.macros.haloscan = {account: "cicm", baseURL: "http://www.haloscan.com/load/"};
var haloscanLoaded = 0;
config.macros.haloscan.load = function ()
{
if (haloscanLoaded == 1)
return;
account = config.macros.haloscan.account;
if (!account || (account == "YourName"))
account = store.getTiddlerText("SiteTitle");
var el = document.createElement('script');
el.language = 'JavaScript';
el.type = 'text/javascript';
el.src = config.macros.haloscan.baseURL + account;
document.documentElement.childNodes[0].appendChild(el);
haloscanLoaded = 1;
}
config.macros.haloscan.load();
/* this totally clobbers document.write, i hope that's ok */
var safeWrite = function(s)
{
document.written = s;
return s;
};
document.write = safeWrite;
config.macros.haloscan.refreshDefaultTiddlers = function ()
{
var start = store.getTiddlerText("DefaultTiddlers");
if (start)
{
var titles = start.readBracketedList();
for (var t=titles.length-1; t>=0; t--)
story.refreshTiddler(titles[t], DEFAULT_VIEW_TEMPLATE, 1);
}
}
var haloscanRefreshed = 0;
config.macros.haloscan.handler = function (place, macroName, params, wikifier, paramString, tiddler)
{
if (typeof HaloScan == 'undefined')
{
if (haloscanRefreshed == 0)
{
setTimeout("config.macros.haloscan.refreshDefaultTiddlers()", 1);
haloscanRefreshed = 1;
}
return;
}
/*
var id = story.findContainingTiddler(place).id.substr(7);
var hs_search = new RegExp('\\W','gi');
id = id.replace(hs_search,"_");
*/
var id="Commentaires";
account = config.macros.haloscan.account;
if (!account || (account == "YourName"))
account = store.getTiddlerText("SiteTitle");
var haloscanError = function (msg)
{
createTiddlyError(place, config.messages.macroError.format(["HaloscanMacro"]), config.messages.macroErrorDetails.format(["HaloscanMacro", msg]));
}
if (params.length == 1)
{
if (params[0] == "comments")
{
postCount(id);
commentsLabel = document.written;
commentsPrompt = "Commentaires";
var commentsHandler = function(e) { HaloScan(id); return false; };
var commentsButton = createTiddlyButton(place, commentsLabel, commentsPrompt, commentsHandler);
}
else if (params[0] == "trackbacks")
{
postCountTB(id);
trackbacksLabel = document.written;
trackbacksPrompt = "Trackbacks";
var trackbacksHandler = function(e) { HaloScanTB(id); return false; };
var trackbackButton = createTiddlyButton(place, trackbacksLabel, trackbacksPrompt, trackbacksHandler);
}
else
haloscanError("unknown parameter: " + params[0]);
}
else if (params.length == 0)
haloscanError("missing parameter");
else
haloscanError("bad parameter count");
}
//}}}
@@''prendre rendez-vous''@@ avec l'[[ICST]], spécialistes de l'ambisonie
pour une approche synthétique des traitements relatifs à la spatialisation
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Version|1.6.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
''Deferred execution from an 'onClick' link''
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered. You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text
''External script source files:''
You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
''Display script source in tiddler output''
By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.
''Defining javascript functions and libraries:''
Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
''Creating dynamic tiddler content''
An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
''Accessing the ~TiddlyWiki DOM''
The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
Access to this DOM element allows you to create scripts that can:
* vary their actions based upon the specific location in which they are embedded
* access 'tiddler-relative' information (use findContainingTiddler(place))
* perform direct DOM manipulations (when returning wikified text is not enough)
<<<
!!!!!Examples
<<<
an "alert" message box:
><script show>
alert('InlineJavascriptPlugin: this is a demonstration message');
</script>
dynamic output:
><script show>
return (new Date()).toString();
</script>
wikified dynamic output:
><script show>
return "link to current user: [["+config.options.txtUserName+"]]";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
if (!window.story) window.story=window;
var title=story.findContainingTiddler(place).id.substr(7);
return title+" is using "+store.getTiddlerText(title).length+" bytes";
</script>
creating an 'onclick' button/link that runs a script:
><script label="click here" title="clicking this link will show an 'alert' box" show>
if (!window.story) window.story=window;
alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
</script>
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
><script src="demo.js" show>
return "loading demo.js..."
</script>
><script label="click to execute demo() function" show>
demo()
</script>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.02.19 [1.6.0]'' added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper. Fixes error caused when last line of script is a comment.
''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access
''2005.11.08 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
if (lookaheadMatch[1]) { // load a script library
// make script tag, set src, add to body to execute, then remove for cleanup
var script = document.createElement("script"); script.src = lookaheadMatch[1];
document.body.appendChild(script); document.body.removeChild(script);
}
if (lookaheadMatch[5]) { // there is script code
if (lookaheadMatch[4]) // show inline script code in tiddler output
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (lookaheadMatch[2]) { // create a link to an 'onclick' script
// add a link, define click handler, save code in link (pass 'place'), set link attributes
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
link.code="function _out(place){"+lookaheadMatch[5]+"\n};_out(this);"
link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");
link.setAttribute("href","javascript:;");
link.style.cursor="pointer";
}
else { // run inline script code
var code="function _out(place){"+lookaheadMatch[5]+"\n};_out(w.output);"
code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
>MikrosImage (Xavier Brachet)
>[[Éclair]] (Franz Delbecque)
>DuranDuboi (~Jean-Pierre, Farchad)
>[[Arkamys]]
>[[Mist]]
>[[Trinnov]]
>[[FICAM]]
>[[SIS]]
>[[CST]]
>[[ICST (Zurich)]]
>
http://www.jamoma.org/wiki/JamomaSpatializationWorkshopInBergen
les 3, 4, 5 septembre
http://www.ens-louis-lumiere.fr/
<<gradient horiz #fff #eee #eee #ccc>><html><a href="javascript:void(0)" onclick="story.closeAllTiddlers();story.displayTiddlers(null,store.getTiddlerText('DefaultTiddlers').readBracketedList())">
<span style="font-variant:small-caps" title="départ"><b><u>accueil</u></b></span></a></html>
''1)'' [[Formats Numériques|FormatsNumériques]]
''2)'' [[Régie et Ingénierie|RégieIngénierie]]
''3)'' [[Cohérence et Continuité|CohérenceContinuité]]
[[Temps estimés|TempsEstimés]]
----
__[[Commentaires]]__
<<haloscan comments>>
<<gradient horiz #fff #eee #eee #ccc>><html><a href="javascript:void(0)" onclick="story.closeAllTiddlers();story.displayTiddlers(null,store.getTiddlerText('DefaultTiddlers').readBracketedList())">
<span style="font-variant:small-caps" title="départ"><b><u>accueil</u></b></span></a></html>
[[1) Formats Numériques|FormatsNumériques]]
[[2) Régie et Ingénierie|RégieIngénierie]]
[[3) Cohérence et Continuité|CohérenceContinuité]]
__[[notes]]__
<<tag analyses>>
[[Temps estimés|TempsEstimés]]
~~[[modifier MainMenu|MainMenu]]~~
^^[[modifier DefaultTiddlers|DefaultTiddlers]]^^>>
{{{
+++[titre|hint]
le contenu
===
}}}
+++[titre|hint]
le contenu
===
----
{{{
+++[titre sans hint]
hop
===
}}}
+++[titre sans hint]
hop
===
----
{{{
+++[on peut les emboîter|mais comment?]
voici quelque chose, et +++[un lien emboîté]SiteTitle===
===
}}}
+++[on peut les emboîter|mais comment?]
voici quelque chose, et +++[un lien emboîté]SiteTitle===
===
----
{{{
++++[ouvert par défaut]
le contenu
===
}}}
++++[ouvert par défaut]
le contenu
===
----
{{{
+++^[flottant]
par-dessus le reste - il faut cliquer à nouveau le titre pour le refermer
===
}}}
+++^[flottant]
par-dessus le reste - il faut cliquer à nouveau le titre pour le refermer
===
----
{{{
+++[avec une ligne verticale à gauche du contenu]>
et un
et deux
et trois
===
}}}
+++[avec une ligne verticale à gauche du contenu]>
et un
et deux
et trois
===
----
{{{
+++(myCookie)[celui-ci se couvient de son état]
mémoire
===
}}}
+++(myCookie)[celui-ci se couvient de son état]
mémoire
===
----
{{{
+++!!![en employant les formats d'en-tête]
hop
===
}}}
+++!!![en employant les formats d'en-tête]
hop
===
----
{{{
+++{{mySlide{[avec un autre style]}}}
le contenu n'est affecté
===
}}}
+++{{mySlide{[avec un autre style]}}}
le contenu n'est affecté
===
texte "normal"
----
{{{
espaces avant moi
espaces entre les mots
}}}
espaces avant moi
espaces entre les mots
----
{{{SiteTitle}}} => SiteTitle
{{{[[Plan Général]]}}} => [[Plan Général]]
{{{ElémentInexistant}}} => ElémentInexistant
mais: {{{~ElémentInexistant}}} => ~ElémentInexistant
{{{[[je peux écrire ce que je veux pour faire le lien|Plan Général]]}}}
[[je peux écrire ce que je veux pour faire le lien|Plan Général]]
{{{[[lien externe|http://www.google.com]]}}} => [[lien externe|http://www.google.com]]
mais aussi: {{{http://www.google.com}}} => http://www.google.com
{{{[[envoyer un e-mail|mailto:cicm.p8@gmail.com]]}}}
[[envoyer un e-mail|mailto:cicm.p8@gmail.com]]
{{{[img[encore un FAUX!!|http://www.afh.com.mx/images/cicm.GIF]]}}}
[img[encore un FAUX!!|http://www.afh.com.mx/images/cicm.GIF]]
/***
|''Name:''|NestedSlidersPlugin|
|''Source:''|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|''Author:''|Eric Shulman - ELS Design Studios|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.0.10|
Quickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''
You can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.
For more details, please click on a section headline below:
+++!!!!![Configuration]>
Debugging messages for 'lazy sliders' deferred rendering:
<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering
<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered
===
++++!!!!![Usage]>
When installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify
*default to open
*cookiename
*heading level
*floater (with optional CSS width value)
*mouse auto rollover
*custom class/label/tooltip/accesskey
*automatic blockquote
*deferred rendering
The complete syntax, using all options, is:
//{{{
++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip]}}}>...
content goes here
===
//}}}
where:
* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^
marks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^
* {{{(cookiename)}}}^^
saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^
* {{{!}}} through {{{!!!!!}}}^^
displays the slider label using a formatted headline (Hn) style instead of a button/link style^^
* {{{^width^}}} (or just {{{^}}})^^
makes the slider 'float' on top of other content rather than shifting that content downward. 'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.). If omitted, the default width is "auto" (i.e., fit to content)^^
* {{{*}}}^^
automatically opens/closes slider on "rollover" as well as when clicked^^
* {{{{{class{[label=key|tooltip]}}}}}}^^
uses custom label/tooltip/accesskey. {{{{{class{...}}}}}}, {{{=key}}} and {{{|tooltip}}} are optional. 'class' is any valid CSS class name, used to style the slider label text. 'key' must be a ''single letter only''. Default labels/tootips are: ">" (more) and "<" (less), with no default access key assignment.^^
* {{{">"}}} //(without the quotes)//^^
automatically adds blockquote formatting to slider content^^
* {{{"..."}}} //(without the quotes)//^^
defers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^
//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//
===
+++!!!!![Examples]>
simple in-line slider:
{{{
+++
content
===
}}}
+++
content
===
----
use a custom label and tooltip:
{{{
+++[label|tooltip]
content
===
}}}
+++[label|tooltip]
content
===
----
content automatically blockquoted:
{{{
+++>
content
===
}}}
+++>
content
===
----
all options combined //(default open, cookie, heading, sized floater, rollover, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
content
===
}}}
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
content
===
----
complex nesting example:
{{{
+++^[get info...=I|click for information or press Alt-I]
put some general information here, plus a floating slider with more specific info:
+++^10em^[view details...|click for details]
put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===
===
===
}}}
+++^[get info...=I|click for information or press Alt-I]
put some general information here, plus a floating slider with more specific info:
+++^10em^[view details...|click for details]
put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===
===
===
===
+++!!!!![Installation]
<<<
import (or copy/paste) the following tiddlers into your document:
''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)
<<<
===
+++!!!!![Revision History]
<<<
''2006.07.28 - 2.0.0'' added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}
''2006.07.25 - 1.9.3'' when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it. Significantly reduces the 'cookie overhead' when default slider states are used.
''2006.06.29 - 1.9.2'' in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"
''2006.06.22 - 1.9.1'' added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value
''2006.05.11 - 1.9.0'' added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label
''2006.05.09 - 1.8.0'' in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element
''2006.04.24 - 1.7.8'' in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position
''2006.02.16 - 1.7.7'' corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie
''2006.02.15 - 1.7.6'' in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)
''2006.02.04 - 1.7.5'' add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
''2006.01.18 - 1.7.4'' only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.
''2006.01.16 - 1.7.3'' added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.
''2006.01.16 - 1.7.2'' added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
''2006.01.14 - 1.7.1'' added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.
''2006.01.14 - 1.7.0'' added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)
''2006.01.03 - 1.6.2'' When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)
''2005.12.15 - 1.6.1'' added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders
removed checkbox option for 'global' application of lazy sliders
''2005.11.25 - 1.6.0'' added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)
''2005.11.21 - 1.5.1'' revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.
''2005.11.20 - 1.5.0'' added (cookiename) syntax for optional tracking and restoring of slider open/close state
''2005.11.11 - 1.4.0'' added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style
''2005.11.07 - 1.3.0'' removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other
formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines
''2005.11.05 - 1.2.1'' changed name to NestedSlidersPlugin
more documentation
''2005.11.04 - 1.2.0'' added alternative character-mode syntax {{{(((}}} and {{{)))}}}
tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax
''2005.11.03 - 1.1.1'' fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used
code cleanup, added documentation
''2005.11.03 - 1.1.0'' changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}
changed name to EasySlidersPlugin
''2005.11.03 - 1.0.0'' initial public release
<<<
===
!!!!!Credits
<<<
This feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.
<<<
!!!!!Code
***/
//{{{
version.extensions.nestedSliders = {major: 2, minor: 0, revision: 0, date: new Date(2006,7,28)};
//}}}
//{{{
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;
if (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;
// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
//}}}
//{{{
config.formatters.push( {
name: "nestedSliders",
match: "\\n?\\+{3}",
terminator: "\\s*\\={3}\\n?",
lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\[\\>]*\\^)?)?(\\*)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(?:\\}{3})?(\\>)?(\\.\\.\\.)?\\s*",
handler: function(w)
{
// defopen=lookaheadMatch[1]
// cookiename=lookaheadMatch[2]
// header=lookaheadMatch[3]
// panelwidth=lookaheadMatch[4]
// rollover=lookaheadMatch[5]
// class=lookaheadMatch[6]
// label=lookaheadMatch[7]
// blockquote=lookaheadMatch[8]
// deferred=lookaheadMatch[9]
lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
{
// location for rendering button and panel
var place=w.output;
// default to closed, no cookie, no accesskey
var show="none"; var title=">"; var tooltip="montrer"; var cookie=""; var key="";
// extra "+", default to open
if (lookaheadMatch[1])
{ show="block"; title="<"; tooltip="cacher"; }
// cookie, use saved open/closed state
if (lookaheadMatch[2]) {
cookie=lookaheadMatch[2].trim().slice(1,-1);
cookie="chkSlider"+cookie;
if (config.options[cookie]==undefined)
{ config.options[cookie] = (show=="block") }
if (config.options[cookie])
{ show="block"; title="<"; tooltip="cacher"; }
else
{ show="none"; title=">"; tooltip="montrer"; }
}
// parse custom label/tooltip/accesskey: [label=X|tooltip]
if (lookaheadMatch[7]) {
title = lookaheadMatch[7].trim().slice(1,-1);
var pos=title.indexOf("|");
if (pos!=-1) { tooltip = title.substr(pos+1,title.length); title=title.substr(0,pos); }
if (title.substr(title.length-2,1)=="=") { key=title.substr(title.length-1,1); title=title.slice(0,-2); }
if (pos==-1) tooltip += " "+title; // default tooltip: "show/hide <title>"
}
// create the button
if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link
var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;
var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);
btn.onclick=onClickNestedSlider;
btn.setAttribute("href","javascript:;");
btn.setAttribute("title",tooltip);
}
else
var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);
// set extra button attributes
btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)
btn.keyparam=key; // save the access key letter ("" if none)
if (key.length) {
btn.setAttribute("accessKey",key); // init access key
btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
}
// "non-click" MouseOver open/close slider
if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;
// create slider panel
var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";
var panel=createTiddlyElement(place,"div",null,panelClass,null);
panel.button = btn; // so the slider panel know which button it belongs to
panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):""; // save requested panel size
btn.sliderPanel=panel;
panel.style.display = show;
panel.style.width=panel.defaultPanelWidth;
// render slider (or defer until shown)
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
if ((show=="block")||!lookaheadMatch[9]) {
// render now if panel is supposed to be shown or NOT deferred rendering
w.subWikify(lookaheadMatch[8]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
// align slider/floater position with button
adjustSliderPos(place,btn,panel,panelClass);
}
else {
var src = w.source.substr(w.nextMatch);
var endpos=findMatchingDelimiter(src,"+++","===");
panel.setAttribute("raw",src.substr(0,endpos));
panel.setAttribute("blockquote",lookaheadMatch[8]?"true":"false");
panel.setAttribute("rendered","false");
w.nextMatch += endpos+3;
if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\n\n"+panel.getAttribute("raw"));
}
}
}
}
)
// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)
function findMatchingDelimiter(src,starttext,endtext) {
var startpos = 0;
var endpos = src.indexOf(endtext);
// check for nested delimiters
while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
// count number of nested 'starts'
var startcount=0;
var temp = src.substring(startpos,endpos-1);
var pos=temp.indexOf(starttext);
while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
// set up to check for additional 'starts' after adjusting endpos
startpos=endpos+endtext.length;
// find endpos for corresponding number of matching 'ends'
while (startcount && endpos!=-1) {
endpos = src.indexOf(endtext,endpos+endtext.length);
startcount--;
}
}
return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var theLabel = theTarget.firstChild.data;
var theSlider = theTarget.sliderPanel
var isOpen = theSlider.style.display!="none";
// if using default button labels, toggle labels
if (theLabel==">") theTarget.firstChild.data = "<";
else if (theLabel=="<") theTarget.firstChild.data = ">";
// if using default tooltips, toggle tooltips
if (theTarget.getAttribute("title")=="show")
theTarget.setAttribute("title","hide");
else if (theTarget.getAttribute("title")=="hide")
theTarget.setAttribute("title","show");
if (theTarget.getAttribute("title")=="show "+theLabel)
theTarget.setAttribute("title","hide "+theLabel);
else if (theTarget.getAttribute("title")=="hide "+theLabel)
theTarget.setAttribute("title","show "+theLabel);
// deferred rendering (if needed)
if (theSlider.getAttribute("rendered")=="false") {
if (config.options.chkDebugLazySliderRender)
alert("rendering '"+theLabel+"':\n\n"+theSlider.getAttribute("raw"));
var place=theSlider;
if (theSlider.getAttribute("blockquote")=="true")
place=createTiddlyElement(place,"blockquote");
wikify(theSlider.getAttribute("raw"),place);
theSlider.setAttribute("rendered","true");
}
// show/hide the slider
if(config.options.chkAnimate)
anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
else
theSlider.style.display = isOpen ? "none" : "block";
// reset to default width (might have been changed via plugin code)
theSlider.style.width=theSlider.defaultPanelWidth;
// align slider/floater position with target button
if (!isOpen) adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);
// if showing panel, set focus to first 'focus-able' element in panel
if (theSlider.style.display!="none") {
var ctrls=theSlider.getElementsByTagName("*");
for (var c=0; c<ctrls.length; c++) {
var t=ctrls[c].tagName.toLowerCase();
if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
{ ctrls[c].focus(); break; }
}
}
if (this.sliderCookie && this.sliderCookie.length) {
config.options[this.sliderCookie]=!isOpen;
if (config.options[this.sliderCookie]!=this.defOpen)
saveOptionCookie(this.sliderCookie);
else { // remove cookie if slider is in default display state
var ex=new Date(); ex.setTime(ex.getTime()-1000);
document.cookie = this.sliderCookie+"=novalue; path=/; expires="+ex.toGMTString();
}
}
return false;
}
// hijack animation handler 'stop' handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }
// adjust panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {
if (panelClass=="floatingPanel") {
var left=0;
var top=btn.offsetHeight;
if (place.style.position!="relative") {
var left=findPosX(btn);
var top=findPosY(btn)+btn.offsetHeight;
var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;
if (p) { left-=findPosX(p); top-=findPosY(p); }
}
if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;
panel.style.left=left+"px"; panel.style.top=top+"px";
}
}
function getWindowWidth() {
if(document.width!=undefined)
return document.width; // moz (FF)
if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
return document.documentElement.clientWidth; // IE6
if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )
return document.body.clientWidth; // IE4
if(window.innerWidth!=undefined)
return window.innerWidth; // IE - general
return 0; // unknown
}
//}}}
Vos options de configuration de TiddlyWiki sont sauvegardées par votre navigateur (cookies).
Nom d'utilisateur pour signer vos entrées : entrez-le sous la forme d'un nom Wiki (par exemple RaymondQueneau).<<option txtUserName>>
Mot de passe pour l'upload:
<<option pasUploadPassword>>
<<option chkSaveBackups>>Backup de chaque version
<<option chkAutoSave>>Sauvegarde automatique après chaque entrée validée
<<option chkRegExpSearch>>Expression régulières dans les recherches
<<option chkCaseSensitiveSearch>>Respecter la casse dans les recherches
<<option chkAnimate>>Ouverture animée des éléments
-----
[[Importations|ImportTiddlers]]
[[Extensions|PluginManager]]
[[Options complémentaires|AdvancedOptions]]
*+++{{mySlide{[relevé des outils existants... ↓]}}}>
quels formats sont acceptés (en entrée et en sortie)
quelles conditions sur les formats (résolution, nombre de canaux...)
éventuelles pertes supplémentaires
temps de transcodage===
*spécification éventuelle d'un outil générique de transcodage
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::Background]] [[ColorPalette::TertiaryPale]] [[ColorPalette::TertiaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div class='myNormal' id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<!-- <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div> -->
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
*établir des recommandations à partir des besoins des utilisateurs +++^[...]
y a-t-il une attente pour un format de diffusion ouvert?
quel format et support paraît le plus pertinent?
===
*éventuellement spécifier une norme ou un format de diffusion ouverts
*autre modélisations que le PCM +++^[...]
encodage DSD
===: intérêts potentiels, comparaisons qualitatives
Afin de répondre aux objectifs et besoins décrits dans le [[Cahier des Charges|CdC]], le plan d'action se divise en trois étapes: @@margin-left:19em;~~<<tiddler [[FoldUnfold topLvl]]>>~~@@
++++(topLvl)![1) Formats Numériques audio »|JULIEN et Timothée]
<<tiddler FormatsNumériques>>
===
++++(topLvl)![2) Régie et Ingénierie du son »|TIMOTHÉE et Benoît]
<<tiddler RégieIngénierie>>
===
++++(topLvl)![3) Cohérence et Continuité de la perception audiovisuelle »|BENOÎT et Julien]
<<tiddler CohérenceContinuité>>
===
/***
|''Name:''|RefreshTiddlerPlugin|
|''Description:''|Refresh an entire tiddler with optional periodic re-refresh|
|''Date:''|Oct 3, 2006|
|''Source:''|http://solo.dc3.com/tw/index.html#RefreshTiddlerPlugin|
|''Author:''|Bob Denny ~DC-3 Dreams, SP|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''Version:''|1.0.4|
|''~CoreVersion:''|2.0.11, 2.1.0|
|''Browser:''|Firefox 1.5; Internet Explorer 6.0; Safari|
|''Require:''|CheckboxPlugin (http://www.TiddlyTools.com/#CheckboxPlugin)|
This macro provides a tiddler with refresh control. Why would you want this? Perhaps for a webcam feed which is updated every 15, 30, 60 secs etc... or RSS feed from an active news site etc.
At a minimum, a refresh button appears at the location of the macro invocation. Clicking this button causes the contents of the tiddler to be refreshed. Optionally, a checkbox may also be displayed with which the user can enable and disable automatic periodic refresh of the tiddler at a specified interval.
There are three optional parameters
|!Parameter|!Description|
|''1''|Button label, default "Refresh"|
|''2''|Button tooltip, default "Refresh this tiddler"|
|''3''|Periodic refresh interval, sec., default 0 (no periodic refresh checkbox)|
!!Revision History
<<<
''2006.09.13 [1.0.1]'' Initial creation, several days
''2006.09.22 [1.0.2]'' Make periodic refresh checkbox optional
''2006.09.29 [1.0.3]'' Refresh checkbox cookie names different from RefreshIframe.
''2006.10.03 [1.0.4]'' Lint check, validate on TW 2.1.0.
<<<
!!Code
***/
//{{{
version.extensions.RefreshTiddler = {
major: 1, minor: 0, revision: 4,
date: new Date(2006, 10, 3),
type: 'macro',
source: "#RefreshTiddlerPlugin"
};
config.macros.RefreshTiddler =
{
states: { }, // Associative array of refresh states indexed by tiddler name
handler: function(place, macroName, params, wikifier, paramString, tiddler)
{
var tidTitle = tiddler.title; // Shortcut
if(!this.states[tidTitle]) this.states[tidTitle] = { // Array of state objects for refreshed tiddlers
butLabel: "",
butTooltip: "",
refInterval: 0,
doRefresh: false,
initPerRef: false,
timerId: 0,
chkBox: null
};
var state = this.states[tidTitle]; // Shortcut
state.butLabel = params[0] ? params[0] : "Refresh"; // Make these react to edits
state.butTooltip = params[1] ? params[1] : "Refresh this tiddler";
state.refInterval = params[2] ? params[2] : 0; // 0 = no periodic refresh checkbox
var btn = createTiddlyButton(place, state.butLabel, state.butTooltip, this.onButClick);
btn.name = tidTitle; // Set button name to tiddler name (see onButClick())
if(state.refInterval > 0) // If periodic refresh wanted
{
wikify(" [ =chkPerRefTid" + tiddler.created.convertToYYYYMMDDHHMM() + // Uniquify chkbox ID
"{config.macros.RefreshTiddler.states[\"" + tidTitle + "\"].chkBox = this;}" +
"{config.macros.RefreshTiddler.onChkClick(\"" + tidTitle + "\");}] " +
state.butLabel + " every " + state.refInterval + " seconds", place);
state.timerId = 0;
if(!state.initPerRef) this.onChkClick(tidTitle); // Simulate checkbox click (state already from cookie)
}
},
onButClick: function(e)
{
if(!e) e = window.event;
var tidTitle = resolveTarget(e).name; // Name is the tiddler name!
//displayMessage("but " + tidTitle);
story.refreshTiddler(tidTitle, null, true);
return false;
},
onChkClick: function(tidTitle)
{
var state = this.states[tidTitle];
if(state.chkBox.checked) {
if(state.timerId) clearTimeout(state.timerId);
this.startRefresh(tidTitle);
} else {
state.doRefresh = false;
}
state.initPerRef = true;
},
startRefresh: function(tidTitle)
{
var state = this.states[tidTitle];
state.doRefresh = true;
//displayMessage("st " + tidTitle + " " + state.refInterval);
state.timerId = setTimeout("config.macros.RefreshTiddler.reRefresh(\"" +
tidTitle + "\")", state.refInterval * 1000);
},
reRefresh: function(tidTitle)
{
var state = this.states[tidTitle];
state.timerId = 0;
if(!state.doRefresh) return;
// Kill re-refresh cycle if tiddler closed or edited
var tidElem = document.getElementById(story.idPrefix + tidTitle); // DON'T GET CUTE! THIS IS CORRECT!
//**BUGBUG** Hardwired to EditTemplate!
if(!tidElem || tidElem.attributes['template'].value == "EditTemplate") // Prevent hidden or editing
{
state.initPerRef = false;
return;
}
//displayMessage("re " + tidTitle + " " + state.refInterval);
story.refreshTiddler(tidTitle, null, true);
state.timerId = setTimeout("config.macros.RefreshTiddler.reRefresh(\"" +
tidTitle + "\")", state.refInterval * 1000);
}
};
//}}}
boîtes, institutions, partenaires à contacter pour les enquêtes
@@''revoir dans le CdC''@@:
__''^^fin de la section A^^''__: --mettre en place-- //contribuer à// une charte de bonnes pratiques //dans le cadre d'une industrie ouverte//
__''^^fin de la section B^^''__: Pour l'étude de la cohérence spatiale dans la relation image/son et --de son-- //dans une// approche orientée objets, une plate forme --logicielle-- d'expérimentation sera mise en oeuvre pour l'élaboration de tests.
__''^^section C^^''__: En garantissant la cohérence et la continuité du rendu sonore //et du rendu audiovisuel//, dans --ses-- //leurs// aspects dynamiques et spatiaux, on gagne en qualité des produits et en fidélité à l'égard des producteurs et des auteurs.
__''^^section G - "les outils de"^^''__: la question de la ''conformité'' semble ne pas être problématique pour le son alors qu'elle l'est pour la vidéo (p.ex. différents encodages sous l'extension [[.avi]]). Il faut revoir ce point à la prochaine réunion du Lot C2.2.
__''^^ajouter avant le tableau (partie K)^^''__: spécification des attributions du [[CICM|CICM_MSH_PNord]] et de LouisLumière
@@margin-left: 40em;^^<<tiddler [[FoldUnfold etape2]]>>^^@@
+++(etape2)!!!![.description des étapes de production et de diffusion]
<<tiddler DescrEtapes>>
===
+++(etape2)!!!![.caractérisation et évaluation des environnements d'utilisation]
<<tiddler CaractérisationEnvironnements>>
===
+++(etape2)!!!![.critères d'évaluation des équipements de mesure audio]
<<tiddler CritèresÉquipements>>
===
+++(etape2)!!!![.corpus de fichiers test de calibration et de référence]
<<tiddler CorpusFichiers>>
===
+++(etape2)!!!!![.outils de calibration|Louis Lumière]
@@margin-left:10em;''^^sous la responsabilité de LouisLumière^^''@@
===
+++(etape2)!!!!![.base de données des périphériques, équipements et outils|Louis Lumière]
@@margin-left:10em;''^^sous la responsabilité de LouisLumière^^''@@
===
pour tous les lots: finir Cahiers des Charges, États de l'Art
''mercredi 29, 10h'': atelier C2.2 pour terminer et valider le CdC
<<tiddler [[Atelier C2.2 29/08]]>>
@@→@@placer notre plan d'action dans le paragraphe Fonctionnalités (partie B) du CdC
@@→@@compléter les rubriques manquantes (parties D et E) du CdC
''mardi 18, après-midi'', chez MikrosImage: validation C2.1 et C2.2
réunion plénière: 19 septembre (?)
|| !true | !false |
|!topLvl | <script label="set">config.options.chkSlidertopLvl=true</script> | <script label="set">config.options.chkSlidertopLvl=false</script> |
|etape1 | <script label="set">config.options.chkSlideretape1=true</script> | <script label="set">config.options.chkSlideretape1=false</script> |
|etape2 | <script label="set">config.options.chkSlideretape2=true</script> | <script label="set">config.options.chkSlideretape2=false</script> |
|etape3 | <script label="set">config.options.chkSlideretape3=true</script> | <script label="set">config.options.chkSlideretape3=false</script> |
|!les 3 étapes | <script label="set">config.options.chkSlideretape1=true;config.options.chkSlideretape2=true;config.options.chkSlideretape3=true</script> | <script label="set">config.options.chkSlideretape1=false;config.options.chkSlideretape2=false;config.options.chkSlideretape3=false</script> |
|caractEnvir | <script label="set">config.options.chkSlidercaractEnvir=true</script> | <script label="set">config.options.chkSlidercaractEnvir=false</script> |
|cohImSon | <script label="set">config.options.chkSlidercohImSon=true</script> | <script label="set">config.options.chkSlidercohImSon=false</script> |
|critDiff | <script label="set">config.options.chkSlidercritDiff=true</script> | <script label="set">config.options.chkSlidercritDiff=false</script> |
|critFormats | <script label="set">config.options.chkSlidercritFormats=true</script> | <script label="set">config.options.chkSlidercritFormats=false</script> |
|elemImSon | <script label="set">config.options.chkSliderelemImSon=true</script> | <script label="set">config.options.chkSliderelemImSon=false</script> |
|formats | <script label="set">config.options.chkSliderformats=true</script> | <script label="set">config.options.chkSliderformats=false</script> |
|interactions | <script label="set">config.options.chkSliderinteractions=true</script> | <script label="set">config.options.chkSliderinteractions=false</script> |
|outilsUpDown | <script label="set">config.options.chkSlideroutilsUpDown=true</script> | <script label="set">config.options.chkSlideroutilsUpDown=false</script> |
|!les autres | <script label="set">config.options.chkSlidercaractEnvir=true;config.options.chkSlidercohImSon=true;config.options.chkSlidercritDiff=true;config.options.chkSlidercritFormats=true;config.options.chkSliderelemImSon=true;config.options.chkSliderformats=true;config.options.chkSliderinteractions=true;config.options.chkSlideroutilsUpDown=true</script> | <script label="set">config.options.chkSlidercaractEnvir=false;config.options.chkSlidercohImSon=false;config.options.chkSlidercritDiff=false;config.options.chkSlidercritFormats=false;config.options.chkSliderelemImSon=false;config.options.chkSliderformats=false;config.options.chkSliderinteractions=false;config.options.chkSlideroutilsUpDown=false</script> |
<<gradient horiz #ccc #eee #eee #fff>> chercher un élément: <<goto>><<closeAll>><<permaview>><<slider chkSliderEditBar SideBarOptions_full "commandes d'édition">>
~~@@display:block;text-align:right;powered by TiddlyWiki@@~~>>
<<newTiddler>>
<<saveChanges>>
<<tiddler DownloadGeneral>>
<<tiddler UploadSickhead>>
<<tiddler UploadTiddlyspot>>
<<tiddler UploadCICM>>
<<tiddler DownloadTiddlyspot>>
{{button{[[options|OptionsPanel]]}}}
<<tiddler SideBarTabs>>
+++[tabs »]
<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>
===
<html><a href="javascript:void(0)" onclick="story.closeAllTiddlers();story.displayTiddlers(null,store.getTiddlerText('DefaultTiddlers').readBracketedList())">
<span title="départ">HD3D - IIO Lot C2.2</span></a></html>
{{{
version.extensions.slideCookie = { major: 0, minor: 1, revision: 0 };
}}}
{{{
config.macros.slideCookie =
{
handler: function(place, macroName, params)
{
var btn=createTiddlyButton (place, "Fold/Unfold", "for "+params, this.onSlideClick(params,place));
},
onSlideClick: function(params,place)
{
var prefix="chkSlider";
var cookieList=[];
for (p in params)
cookieList[p]=prefix.concat(params[i]);
var here=story.findContainingTiddler(place);
if (!here)
here=place.parentNode;
var elems=here.getElementsByTagName("*");
for (x in cookieList) {
for (var n=0; n<elems.length; n++)
if (elems[n].sliderPanel &&
elems[n].sliderPanel.button.sliderCookie==cookieList[x])
window.onClickNestedSlider({target:elems[n]});
};
}
}
}}}
.tiddler {
padding-bottom: 1em;
border-bottom: 1px solid [[ColorPalette::SecondaryMid]];
}
.mySlide {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::Background]];
}
.mySlide:hover {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::Background]];
text-decoration: underline;
}
.header {
border-bottom: groove 3px [[ColorPalette::TertiaryMid]];
}
#mainMenu {
border-right: solid 5px [[ColorPalette::TertiaryLight]];
}
#mainMenu .button {
padding: 1px;
text-decoration: underline;
}
#sidebarOptions .sliderPanel .button {
padding:0em;
margin:0em;
}
#sidebarOptions .sliderPanel .button a {
color: [[ColorPalette::Foreground]];
text-decoration: none;
padding:0em;
margin:0em;
}
#sidebarOptions .sliderPanel .button a:hover {
background: [[ColorPalette::SecondaryLight]];
padding:0em;
margin:0em;
}
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}
h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryLight]];}
.tabSelected{color:[[ColorPalette::PrimaryDark]];
background:[[ColorPalette::TertiaryPale]];
border-left:1px solid [[ColorPalette::TertiaryLight]];
border-top:1px solid [[ColorPalette::TertiaryLight]];
border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}
#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background::[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
.tiddler .defaultCommand {font-weight:bold;}
.shadow .title {color:[[ColorPalette::TertiaryDark]];}
.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}
.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}
.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}
.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}
.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}
.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
.imageLink, #displayArea .imageLink {background:transparent;}
.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}
body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}
hr {height:1px;}
a {text-decoration:none;}
dt {font-weight:bold;}
ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}
.txtOptionInput {width:11em;}
#contentWrapper .chkOptionInput {border:0;}
.externalLink {text-decoration:underline;}
.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}
.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}
/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
#mainMenu .tiddlyLinkExisting,
#mainMenu .tiddlyLinkNonExisting,
#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}
.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}
#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:0em 0em 0em 0.5em; font-size:1.1em;}
#sidebar {position:absolute; right:0px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:0.5em; padding:0.5em; line-height:1.5em;}
#sidebarOptions .sliderPanel a {display:inline; padding:0;}
#sidebarOptions .sliderPanel .button a {display:inline; padding:0; font-weight:normal; font-style:normal;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}
.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}
#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}
.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}
.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}
.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}
#contentWrapper {display:block;}
#splashScreen {display:none;}
#displayArea {margin:1em 17em 0em 14em;}
.toolbar {text-align:right; font-size:.9em;}
.tiddler {padding:1em 1em 0em 1em;}
.missing .viewer,.missing .title {font-style:italic;}
.title {font-size:1.6em; font-weight:bold;}
.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}
.tiddler .button {padding:0.2em 0.4em;}
.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}
.footer {font-size:.9em;}
.footer li {display:inline;}
.annotation {padding:0.5em; margin:0.5em;}
* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}
.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}
.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}
.sparkline {line-height:1em;}
.sparktick {outline:0;}
.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}
* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
Le développement et l’utilisation des technologies numériques en production et post production induisent
l’intégration, à chaque étape du traitement du signal, des approximations sur le calage de la synchronisation. Ces
approximations sont principalement dues à l’imprécision des outils numériques, en général de l’ordre de ½ image
par étape.
//pas compris//: calage mécanique - son décalé de 1 image en avance? d'où viennent les 20 ou 21 images d'avance?
→ 1 image d'avance par rapport à la synchro lors de la validation "acoustique" (?)
----
//(curiosité)//: comment enregistre-t-on du son sur une pellicule avec une caméra optique?
codes SMPTE et AATON: il fallait un système de synchronisation permettant de supprimer le clap traditionnel
<<<
//Si l'on est amené a tourner avec une caméra film quartzée et un magnétophone équipé d'une carte time code, si la
post-production s'effectue de manière traditionnelle (recopie du son sur magnétique perforée), il faut faire un clap au
tournage et s'assurer que le time-code du magnétophone soit régler sur 25 I/s, même si la caméra tourne a 24 I/s. Le fait
que le magnétophone incrémente son time code a 25 I/s, permet de retrouver la bonne synchronisation lors du transfert
son (support magnétique perforé). N'oublions pas que dans ce cas de figure, c'est la fréquence du secteur qui nous sert
de référence (50 Hz).
La recopie du son sur support perforé s. effectuera, à la vitesse de la caméra du tournage, c. est à dire 24 I/s. Si l'on
incrémente le time code a 24 I/s, dans le magnétophone, nous obtenons lors de la recopie, un signal de référence de 24
x 2 = 48 Hz. Alors que si le time code s'incrémente a 25 I/s, dans le magnétophone, nous obtenons lors de la recopie,
un signal de référence de 25 x 2 = 50 Hz.Dans ce cas là, nous sommes parfaitement synchrone avec l'image tournée.
Dans le cas d. un montage virtuel, il faudra incrémenter le time-code du magnétophone à 24 I/s.//
<<<
----
historique des façons de synchroniser:
>2 choses à prendre en compte: son et image défilant à la même vitesse; son et image démarrant au même instant (synchro de position)
#caméra et enregistrement son mis en mouvement par une même source
#signal pilote envoyé en continu par la caméra - il permet de régler au montage la vitesse de déroulement du magnétophone; un clap est nécessaire pour caler le début du plan
#"clappeur": bip+flash envoyé par le magnétophone lors de sa mise en marche - il suffit de recaler au montage le bip et l'image flashée
#time code: date (heure, minute, seconde) inscrite autant sur la pellicule que sur la bande magnétique du son
{{{
|Ligne 1|voilà|
|Ligne 2, plus longue|re-voilà|
}}}
|Ligne 1|voilà|
|Ligne 2, plus longue|re-voilà|
----
{{{
| à droite| voilà|
|Ligne 2, plus longue |re-voilà |
}}}
| à droite| voilà|
|Ligne 2, plus longue |re-voilà |
----
{{{
| au centre | voilà |
|Ligne 2, plus longue |re-voilà |
}}}
| au centre | voilà |
|Ligne 2, plus longue |re-voilà |
----
{{{
|!avec des titres| !sur les colonnes | ou ailleurs |
| Ligne 1 | voilà | voilà2 |
|Ligne 2, plus longue |re-voilà |!ailleurs |
}}}
|!avec des titres| !sur les colonnes | ou ailleurs |
| Ligne 1 | voilà | voilà2 |
|Ligne 2, plus longue |re-voilà |!ailleurs |
----
{{{
| !unissons les colonnes |>| mais pas toutes|
| Ligne 1 | et les lignes | a|
|Ligne 2, plus longue |~| b|
| Ligne 3|mais pas toutes | SiteTitle|
}}}
| !unissons les colonnes |>| mais pas toutes|
| Ligne 1 | et les lignes | a|
|Ligne 2, plus longue |~| b|
| Ligne 3|mais pas toutes | SiteTitle|
''1)''
prendre tout de suite des rendez-vous pour:
.usages et description de ~DolbyE, DTS, THX...
.outils et librairies de transcodage
.espaces...:
formats: énumération - 2 semaines
formats pour la diffusion - 3 semaines
.critères d'évaluation...:
une semaine
.outils de conformité...
+ librairies:
deux semaines - hors spécification!
//_temps de (1): 2 mois//
''2)''
.enquêtes: préparation, rédaction
15 jours
..intégrer: synchronisation (marges acceptables, usages); le son comme témoin de synchro (usages)
.enquêtes: rencontres
une semaine (éparpillée)
.caractérisations et dépouillement des enquêtes:
3 semaines
//_temps de (2): 2 mois//
''3)''
.enquête (pour outils de conversion): comment se font les mixages et le mastering dans l'industrie - Arkamys, Mist, ~DuranDuboi, Trinnov...
.cohérence sonore:
2 semaines
.outils de conversion:
8 semaines (enquête comprise)
- "généalogie" du 5.1: +1 semaine
.cohérence image/son:
.enquête synchro intégrée dans celles de (2)
- analyses: 2× 1 semaine
- en amont: constituer une "bibliothèque" d'exemples qui seront analysés (films, clips, pubs)
.consultation: pertinence de nos analyses pour le cinéma - LouisLumière, universités (+écoles de cinéma?)
- profiter des enquêtes de (2) (caractéristiques des enceintes, bandes passantes...)
- enquête sur les usages de mastering
- continuité à travers les supports/étapes: 2 semaines
- jeux vidéo: 2 semaines
.critères d'évaluation:
1 semaine
//_temps de (3): 4 mois et une semaine//
''@@font-variant:small-caps;premières estimations@@''
''~~les temps sont en semaines calendaires, pas en hommes.mois; __à compter de septembre 2007__~~''
''1)'' [[Formats Numériques audio|FormatsNumériques]]
formats et supports; outils de transcodage; outils upmix/downmix/spatialisation: @@3 semaines@@
critères d'évaluation: @@1 semaine@@
perspectives: @@2 semaines@@
~~''les enquêtes pour cette partie se feront avec celles de la partie 2''~~
//_temps de (1): 1 mois et demi//
''2)'' [[Régie et Ingénierie du son|RégieIngénierie]]
préparation et rédaction des enquêtes: @@2 semaines@@
enquêtes: @@3 semaines@@
dépouillement des enquêtes: @@3 semaines@@
rédaction des livrables: @@4 semaines@@
//_temps de (2): 3 mois//
''3)'' [[Cohérence et Continuité|CohérenceContinuité]]
études:
>études préalables (les notions de cohérence et de continuité): @@4 semaines@@
>sélection et analyses d'exemples: @@2 semaines@@
>cohérence sonore: @@2 semaines@@
>cohérence image/son (hors prospections et questions d'écriture): @@2 semaines@@
fidélité à travers les supports et les étapes: @@2 semaines@@
cohérence et écriture audiovisuelle: @@2 semaine@@
approches prospectives: @@8 semaines@@
perspectives: @@2 semaines@@
critères d'évaluation: @@4 semaines@@
//_temps de (3): 7 mois//
''@@TEMPS TOTAL: 11 mois et demi@@''
/***
|''Name:''|TiddlerWithParamsPlugin|
|''Version:''|1.0.1 (2006-03-22)|
|''Source:''|http://tiddlywiki.abego-software.de/#TiddlerWithParamsPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
!Description
The TiddlerWithParamsPlugin extends the build-in {{{<<tiddler...>>}}} macro. It replaces placeholders ($1, $2, ...) in the given tiddler by values passed with the macro. Then it inserts the (replaced) text, just like the original {{{<<tiddler...>>}}} macro.
''Syntax:''
|>|{{{<<}}}''tiddler '' //tiddlerName// [//className//] [''asText''] [''with:'' //arguments// ] [''prefix:'' //prefixString//] {{{>>}}}|
|//tiddlerName//|The name of the tiddler to be included. The tiddler may contain placeholders ($1, $2, ... $9) that will be replaced with the values passed with the macro|
|//className//|The (CSS) class to be used around the embedded tiddler|
|''asText''|When defined the (replaced) content of the tiddler is inserted as pure text, i.e. it is not "wikified".|
|//arguments//|up to 9 arguments may be passed to the macro, used as the values for the placeholders $1, $2, ... $9 in the referenced template|
|//prefixString//|By default the placeholders $1, $2, $3,..., $9 are used. But you may change the "prefix" before the placeholder number ("$") to some other text through the "prefix:" option. This may be necessary when you are using the $n in the tiddler you are referencing (e.g. when you are using regular expressions).|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. ~~|
!Example
The following ''//ProjectTemplate//'' tiddler defines an "Overview" page for a project, that gives access to various "sub-tiddlers" used in the project, that follow a static naming schema (e.g. all Notes for any project are stored in a tiddler called "//projectName// Notes"). $1 holds the name of the Project (e.g. "ForEachTiddler"), $2 holds the type of the published component (e.g. "Plugin", "Macro", "Function").
{{{
![[$1Project]] Overview
* [[$1$2]]
* [[ToDo|$1 ToDos]]
* [[Notes|$1 Notes]]
* [[Examples|$1Examples]]
* [[Tests|$1 Tests]]
* [[Open Bugs/CRs|$1 Open Bugs and ChangeRequests]]
}}}
This template is now used in the ''//ForEachTiddlerProject//'' tiddler:
{{{
<<tiddler ProjectTemplate with: ForEachTiddler Plugin>>
}}}
This results in the following tiddler text for the ''//ForEachTiddlerProject//'' tiddler:
{{{
![[ForEachTiddlerProject]] Overview
* [[ForEachTiddlerPlugin]]
* [[ToDo|ForEachTiddler ToDos]]
* [[Notes|ForEachTiddler Notes]]
* [[Examples|ForEachTiddlerExamples]]
* [[Tests|ForEachTiddler Tests]]
* [[Open Bugs/CRs|ForEachTiddler Open Bugs and ChangeRequests]]
}}}
!Revision history
* v1.0.0 (2006-01-20)
** initial version
* v1.0.1 (2006-03-22)
** Added 'asText' option
** Support Safari (Thanks to Elise Springer for reporting the problem)
!Code
***/
//{{{
//============================================================================
// TiddlerWithParamsPlugin
//============================================================================
// Ensure that the Plugin is only installed once.
//
if (!version.extensions.TiddlerWithParamsPlugin) {
version.extensions.TiddlerWithParamsPlugin = {
major: 1, minor: 0, revision: 1,
date: new Date(2006,3,22),
type: 'plugin',
source: "http://tiddlywiki.abego-software.de/#TiddlerWithParamsPlugin"
};
// ---------------------------------------------------------------------------
// Helpers
// ---------------------------------------------------------------------------
var indexInArray = function(array, item) {
for (var i = 0; i < array.length; i++) {
if (array[i] == item) {
return i;
}
}
return -1;
}
var myEscapeRegExp = function(s)
{
// The original escapeRegExp function does not work with Safari (2.0.3)
// since the $& is not implemented.
var t = s.replace(/\\/g, "\\\\");
t = t.replace(/\^/g, "\\^");
t = t.replace(/\$/g, "\\$");
t = t.replace(/\*/g, "\\*");
t = t.replace(/\+/g, "\\+");
t = t.replace(/\?/g, "\\?");
t = t.replace(/\(/g, "\\(");
t = t.replace(/\)/g, "\\)");
t = t.replace(/\=/g, "\\=");
t = t.replace(/\!/g, "\\!");
t = t.replace(/\|/g, "\\|");
t = t.replace(/\,/g, "\\,");
t = t.replace(/\{/g, "\\{");
t = t.replace(/\}/g, "\\}");
t = t.replace(/\[/g, "\\[");
t = t.replace(/\]/g, "\\]");
t = t.replace(/\./g, "\\.");
return t;
}
// ---------------------------------------------------------------------------
// The (hijacked) tiddler Macro Handler
// ---------------------------------------------------------------------------
config.macros.tiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var className = null;
var argsStart = -1;
var doWikify = true;
var iParams = 1;
if (params[iParams] != "asText" && params[iParams] != "with:") {
className = params[iParams++];
}
if (params[iParams] == "asText") {
iParams++;
doWikify = false;
}
if (params[iParams] == "with:") {
iParams++;
argsStart = iParams;
}
var wrapper = createTiddlyElement(place,"span",null,className ? className : null,null);
var text = store.getTiddlerText(params[0]);
if(text) {
// Check for recursion
var tiddlerName = params[0];
var stack = config.macros.tiddler.tiddlerStack;
if (stack.find(tiddlerName) !== null) return;
if (argsStart >= 0) {
// The params between the "with:" and the "prefix:" (or the end) are the arguments,
// The param behind the "prefix:" is the prefix before the placeholder numbers.
var argsEnd = params.length;
var prefix = "$";
var prefixIndex = indexInArray(params, "prefix:");
if (prefixIndex >= argsStart) {
argsEnd = prefixIndex;
if (prefixIndex < (params.length-1)) {
prefix = params[prefixIndex+1];
}
}
// to avoid any "special RE chars" problems with the prefix string escape all chars.
prefix = myEscapeRegExp(prefix);
var args = params.slice(argsStart, argsEnd);
var n = Math.min(args.length, 9);
for (var i = 0; i < n; i++) {
var value = args[i];
var placeholderRE = new RegExp(prefix+(i+1),"mg");
text = text.replace(placeholderRE, value);
}
}
stack.push(tiddlerName);
try {
if (doWikify) {
wikify(text,wrapper,null,store.getTiddler(params[0]));
} else {
wrapper.appendChild(document.createTextNode(text));
}
} finally {
stack.pop();
}
}
}
config.macros.tiddler.tiddlerStack = [];
// End of "install only once"
}
//============================================================================
// End of TiddlerWithParamsPlugin
//============================================================================
//}}}
/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2006 ([[www.abego-software.de|http://www.abego-software.de]])
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/
Cette page a été créée avec [[TiddlyWiki|http://www.tiddlywiki.com]], version <<version>>.
Une meilleure visualisation se fait avec <html><a href="http://www.spreadfirefox.com/?q=affiliates&id=0&t=219"><img border="0" alt="Firefox 2" title="Firefox 2" src="http://sfx-images.mozilla.org/affiliates/Buttons/firefox2/ff2b80x15.gif"/></a></html>.
-presets (pour la srésolution 3D)
l'exemple de Mozart (dans ~St-Eustache) n'est peut-être pas le meilleur pour percevoir la résolution au-delà du plan azimutal: on voit la différence entre les "omni" et les "frontal", mais nettement moins bien entre les différents réglages "omni"
*qu'y aurait-il à percevoir (pour cet exemple) quant à la résolution spatiale au-dessus de 40 ou 72 degrés hors du plan azimutal?
La technologie Trinnov permet en effet un enregistrement et une restitution fidèles d'un champ acoustique, mais la question se pose s'il est vraiment nécessaire d'avoir cette résolution là //à l'enregistrement//: quelles sont les situations où il faut vraiment enregistrer avec cette précision?
~~-pour composer/construire un espace, il me faut savoir comment le //diffuser// (parfois même à partir de sons mono)~~
tiddlyspot password:
<<option pasUploadPassword>>
/***
Contains the stuff you need to use Tiddlyspot
Note you must also have UploadPlugin installed
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'hd3d.c22';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = true;
window.readOnly = false; // make sure of it (for tw 2.2)
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[Welcome to Tiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[Welcome to Tiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'Welcome to Tiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki Guides|http://tiddlywikiguides.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<<br>>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n")
});
//}}}
<<upload http://hd3d.c22.tiddlyspot.com/store.cgi index.html . . hd3d.c22>>
<html><a href='http://hd3d.c22.tiddlyspot.com/download' class='button'>download</a></html>
<<upload http://cicm.mshparisnord.org/hd3d/store.php index.html . . cicmp8>>~~vers CICM~~
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 06/09/2007 14:26:44 | CICM_MSH_PNord | [[index.html|file:///Users/cylens/Desktop/tiddlywiki/index.html]] | [[store.php|http://cicm.mshparisnord.org/hd3d/store.php]] | . | [[index.html | http://cicm.mshparisnord.org/hd3d/index.html]] | . | failed |
| 06/09/2007 14:26:52 | CICM_MSH_PNord | [[index.html|file:///Users/cylens/Desktop/tiddlywiki/index.html]] | [[store.php|http://sickhead.free.fr/hd3d/store.php]] | . | [[index.html | http://sickhead.free.fr/hd3d/index.html]] | . |
| 07/09/2007 06:57:10 | CICM_MSH_PNord | [[index.html|file:///C:/Documents%20and%20Settings/Administrator/Desktop/index.html]] | [[store.php|http://sickhead.free.fr/hd3d/store.php]] | . | [[index.html | http://sickhead.free.fr/hd3d/index.html]] | . | ok |
| 07/09/2007 08:36:00 | CICM_MSH_PNord | [[index.html|file:///C:/Documents%20and%20Settings/Administrator/Desktop/index.html]] | [[store.php|http://sickhead.free.fr/hd3d/store.php]] | . | [[index.html | http://sickhead.free.fr/hd3d/index.html]] | . | failed |
| 07/09/2007 09:07:15 | CICM_MSH_PNord | [[index.html|file:///C:/Documents%20and%20Settings/Administrator/Desktop/index.html]] | [[store.php|http://sickhead.free.fr/hd3d/store.php]] | . | [[index.html | http://sickhead.free.fr/hd3d/index.html]] | . | ok |
| 07/09/2007 09:22:26 | CICM_MSH_PNord | [[index.html|file:///C:/Documents%20and%20Settings/Administrator/Desktop/index.html]] | [[store.php|http://sickhead.free.fr/hd3d/store.php]] | . | [[index.html | http://sickhead.free.fr/hd3d/index.html]] | . |
| 07/09/2007 11:38:42 | CICM_MSH_PNord | [[index.html|file:///Users/cylens/Desktop/index.html]] | [[store.php|http://sickhead.free.fr/hd3d/store.php]] | . | [[index.html | http://sickhead.free.fr/hd3d/index.html]] | . | ok |
| 07/09/2007 11:50:34 | CICM_MSH_PNord | [[index.html|file:///Users/cylens/Desktop/index.html]] | [[store.php|http://sickhead.free.fr/hd3d/store.php]] | . | [[index.html | http://sickhead.free.fr/hd3d/index.html]] | . | ok |
| 07/09/2007 12:17:19 | CICM_MSH_PNord | [[index.html|file://localhost/Users/cylens/Desktop/index.html]] | [[store.php|http://sickhead.free.fr/hd3d/store.php]] | . | [[index.html | http://sickhead.free.fr/hd3d/index.html]] | . | failed |
| 07/09/2007 12:17:48 | CICM_MSH_PNord | [[index.html|file://localhost/Users/cylens/Desktop/index.html]] | [[store.php|http://sickhead.free.fr/hd3d/store.php]] | . | [[index.html | http://sickhead.free.fr/hd3d/index.html]] | . |
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.0|
|''Date:''|May 5, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (#3125)|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 0,
date: new Date("May 5, 2007"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0 (#3125)'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
refreshOptions: function(listWrapper) {
var uploadOpts = [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine",
]
var opts = [];
for(i=0; i<uploadOpts.length; i++) {
var opt = {};
opts.push()
opt.option = "";
n = uploadOpts[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
}
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,null,null,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
bidix.upload.httpUpload(rssUploadParams,convertUnicodeToUTF8(generateRss()),callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == httpStatus.NotFound)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
/* don't want this for tiddlyspot sites
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
*/
//}}}
<<upload http://sickhead.free.fr/hd3d/store.php index.html . . cicmp8>>~~vers sickhead~~
<<upload http://hd3d.c22.tiddlyspot.com/store.cgi index.html . . hd3d.c22>>~~vers tiddlyspot~~
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
{{{
<<tiddler SiteTitle>>
<<tiddler MonTitre>>
}}}
<<tiddler SiteTitle>>
<<tiddler MonTitre>>
<<RefreshTiddler>>
<script>
return "topLvl: " + config.options.chkSlideretape3;
</script>
- __Kronos (Ph.Glass et Hendrix) × quatuor enregistré par Trinnov__:
chez Trinnov on entend à la fois l'espace acoustique et les articulations des intruments - c'est un résultat plutôt rare
la prise de son de ~Kronos-Glass (ou l'interprétation) met moins en avant ces articulations
pour ~Kronos-Hendrix, on entend plus la salle, et le jeu est plus nettement articulé: la prise ressemble plus à celle de Trinnov
@@''[[continuité et cohérence image/son|CohérenceImageSon]]''@@:
En fait, tous les éléments à prendre en compte ont un rapport au sens (manutention/altération/construction).
Il faut peut-être revoir les détails des éléments (en particulier dans "interactions entre audio et visuel").
Le sens entre en jeu pour définir quelle(s) cohérence(s) on peut chercher:
>approximation/éloignement de l'image dans un film ou un concert filmé
>utilisations du résultat (commercial × didactique, p.ex.)
>...
{{button{<script>
return "[[enregistrer sous...|"+document.location.toString()+"]]"
</script>}}}
in RégieIngénierie:
Il faut remettre en jeu la question de l'enregistrement et de la captation.
@@''enregistrements''@@: comparer/analyser l'enregistrement et la diffusion d'un morceau en version studio et en version live.
//en particulier//: les avantages des techniques d'enregistrement comme 5.1 ou Sound Field pour les musiques populaires dans des espaces ouverts, pour les concerts filmés...
- dans "Périodes" on entend parfois des attaques simultanément des deux côtés, ce qui brouille l'image spatiale de l'ensemble instrumental
- dans "Partiels" aussi, la localisation (résolution spatiale) n'est pas si fine - mais pour un ensemble de cette taille et pour une musique jouant sur la fusion des sons, ça ne pose pas forcément un problème.
Il est plus facile de déceler la position des instruments à certains moments - la sonorité générale peut y contribuer.
Est-ce qu'une résolution plus fine gênerait la fusion des timbres? (notamment au début et au retour d'éléments rythmés en tutti, après le duo de flûtes).
in DiffusionSpatialisation:
lorsqu'on parle de //modélisation//, nous considérerons un espace sonore et les enjeux de sa modélisation (et/ou de sa représentation) lors de la captation (enregistrement), lors de son traitement, et lors de sa diffusion.
pour le ''@@corpus de fichiers test@@'': on pourrait disponibiliser sur le site du [[CICM|CICM_MSH_PNord]] un catalogue de fichiers établi à partir des enquêtes de la [[partie 2|RégieIngénierie]]
|{{{''gras''}}} | ''gras'' (deux ' de chaque côté)|
|{{{//italique//}}} | //italique//|
|{{{@@surligné@@}}} | @@surligné@@|
|{{{__souligné__}}} | __souligné__ (deux _ de chaque côté)|
|{{{--barré--}}} | --barré--|
{{{
barre verticale à gauche:
>une ligne
>à la fois
>comme ça
<<<
ou plusieurs
d'un coup
<<<
}}}
>une ligne
>à la fois
>comme ça
<<<
ou plusieurs
d'un coup
<<<
{{{
*bullets
**à plusieurs niveaux
}}}
*bullets
**à plusieurs niveaux
{{{
#numérotation
#suivie
##à plusieurs niveaux
}}}
#numérotation
#suivie
##à plusieurs niveaux
{{{
!en-tête 1
!!en-tête 2
!!!en-tête 3
...
!!!!!!en-tête 6
}}}
!en-tête 1
!!en-tête 2
!!!en-tête 3
...
!!!!!!en-tête 6
@@''généalogie''@@: on pourrait étudier (rapidement?) les origines des différents encodages: psychoacoustique
{{{
// Messages
merge(config.messages,{
customConfigError: "Problème rencontré pour charger des extensions. Activer le menu 'Extensions' pour les détails",
pluginError: "Erreur: %0",
pluginDisabled: "Extension désactivée en raison de l'index 'systemConfigDisable' tag",
pluginForced: "Exécution forcée en raison de l'index 'systemConfigForce' tag",
pluginVersionError: "Cette extension ne peut être exécutée car elle nécessite une version plus récente de TiddlyWiki",
nothingSelected: "Pas de sélection faite. Il faut sélectionner au moins un item d'abord",
savedSnapshotError: "Cet exemplaire de TiddlyWiki ne semble pas conforme. Reportez-vous à http://www.tiddlywiki.com/#DownloadSoftware",
subtitleUnknown: "(inconnu)",
undefinedTiddlerToolTip: "L'élément '%0' n'est pas encore créé",
shadowedTiddlerToolTip: "L'élément '%0' n'est pas encore créé, mais a un contenu par défaut.",
tiddlerLinkTooltip: "%0 - %1, %2",
externalLinkTooltip: "%0",
noTags: "Il n'y a pas d'éléments indexés",
notFileUrlError: "Les données entrées sont mémorisées pendant cette session. Pour les conserver, il faudra faire une sauvegarde avant de quitter",
cantSaveError: "Sauvegarde impossible : soit votre navigateur ne permet pas de sauvegarder les changements (préférez FireFox si possible), soit l'adresse de votre fichier contient des caractères invalides.",
invalidFileError: "Le fichier '%0' choisi ne semble pas être un TiddlyWiki valide",
backupSaved: "Sauvegarde effectuée",
backupFailed: "Echec de l'enregistrement du backup",
rssSaved: "Flux RSS sauvegardé",
rssFailed: "Echec de l'enregistrement du flux RSS",
emptySaved: "Fichier de base 'empty.html' enregistré",
emptyFailed: "Echec de l'enregistrement du fichier neuf 'empty'",
mainSaved: "Mise à jour du fichier TiddlyWiki enregistrée",
mainFailed: "Echec de l'enregistrement du nouveau fichier TiddlyWiki. Vos modifications ne sont pas enregistrées",
macroError: "Erreur dans la macro <<%0>>",
macroErrorDetails: "Erreur d'exécution de la macro <<%0>>:\n%1",
missingMacro: "Macro non trouvée",
overwriteWarning: "Il y a déjà un élément nommé '%0'. Confirmez pour le remplacer",
unsavedChangesWarning: "ATTENTION! Les dernières modifications de ce TiddlyWiki n'ont pas été enregistrées.\n\nOK pour les enregistrer\nANNULER pour les abandonner",
confirmExit: "--------------------------------\n\nSi vous quittez maintenant vous perdrez les modifications qui n'ont pas été sauvegardées.\n\n--------------------------------",
saveInstructions: "Sauvegarder"});
merge(config.messages.messageClose,{
text: "fermer",
tooltip: "ferme cette zône messages"});
config.messages.dates.months = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"];
config.messages.dates.days = ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"];
config.messages.dates.shortMonths = ["Jan", "Fév", "Mar", "Avr", "Mai", "Jun", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc"];
config.messages.dates.shortDays = ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"];
merge(config.views.wikified.tag,{
labelNoTags: "non indexé",
labelTags: "Index : ",
openTag: "Ouvrir '%0'",
tooltip: "Afficher les éléments indexés avec '%0'",
openAllText: "Ouvrir tous",
openAllTooltip: "Ouvrir tous les éléments de cet index",
popupNone: "Pas d'autres éléments indexés avec '%0'"});
merge(config.views.wikified,{
defaultText: "'%0' n'a pas encore été créé. Cliquez 'éditer' pour entrer un texte.",
defaultModifier: "(absent)",
shadowModifier: "(défaut)",
createdPrompt: "créé"});
merge(config.views.editor,{
tagPrompt: "Séparez les index avec un espace [[doubles crochets si besoin]], ou sélectionnez un index existant: ",
defaultText: "Entrez le texte de '%0'"});
merge(config.views.editor.tagChooser,{
text: "index",
tooltip: "Sélectionner les index existants à associer à cet élément",
popupNone: "Pas d'index déjà définis",
tagTooltip: "Associer à l'index '%0'"});
merge(config.macros.search,{
label: "chercher",
prompt: "Rechercher dans ce TiddlyWiki",
accessKey: "F",
successMsg: "%0 éléments correspondent à %1",
failureMsg: "Aucun élément ne correspond à %0"});
merge(config.macros.tagging,{
label: "éléments indexés:",
labelNotTag: "pas d'index",
tooltip: "Lister les éléments indexés '%0'"});
merge(config.macros.timeline,{
dateFormat: "DD MMM YYYY"});
merge(config.macros.allTags,{
tooltip: "Afficher les éléments indexés '%0'",
noTags: "Pas d'éléments indexés"});
config.macros.list.all.prompt = "Tous les éléments par ordre alphabétique";
config.macros.list.missing.prompt = "Eléments désignés par un lien mais non créés";
config.macros.list.orphans.prompt = "Eléments ne faisant l'objet d'aucun lien";
config.macros.list.shadowed.prompt = "Eléments ayant un contenu par défaut";
merge(config.macros.closeAll,{
label: "page blanche",
prompt: "Retirer tous les éléments de l'affichage (sauf ceux en cours d'édition)"});
merge(config.macros.permaview,{
label: "permavue",
prompt: "URL de la page actuellement constituée"});
merge(config.macros.saveChanges,{
label: "sauvegarde (en local)",
prompt: "Créer le fichier TiddlyWiki avec tous les éléments mis à jour"});
merge(config.macros.newTiddler,{
label: "nouveau",
prompt: "Créer un nouvel élément",
title: "EntréeNouvelle",
accessKey: "N"});
merge(config.macros.importTiddlers,{
defaultPath: "http://www.tiddlywiki.com/index.html",
fetchLabel: "Accéder",
fetchPrompt: "Accèder au fichier tiddlywiki",
fetchError: "Problèmes rencontrés pour accéder au fichier tiddlywiki",
confirmOverwriteText: "Confirmez l'écrasement de ces éléments :\n\n%0",
wizardTitle: "Importation d'éléments depuis un autre fichier TiddlyWiki",
step1: "Etape 1: Identification du fichier TiddlyWiki",
step1prompt: "Saisir l'URL ou le chemin d'accès: ",
step1promptFile: "...parcourez les fichiers: ",
step1promptFeeds: "...ou sélectionnez une importation prédéfinie: ",
step1feedPrompt: "Choisir...",
step2: "Etape 2: Chargement des éléments du fichier TiddlyWiki",
step2Text: "Patientez pendant le chargement des éléments de: %0",
step3: "Etape 3: Choix des éléments à importer",
step4: "%0 élément(s) importés",
step5: "Terminé",
listViewTemplate: {
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Title', field: 'title', title: "Plugin", type: 'String'},
{name: 'Snippet', field: 'text', title: "Extrait", type: 'String'},
{name: 'Tags', field: 'tags', title: "Index", type: 'Tags'}
],
rowClasses: [
],
actions: [
{caption: "Autres actions...", name: ''},
{caption: "Importer ces éléments", name: 'import'}
]}
});
merge(config.macros.newJournal,{
label: "journal",
prompt: "Créer une nouvelle entrée ayant pour titre la date et l'heure",
accessKey: "J"});
merge(config.macros.plugins,{
skippedText: "(Extension non exécutée car ajoutée depuis le début de cette session)",
noPluginText: "Il n'y a pas d'extensions installées",
confirmDeleteText: "Confirmez-vous la suppression de ces éléments:\n\n%0",
listViewTemplate : {
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Title', field: 'title', tiddlerLink: 'title', title: "Extension", type: 'TiddlerLink'},
{name: 'Forced', field: 'forced', title: "Forcée", tag: 'systemConfigForce', type: 'TagCheckbox'},
{name: 'Disabled', field: 'disabled', title: "Désactivée", tag: 'systemConfigDisable', type: 'TagCheckbox'},
{name: 'Executed', field: 'executed', title: "Chargée", type: 'Boolean', trueText: "Yes", falseText: "No"},
{name: 'Error', field: 'error', title: "Etat", type: 'Boolean', trueText: "Error", falseText: "OK"},
{name: 'Log', field: 'log', title: "Log", type: 'StringList'}
],
rowClasses: [
{className: 'error', field: 'error'},
{className: 'warning', field: 'warning'}
],
actions: [
{caption: "Autres actions...", name: ''},
{caption: "Supprimer l'index systemConfig", name: 'remove'},
{caption: "Supprimer définitivement ces extensions", name: 'delete'}
]}
});
merge(config.commands.closeTiddler,{
text: "fermer",
tooltip: "Retirer cet élément de l'affichage"});
merge(config.commands.closeOthers,{
text: "isoler",
tooltip: "Refermer tous les autres éléments"});
merge(config.commands.editTiddler,{
text: "éditer",
tooltip: "Editer cet élément",
readOnlyText: "voir",
readOnlyTooltip: "Montrer le texte source de cet élément"});
merge(config.commands.saveTiddler,{
text: "valider",
tooltip: "Enregistrer les modifications apportées à cet élément"});
merge(config.commands.cancelTiddler,{
text: "annuler",
tooltip: "Abandonner les modifications apportées à cet élément",
warning: "Confirmez-vous l'abandon des modifications de '%0'?",
readOnlyText: "retour",
readOnlyTooltip: "Revenir à l'affichage normal de cet élément"});
merge(config.commands.deleteTiddler,{
text: "supprimer",
tooltip: "Supprimer cet élément du fichier TiddlyWiki",
warning: "Confirmez-vous la suppression de '%0'?"});
merge(config.commands.permalink,{
text: "permalien",
tooltip: "Permalien de cet élément"});
merge(config.commands.references,{
text: "référents",
tooltip: "Lister les éléments faisant référence à celui-ci",
popupNone: "Pas de référents"});
merge(config.commands.jump,{
text: "atteindre",
tooltip: "Positionner l'affichage sur un autre élément déjà ouvert"});
merge(config.shadowTiddlers,{
DefaultTiddlers: "PourCommencer",
MainMenu: "PourCommencer",
SiteTitle: "Mon TiddlyWiki",
SiteSubtitle: "organiseur personnel web interactif",
SiteUrl: "http://www.tiddlywiki.com/",
PourCommencer: "Pour utiliser ce carnet TiddlyWiki, commencez par modifier les éléments suivants (//tiddlers// dans le jargon TiddlyWiki) :\n\n* SiteTitle & SiteSubtitle: Le titre et le sous-titre ci-dessus (après sauvegarde et rafraîchissement ils deviendront votre titre de page, qui s'affichera aussi dans la barre titre du navigateur)\n* MainMenu: Le menu (généralement à gauche)\n* DefaultTiddlers: Liste les noms des éléments que vous voulez voir s'afficher à l'ouverture de votre TiddlyWiki. \n\nEntrez également le nom utilisateur avec lequel seront signées chacune de vos entrées : <<option txtUserName>>",
SideBarOptions: "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Modifier les options avancées de ce TiddlyWiki'>>",
OptionsPanel: "Vos options de configuration de TiddlyWiki sont sauvegardées par votre navigateur (cookies).\n\nNom d'utilisateur pour signer vos entrées : entrez-le sous la forme d'un nom Wiki (par exemple RaymondQueneau).<<option txtUserName>>\n<<option chkSaveBackups>>Backup de chaque version\n<<option chkAutoSave>>Sauvegarde automatique après chaque entrée validée\n<<option chkRegExpSearch>>Expression régulières dans les recherches\n<<option chkCaseSensitiveSearch>>Respecter la casse dans les recherches\n<<option chkAnimate>>Ouverture animée des éléments\n-----\n[[Importations|ImportTiddlers]]\n[[Extensions|PluginManager]]\n[[Options complémentaires|AdvancedOptions]]",
AdvancedOptions: "<<option chkGenerateAnRssFeed>> Création flux RSS\n<<option chkOpenInNewWindow>> Ouverture des liens externes dans une nouvelle fenêtre\n<<option chkSaveEmptyTemplate>> Sauvegarde du fichier de base 'empty.html' de la dernière version\n<<option chkToggleLinks>> Recliquer sur un lien ferme l'élément qu'il a ouvert\n^^(hors fonction en appuyant sur la touche Ctrl)^^\n<<option chkHttpReadOnly>> Masque les fonctions d'édition lorsque le fichier est accédé depuis le Web\n<<option chkForceMinorUpdate>> L'entrée d'une modification ne modifie pas la date et l'heure déjà enregistrées pour l'élément\n^^(hors fonction en cliquant 'valider' avecla touche Maj enfoncée, ou en appuyant Ctrl-Maj-Entrée^^\n<<option chkConfirmDelete>> Confirmations avant suppressions\nNombre maximum de lignes de la fenêtre d'édition: <<option txtMaxEditRows>>\nRépertoire des backups : <<option txtBackupFolder>>\n",
SideBarTabs: "<<tabs txtMainTab Chrono 'Affichage chronologique' TabTimeline Alpha 'Liste alphabétique des éléments' TabAll Index 'Liste des index' TabTags Suite 'Autres listes' TabMore>>",
TabTimeline: "<<timeline>>",
TabAll: "<<list all>>",
TabTags: "<<allTags>>",
TabMore: "<<tabs txtMoreTab Manquants 'Eléments désignés par un lien mais non créés' TabMoreMissing Orphelins 'Eléments sans liens pour les appeler' TabMoreOrphans Défauts 'Eléments ayant un contenu par défaut' TabMoreShadowed>>",
TabMoreMissing: "<<list missing>>",
TabMoreOrphans: "<<list orphans>>",
TabMoreShadowed: "<<list shadowed>>"});
}}}
<script label="slide">
config.options.chkSliderthisCookie=true;
</script>
+++(thisCookie)[just checking]
plá
===
<<RefreshTiddler>>
<<RefreshTiddler>> refresh this (parent) tiddler
nested tiddler below
----
<<tiddler [[testing refresh and slider cookies]]>>
10 dernières modifications:
<<forEachTiddler
where '!tiddler.tags.contains("systemConfig") && !tiddler.title.contains("UploadLog")'
sortBy 'tiddler.modified' descending
write '(index < 10) ? "[["+tiddler.title+"]]\n":""'
>>
+++(newsCreated)[10 dernières entrées nouvelles]
<<forEachTiddler
where '!tiddler.tags.contains("systemConfig")'
sortBy 'tiddler.created' descending
write '(index < 10) ? "[["+tiddler.title+"]]\n":""'
>>
===
^^@@margin-left:30em;liste de toutes les <<tag note>>s@@^^
<<forEachTiddler
where
'tiddler.tags.contains("note")'
sortBy
'tiddler.created'
write
'"----\n<<tiddler [["+tiddler.title+"]]$))\n\n"'
>>
@@''introductions à faire''@@: préparer une petite introduction à chaque point (de chaque étape)
@@''ponts entre les étapes:''@@
dégradations éventuelles: codages, usages, systèmes...
in FormatsNumériques:
@@la question de la ''conformité''@@ semble ne pas être problématique pour le son alors qu'elle l'est pour la vidéo (p.ex. différents encodages sous l'extension [[.avi]]). Il faut @@revoir ce point sur le cahier des charges@@, et à la prochaine réunion du Lot C2.2.
Pour l'instant, nous avons éliminé cet élément du plan d'action: il n'est pas problématique dans le contexte de notre lot, sauf éventuellement dans le cas de nouveaux formats (la discussion serait alors reprise autour de ces formats-là). +++[voici ce qui a été retiré du plan d'action]
+++!!!![.outils de conformité des formats d'échange]
*relevé des outils existant pour "faire dialoguer" ces formats, et avec quelles contraintes+++[...]>
(éventuelles pertes supplémentaires,
entrelacement des pistes,
endianness...)===
*évaluation de ces outils
===
===
*mastering pour les différents supports de diffusion
>quel(s) format(s) sort(ent) du mastering
>>étapes de mixage
>qui se charge de valider les différents masters et comment?
>pourquoi pas un seul mastering comme en audio?
>pourquoi ne pas laisser les traitements supplémentaires aux diffuseurs?
>tient-on compte des caractéristiques variées des équipements pour la +++^[diffusion]cinéma, TV, autres=== lors du travail
*usages de la spatialisation
>que se passe-t-il si le 5.1 est abordé autrement que "C=dialogues, L&R=musique, backL&backR=FX" ? quel rendu dans les salles ?
>interêt du 7.1 par rapport au 5.1 ? (à part pour la taille de la salle)
>pourquoi n'y a-t-il pas d'enceinte centrale arrière en tant que canal ?
>formats alternatifs comme le Logic 7 de Lexicon ?
>paradigme du cercle d'enceintes
*usages de l'upmix et du downmix
>mixages différents (5.1 et stéreo) pour un DVD?
>[[Trinnov]], [[Mist]], [[Arkamys]]
*critères d'évaluation
>pour la cohérence sonore du programme, quelqu'un est-il chargé de superviser la totalité de la production du son
>pour la cohérence image/son, il ne s'agit en général que d'une vérification de synchronisation
<<slideCookie test1 someCookie>>
+++(test1)[slider yes]
okay
===
+++(test2)[slider no]
nope
===
<<tiddler FoldUnfold with: myCookie>>
+++(myCookie)[slider oui]
yes
===
+++(test2)[slider non]
nope
===
<<RefreshTiddler>>
+++(cookieOne)[slider one]
tralala
===
+++(cookieOne)[slider two]
lalère
===
<<RefreshTiddler>>
<html><a class="button" href="javascript:void(0)" onclick="config.options.chkSlidertestOne=true">
set test1 to true</a></html>
<html><a class="button" href="javascript:void(0)" onclick="config.options.chkSlidertestOne=false">
set test1 to false</a></html>
+++(testOne)[testing slider]
open!
===
<script label="set topLvl to true">config.options.chkSlidertopLvl=true</script>
chant+guitare: peut-on obtenir le même effet d'ambiance / d'espace (ou presque) avec une prise mono proche et deux reverbs en stéreo? @@^^test à faire^^@@
requiem Mozart: effets de salle? la réverb de la soprano est nettement plus prononcée que pour les autres voix - dépendance des fréquences?
encore une fois les solistes et l'orchestre dans des espaces différents (mais moins que dans le cas de Schumann - violon+orch)
>qu'est-ce qu'on "essaie de nous faire entendre"? le son de la salle, une écoute équivalente à l'écoute en direct?
Schubert: voix et orchestre plutôt dans le même espace - mais des queues de réverb assez longues dans la voix
Schumann, violon + orchestre: soliste et orchestre apparaissent comme dans 2 espaces différents
>comment se fait la prise, en particulier du soliste? (position du dispositif, traitements...)
>fidélité à l'espace où cela a été enregistré ou fidélité à l'oeuvre / à l'écoute?
*@@en général: on a l'impression qu'il sagit de restituer/composer des //conditions d'écoute// plutôt que de recréer un espace@@
Wagner: reverb moins présente (en tout cas à l'oreille), ce qui colle mieux. Le fait que ce soit Wagner aide aussi (peu d'espaces, grand bloc sonore). Bonne impression de salle de concert.
Visvikis - violon: quel apport de cet enregistrement? (quant à l'espace, le son instrumental, l'écoute...)
Visvikis - piano: enregistré un peu loin? on perd le côté "cristallin". C'est un peu comme s'il y avait trop de pédale.
La pièce elle-même ne nous aide pas à juger l'espace et l'enregistrement.
Visvikis - quatuor à cordes: bonne prise de son. On est très près du quatuor (ce qui peut être un choix esthétique ^^voir Kronos^^). On a un effet de "masse" par la distribution des graves dans l'espace (?); les différences de filtrages entre stéreoAvant, stéreoArrière et Centre sont plus marqueés que pour les enregistrements précédents.
Chorale: réverb naturelle, et apparemment pas de changement de preset entre chant et applaudissements.
Atmosphères
-moto: champ ouvert, bon rendu
-enfants: sources sonores directes tout autour du dispositif (alors que pour la musique elles ne sont qu'à l'avant). Les mouvements sont très clairs - on remarque que le mouvement "apparaît" plus dramatiquement qu'une simple localisation.
-concert end: preset pour bien rendre //les applaudissements//, et pas la musique (Requiem)
analyse des [[presets|Trinnov - résolution spatiale]]
@@''transcodage''@@: problème de terminologie?
ne parle-t-on pas plutôt de ''//conversion//''? à discuter lors de la prochaine réunion du lot C2.2
@@''usages''@@: quand on pense aux //usages//, on doit considérer les déviations dans l'application des "normes" (5.1 déplacé dans le salon, stéreo biaisée...)
mixages: comment prend-on en compte ces possibles variations/dégradations?
- est-ce que cela limite les auteurs/producteurs?
- consulter le lot C1 pour ce sujet (quant à la colorimétrie, p.ex.)