Blue velvet: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
(Atualização - Semana 3)
Linha 26: Linha 26:
             <li>Ardour cria visualização de "peaks" a partir do XML-base (automático);
             <li>Ardour cria visualização de "peaks" a partir do XML-base (automático);
             <li>Designer de áudio reabre a mesma sessão, e a timeline de áudio é a mesma vista pelo montador no Blender.
             <li>Designer de áudio reabre a mesma sessão, e a timeline de áudio é a mesma vista pelo montador no Blender.
             <li>Mixagem e masteriação do áudio.
             <li>Mixagem e masterização do áudio.
             <li>Designer de som exporta trilhas finais.
             <li>Designer de som exporta trilhas finais.
         </ul>
         </ul>
     <li>Montador insere trilha final no projeto de edição.
     <li>Montador insere trilha final no projeto de edição.
</ol>
</ol>


==Programação de desenvolvimento==
==Programação de desenvolvimento==

Edição das 14h01min de 2 de outubro de 2013

::blue_velvet::

Página de desenvolvimento do plugin ::blue_velvet::, para integração entre as timelines de áudio do Blender e do Ardour.

Onde está o código?

Aqui: https://github.com/szaszak/blender_velvet/blob/blue_velvet/blue_velvet.py

O que esperar?

Workflow de trabalho:

  1. Editor faz a montagem completa do vídeo.
  2. Addon reconhece as trilhas usadas na timeline e:
    • Checa se as trilhas pertencem a um vídeo ou se são áudios separados;
      • a. Se trilha pertence a um vídeo, usa o FFMPEG do Blender para isolar a trilha de áudio (WAV) e as salva em uma pasta "Audio (Bundle)", onde será lida pelo Ardour;
      • b. Se trilha for áudio separado, copia esse áudio para uma pasta "Audio (Bundle)", onde será lida pelo Ardour;
    • Gera XML .ardour;
  3. Designer de som abre o arquivo .ardour no Ardour;
    • Ardour completa itens faltantes do XML-base (automático);
    • Ardour cria visualização de "peaks" a partir do XML-base (automático);
    • Designer de áudio reabre a mesma sessão, e a timeline de áudio é a mesma vista pelo montador no Blender.
    • Mixagem e masterização do áudio.
    • Designer de som exporta trilhas finais.
  4. Montador insere trilha final no projeto de edição.

Programação de desenvolvimento

  1. Estudo de funcionamento geral das coisas - Blender, Ardour, geração de XML pelo Ardour, geração de XML via Python - FEITO - S1.
  2. Qual é o XML mínimo possível que o Ardour abre? - FEITO - S2.
  3. Onde estão as coisas relativas a áudio (pan, mono/estéreo, trilhas bloqueadas, trilhas mutadas) no Blender e no XML? - FEITO - S3.
  4. Geração de um XML esqueletal básico por Python via Blender, que leia conteúdo estático e o transforme em um XML. - FEITO - S3.
  5. Pesquisa: abrir track paralelo de desenvolvimento no github do blender_velvet. - FEITO - S2. Link ::blue_velvet::.
  6. Geração de XML com vários áudios na timeline.
  7. Geração de XML com vários áudios na timeline e várias mudanças de parâmetros relativos a áudio (bloqueio de trilhas, mute etc).
  8. Pesquisa - qual o melhor jeito de se usar o FFMPEG nativo do Blender em vários ambientes?
  9. Extrair áudio de vídeos via Blender API (Python).
  10. Geração de XML a partir de timeline com áudios misturados - fontes são vídeos e áudios;
  11. Adicionar funcionalidades de interface (UI) - item no menu;
  12. Adicionar funcionalidades de interface (UI) - diálogos de aviso para conversão do FFMPEG;
  13. Teste de funcionalidade - usar o plugin em um projeto real de edição;
  14. Documentação - geração de vídeo explicativo + README no github.
  15. Pós-documentação - contato com desenvolvedores do Blender, publicação no blenderartists.org;
  16. Avaliação - é possível ler keyframes de fade/pan e volume variável via Blender API?
  17. Adaptação do código segundo sugestões do blenderartists.org.
  18. Inserir ::blue_velvet:: nos addons do Blender (branch community contrib).


Relatórios de desenvolvimento

Relatórios semanais publicados na quarta-feira.

Semana 1

  • Instalei o Ardour 2 no lap reciclado para começo das pesquisas.
  • Com o Ardour 2 e Jack rodando, salvei algumas sessões de Ardour sem trilhas e com uma trilha de áudio. Objetivo: entender o XML.
  • Estudei qual o melhor modo de implementar a exportação da timeline do Blender por XML. A melhor opção seria o lxml, mas essa é uma biblioteca externa. O Blender tem suporte nativo a MiniDom e ao ElementTree, então serão esses os métodos escolhidos.
  • Estudei como gerar um XML do zero com Python. A alternativa seria modificar um template XML do Ardour vazio, mas seria ruim distribuir isso junto com o addon.
  • Estudei como transformar o output XML do Blender de bytes em string e em como deixá-lo em formato human-readable (pretty printing).


A fazer, semana que vem

  • O XML do Ardour é cheio de tags e IDs. Muitas IDs não querem dizer nada, mas outras são marcadores internos referentes ao modo que as fontes ficam dispostas na timeline. Preciso entender melhor isso.
  • Trabalhar na geração de um primeiro XML esqueletal, com as seções de um XML do Ardor;
  • Estudar melhor o Ardour, para entender como ele lida com fontes estéreo, mono ou multicanais, e como faz as pans desses áudios.


Dúvidas

  • Quais IDs do XML são realmente importantes?
  • Como o Ardour lida com fontes de diferentes canais?
  • Quais as diferenças entre XMLs para Ardour 2 e Ardour 3?


Semana 2

  • Baixei o Ardour3 para já codar usando a versão nova do programa e do XML;
  • Pesquisei sobre os IDs na XML - eles não importam. Os únicos que importam são o de contagem geral (id-counter) e os que se referenciam entre si na timeline, relacionados a sources de áudio;
  • Início da leitura do manual do Ardour, para compreender melhor a relação programa <-> XML;
  • Criação de página no wiki Nós Digitais e documentação de desenvolvimento - atualizações serão às quartas-feiras;
  • Cheguei ao XML esqueletal básico, sem trilhas. Ele tem 32 linhas;
  • Uma trilha de áudio adiciona 4 elementos novos no XML, fazendo com que fique com 53 linhas;
  • Início de código: ::blue_velvet:: agora é capaz de gerar o XML básico a partir do Blender (Python) e salvar em um arquivo;
  • Código do ::blue_velvet:: está no github, como um branch do main trunk, blender_velvet. Agora o desenvolvimento pode ser acompanhado a partir dos commits.


A fazer, semana que vem

  • Testar se XML esqueletal é lido pelo Ardour3 (os atributos do XML são gerados em ordem diferente ao original);
  • Trabalhar na geração de um XML com uma trilha, e testar se ela é lida pelo Ardour3.
  • Continuar leitura do manual do Ardour.


Dúvidas

  • XML não funciona no Ardour sem informações de Tempo e Meter. Há outro jeito ou isso é fundamental?
  • Elemento Location: o que são as flags? Por que existe um elemento "punch"? XML funcionaria sem ele?


Semana 3

  • XML mais objetivo: limpei referências a Punch e Loop -> Ardour os recria automaticamente;
  • XML mais preciso: incluí informações referentes a SampleFormat (bits) e FPSs aceitos pelo Ardour - não usar esses parâmetros no Blender pode gerar um erro;
  • Teste com trilha única estática criada pelo Blender funciona no Ardour;
  • Comecei preparativos para conteúdo dinâmico (timeline do Blender);
  • Extensa pesquisa sobre a relação dos parâmetros do XML do Ardour e dos elementos do Blender - consegui estabelecer relações bem-sucedidas entre ambos para praticamente todos os parâmetros que importam;
  • Revisão de código: transformei todas as declarações de atributos do XML em funções, para receberem conteúdo dinâmico;
  • Problema da numeração de IDs resolvido - IDs agora estão sendo atribuídos corretamente, inclusive relações internas no XML;
  • Quebrei a geração das seções dinâmicas do XML em várias funções, para tornar o código mais claro;
  • Revisão geral e limpeza do código - excluí temporariamente parte do código no github para refletir estado atual da revisão;
  • Primeira seção do XML gerada a partir de conteúdo dinâmico parcialmente bem sucedida.


A fazer, semana que vem

  • Continuar revisão de código para receber conteúdo dinâmico;
  • Resolver problemas de inter-relação entre Sources e Regions para conteúdos dinâmicos repetidos.


Dúvidas

  • Informações de dados das strips estão sendo armazenadas em dicionários, dentro de uma lista. Seria melhor criar uma classe?