;(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

Erasmo, Gal Costa, Elza Soares: música brasileira perde grandes nomes

Erasmo Carlos morreu aos 81 anos, no Rio de Janeiro  - Guto Costa/Divulgação
Erasmo Carlos morreu aos 81 anos, no Rio de Janeiro Imagem: Guto Costa/Divulgação

De Splash, em São Paulo

26/12/2022 04h00

As mortes de Erasmo Carlos, Gal Costa, Rolando Boldrin e Elza Soares deixaram um vazio na música brasileira. Os músicos, cada um a seu estilo, época e referência, escreveram importantes capítulos na história cultural.

Erasmo morreu aos 81 anos, em decorrência de um quadro de paniculite complicada por sepse de origem cutânea, uma inflamação na pele, no dia 22 de novembro, no Rio de Janeiro. O artista vinha de um período de duas semanas internado no hospital Barra D'Or, com uma síndrome edemigênica.

Com 29 álbuns de estúdio, lançados entre 1965 e 2019, e cinco discos ao vivo, Erasmo Carlos foi um dos pioneiros do rock n' roll no Brasil, estilo musical que adotou desde o início da carreira influenciado por um de seus maiores ídolos, Elvis Presley.

Gal Costa

A morte de Gal, aos 77 anos, no dia 9 de novembro, pegou os fãs de surpresa. Ela estava com a agenda de shows suspensa após ar por uma cirurgia para a retirada de um nódulo na fossa nasal direita no final de setembro.

Gal Costa - Lucas Lima/UOL - Lucas Lima/UOL
Gal Costa
Imagem: Lucas Lima/UOL

Com mais de 50 anos de carreira, foi responsável por eternizar músicas de compositores como Gil, Caetano, Luiz Melodia, Jards Macalé e Cazuza, além de trilhas de novelas da TV Globo, como "Modinha para Gabriela", na clássica "Gabriela" (1975) e "Tigresa" em "Espelho Mágico" (1977).

Após completar 70 anos, Gal se manteve ativa musicalmente e ou a gravar nomes da nova MPB. Com os álbuns "Estratosférica" (2015) e "A Pele Do Futuro" (2018), a artista conquistou um público mais jovem e voltou a ser requisitada em festivais pelo país.

Rolando Boldrin

Rolando Boldrin - Divulgação/TV Cultura - Divulgação/TV Cultura
Rolando Boldrin apresentava o "Sr. Brasil" na TV Cultura
Imagem: Divulgação/TV Cultura

Os brasileiros ainda tentavam entender a partida de Gal quando veio a confirmação da morte de Rolando Boldrin, aos 86 anos, no fim daquela tarde. O ator, cantor e apresentador de TV estava internado no Hospital Israelita Albert Einstein, em São Paulo, e não resistiu a uma insuficiência respiratória e renal.

Boldrin entrou para a história da cultura brasileira como um dos um dos grandes compositores, intérpretes e divulgadores da música brasileira "raiz". Ao seu site oficial, ele se definia como um "homem de muitos talentos e personalidade".

Elza Soares

Elza Soares - Reprodução/Instagram - Reprodução/Instagram
Elza Soares
Imagem: Reprodução/Instagram

Elza Soares cantou "até o fim", parafraseando o sucesso "A Mulher do Fim do Mundo". A artista morreu aos 91 anos, de causas naturais, dois dias após a gravação do DVD ao vivo no Theatro Municipal de São Paulo - o último trabalho da carreira.

Versando entre o samba, a MPB e até a Bossa Nova, Elza foi considerada pela BBC a "voz brasileira do milênio", em 1999. Ao longo da carreira, gravou mais de 100 discos (entre vinis, CDs e produtos digitais).

Com o projeto "A Mulher do Fim do Mundo", a artista ganhou um Grammy Latino na categoria "Melhor Álbum de Música Popular Brasileira". O disco seguinte, "Deus é Mulher", de 2018, também foi indicado na mesma categoria.