;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Pedro Antunes

Nego Bala: 'Sobrevivi para protagonizar minha própria história'

Nego Bala lança o curta-metragem de "Sonho" com equipe que criou Bluesman, de Baco Exu do Blues - Foto: Larissa Zaidan / Montagem: Pedro Antunes
Nego Bala lança o curta-metragem de 'Sonho' com equipe que criou Bluesman, de Baco Exu do Blues Imagem: Foto: Larissa Zaidan / Montagem: Pedro Antunes

Colunista do UOL

24/11/2021 13h29

Os versos de "Sonho" nasceram enquanto Nego Bala vivia seu maior pesadelo.

Ele tinha só 12 anos de idade e estava encercerado na Fundação Casa. Rimava os trechos da música que, 11 anos depois, abririam o seu álbum de estreia, "Da Boca do Lixo", lançado hoje, ao meio-dia. Sem ter onde anotar o que criava ali, ava as madrugadas repetindo-os para guardá-los na memória.

Aquelas palavras funcionavam também um mantra otimista em meio ao inferno e caos.

Hoje conhecido como Nego Bala, Marcelo Abdinego Justino Generoso sobreviveu às maiores asperezas da vida. Hoje, canta o sonho de "Sonho" ao lado de Elza Soares, uma faixa com funk na essência, mas também extrapola esses limites e alcança outros lugares.

Tão importante para toda a narrativa artística de Nego Bala, "Sonho" também se tornou um curta-metragem realizado em uma parceria entre a AKQA\Coala.LAB e produzido pela Stink Films, que pode ser assistido logo abaixo.

É uma narrativa que emociona.

Essa mesma parceria foi responsável pelo vídeo de "Bluesman", do rapper Baco Exu do Blues, vencedor de um Grand Prix na categoria "Entertainment for Music" do Cannes Lions.

UOL publicou em 2019 um perfil do Nego Bala sobre a sua jornada, da vida como morador da cracolândia ao funk consciente. Vale a leitura.

Perguntei a Nego Bala, então, sobre o que "Sonho" representa para ele, depois de ar quase metade da vida como mantra.

Essa letra eu criei e memorizei na Febem, dentro de uma a de opressão. Não tinha nada para canetar, eu tive que memorizar. Quase perdi ela, resgatei com o tempo, na memória. Canetei ela no mundão, na rua, depois de um tempo. Transformar essa poesia em música, em funk, com o mesmo modelo de moog que o Pink Floyd usou, ou o mesmo modelo Roads que o Ray Charles usou, foi a parte mais icônica da história. Isso é funk, é a nossa história. É a história da nossa música de alguma forma também."

Com o álbum de estreia enfim lançado (ouça na plataforma de streaming favorita), Nego Bala corre atrás de um futuro que, por tantas vezes, foi-lhe negado.

Por fim, perguntei a Nego Bala o que sentiu ao ver sua vida na tela.

Vejo que consegui sobreviver para protagonizar a minha própria história com a minha arte e a maneira de ouvir e ver o mundo. Parte desse filme estava na minha mente e poder construir essa história somando forças, com um time de primeira, foi a receita pra chegar onde chegamos: pisar num set de filmagem em que tudo pode ser construído com o máximo de atenção, compromisso, qualidade? É o sonho de um menino que tá virando realidade."

Você pode reclamar comigo aqui, no Instagram (@poantunes), no Twitter (também @poantunes) ou no TikTok (@poantunes, evidentemente).