Henry Freitas prepara estreia no Rock in Rio com mistura de ritmos: “Quero surpreender”
Henry Freitas vai estrear no Rock in Rio, neste domingo (13/9), com um repertório diferente daquele que costuma apresentar nos palcos pelo país. No Camarote Favela, o cantor preparou um pocket show es...
Henry Freitas vai estrear no Rock in Rio, neste domingo (13/9), com um repertório diferente daquele que costuma apresentar nos palcos pelo país. No Camarote Favela, o cantor preparou um pocket show especialmente para o festival, reunindo referências do forró, funk, trap, MPB e outras vertentes da música brasileira.
A ideia é aproveitar a estreia no evento para colocar gêneros distintos lado a lado e mostrar outras possibilidades dentro do repertório. Para isso, o artista fez uma curadoria específica para a apresentação, com versões e escolhas musicais pensadas para a ocasião.
(function () {
var AD_UNIT = 'ld-m-art-r1-01';
var PLACEMENT = '846612';
var DEVICE = 'mobile';
var MIN_H = 280;
var done = false;
function rightDevice() {
var isMobile = window.matchMedia
? window.matchMedia('(max-width: 767px)').matches
: (document.documentElement.clientWidth || 0) < 768;
return DEVICE === 'mobile' ? isMobile : !isMobile;
}
function box() {
return document.getElementById(AD_UNIT);
}
function hide() {
var b = box();
if (b) b.style.display = 'none';
}
function register() {
if (done) return;
done = true;
if (!rightDevice()) {
hide();
return;
}
var b = box();
if (b) {
b.style.minHeight = MIN_H + 'px';
}
window.ANConfig = window.ANConfig || {};
window.ANConfig.placements = window.ANConfig.placements || [];
window.ANConfig.placements.push({
adUnitId: AD_UNIT,
propertyId: '105130',
placementId: PLACEMENT,
data: {},
consent: true,
onLoad: function (adUnitId) {},
onFail: function (adUnitId) {
hide();
}
});
setTimeout(function () {
var c = box();
if (c && !c.getElementsByTagName('iframe').length) {
hide();
}
}, 6000);
}
var C = window.__ldAdConsent;
if (!C) {
C = window.__ldAdConsent = {
subs: [],
fired: false
};
C.granted = function () {
var v = window.LD_AD_CONSENT;
return v === true ||
v === 1 ||
v === 'true';
};
C.fire = function () {
if (C.fired) return;
C.fired = true;
if (C.poll) {
clearInterval(C.poll);
C.poll = null;
}
for (var i = 0; i < C.subs.length; i++) {
try {
C.subs[i]();
} catch (e) {}
}
var inject = function () {
if (document.getElementById('ap-js')) {
return;
}
var ver = new Date()
.toISOString()
.split(':')[0]
.replace(/\D/g, '');
var apjs = document.createElement('script');
apjs.type = 'text/javascript';
apjs.async = true;
apjs.setAttribute('id', 'ap-js');
apjs.src =
'https://central-brazil.ap.giraffa.tech/js/ap-gjanout.js?v=' + ver;
document.head.appendChild(apjs);
};
if (document.readyState === 'loading') {
document.addEventListener(
'DOMContentLoaded',
function () {
setTimeout(inject, 0);
}
);
} else {
setTimeout(inject, 0);
}
};
function onSignal(e) {
if (
(e && e.detail === true) ||
C.granted()
) {
C.fire();
}
}
window.addEventListener(
'ld-ad-consent',
onSignal
);
document.addEventListener(
'ld-ad-consent',
onSignal
);
if (typeof window.__tcfapi === 'function') {
window.__tcfapi(
'addEventListener',
2,
function (tcData, success) {
if (!success || !tcData) {
return;
}
if (
tcData.eventStatus !== 'tcloaded' &&
tcData.eventStatus !== 'useractioncomplete'
) {
return;
}
if (
tcData.purpose &&
tcData.purpose.consents &&
tcData.purpose.consents[1]
) {
C.fire();
}
}
);
}
C.poll = setInterval(function () {
if (C.fired) {
clearInterval(C.poll);
C.poll = null;
return;
}
if (C.granted()) {
C.fire();
}
}, 250);
}
C.subs.push(register);
if (C.fired) {
register();
} else if (C.granted()) {
C.fire();
}
})();
Veja as fotosAbrir em tela cheia Henry FreitasCrédito: Divulgação Henry FreitasCrédito: Divulgação Henry FreitasCrédito: Reprodução Instagram @henryfreitas
(function () {
var AD_UNIT = 'ld-m-art-r1-02';
var PLACEMENT = '846681';
var DEVICE = 'mobile'; /* 'mobile' or 'desktop' */
var MIN_H = 280; /* tallest size listed for this position */
var done = false;
/* This block belongs to one device. Mobile and desktop blocks may both sit in the
same responsive template: each checks the viewport and only the matching one
asks for an ad, so they never both render. Breakpoint 768px, tablets count as
desktop. If your template already renders per device server-side this is simply
a second guard and changes nothing. */
function rightDevice() {
var isMobile = window.matchMedia
? window.matchMedia('(max-width: 767px)').matches
: (document.documentElement.clientWidth || 0) < 768;
return DEVICE === 'mobile' ? isMobile : !isMobile;
}
function box() { return document.getElementById(AD_UNIT); }
function hide() { var b = box(); if (b) b.style.display = 'none'; }
/* Registers this position. Never called without a positive consent answer. */
function register() {
if (done) return;
done = true;
if (!rightDevice()) { hide(); return; }
var b = box();
if (b) b.style.minHeight = MIN_H + 'px'; /* reserve only now, never before */
window.ANConfig = window.ANConfig || {};
window.ANConfig.placements = window.ANConfig.placements || [];
window.ANConfig.placements.push({
adUnitId: AD_UNIT,
propertyId: '105130',
placementId: PLACEMENT,
data: {},
consent: true,
onLoad: function (adUnitId) {},
onFail: function (adUnitId) { hide(); }
});
/* Safety net: if nothing has rendered here shortly, release the space.
No position can leave a permanent blank gap, whatever goes wrong. */
setTimeout(function () {
var c = box();
if (c && !c.getElementsByTagName('iframe').length) hide();
}, 6000);
}
/* One shared coordinator per page, created by whichever block runs first.
Every block registers with it, so when consent arrives they all register in
the SAME tick and the loader is injected once, afterwards. The loader drains
its queue once, so a block that registered late would never be served. */
var C = window.__ldAdConsent;
if (!C) {
C = window.__ldAdConsent = { subs: [], fired: false };
C.granted = function () {
var v = window.LD_AD_CONSENT;
return v === true || v === 1 || v === 'true';
};
C.fire = function () {
if (C.fired) return;
C.fired = true;
if (C.poll) { clearInterval(C.poll); C.poll = null; }
for (var i = 0; i < C.subs.length; i++) {
try { C.subs[i](); } catch (e) {}
}
var inject = function () { /* now, with all of them queued */
if (document.getElementById('ap-js')) return;
var ver = new Date().toISOString().split(':')[0].replace(/\D/g, '');
var apjs = document.createElement('script');
apjs.type = 'text/javascript';
apjs.async = true;
apjs.setAttribute('id', 'ap-js');
apjs.src = 'https://central-brazil.ap.giraffa.tech/js/ap-gjanout.js?v=' + ver;
document.head.appendChild(apjs);
};
/* The loader drains its queue once, so it must not be fetched while the page is
still parsing: blocks further down would register after the drain and be lost.
Consent known before the body parses is the normal returning-visitor case. */
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function () { setTimeout(inject, 0); });
} else {
setTimeout(inject, 0);
}
};
function onSignal(e) {
if ((e && e.detail === true) || C.granted()) C.fire();
}
window.addEventListener('ld-ad-consent', onSignal);
document.addEventListener('ld-ad-consent', onSignal); /* the event does not bubble */
/* 2. IAB TCF v2, used automatically if it ever resolves. Purpose 1 gates storing
and accessing information on the device, which ad serving requires. Consent
is required whether or not gdprApplies is set: gdprApplies being false is
never treated as permission. (Measured here 28 Aug 2026: it is true.) */
if (typeof window.__tcfapi === 'function') {
window.__tcfapi('addEventListener', 2, function (tcData, success) {
if (!success || !tcData) return;
if (tcData.eventStatus !== 'tcloaded' &&
tcData.eventStatus !== 'useractioncomplete') return;
if (tcData.purpose && tcData.purpose.consents && tcData.purpose.consents[1]) C.fire();
});
}
/* 1. Your signal. Set window.LD_AD_CONSENT = true when consent is known.
The order does not matter and there is no time limit: this watch runs
until consent arrives or the page is closed. */
C.poll = setInterval(function () {
if (C.fired) { clearInterval(C.poll); C.poll = null; return; }
if (C.granted()) C.fire();
}, 250);
}
C.subs.push(register);
if (C.fired) register(); /* consent already given before this block parsed */
else if (C.granted()) C.fire();
})();
“Estar no Rock in Rio é uma honra enorme e um momento muito especial na minha vida. É um festival que faz parte da história da música e poder levar a minha identidade para um evento como esse tem um significado muito grande. Preparei esse pocket show com muito carinho e de uma forma bem diferente, pensando unicamente no festival. Quero surpreender o público, misturar referências, gêneros e mostrar toda essa versatilidade sem perder aquilo que me trouxe até aqui”, compartilhou Henry emocionado.
Do forró ao funk
A mistura preparada para o Rock in Rio parte justamente das raízes musicais do cantor. Conhecido por sucessos como “Tando”, “Me Fala Qual A Necessidade” e “Imã de Problema”, Henry ganhou espaço no cenário do forró e, ao longo da carreira, também passou a trabalhar com artistas de outros segmentos.
Entre as colaborações estão nomes como João Gomes, Léo Foguete, Lauana Prado, Dennis DJ, Kevin O Chris e Pedro Sampaio. A lista reúne artistas de diferentes estilos e ajuda a explicar a variedade de referências que estará presente no pocket show.
No festival, a proposta será transportar essa mistura para uma apresentação mais curta e construída especificamente para o público do Rock in Rio.
Estreia acontece no último dia
A apresentação acontece no domingo (13/9), último dia do Rock in Rio 2026, no Camarote Favela. O convite partiu do próprio camarote e da gravadora do cantor.
Para a estreia, Henry decidiu não simplesmente reproduzir o show que já apresenta em sua agenda. O repertório foi reorganizado para a ocasião e terá como característica justamente o encontro entre diferentes sonoridades.
(function () {
var AD_UNIT = 'ld-m-art-r1-03';
var PLACEMENT = '846688';
var DEVICE = 'mobile'; /* 'mobile' or 'desktop' */
var MIN_H = 280; /* tallest size listed for this position */
var done = false;
/* This block belongs to one device. Mobile and desktop blocks may both sit in the
same responsive template: each checks the viewport and only the matching one
asks for an ad, so they never both render. Breakpoint 768px, tablets count as
desktop. If your template already renders per device server-side this is simply
a second guard and changes nothing. */
function rightDevice() {
var isMobile = window.matchMedia
? window.matchMedia('(max-width: 767px)').matches
: (document.documentElement.clientWidth || 0) < 768;
return DEVICE === 'mobile' ? isMobile : !isMobile;
}
function box() { return document.getElementById(AD_UNIT); }
function hide() { var b = box(); if (b) b.style.display = 'none'; }
/* Registers this position. Never called without a positive consent answer. */
function register() {
if (done) return;
done = true;
if (!rightDevice()) { hide(); return; }
var b = box();
if (b) b.style.minHeight = MIN_H + 'px'; /* reserve only now, never before */
window.ANConfig = window.ANConfig || {};
window.ANConfig.placements = window.ANConfig.placements || [];
window.ANConfig.placements.push({
adUnitId: AD_UNIT,
propertyId: '105130',
placementId: PLACEMENT,
data: {},
consent: true,
onLoad: function (adUnitId) {},
onFail: function (adUnitId) { hide(); }
});
/* Safety net: if nothing has rendered here shortly, release the space.
No position can leave a permanent blank gap, whatever goes wrong. */
setTimeout(function () {
var c = box();
if (c && !c.getElementsByTagName('iframe').length) hide();
}, 6000);
}
/* One shared coordinator per page, created by whichever block runs first.
Every block registers with it, so when consent arrives they all register in
the SAME tick and the loader is injected once, afterwards. The loader drains
its queue once, so a block that registered late would never be served. */
var C = window.__ldAdConsent;
if (!C) {
C = window.__ldAdConsent = { subs: [], fired: false };
C.granted = function () {
var v = window.LD_AD_CONSENT;
return v === true || v === 1 || v === 'true';
};
C.fire = function () {
if (C.fired) return;
C.fired = true;
if (C.poll) { clearInterval(C.poll); C.poll = null; }
for (var i = 0; i < C.subs.length; i++) {
try { C.subs[i](); } catch (e) {}
}
var inject = function () { /* now, with all of them queued */
if (document.getElementById('ap-js')) return;
var ver = new Date().toISOString().split(':')[0].replace(/\D/g, '');
var apjs = document.createElement('script');
apjs.type = 'text/javascript';
apjs.async = true;
apjs.setAttribute('id', 'ap-js');
apjs.src = 'https://central-brazil.ap.giraffa.tech/js/ap-gjanout.js?v=' + ver;
document.head.appendChild(apjs);
};
/* The loader drains its queue once, so it must not be fetched while the page is
still parsing: blocks further down would register after the drain and be lost.
Consent known before the body parses is the normal returning-visitor case. */
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function () { setTimeout(inject, 0); });
} else {
setTimeout(inject, 0);
}
};
function onSignal(e) {
if ((e && e.detail === true) || C.granted()) C.fire();
}
window.addEventListener('ld-ad-consent', onSignal);
document.addEventListener('ld-ad-consent', onSignal); /* the event does not bubble */
/* 2. IAB TCF v2, used automatically if it ever resolves. Purpose 1 gates storing
and accessing information on the device, which ad serving requires. Consent
is required whether or not gdprApplies is set: gdprApplies being false is
never treated as permission. (Measured here 28 Aug 2026: it is true.) */
if (typeof window.__tcfapi === 'function') {
window.__tcfapi('addEventListener', 2, function (tcData, success) {
if (!success || !tcData) return;
if (tcData.eventStatus !== 'tcloaded' &&
tcData.eventStatus !== 'useractioncomplete') return;
if (tcData.purpose && tcData.purpose.consents && tcData.purpose.consents[1]) C.fire();
});
}
/* 1. Your signal. Set window.LD_AD_CONSENT = true when consent is known.
The order does not matter and there is no time limit: this watch runs
until consent arrives or the page is closed. */
C.poll = setInterval(function () {
if (C.fired) { clearInterval(C.poll); C.poll = null; return; }
if (C.granted()) C.fire();
}, 250);
}
C.subs.push(register);
if (C.fired) register(); /* consent already given before this block parsed */
else if (C.granted()) C.fire();
})();
A apresentação marca a chegada do cantor a um dos principais palcos da música no país em um momento de expansão de sua carreira para públicos e espaços diferentes daqueles ligados exclusivamente ao forró.


A ideia é aproveitar a estreia no evento para colocar gêneros distintos lado a lado e mostrar outras possibilidades dentro do repertório. Para isso, o artista fez uma curadoria específica para a apresentação, com versões e escolhas musicais pensadas para a ocasião.
(function () {
var AD_UNIT = 'ld-m-art-r1-01';
var PLACEMENT = '846612';
var DEVICE = 'mobile';
var MIN_H = 280;
var done = false;
function rightDevice() {
var isMobile = window.matchMedia
? window.matchMedia('(max-width: 767px)').matches
: (document.documentElement.clientWidth || 0) < 768;
return DEVICE === 'mobile' ? isMobile : !isMobile;
}
function box() {
return document.getElementById(AD_UNIT);
}
function hide() {
var b = box();
if (b) b.style.display = 'none';
}
function register() {
if (done) return;
done = true;
if (!rightDevice()) {
hide();
return;
}
var b = box();
if (b) {
b.style.minHeight = MIN_H + 'px';
}
window.ANConfig = window.ANConfig || {};
window.ANConfig.placements = window.ANConfig.placements || [];
window.ANConfig.placements.push({
adUnitId: AD_UNIT,
propertyId: '105130',
placementId: PLACEMENT,
data: {},
consent: true,
onLoad: function (adUnitId) {},
onFail: function (adUnitId) {
hide();
}
});
setTimeout(function () {
var c = box();
if (c && !c.getElementsByTagName('iframe').length) {
hide();
}
}, 6000);
}
var C = window.__ldAdConsent;
if (!C) {
C = window.__ldAdConsent = {
subs: [],
fired: false
};
C.granted = function () {
var v = window.LD_AD_CONSENT;
return v === true ||
v === 1 ||
v === 'true';
};
C.fire = function () {
if (C.fired) return;
C.fired = true;
if (C.poll) {
clearInterval(C.poll);
C.poll = null;
}
for (var i = 0; i < C.subs.length; i++) {
try {
C.subs[i]();
} catch (e) {}
}
var inject = function () {
if (document.getElementById('ap-js')) {
return;
}
var ver = new Date()
.toISOString()
.split(':')[0]
.replace(/\D/g, '');
var apjs = document.createElement('script');
apjs.type = 'text/javascript';
apjs.async = true;
apjs.setAttribute('id', 'ap-js');
apjs.src =
'https://central-brazil.ap.giraffa.tech/js/ap-gjanout.js?v=' + ver;
document.head.appendChild(apjs);
};
if (document.readyState === 'loading') {
document.addEventListener(
'DOMContentLoaded',
function () {
setTimeout(inject, 0);
}
);
} else {
setTimeout(inject, 0);
}
};
function onSignal(e) {
if (
(e && e.detail === true) ||
C.granted()
) {
C.fire();
}
}
window.addEventListener(
'ld-ad-consent',
onSignal
);
document.addEventListener(
'ld-ad-consent',
onSignal
);
if (typeof window.__tcfapi === 'function') {
window.__tcfapi(
'addEventListener',
2,
function (tcData, success) {
if (!success || !tcData) {
return;
}
if (
tcData.eventStatus !== 'tcloaded' &&
tcData.eventStatus !== 'useractioncomplete'
) {
return;
}
if (
tcData.purpose &&
tcData.purpose.consents &&
tcData.purpose.consents[1]
) {
C.fire();
}
}
);
}
C.poll = setInterval(function () {
if (C.fired) {
clearInterval(C.poll);
C.poll = null;
return;
}
if (C.granted()) {
C.fire();
}
}, 250);
}
C.subs.push(register);
if (C.fired) {
register();
} else if (C.granted()) {
C.fire();
}
})();
Veja as fotosAbrir em tela cheia Henry FreitasCrédito: Divulgação Henry FreitasCrédito: Divulgação Henry FreitasCrédito: Reprodução Instagram @henryfreitas
(function () {
var AD_UNIT = 'ld-m-art-r1-02';
var PLACEMENT = '846681';
var DEVICE = 'mobile'; /* 'mobile' or 'desktop' */
var MIN_H = 280; /* tallest size listed for this position */
var done = false;
/* This block belongs to one device. Mobile and desktop blocks may both sit in the
same responsive template: each checks the viewport and only the matching one
asks for an ad, so they never both render. Breakpoint 768px, tablets count as
desktop. If your template already renders per device server-side this is simply
a second guard and changes nothing. */
function rightDevice() {
var isMobile = window.matchMedia
? window.matchMedia('(max-width: 767px)').matches
: (document.documentElement.clientWidth || 0) < 768;
return DEVICE === 'mobile' ? isMobile : !isMobile;
}
function box() { return document.getElementById(AD_UNIT); }
function hide() { var b = box(); if (b) b.style.display = 'none'; }
/* Registers this position. Never called without a positive consent answer. */
function register() {
if (done) return;
done = true;
if (!rightDevice()) { hide(); return; }
var b = box();
if (b) b.style.minHeight = MIN_H + 'px'; /* reserve only now, never before */
window.ANConfig = window.ANConfig || {};
window.ANConfig.placements = window.ANConfig.placements || [];
window.ANConfig.placements.push({
adUnitId: AD_UNIT,
propertyId: '105130',
placementId: PLACEMENT,
data: {},
consent: true,
onLoad: function (adUnitId) {},
onFail: function (adUnitId) { hide(); }
});
/* Safety net: if nothing has rendered here shortly, release the space.
No position can leave a permanent blank gap, whatever goes wrong. */
setTimeout(function () {
var c = box();
if (c && !c.getElementsByTagName('iframe').length) hide();
}, 6000);
}
/* One shared coordinator per page, created by whichever block runs first.
Every block registers with it, so when consent arrives they all register in
the SAME tick and the loader is injected once, afterwards. The loader drains
its queue once, so a block that registered late would never be served. */
var C = window.__ldAdConsent;
if (!C) {
C = window.__ldAdConsent = { subs: [], fired: false };
C.granted = function () {
var v = window.LD_AD_CONSENT;
return v === true || v === 1 || v === 'true';
};
C.fire = function () {
if (C.fired) return;
C.fired = true;
if (C.poll) { clearInterval(C.poll); C.poll = null; }
for (var i = 0; i < C.subs.length; i++) {
try { C.subs[i](); } catch (e) {}
}
var inject = function () { /* now, with all of them queued */
if (document.getElementById('ap-js')) return;
var ver = new Date().toISOString().split(':')[0].replace(/\D/g, '');
var apjs = document.createElement('script');
apjs.type = 'text/javascript';
apjs.async = true;
apjs.setAttribute('id', 'ap-js');
apjs.src = 'https://central-brazil.ap.giraffa.tech/js/ap-gjanout.js?v=' + ver;
document.head.appendChild(apjs);
};
/* The loader drains its queue once, so it must not be fetched while the page is
still parsing: blocks further down would register after the drain and be lost.
Consent known before the body parses is the normal returning-visitor case. */
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function () { setTimeout(inject, 0); });
} else {
setTimeout(inject, 0);
}
};
function onSignal(e) {
if ((e && e.detail === true) || C.granted()) C.fire();
}
window.addEventListener('ld-ad-consent', onSignal);
document.addEventListener('ld-ad-consent', onSignal); /* the event does not bubble */
/* 2. IAB TCF v2, used automatically if it ever resolves. Purpose 1 gates storing
and accessing information on the device, which ad serving requires. Consent
is required whether or not gdprApplies is set: gdprApplies being false is
never treated as permission. (Measured here 28 Aug 2026: it is true.) */
if (typeof window.__tcfapi === 'function') {
window.__tcfapi('addEventListener', 2, function (tcData, success) {
if (!success || !tcData) return;
if (tcData.eventStatus !== 'tcloaded' &&
tcData.eventStatus !== 'useractioncomplete') return;
if (tcData.purpose && tcData.purpose.consents && tcData.purpose.consents[1]) C.fire();
});
}
/* 1. Your signal. Set window.LD_AD_CONSENT = true when consent is known.
The order does not matter and there is no time limit: this watch runs
until consent arrives or the page is closed. */
C.poll = setInterval(function () {
if (C.fired) { clearInterval(C.poll); C.poll = null; return; }
if (C.granted()) C.fire();
}, 250);
}
C.subs.push(register);
if (C.fired) register(); /* consent already given before this block parsed */
else if (C.granted()) C.fire();
})();
“Estar no Rock in Rio é uma honra enorme e um momento muito especial na minha vida. É um festival que faz parte da história da música e poder levar a minha identidade para um evento como esse tem um significado muito grande. Preparei esse pocket show com muito carinho e de uma forma bem diferente, pensando unicamente no festival. Quero surpreender o público, misturar referências, gêneros e mostrar toda essa versatilidade sem perder aquilo que me trouxe até aqui”, compartilhou Henry emocionado.
Do forró ao funk
A mistura preparada para o Rock in Rio parte justamente das raízes musicais do cantor. Conhecido por sucessos como “Tando”, “Me Fala Qual A Necessidade” e “Imã de Problema”, Henry ganhou espaço no cenário do forró e, ao longo da carreira, também passou a trabalhar com artistas de outros segmentos.
Entre as colaborações estão nomes como João Gomes, Léo Foguete, Lauana Prado, Dennis DJ, Kevin O Chris e Pedro Sampaio. A lista reúne artistas de diferentes estilos e ajuda a explicar a variedade de referências que estará presente no pocket show.
No festival, a proposta será transportar essa mistura para uma apresentação mais curta e construída especificamente para o público do Rock in Rio.
Estreia acontece no último dia
A apresentação acontece no domingo (13/9), último dia do Rock in Rio 2026, no Camarote Favela. O convite partiu do próprio camarote e da gravadora do cantor.
Para a estreia, Henry decidiu não simplesmente reproduzir o show que já apresenta em sua agenda. O repertório foi reorganizado para a ocasião e terá como característica justamente o encontro entre diferentes sonoridades.
(function () {
var AD_UNIT = 'ld-m-art-r1-03';
var PLACEMENT = '846688';
var DEVICE = 'mobile'; /* 'mobile' or 'desktop' */
var MIN_H = 280; /* tallest size listed for this position */
var done = false;
/* This block belongs to one device. Mobile and desktop blocks may both sit in the
same responsive template: each checks the viewport and only the matching one
asks for an ad, so they never both render. Breakpoint 768px, tablets count as
desktop. If your template already renders per device server-side this is simply
a second guard and changes nothing. */
function rightDevice() {
var isMobile = window.matchMedia
? window.matchMedia('(max-width: 767px)').matches
: (document.documentElement.clientWidth || 0) < 768;
return DEVICE === 'mobile' ? isMobile : !isMobile;
}
function box() { return document.getElementById(AD_UNIT); }
function hide() { var b = box(); if (b) b.style.display = 'none'; }
/* Registers this position. Never called without a positive consent answer. */
function register() {
if (done) return;
done = true;
if (!rightDevice()) { hide(); return; }
var b = box();
if (b) b.style.minHeight = MIN_H + 'px'; /* reserve only now, never before */
window.ANConfig = window.ANConfig || {};
window.ANConfig.placements = window.ANConfig.placements || [];
window.ANConfig.placements.push({
adUnitId: AD_UNIT,
propertyId: '105130',
placementId: PLACEMENT,
data: {},
consent: true,
onLoad: function (adUnitId) {},
onFail: function (adUnitId) { hide(); }
});
/* Safety net: if nothing has rendered here shortly, release the space.
No position can leave a permanent blank gap, whatever goes wrong. */
setTimeout(function () {
var c = box();
if (c && !c.getElementsByTagName('iframe').length) hide();
}, 6000);
}
/* One shared coordinator per page, created by whichever block runs first.
Every block registers with it, so when consent arrives they all register in
the SAME tick and the loader is injected once, afterwards. The loader drains
its queue once, so a block that registered late would never be served. */
var C = window.__ldAdConsent;
if (!C) {
C = window.__ldAdConsent = { subs: [], fired: false };
C.granted = function () {
var v = window.LD_AD_CONSENT;
return v === true || v === 1 || v === 'true';
};
C.fire = function () {
if (C.fired) return;
C.fired = true;
if (C.poll) { clearInterval(C.poll); C.poll = null; }
for (var i = 0; i < C.subs.length; i++) {
try { C.subs[i](); } catch (e) {}
}
var inject = function () { /* now, with all of them queued */
if (document.getElementById('ap-js')) return;
var ver = new Date().toISOString().split(':')[0].replace(/\D/g, '');
var apjs = document.createElement('script');
apjs.type = 'text/javascript';
apjs.async = true;
apjs.setAttribute('id', 'ap-js');
apjs.src = 'https://central-brazil.ap.giraffa.tech/js/ap-gjanout.js?v=' + ver;
document.head.appendChild(apjs);
};
/* The loader drains its queue once, so it must not be fetched while the page is
still parsing: blocks further down would register after the drain and be lost.
Consent known before the body parses is the normal returning-visitor case. */
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function () { setTimeout(inject, 0); });
} else {
setTimeout(inject, 0);
}
};
function onSignal(e) {
if ((e && e.detail === true) || C.granted()) C.fire();
}
window.addEventListener('ld-ad-consent', onSignal);
document.addEventListener('ld-ad-consent', onSignal); /* the event does not bubble */
/* 2. IAB TCF v2, used automatically if it ever resolves. Purpose 1 gates storing
and accessing information on the device, which ad serving requires. Consent
is required whether or not gdprApplies is set: gdprApplies being false is
never treated as permission. (Measured here 28 Aug 2026: it is true.) */
if (typeof window.__tcfapi === 'function') {
window.__tcfapi('addEventListener', 2, function (tcData, success) {
if (!success || !tcData) return;
if (tcData.eventStatus !== 'tcloaded' &&
tcData.eventStatus !== 'useractioncomplete') return;
if (tcData.purpose && tcData.purpose.consents && tcData.purpose.consents[1]) C.fire();
});
}
/* 1. Your signal. Set window.LD_AD_CONSENT = true when consent is known.
The order does not matter and there is no time limit: this watch runs
until consent arrives or the page is closed. */
C.poll = setInterval(function () {
if (C.fired) { clearInterval(C.poll); C.poll = null; return; }
if (C.granted()) C.fire();
}, 250);
}
C.subs.push(register);
if (C.fired) register(); /* consent already given before this block parsed */
else if (C.granted()) C.fire();
})();
A apresentação marca a chegada do cantor a um dos principais palcos da música no país em um momento de expansão de sua carreira para públicos e espaços diferentes daqueles ligados exclusivamente ao forró.

Crédito: Divulgação

Crédito: Reprodução Instagram @henryfreitas
PUBLICIDADE

