Calcule el tiempo del repertorio, canciones y charla
Un programa de concierto puede parecer holgado hasta que las presentaciones, la interacción con el público, las pausas de afinación y unas estimaciones generosas consumen el margen.
Ejecutar — gratis
Esta calculadora aplica una duración total a una lista ordenada de canciones, reserva el tiempo de charla y muestra exactamente dónde deja de caber el plan. El resultado incluye las canciones programadas, los minutos usados, el margen restante y el tiempo adicional necesario para la primera canción excluida, de modo que usted pueda revisar o automatizar una previsión práctica del ensayo.
Comience con un presupuesto realista
Indique todos los minutos disponibles y enumere las canciones en el orden previsto. Cada duración debe reflejar una interpretación en directo, no necesariamente la pista de estudio. Incluya finales ampliados, introducciones instrumentales, cambios de tempo y arreglos que suelen alargarse. Añada una reserva total para presentaciones, interacción, afinación, agua y cualquier pausa no incluida en las canciones. La calculadora aparta ese tiempo antes de encajar el repertorio, por lo que el resultado es prudente y no oculta las intervenciones habladas dentro de estimaciones dispersas. La duración total y la de cada canción deben ser positivas; la charla puede ser cero. Todos los valores se expresan en minutos: por ejemplo, cuatro minutos y treinta segundos se introducen como 4.5. Una entrada realista resulta más útil que un cálculo exacto basado en previsiones demasiado optimistas.
Comprenda cómo se seleccionan las canciones
Las canciones se evalúan desde el principio de la lista y una por una. Solo se admite una canción cuando la charla reservada, las canciones ya aceptadas y esa nueva duración no superan el total. En cuanto una no cabe, el proceso se detiene; no se salta para buscar otra más corta, pues eso cambiaría silenciosamente la secuencia artística. La lista devuelta es, por tanto, el tramo inicial más largo que cabe. La respuesta también informa del tiempo musical, la charla, los minutos usados y el margen. Si queda otra canción, se identifica y se indica cuánto tiempo adicional requiere. Si caben todas, ese campo opcional se omite. Cuando la charla por sí sola supera el total, no cabe ninguna canción y un margen negativo muestra el déficit real en lugar de ocultarlo como cero.
Aplique el resultado en ensayos y producción
Use la salida como punto de control y mejore las estimaciones con datos de ensayo. Un margen pequeño puede desaparecer por aplausos prolongados, un cambio de guitarra o una transición rígida por el horario del recinto. Conviene comparar una previsión normal, otra prudente con canciones y charla más largas y una versión abreviada de contingencia. Como se conserva el orden, músicos, responsables de escenario y producción pueden comparar fácilmente las alternativas. El déficit de la siguiente canción ayuda a decidir si se acorta una intervención, un arreglo o se elimina una pieza completa. Para automatizar, guarde el resultado junto con las estimaciones originales. La misma entrada siempre produce la misma salida en navegador o API. Cada solicitud API cuesta $0.002, y la herramienta presenta un cálculo temporal, no una recomendación artística disfrazada de optimización.
Qué puede hacer con ella
Prepare un repertorio para el recinto
Contraste el orden del espectáculo con una franja fija y reserve tiempo explícito para intervenciones y transiciones.
Diseñe una contingencia de festival
Compare estimaciones normales y prudentes para localizar la canción en la que debería terminar un pase ajustado.
Revise los tiempos del ensayo
Sustituya las duraciones de estudio por mediciones en directo y compruebe si aún queda un margen práctico.
Preguntas frecuentes
¿Cuánto cuesta una solicitud API?
Cada solicitud API cuesta $0.002. El resultado se calcula de forma determinista, sin red ni modelos.
¿La calculadora reordena las canciones?
No. Respeta el orden recibido, devuelve el tramo inicial más largo que cabe y se detiene ante la primera canción que excedería el límite.
¿Cómo se introducen minutos y segundos?
Convierta el tiempo a minutos decimales. Por ejemplo, treinta segundos equivalen a 0.5 minutos y quince segundos a 0.25 minutos.
¿Qué debe incluir la reserva de charla?
Incluya presentaciones, interacción, afinación, descansos y demás tiempo previsto que no figure ya en las estimaciones musicales.
¿Por qué puede ser negativo el margen?
Sucede cuando la charla reservada supera por sí sola la duración total; el valor muestra el déficit real aunque no quepa ninguna canción.
¿Qué ocurre si caben todas las canciones?
La lista programada contiene todas las canciones, se conserva el margen sobrante y se omite el campo opcional de la canción siguiente.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"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
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.concert_setlist_time_budget",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_items | 500 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |