webOS Nation Forums >  webOS developer forums >  i-marco apps > Screamager BlinkenLights animations - tech demo
Screamager BlinkenLights animations - tech demo

  Closed Thread
 
LinkBack Thread Tools Display Modes
Old 09/05/2009, 01:37 PM   #1 (permalink)
Member
 
TheMarco's Avatar
 
Join Date: Jun 2009
Location: Sunnyvale CA
Posts: 699
Likes Received: 6
Thanks: 19
Thanked 160 Times in 72 Posts
Default Screamager BlinkenLights animations - tech demo

So.... I got my dot matrix renderer used in 'Screamager' to render BlinkenLights animations! Yay!

I still need to do massive optimization to bump up the framerate but... it's working! This demo reads the attached XML file, parses it and then displays the animation.

Animations are in 'BML format' which is the format for Blinkenlights animations.

Soon I'll add a feature to Screamager that can show several bundled animations and also allows the user to paste an URL to a .bml file which will then be played. Pretty cool I think.

Here's a 12seconds.tv video of this thing in action:

Blinkenlights animations on the #palmpre. Early tech demo. | 12seconds.tv (beta)
__________________
My shiny new TouchPad apps: Scientific RPN Calculator HD - Screamager HD
TheMarco is offline  
Old 09/05/2009, 01:39 PM   #2 (permalink)
Member
 
TheMarco's Avatar
 
Join Date: Jun 2009
Location: Sunnyvale CA
Posts: 699
Likes Received: 6
Thanks: 19
Thanked 160 Times in 72 Posts
Default

Apparently I can't attach the BML file. Here it is:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<blm width="26" height="18" bits="1" channels="1">
	<header>
		<title>Arrows</title>
		<description>Screamager Animator Demo</description>
		<creator>BlinkenPaint 3.14</creator>
		<author>Marco van Hylckama Vlieg</author>
		<email>marco@i-marco.nl</email>
		<loop>yes</loop>
		<duration>1000</duration>
	</header>
	<frame duration="100">
		<row>11110000111110000111110000</row>
		<row>11110000111110000111110000</row>
		<row>11111000011111000011111000</row>
		<row>11111000011111000011111000</row>
		<row>01111100001111100001111100</row>
		<row>01111100001111100001111100</row>
		<row>00111110000111110000111110</row>
		<row>00111110000111110000111110</row>
		<row>00011111000011111000011111</row>
		<row>00011111000011111000011111</row>
		<row>00111110000111110000111110</row>
		<row>00111110000111110000111110</row>
		<row>01111100001111100001111100</row>
		<row>01111100001111100001111100</row>
		<row>11111000011111000011111000</row>
		<row>11111000011111000011111000</row>
		<row>11110000111110000111110000</row>
		<row>11110000111110000111110000</row>
	</frame>
	<frame duration="100">
		<row>11111000011111000011111000</row>
		<row>11111000011111000011111000</row>
		<row>01111100001111100001111100</row>
		<row>01111100001111100001111100</row>
		<row>00111110000111110000111110</row>
		<row>00111110000111110000111110</row>
		<row>00011111000011111000011111</row>
		<row>00011111000011111000011111</row>
		<row>00001111100001111100001111</row>
		<row>00001111100001111100001111</row>
		<row>00011111000011111000011111</row>
		<row>00011111000011111000011111</row>
		<row>00111110000111110000111110</row>
		<row>00111110000111110000111110</row>
		<row>01111100001111100001111100</row>
		<row>01111100001111100001111100</row>
		<row>11111000011111000011111000</row>
		<row>11111000011111000011111000</row>
	</frame>
	<frame duration="100">
		<row>01111100001111100001111100</row>
		<row>01111100001111100001111100</row>
		<row>00111110000111110000111110</row>
		<row>00111110000111110000111110</row>
		<row>00011111000011111000011111</row>
		<row>00011111000011111000011111</row>
		<row>00001111100001111100001111</row>
		<row>00001111100001111100001111</row>
		<row>10000111110000111110000111</row>
		<row>10000111110000111110000111</row>
		<row>00001111100001111100001111</row>
		<row>00001111100001111100001111</row>
		<row>00011111000011111000011111</row>
		<row>00011111000011111000011111</row>
		<row>00111110000111110000111110</row>
		<row>00111110000111110000111110</row>
		<row>01111100001111100001111100</row>
		<row>01111100001111100001111100</row>
	</frame>
	<frame duration="100">
		<row>00111110000111110000111110</row>
		<row>00111110000111110000111110</row>
		<row>00011111000011111000011111</row>
		<row>00011111000011111000011111</row>
		<row>00001111100001111100001111</row>
		<row>00001111100001111100001111</row>
		<row>10000111110000111110000111</row>
		<row>10000111110000111110000111</row>
		<row>11000011111000011111000011</row>
		<row>11000011111000011111000011</row>
		<row>10000111110000111110000111</row>
		<row>10000111110000111110000111</row>
		<row>00001111100001111100001111</row>
		<row>00001111100001111100001111</row>
		<row>00011111000011111000011111</row>
		<row>00011111000011111000011111</row>
		<row>00111110000111110000111110</row>
		<row>00111110000111110000111110</row>
	</frame>
	<frame duration="100">
		<row>000111110000111110000111110</row>
		<row>000111110000111110000111110</row>
		<row>000011111000011111000011111</row>
		<row>000011111000011111000011111</row>
		<row>100001111100001111100001111</row>
		<row>100001111100001111100001111</row>
		<row>110000111110000111110000111</row>
		<row>110000111110000111110000111</row>
		<row>111000011111000011111000011</row>
		<row>111000011111000011111000011</row>
		<row>110000111110000111110000111</row>
		<row>110000111110000111110000111</row>
		<row>100001111100001111100001111</row>
		<row>100001111100001111100001111</row>
		<row>000011111000011111000011111</row>
		<row>000011111000011111000011111</row>
		<row>000111110000111110000111110</row>
		<row>000111110000111110000111110</row>
	</frame>
	<frame duration="100">
		<row>000011111000011111000011111</row>
		<row>000011111000011111000011111</row>
		<row>100001111100001111100001111</row>
		<row>100001111100001111100001111</row>
		<row>110000111110000111110000111</row>
		<row>110000111110000111110000111</row>
		<row>111000011111000011111000011</row>
		<row>111000011111000011111000011</row>
		<row>111100001111100001111100001</row>
		<row>111100001111100001111100001</row>
		<row>111000011111000011111000011</row>
		<row>111000011111000011111000011</row>
		<row>110000111110000111110000111</row>
		<row>110000111110000111110000111</row>
		<row>100001111100001111100001111</row>
		<row>100001111100001111100001111</row>
		<row>000011111000011111000011111</row>
		<row>000011111000011111000011111</row>
	</frame>
	<frame duration="100">
		<row>100001111100001111100001111</row>
		<row>100001111100001111100001111</row>
		<row>110000111110000111110000111</row>
		<row>110000111110000111110000111</row>
		<row>111000011111000011111000011</row>
		<row>111000011111000011111000011</row>
		<row>111100001111100001111100001</row>
		<row>111100001111100001111100001</row>
		<row>111110000111110000111110000</row>
		<row>111110000111110000111110000</row>
		<row>111100001111100001111100001</row>
		<row>111100001111100001111100001</row>
		<row>111000011111000011111000011</row>
		<row>111000011111000011111000011</row>
		<row>110000111110000111110000111</row>
		<row>110000111110000111110000111</row>
		<row>100001111100001111100001111</row>
		<row>100001111100001111100001111</row>
	</frame>
	<frame duration="100">
		<row>110000111110000111110000111</row>
		<row>110000111110000111110000111</row>
		<row>111000011111000011111000011</row>
		<row>111000011111000011111000011</row>
		<row>111100001111100001111100001</row>
		<row>111100001111100001111100001</row>
		<row>111110000111110000111110000</row>
		<row>111110000111110000111110000</row>
		<row>011111000011111000011111000</row>
		<row>011111000011111000011111000</row>
		<row>111110000111110000111110000</row>
		<row>111110000111110000111110000</row>
		<row>111100001111100001111100001</row>
		<row>111100001111100001111100001</row>
		<row>111000011111000011111000011</row>
		<row>111000011111000011111000011</row>
		<row>110000111110000111110000111</row>
		<row>110000111110000111110000111</row>
	</frame>

	<frame duration="100">
		<row>111000011111000011111000011</row>
		<row>111000011111000011111000011</row>
		<row>111100001111100001111100001</row>
		<row>111100001111100001111100001</row>
		<row>111110000111110000111110000</row>
		<row>111110000111110000111110000</row>
		<row>011111000011111000011111000</row>
		<row>011111000011111000011111000</row>
		<row>001111100001111100001111100</row>
		<row>001111100001111100001111100</row>
		<row>011111000011111000011111000</row>
		<row>011111000011111000011111000</row>
		<row>111110000111110000111110000</row>
		<row>111110000111110000111110000</row>
		<row>111100001111100001111100001</row>
		<row>111100001111100001111100001</row>
		<row>111000011111000011111000011</row>
		<row>111000011111000011111000011</row>
	</frame>
	<frame duration="100">
		<row>111100001111100001111100001</row>
		<row>111100001111100001111100001</row>
		<row>111110000111110000111110000</row>
		<row>111110000111110000111110000</row>
		<row>011111000011111000011111000</row>
		<row>011111000011111000011111000</row>
		<row>001111100001111100001111100</row>
		<row>001111100001111100001111100</row>
		<row>000111110000111110000111110</row>
		<row>000111110000111110000111110</row>
		<row>001111100001111100001111100</row>
		<row>001111100001111100001111100</row>
		<row>011111000011111000011111000</row>
		<row>011111000011111000011111000</row>
		<row>111110000111110000111110000</row>
		<row>111110000111110000111110000</row>
		<row>111100001111100001111100001</row>
		<row>111100001111100001111100001</row>
	</frame>
	<frame duration="100">
		<row>111110000111110000111110000</row>
		<row>111110000111110000111110000</row>
		<row>011111000011111000011111000</row>
		<row>011111000011111000011111000</row>
		<row>001111100001111100001111100</row>
		<row>001111100001111100001111100</row>
		<row>000111110000111110000111110</row>
		<row>000111110000111110000111110</row>
		<row>000011111000011111000011111</row>
		<row>000011111000011111000011111</row>
		<row>000111110000111110000111110</row>
		<row>000111110000111110000111110</row>
		<row>001111100001111100001111100</row>
		<row>001111100001111100001111100</row>
		<row>011111000011111000011111000</row>
		<row>011111000011111000011111000</row>
		<row>111110000111110000111110000</row>
		<row>111110000111110000111110000</row>
	</frame>
</blm>
__________________
My shiny new TouchPad apps: Scientific RPN Calculator HD - Screamager HD
TheMarco is offline  
Old 09/05/2009, 01:44 PM   #3 (permalink)
WebOS Developer
 
kesne's Avatar
 
Join Date: Jun 2009
Location: Portland, Oregon
Posts: 491
Likes Received: 0
Thanks: 22
Thanked 118 Times in 31 Posts
Default

That's pretty sweet man, but why not use json?
__________________
kesne is offline  
Old 09/05/2009, 01:47 PM   #4 (permalink)
Member
 
TheMarco's Avatar
 
Join Date: Jun 2009
Location: Sunnyvale CA
Posts: 699
Likes Received: 6
Thanks: 19
Thanked 160 Times in 72 Posts
Default

kesne because this is an existing XML format. It's really easy to read the XML and parse it. I figured it would be nice to use this. It took 14 lines of code to convert this XML format into the format I use to render my animations.

Also, if people want to do their own animations, this format is easy to work with because you can kinda 'see' what you're doing in your text editor.

Note that it's slow now (about 2-3fps). I have worked out a solution to implement frame buffering though that I still need to code up. It should get much faster soon.
__________________
My shiny new TouchPad apps: Scientific RPN Calculator HD - Screamager HD
TheMarco is offline  
Old 09/05/2009, 01:57 PM   #5 (permalink)
WebOS Developer
 
kesne's Avatar
 
Join Date: Jun 2009
Location: Portland, Oregon
Posts: 491
Likes Received: 0
Thanks: 22
Thanked 118 Times in 31 Posts
Default

Quote:
Originally Posted by TheMarco View Post
kesne because this is an existing XML format. It's really easy to read the XML and parse it. I figured it would be nice to use this. It took 14 lines of code to convert this XML format into the format I use to render my animations.

Also, if people want to do their own animations, this format is easy to work with because you can kinda 'see' what you're doing in your text editor.

Note that it's slow now (about 2-3fps). I have worked out a solution to implement frame buffering though that I still need to code up. It should get much faster soon.
Ah I see, XML is much more user friendly for people that want to make their own. It looks great so far though!
__________________
kesne is offline  
Old 09/05/2009, 02:08 PM   #6 (permalink)
Member
 
TheMarco's Avatar
 
Join Date: Jun 2009
Location: Sunnyvale CA
Posts: 699
Likes Received: 6
Thanks: 19
Thanked 160 Times in 72 Posts
Default

Quote:
Originally Posted by kesne View Post
Ah I see, XML is much more user friendly for people that want to make their own. It looks great so far though!
Thanks!

And, exactly. I wanted to make this as easy as possible because it would rock if people would contribute their own animations.

I'm gonna try to implement the framebuffering over this long labor day weekend and I'll look into 4 grayscale rendering as well after that.

It's kind of a pity that BlinkenPaint doesn't seem to support different grid sizes (which the XML format DOES support) or it would be even easier to do this.
__________________
My shiny new TouchPad apps: Scientific RPN Calculator HD - Screamager HD
TheMarco is offline  
Old 09/06/2009, 05:58 PM   #7 (permalink)
Member
 
TheMarco's Avatar
 
Join Date: Jun 2009
Location: Sunnyvale CA
Posts: 699
Likes Received: 6
Thanks: 19
Thanked 160 Times in 72 Posts
Default

Here's a new demo. It seems to be working fine now. I'm going to add an 'animations' section to Screamager with the few animations I made and the option to run your own.

I love you - progress with my Palm Pre BLM animator | 12seconds.tv (beta)
__________________
My shiny new TouchPad apps: Scientific RPN Calculator HD - Screamager HD
TheMarco is offline  
Old 09/06/2009, 07:58 PM   #8 (permalink)
Member
 
K4p741nkrunch's Avatar
 
Join Date: Aug 2009
Posts: 187
Likes Received: 0
Thanks: 21
Thanked 48 Times in 32 Posts
Default

Hey looks like it's running a lot better when it isn't scrolling :P
I'm using version 0.6.0 right now and there's always a small halt after every 6 characters or so. That 'I heart you' animation ran super smooth! Nice work on this, I'm impressed with the frequent updates! Keep up the good work!
K4p741nkrunch is offline  
Old 09/08/2009, 01:23 AM   #9 (permalink)
Member
 
TheMarco's Avatar
 
Join Date: Jun 2009
Location: Sunnyvale CA
Posts: 699
Likes Received: 6
Thanks: 19
Thanked 160 Times in 72 Posts
Default

Hmmm it only SEEMS like that. Thing is, when stuff just flashes you don't really see the slowdowns as clearly. This animation isn't running any faster than a scrolling phrase. Unfortunately...

That said, I think it's fast enough to still be fun so I'll be releasing a new version of Screamager soon with this feature enabled. It will have a few built in animations and an URL box where you can load any animation you created yourself (in the appropriate BlinkenLights .BML format).
__________________
My shiny new TouchPad apps: Scientific RPN Calculator HD - Screamager HD
TheMarco is offline  
Old 09/22/2009, 09:40 AM   #10 (permalink)
Member
 
TheMarco's Avatar
 
Join Date: Jun 2009
Location: Sunnyvale CA
Posts: 699
Likes Received: 6
Thanks: 19
Thanked 160 Times in 72 Posts
Default

Screamager 0.7 is out and contains the Blinkenlight animation engine mentioned in this post. You can play built in animations as well as remotely hosted ones (possibly ones you made yourself!).
__________________
My shiny new TouchPad apps: Scientific RPN Calculator HD - Screamager HD
TheMarco is offline  
Old 03/17/2011, 06:43 PM   #11 (permalink)
Member
 
TheMarco's Avatar
 
Join Date: Jun 2009
Location: Sunnyvale CA
Posts: 699
Likes Received: 6
Thanks: 19
Thanked 160 Times in 72 Posts
Default

Closing this thread. I have replaced BlinkenLights with my own format because pretty much nothing seems to be going on in the world of BlinkenLights.

You can create your own animations for Screamager here:

untitled
__________________
My shiny new TouchPad apps: Scientific RPN Calculator HD - Screamager HD
TheMarco is offline  
Closed Thread

 

Thread Tools
Display Modes



 


Content Relevant URLs by vBSEO 3.6.0