Trebella: Kivy Based Piano Learning Game on Kickstarter

156 views
Skip to first unread message

Kovak

unread,
Nov 2, 2017, 10:18:09 PM11/2/17
to Kivy users support
Hi Everyone,

I'm really pleased to announce that the first Kivy/KivEnt game with any type of financial backing is on Kickstarter as of yesterday! Trebella is a game to help you learn how to play the piano and read sheet music. The Trebella Company hired me a bit over a year ago to make SVG rendering a first class citizen in KivEnt and I can confidently say at this point we have the most advanced SVG rendering engine on the market. They are also the reason OSX is now guaranteed support with KivEnt and sooner or later iOS will get the same treatment once we get Trebella out the door on desktop. 

This is a really fascinating piece of software from a technical perspective: it compares midi streams to the MusicXML of a piece of sheet music, and then links those objects in the MusicXML to their visual representation in an SVG to create a fully dynamic version of the sheet music that shows you how you in real-time how you are doing as you play the piano. Much of this would not be possible without Kivy serving as the front-end glue for the python libraries (music21 for reading the MusicXML, mido for reading midi streams) necessary to make this happen. 

The geometry in a piece of sheet music can easily run into hundreds of thousands and millions of vertices, so this is also a pretty good example of what can be accomplished using Kivy and KivEnt together to handle massive amounts of rendering data. We will continue to roll out improvements to KivEnt as a result of this project for a long time yet! 

If you can share this Kickstarter to your network or even donate, it'll go a long way towards enabling me to spend even more time building out KivEnt and making sure we have one of the best 2d game libraries out there for any framework!

Thanks!
Kovak


ZenCODE

unread,
Nov 15, 2017, 12:48:32 AM11/15/17
to Kivy users support
That look amazing. Beautiful :-)

We are also increasingly looking at using SVG's and good support in Kivy would be a huge boon. So a few questions if I may.

1. How easy would it be to use this SVG engine in Kivy without using KivEnt? Or does it have depencies on the GameEngine/GameWorld etc.
2. If we need to use KivEnt to use the SVG, how much of the rest of our app would need to change? It's rather large with many, many screens. Could the KivEnt implementation be encapsulated within a standard Kivy wiget without affecting the rest of the Apps architecture?

Thanks

Kovak

unread,
Nov 15, 2017, 7:20:43 PM11/15/17
to Kivy users support
Hi ZenCode,

1. Kivy has SVG support and KivEnt also has a variation on that support. The big bonus when using KivEnt is it gives you finer and more performant control over the data being submitted to the GPU. If you want to just display an SVG you can do this without KivEnt in kivy just fine.

2. KivEnt is setup so that everything is encapsulated in a standard Kivy widget (this is what the GameWorld widget is) it can be embedded in a kivy widget tree, put in screen managers, and effectively work like any other Kivy widget. You can also add Kivy widgets to the GameSystems and GameWorld widget and have those work as expected as well. KivEnt goes out of its way to try to preserve all the standard behaviors you would expect out of a Kivy widget. 

ZenCODE

unread,
Nov 16, 2017, 9:38:24 AM11/16/17
to kivy-...@googlegroups.com
We have tried the kivy SVG support and I've even merged some great improvements from the holy @tshirtman into master that fixes multiple issues. Unfortunately, we still hit quite a few irregularities on complex svg's (compared to the Cairo and/or Inkscape rendered image). It's a massive standard, so I am not surprised, but I thought  perhaps the KivEnt version might implement more of the spec.

Anyway, thanks for the post. Still good to hear, and perhaps if time allows, I'll look at what you suggest in 2.
Reply all
Reply to author
Forward
0 new messages