|
Packit |
1470ea |
#!/usr/bin/gjs
|
|
Packit |
1470ea |
var Gtk = imports.gi.Gtk;
|
|
Packit |
1470ea |
var Gst = imports.gi.Gst;
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
const Mainloop = imports.mainloop;
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Gtk.init(null, 0);
|
|
Packit |
1470ea |
Gst.init(null, 0);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});
|
|
Packit |
1470ea |
guitarwindow.title = "Guitar Tuner";
|
|
Packit |
1470ea |
guitarwindow.connect("destroy", function(){Gtk.main_quit()});
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
var E = new Gtk.Button({label: "E"});
|
|
Packit |
1470ea |
var A = new Gtk.Button({label: "A"});
|
|
Packit |
1470ea |
var D = new Gtk.Button({label: "D"});
|
|
Packit |
1470ea |
var G = new Gtk.Button({label: "G"});
|
|
Packit |
1470ea |
var B = new Gtk.Button({label: "B"});
|
|
Packit |
1470ea |
var e = new Gtk.Button({label: "e"});
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
var frequencies = {E: 329.63, A: 440, D: 587.33, G: 783.99, B: 987.77, e: 1318.5}
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
function playSound(frequency){
|
|
Packit |
1470ea |
var pipeline = new Gst.Pipeline({name: "note"});
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
var source = Gst.ElementFactory.make("audiotestsrc","source");
|
|
Packit |
1470ea |
var sink = Gst.ElementFactory.make("autoaudiosink","output");
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
source.set_property('freq', frequency);
|
|
Packit |
1470ea |
pipeline.add(source);
|
|
Packit |
1470ea |
pipeline.add(sink);
|
|
Packit |
1470ea |
source.link(sink);
|
|
Packit |
1470ea |
pipeline.set_state(Gst.State.PLAYING);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Mainloop.timeout_add(500, function () {
|
|
Packit |
1470ea |
pipeline.set_state(Gst.State.NULL);
|
|
Packit |
1470ea |
return false;
|
|
Packit |
1470ea |
});
|
|
Packit |
1470ea |
}
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
E.connect("clicked", function() {
|
|
Packit |
1470ea |
playSound(frequencies.E);
|
|
Packit |
1470ea |
});
|
|
Packit |
1470ea |
A.connect("clicked", function(){
|
|
Packit |
1470ea |
playSound(frequencies.A);
|
|
Packit |
1470ea |
});
|
|
Packit |
1470ea |
D.connect("clicked", function(){
|
|
Packit |
1470ea |
playSound(frequencies.D);
|
|
Packit |
1470ea |
});
|
|
Packit |
1470ea |
G.connect("clicked", function(){
|
|
Packit |
1470ea |
playSound(frequencies.G);
|
|
Packit |
1470ea |
});
|
|
Packit |
1470ea |
B.connect("clicked", function(){
|
|
Packit |
1470ea |
playSound(frequencies.B);
|
|
Packit |
1470ea |
});
|
|
Packit |
1470ea |
e.connect("clicked", function(){
|
|
Packit |
1470ea |
playSound(frequencies.e);
|
|
Packit |
1470ea |
});
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
guitar_box.add(E);
|
|
Packit |
1470ea |
guitar_box.add(A);
|
|
Packit |
1470ea |
guitar_box.add(D);
|
|
Packit |
1470ea |
guitar_box.add(G);
|
|
Packit |
1470ea |
guitar_box.add(B);
|
|
Packit |
1470ea |
guitar_box.add(e);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
guitarwindow.add(guitar_box);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
guitar_box.show_all();
|
|
Packit |
1470ea |
guitarwindow.show();
|
|
Packit |
1470ea |
Gtk.main();
|