Wavedrom on-demand


Note: The service was switched off on 2022-08-17 because it was barely used.

There is a really cool JavaScript library for generating electronic timing diagrams created by Aliaksei Chapyzhenka. The problem with this library however is, that it is JavaScript: It makes it easy to embed in a website, but how can you make use of these cool plots on, for example, a forum that does not have the library installed?

Now it is easy: I created a web service that can generate wavedrom plot images on-demand at the URL: (does not work anymore!) http://wavedrom.craftware.info/.

One can paste Wavedrom-JSON on the website and the server will auto-generate a link that can be pasted freely anywhere across the web. For example, pasting the following script on the website:

{
signal: [
{name: 'pulse', wave: 'ppppppppp', node: ".a......."},
{name: 'signal1', wave: '0.2...30.', data: ["data", "prty"]},
{name: 'signal2', wave: '101010101', node: ".b......."}
],
edge: ["a->b sync" ]
}

Will yield the URL:

http://wavedrom.craftware.info/rest/gen_image?type=svg&scale=1.0&c=34ADcAIRdAD2cyVX4n%2ByefOiEYt63aI8IHLdqN3CoFeTFDJ4BXrWnmtctJiKAPWEq%2BirEK0qqFUrebORxuyao5tqlqvcKJoyl1xNLbexubcKlNXOaVMyHZPxC5iAd2tHG2G4L32xXvAZxoqQxN8pwYu%2FXBJse%2Bo96Mr6rpPgVDDdP%2B7QV6b9Xs6w9QAAv9TZB5cZL8QABoAHdAQAA8OfVMrHEZ%2FsC

Which in turn renders this image:

Wavedrom waveform using the waveform on-demand service

It is possible to generate PNGs or SVGs with SVGs being way more crisp, but possibly embedding SVGs is not supported everywhere. For details on the syntax of Wavedrom, visit the wiki-documentation on the original GitHub-repository. There is also a gallery with examples as well as a nice-looking editor available for Wavedrom. Note however, that only the rendering Wavedrom images with the default skin is supported at the moment!

I also published the source-code for the on-demand server on GitHub. The server is written in Python and uses PhantomJS to render the images.


Leave a Reply

Your email address will not be published. Required fields are marked *