Calculez la durée d'une setlist, morceaux et échanges
Un programme de concert peut sembler confortable jusqu'à ce que les présentations, les échanges avec le public, l'accordage et des estimations généreuses absorbent la marge.
Lancer gratuitement
Ce calculateur applique une durée totale à une liste ordonnée de morceaux, réserve le temps de parole et montre précisément où le programme cesse de tenir. Le résultat indique les morceaux retenus, les minutes utilisées, la marge restante et le temps nécessaire pour ajouter le premier morceau exclu, afin que vous puissiez contrôler ou automatiser une estimation réaliste de répétition.
Partez d'un budget de scène réaliste
Saisissez toutes les minutes disponibles, puis classez les morceaux dans l'ordre prévu. Chaque durée doit refléter l'interprétation en public plutôt que la version studio par défaut. Comptez les fins prolongées, les introductions instrumentales, les changements de tempo et les arrangements qui débordent régulièrement. Ajoutez une réserve globale pour les présentations, les échanges, l'accordage, les pauses et tout temps absent des estimations musicales. Le calculateur réserve cette durée avant de placer les morceaux, ce qui rend les échanges visibles et le résultat prudent. La durée totale et chaque morceau doivent être positifs; la parole peut valoir zéro. Toutes les valeurs sont en minutes: quatre minutes trente deviennent 4.5. Une saisie réaliste est plus utile qu'un calcul exact fondé sur des hypothèses trop optimistes.
Comprenez la sélection des morceaux
Les morceaux sont évalués depuis le début de la liste, un par un. Un titre est retenu uniquement si la parole réservée, les morceaux déjà acceptés et sa propre durée restent dans le total. Dès qu'un morceau ne tient plus, le calcul s'arrête. Il ne le saute pas pour chercher un titre plus court, car cela modifierait silencieusement la séquence artistique. La liste renvoyée est donc le plus long début du programme qui tient. La réponse donne aussi le temps musical, la parole, le temps utilisé et la marge. S'il reste un morceau, il est identifié avec les minutes supplémentaires nécessaires. Si tous tiennent, ce champ facultatif disparaît. Si la parole dépasse à elle seule la durée totale, aucun morceau ne tient et une marge négative révèle le déficit au lieu de le masquer par zéro.
Exploitez le résultat en répétition
Utilisez le résultat comme point de contrôle, puis affinez les estimations grâce aux répétitions. Une faible marge peut disparaître avec des applaudissements prolongés, un changement de guitare ou une transition imposée par l'horaire de la salle. Comparez une estimation normale, une version prudente avec des durées plus longues et une setlist de secours raccourcie. Puisque l'ordre est conservé, musiciens, régie et production peuvent comparer facilement ces variantes. Le déficit du morceau suivant aide à choisir entre raccourcir une prise de parole, réduire un arrangement ou retirer un titre entier. Pour automatiser, conservez le résultat avec les estimations sources. Les mêmes entrées donnent toujours les mêmes sorties dans le navigateur ou via l'API. Chaque requête coûte $0.002; l'outil fournit un calcul temporel, sans présenter une optimisation comme un conseil artistique.
Cas d’usage
Préparer un programme pour la salle
Vérifiez une setlist ordonnée face à un créneau fixe tout en réservant clairement les échanges et transitions.
Prévoir un repli pour un festival
Comparez des estimations normales et prudentes pour repérer le morceau où un passage serré doit s'arrêter.
Contrôler le minutage en répétition
Remplacez les durées studio par des mesures en direct et vérifiez si le programme garde une marge exploitable.
Questions fréquentes
Combien coûte une requête API?
Chaque requête API coûte $0.002. Le résultat est déterministe et ne fait appel ni au réseau ni à un modèle.
Le calculateur réordonne-t-il les morceaux?
Non. Il respecte l'ordre fourni, renvoie le plus long début qui tient et s'arrête au premier morceau qui dépasserait la limite.
Comment saisir des minutes et secondes?
Convertissez la durée en minutes décimales. Par exemple, trente secondes valent 0.5 minute et quinze secondes 0.25 minute.
Que faut-il inclure dans le temps de parole?
Comptez les présentations, les échanges, l'accordage, les pauses et tout temps prévu qui n'est pas déjà inclus dans les morceaux.
Pourquoi la marge peut-elle être négative?
Cela arrive lorsque la parole réservée dépasse seule la durée totale; la valeur montre alors le déficit réel, même sans morceau retenu.
Que se passe-t-il si tous les morceaux tiennent?
La liste programmée contient tous les morceaux, la marge reste disponible et le champ facultatif du morceau suivant est omis.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/video/concert-setlist-time-budget \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total_duration_minutes":45,"songs":[{"title":"Opening Lights","duration_minutes":4.5},{"title":"River Signal","duration_minutes":6.25},{"title":"Midnight Avenue","duration_minutes":5.75},{"title":"Last Train Home","duration_minutes":7}]}'const res = await fetch("https://api.kit.forhosting.com/video/concert-setlist-time-budget", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total_duration_minutes": 45,
"songs": [
{
"title": "Opening Lights",
"duration_minutes": 4.5
},
{
"title": "River Signal",
"duration_minutes": 6.25
},
{
"title": "Midnight Avenue",
"duration_minutes": 5.75
},
{
"title": "Last Train Home",
"duration_minutes": 7
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/concert-setlist-time-budget",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total_duration_minutes": 45,
"songs": [
{
"title": "Opening Lights",
"duration_minutes": 4.5
},
{
"title": "River Signal",
"duration_minutes": 6.25
},
{
"title": "Midnight Avenue",
"duration_minutes": 5.75
},
{
"title": "Last Train Home",
"duration_minutes": 7
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/concert-setlist-time-budget", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total_duration_minutes":45,"songs":[{"title":"Opening Lights","duration_minutes":4.5},{"title":"River Signal","duration_minutes":6.25},{"title":"Midnight Avenue","duration_minutes":5.75},{"title":"Last Train Home","duration_minutes":7}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total_duration_minutes":45,"songs":[{"title":"Opening Lights","duration_minutes":4.5},{"title":"River Signal","duration_minutes":6.25},{"title":"Midnight Avenue","duration_minutes":5.75},{"title":"Last Train Home","duration_minutes":7}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/concert-setlist-time-budget", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"total_duration_minutes": 45,
"songs": [
{
"title": "Opening Lights",
"duration_minutes": 4.5
},
{
"title": "River Signal",
"duration_minutes": 6.25
},
{
"title": "Midnight Avenue",
"duration_minutes": 5.75
},
{
"title": "Last Train Home",
"duration_minutes": 7
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.concert_setlist_time_budget",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_items | 500 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |