Skip to content
April 8, 2014 / Ricardo M. Bertani

All In Your Hands – tudo em um só lugar

Tudo começou a partir de uma simples idéia: “Disponibilizar vários tipos de mídia/serviços em um local unico e permitir que fossem acessados com o menor número de cliques possível”. O software oferece alguns sistemas de busca para diversos tipos de mídia (vídeos,músicas, livros e lugares próximos), assim como players embutidos para a reprodução das músicas e vídeos e um serviço de previsão do tempo. “All In Your Hands” ou “Tudo em suas Mãos” (versão em português) ainda possui um chat e um serviço que mostra se estabelecimentos próximos encontram-se abertos e como chegar no local com base no google maps. O software foi desenvolvido em duas versões, uma versão web (um site), que está disponível em http://tudoemsuasmaos.com.br e um app android FREE, que pode ser adquirido no google play: Get it on Google Play

O site e app foram totalmente redesenhados em Janeiro/2015 para proporcionar uma melhor experiência de uso ao usuário final. Abaixo algumas imagens do app.

screenshot1      screenshot2    screenshot4

Para os mais técnicos e curiosos, disponibilizo o diagrama de implantação do sistema na url que segue: Diagrama de Implantação . Neste diagrama é possível ver
como está modularizado o sistema, entender sua arquitetura, assim como entender a funcionalidade de seus principais
componentes. Resumidamente, as principais tecnologias utilizadas durante o desenvolvimento foram EJBs, JMS, RestFull WS, AngularJS e Twitter Bootstrap. Espero que gostem 🙂

Advertisements
August 25, 2013 / Ricardo M. Bertani

Sonata – Um sistema de rearmonização de partituras

Sonata foi o projeto desenvolvido durante meu trabalho de conclusão de curso para obtenção do grau de Bacharel em Ciencia da Computação. Trata-se de um software capaz de rearmonizar partituras e gerar diferentes versões destas  utilizando algumas técnicas de rearmonização. Neste link é possível visualizar um resumo do projeto (enquanto ainda estava em desenvolvimento em 2010)  apresentado ao Siicusp (Simpósio de Iniciação Científica da USP):  https://uspdigital.usp.br/siicusp/cdOnlineTrabalhoVisualizarResumo?numeroInscricaoTrabalho=5118&numeroEdicao=18
É importante salientar que rearmonização musical é um assunto muito complexo dentro da Música envolvendo conhecimentos avançados de teoria musical, sendo assim o desenvolvimento de um software que pudesse automatizar este processo em sua totalidade seria praticamente impossível  devido ao número de variáveis envolvidas e o tempo que tinhamos para tal.
Por este motivo durante o desenvolvimento de nosso software foi necessário adotar algumas premissas e efetuar algumas “limitações” de forma que o processo de rearmonização funcionasse corretamente. Uma dessas premissas é que o software apenas efetua alterações sobre a harmonia, deixando a melodia e o ritmo original da música intactos,  além disso foram implementadas 4 técnicas de rearmonização (Interpolação em Cadências,  Substituição de acordes – por tom comum ou por trítono,  inserção de notas de tensão sobre acordes e inserção de acordes fora do campo harmônico) . Porém nada impede que em futuras versões o software suporte demais técnicas de rearmonização ou manipule notas da melodia.
Hoje o software aceita um arquivo midi de entrada,  lê suas notas musicais  e gera uma partitura no formato de piano, então através da aplicação das técnicas de rearmonização podem ser geradas uma ou mais versões diferentes da partitura original. Cada uma das partituras geradas pode ser exportada nos formatos Midi ou PDF.

Atualmente o software possui duas versões (desktop e mobile – android),  sendo que a versão android encontra-se no google play e pode ser adquirida em duas versões –  completa e de demonstração, através dos links abaixo.

Versão Completa


Android app on Google Play

Versão de Demonstração


Android app on Google Play

Abaixo algumas imagens do aplicativo:

export_pdf                   select_rules

score

January 17, 2011 / Ricardo M. Bertani

Projeto Visão Computacional – Reconhecimento de Íris

No segundo semestre de 2010  um amigo e eu desenvolvemos uma pequena aplicação que permitia reconhecer a íris de olhos humanos através do algoritmo de crescimento de região e corte. Na época foi utilizada a biblioteca de visão computacional OpenCV – http://opencv.willowgarage.com/wiki/, este trabalho foi desenvolvido para a disciplina de Visão Computacional.

Para o reconhecimento de íris todas as imagens foram submetidas a alguns procedimentos experimentais. Primeiramente dividimos a imagem em três canais de cor (R/G/B) e em um próximo passo fizemos o corte da imagem** e observamos que o canal R (red) ao ser binarizado apresentava os melhores resultados de separação da irís + pupila do resto da imagem.

**Corte/binarização da imagem, neste contexto, é considerado uma técnica de processamento de imagens que analisa os pixels da imagem e cria uma outra imagem onde os pixels com menor intensidade recebem valor zero e os demais recebem valor  máximo de intensidade (valor 1).

Então utilizamos o resultado do corte sobre o canal R,  a partir dele fizemos procedimentos para remover a região da pupila da íris, e na sequencia utilizamos o algoritmo de crescimento de região (algoritmo que a partir de um pixel “semente” vai formando uma área com os pixels vizinhos até encontrar bordas/ regiões de valor muito diferente de intensidade), assim conseguimos chegar a um reconhecimentos aceitável da região da íris. É claro que esse reconhecimento não é perfeito, o algoritmo ainda poderia ser aprimorado.

Fizemos ainda um tratamento para cores de íris mais claras e mais escuras (ambas necessitam de um procedimento diferenciado para tal reconhecimento). Algumas imagens com os resultados obtidos estão abaixo, são mostradas as imagens de 3 olhos diferentes onde respectivamente temos as imagens  Original, canal Red, Corte (ou imagem binarizada),  somente a íris + pupila, somente a íris  – passo onde existe um tratamento diferente para cores claras e escuras de íris, e o crescimento de região (onde a íris foi reconhecida):

olho exemplo 1:

olho exemplo 2:

olho exemplo 3 (um caso em que o algoritmo não conseguiu reconhecer a íris de maneira significativa):

January 15, 2011 / Ricardo M. Bertani

Animação Digital

Na disciplina de Animação Digital, o projeto final consistia na produção de uma animação de no mínimo 1 minuto, tendo a mesma que ser desenvolvida totalmente no software Blender. Eu e dois amigos pensamos em uma história bastante simples:

Um homem palito frustrado por não se dar bem no esporte que praticava (Futebol), se depara com a grande oportunidade de fazer sucesso em outro esporte e então participa de um emocionante torneio em busca de sua satisfação pessoal.

Abaixo disponibilizo o vídeo do projeto desenvolvido por nós:

O vídeo acima foi o resultado da compilação final de nossa animação. Consiste de uma animação de 1:30 min, totalmente desenvolvida no software Blender.

January 15, 2011 / Ricardo M. Bertani

Desenvolvimento de jogos utilizando XNA Game Studio 3.1

XNA é um framework (conjunto de classes prontas para uso específico, diferente de uma API que é um conjunto de classes para uso geral) para desenvolvimento de games escrito em C# e desenvolvido pela Microsoft.

Meu contato com XNA ocorreu durante a graduação, onde eu e três amigos participamos de um concurso de Plano de Negócios e fomos aprovados para trabalhar na pré-incubadora de empresas do Mackenzie com um projeto de desenvolvimento de games. Optamos pelo framework XNA devido ao enorme suporte dado pela Microsoft, a grande quantidade de materiais disponíveis online,  livros e a enorme documentação oficial, o diferenciando de outras linguagens/frameworks próprios para  desenvolvimento de games que ofereciam pouco suporte e muitas vezes com grande quantidade de programação via scripts, dificultando o desenvolvimento dos games.

A idéia que tivemos foi criar um game que uniria o jogo Mesoamericano de bola ( http://pt.wikipedia.org/wiki/Jogo_de_bola_mesoamericano ) com a administração de recursos naturais de forma que o jogador obtivesse “créditos” que poderiam ser utilizados para melhorar suas armaduras ou até mesmo a qualidade dos campos em que os jogos ocorriam.  Este vídeo do youtube mostra como era praticado o jogo pela população Maia:  http://www.youtube.com/watch?v=-ACQmNPa-YU

Embora não conseguimos terminar a implementação do nosso game foi possível desenvolver vários protótipos do mesmo, dentre eles alguns relacionados com a mecânica da bola (tanto em cenário 2D como em 3D), colisão entre jogadores e bola, desgaste da bola e das armaduras em função do tempo, animação de bola entrando no aro presente nas laterais do campo, dentre outros.

Abaixo disponibilizo alguns vídeos de demonstração de alguns dos protótipos desenvolvidos durante nosso período dentro da pré-incubadora.

Protótipo de mecânica da bola em 2D ( demonstrando também a colisão entre personagens e bola):

Protótipo de animação de bola entrando no aro nas laterais do campo ( cenário 2D):

Protótipo de mecânica da bola em campo 3D:

January 15, 2011 / Ricardo M. Bertani

Síntese de Imagens Digitais

Durante o 1° semestre de 2010 na disciplina de Síntese de Imagens Digitais,criei duas imagens sintetizadas por computador utilizando o software Blender ( http://www.blender.org/ ) para a modelagem dos objetos e  a biblioteca PBRT ( http://www.pbrt.org/ ) para a renderização das imagens.

Abaixo estão as imagens obtidas:

A imagem acima criei tentando reproduzir a imagem de uma taça de cristal em cima de uma mesa. Utilizei a modelagem de uma taça no Blender e depois fiz a renderização com a biblioteca PBRT .

A imagem abaixo foi o resultado do desenvolvimento do projeto da disciplina, tentei representar um inseto sobre uma folhagem:

Abaixo estão as imagens que criei dando printscreen sobre as telas do Blender e exibidas pela biblioteca PBRT durante o desenvolvimento do projeto:

January 15, 2011 / Ricardo M. Bertani

Projetos Programação de Jogos

Durante o 2° semestre de 2009 eu e amigos desenvolvemos dois jogos na disciplina de Programação de Jogos, um deles foi desenvolvido na game engine “Game maker” e o outro na game engine “FPS Creator”.

O primeiro deles trata-se de um jogo de aventura em 2D, onde o jogador deveria controlar um gato e ir passando de níveis derrotando oponentes e chefes de fase.  O jogo contém 5 fases repletas de itens, inimigos e chefes, tento o jogador que usar seu raciocínio lógico e instinto na tentativa de concluir cada uma delas.  O vídeo abaixo demonstra brevemente as cinco fases do jogo:

Para quem gosta de documentação, ai vai o documento de design (documento que explica toda a história do jogo , a história e características de cada personagem individualmente, os objetos do jogo, dentre outros) do jogo “Spark Fragment”:

Documento de Design – Spark Fragment