What's libgtkmusic?

libgtkmusic is a GTK+ library that provides widgets for displaying and interacting with musical instruments views, as well as some utility functions. It can be used for any kind of application that needs a musical instrument view, such as virtual guitars, note detector, guitar training and games). Currently it supports a highly customizable guitar and a piano.

Guitar Widget Piano Widget

Installing

Building from source

Currently this is the only installation method. The source code can be accessed either through its Git Repository or through the FTP Archive.

The library uses the Meson build system. The instructions here provided assume the reader has a basic knowledge of GNU/Linux systems.

Installing Dependencies

Please make sure the following packages are installed:

Fedora

Debian or Ubuntu

vala

valac

pkgconf

pkg-config

libgee-devel

libgee-0.8-dev

meson

(outdated package; see below)

git

ninja-build

Please make sure that a recent meson version is installed (>= 0.43). In doubt, install via pip3

# apt-get install python3-pip
$ pip3 install --upgrade meson

To enable all build features, please also install the packages below:

Fedora

Debian or Ubuntu

Feature

gobject-introspection

Allows use with other runtimes, such as Python

gobject-introspection-devel

libgirepository1.0-dev

(same as above)

libgee-devel

libgladeui-dev

Add libgtkmusic widgets to Glade designer

valadoc

Generate Devhelp API reference via valadoc

Building the library

$ git clone http://git.gnome.org/cgit/libgtkmusic
$ cd libgtkmusic
$ mkdir build
$ cd build
$ meson
$ ninja
# ninja install

If needed add the directory of the installed library to LD_EXPORT_PATH:

 $ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib/x86_64-linux-gnu"

Usage

Provided that you've successfully installed the library and its GObject Introspection typelib, try out this minimal Python example:

   1 #!/usr/bin/env python3
   2 import gi
   3 gi.require_version('Gtk', '3.0')
   4 gi.require_version('Gdk', '3.0')
   5 gi.require_version('GtkMusic', '0.4')
   6 
   7 from gi.repository import Gtk, Gdk, GtkMusic
   8 
   9 def note_pressed(sender, widget, event, midi_code):
  10         print('You pressed the note with MIDI code %d!' % midi_code)
  11 
  12 win = Gtk.Window()
  13 piano = GtkMusic.Piano()
  14 
  15 piano.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
  16 piano.connect('note_pressed',  note_pressed)
  17 win.connect('destroy', Gtk.main_quit)
  18 
  19 win.add(piano)
  20 
  21 win.show_all()
  22 Gtk.main()

API Reference

The API reference is currently hosted at http://leandromattioli.com/api/GtkMusic/.

Future

  • Migration to GitLab

  • Add other widgets (notably a drum kit)

Getting in Touch

Projects/libgtkmusic (last edited 2018-04-07 04:39:32 by LeandroMattioli)