first, incomplete pass at step entry dialog, along with various SVG and PNG files for notes and dynamics notation
git-svn-id: svn://localhost/ardour2/branches/3.0@7529 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
@ -1555,7 +1555,7 @@ ARDOUR_UI::toggle_roll (bool with_abort, bool roll_out_of_bounded_mode)
|
|||
_session->cancel_audition ();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (_session->config.get_external_sync()) {
|
||||
switch (_session->config.get_sync_source()) {
|
||||
case JACK:
|
||||
|
|
|
|||
688
gtk2_ardour/gtk_pianokeyboard.c
Normal file
|
|
@ -0,0 +1,688 @@
|
|||
/*-
|
||||
* Copyright (c) 2007, 2008 Edward Tomasz Napierała <trasz@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is piano_keyboard, piano keyboard-like GTK+ widget. It contains
|
||||
* no MIDI-specific code.
|
||||
*
|
||||
* For questions and comments, contact Edward Tomasz Napierala <trasz@FreeBSD.org>.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <stdint.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "gtk_pianokeyboard.h"
|
||||
|
||||
#define PIANO_KEYBOARD_DEFAULT_WIDTH 730
|
||||
#define PIANO_KEYBOARD_DEFAULT_HEIGHT 70
|
||||
|
||||
enum {
|
||||
NOTE_ON_SIGNAL,
|
||||
NOTE_OFF_SIGNAL,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
static guint piano_keyboard_signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static void
|
||||
draw_keyboard_cue(PianoKeyboard *pk)
|
||||
{
|
||||
int w = pk->notes[0].w;
|
||||
int h = pk->notes[0].h;
|
||||
|
||||
GdkGC *gc = GTK_WIDGET(pk)->style->fg_gc[0];
|
||||
|
||||
int first_note_in_lower_row = (pk->octave + 5) * 12;
|
||||
int last_note_in_lower_row = (pk->octave + 6) * 12 - 1;
|
||||
int first_note_in_higher_row = (pk->octave + 6) * 12;
|
||||
int last_note_in_higher_row = (pk->octave + 7) * 12 + 4;
|
||||
|
||||
gdk_draw_line(GTK_WIDGET(pk)->window, gc, pk->notes[first_note_in_lower_row].x + 3,
|
||||
h - 6, pk->notes[last_note_in_lower_row].x + w - 3, h - 6);
|
||||
|
||||
gdk_draw_line(GTK_WIDGET(pk)->window, gc, pk->notes[first_note_in_higher_row].x + 3,
|
||||
h - 9, pk->notes[last_note_in_higher_row].x + w - 3, h - 9);
|
||||
}
|
||||
|
||||
static void
|
||||
draw_note(PianoKeyboard *pk, int note)
|
||||
{
|
||||
GdkColor black = {0, 0, 0, 0};
|
||||
GdkColor white = {0, 65535, 65535, 65535};
|
||||
|
||||
GdkGC *gc = GTK_WIDGET(pk)->style->fg_gc[0];
|
||||
GtkWidget *widget;
|
||||
|
||||
int is_white = pk->notes[note].white;
|
||||
|
||||
int x = pk->notes[note].x;
|
||||
int w = pk->notes[note].w;
|
||||
int h = pk->notes[note].h;
|
||||
|
||||
if (pk->notes[note].pressed || pk->notes[note].sustained)
|
||||
is_white = !is_white;
|
||||
|
||||
if (is_white)
|
||||
gdk_gc_set_rgb_fg_color(gc, &white);
|
||||
else
|
||||
gdk_gc_set_rgb_fg_color(gc, &black);
|
||||
|
||||
gdk_draw_rectangle(GTK_WIDGET(pk)->window, gc, TRUE, x, 0, w, h);
|
||||
gdk_gc_set_rgb_fg_color(gc, &black);
|
||||
gdk_draw_rectangle(GTK_WIDGET(pk)->window, gc, FALSE, x, 0, w, h);
|
||||
|
||||
if (pk->enable_keyboard_cue)
|
||||
draw_keyboard_cue(pk);
|
||||
|
||||
/* We need to redraw black keys that partially obscure the white one. */
|
||||
if (note < NNOTES - 2 && !pk->notes[note + 1].white)
|
||||
draw_note(pk, note + 1);
|
||||
|
||||
if (note > 0 && !pk->notes[note - 1].white)
|
||||
draw_note(pk, note - 1);
|
||||
|
||||
/*
|
||||
* XXX: This doesn't really belong here. Originally I wanted to pack PianoKeyboard into GtkFrame
|
||||
* packed into GtkAlignment. I failed to make it behave the way I want. GtkFrame would need
|
||||
* to adapt to the "proper" size of PianoKeyboard, i.e. to the useful_width, not allocated width;
|
||||
* that didn't work.
|
||||
*/
|
||||
widget = GTK_WIDGET(pk);
|
||||
gtk_paint_shadow(widget->style, widget->window, GTK_STATE_NORMAL, GTK_SHADOW_IN, NULL, widget, NULL, pk->widget_margin, 0,
|
||||
widget->allocation.width - pk->widget_margin * 2 + 1, widget->allocation.height);
|
||||
}
|
||||
|
||||
static int
|
||||
press_key(PianoKeyboard *pk, int key)
|
||||
{
|
||||
assert(key >= 0);
|
||||
assert(key < NNOTES);
|
||||
|
||||
pk->maybe_stop_sustained_notes = 0;
|
||||
|
||||
/* This is for keyboard autorepeat protection. */
|
||||
if (pk->notes[key].pressed)
|
||||
return 0;
|
||||
|
||||
if (pk->sustain_new_notes)
|
||||
pk->notes[key].sustained = 1;
|
||||
else
|
||||
pk->notes[key].sustained = 0;
|
||||
|
||||
pk->notes[key].pressed = 1;
|
||||
|
||||
g_signal_emit_by_name(GTK_WIDGET(pk), "note-on", key);
|
||||
draw_note(pk, key);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
release_key(PianoKeyboard *pk, int key)
|
||||
{
|
||||
assert(key >= 0);
|
||||
assert(key < NNOTES);
|
||||
|
||||
pk->maybe_stop_sustained_notes = 0;
|
||||
|
||||
if (!pk->notes[key].pressed)
|
||||
return 0;
|
||||
|
||||
if (pk->sustain_new_notes)
|
||||
pk->notes[key].sustained = 1;
|
||||
|
||||
pk->notes[key].pressed = 0;
|
||||
|
||||
if (pk->notes[key].sustained)
|
||||
return 0;
|
||||
|
||||
g_signal_emit_by_name(GTK_WIDGET(pk), "note-off", key);
|
||||
draw_note(pk, key);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
stop_unsustained_notes(PianoKeyboard *pk)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NNOTES; i++) {
|
||||
if (pk->notes[i].pressed && !pk->notes[i].sustained) {
|
||||
pk->notes[i].pressed = 0;
|
||||
g_signal_emit_by_name(GTK_WIDGET(pk), "note-off", i);
|
||||
draw_note(pk, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
stop_sustained_notes(PianoKeyboard *pk)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NNOTES; i++) {
|
||||
if (pk->notes[i].sustained) {
|
||||
pk->notes[i].pressed = 0;
|
||||
pk->notes[i].sustained = 0;
|
||||
g_signal_emit_by_name(GTK_WIDGET(pk), "note-off", i);
|
||||
draw_note(pk, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
key_binding(PianoKeyboard *pk, const char *key)
|
||||
{
|
||||
gpointer notused, note;
|
||||
gboolean found;
|
||||
|
||||
assert(pk->key_bindings != NULL);
|
||||
|
||||
found = g_hash_table_lookup_extended(pk->key_bindings, key, ¬used, ¬e);
|
||||
|
||||
if (!found)
|
||||
return -1;
|
||||
|
||||
return (intptr_t)note;
|
||||
}
|
||||
|
||||
static void
|
||||
bind_key(PianoKeyboard *pk, const char *key, int note)
|
||||
{
|
||||
assert(pk->key_bindings != NULL);
|
||||
|
||||
g_hash_table_insert(pk->key_bindings, (gpointer)key, (gpointer)((intptr_t)note));
|
||||
}
|
||||
|
||||
static void
|
||||
clear_notes(PianoKeyboard *pk)
|
||||
{
|
||||
assert(pk->key_bindings != NULL);
|
||||
|
||||
g_hash_table_remove_all(pk->key_bindings);
|
||||
}
|
||||
|
||||
static void
|
||||
bind_keys_qwerty(PianoKeyboard *pk)
|
||||
{
|
||||
clear_notes(pk);
|
||||
|
||||
/* Lower keyboard row - "zxcvbnm". */
|
||||
bind_key(pk, "z", 12); /* C0 */
|
||||
bind_key(pk, "s", 13);
|
||||
bind_key(pk, "x", 14);
|
||||
bind_key(pk, "d", 15);
|
||||
bind_key(pk, "c", 16);
|
||||
bind_key(pk, "v", 17);
|
||||
bind_key(pk, "g", 18);
|
||||
bind_key(pk, "b", 19);
|
||||
bind_key(pk, "h", 20);
|
||||
bind_key(pk, "n", 21);
|
||||
bind_key(pk, "j", 22);
|
||||
bind_key(pk, "m", 23);
|
||||
|
||||
/* Upper keyboard row, first octave - "qwertyu". */
|
||||
bind_key(pk, "q", 24);
|
||||
bind_key(pk, "2", 25);
|
||||
bind_key(pk, "w", 26);
|
||||
bind_key(pk, "3", 27);
|
||||
bind_key(pk, "e", 28);
|
||||
bind_key(pk, "r", 29);
|
||||
bind_key(pk, "5", 30);
|
||||
bind_key(pk, "t", 31);
|
||||
bind_key(pk, "6", 32);
|
||||
bind_key(pk, "y", 33);
|
||||
bind_key(pk, "7", 34);
|
||||
bind_key(pk, "u", 35);
|
||||
|
||||
/* Upper keyboard row, the rest - "iop". */
|
||||
bind_key(pk, "i", 36);
|
||||
bind_key(pk, "9", 37);
|
||||
bind_key(pk, "o", 38);
|
||||
bind_key(pk, "0", 39);
|
||||
bind_key(pk, "p", 40);
|
||||
}
|
||||
|
||||
static void
|
||||
bind_keys_qwertz(PianoKeyboard *pk)
|
||||
{
|
||||
bind_keys_qwerty(pk);
|
||||
|
||||
/* The only difference between QWERTY and QWERTZ is that the "y" and "z" are swapped together. */
|
||||
bind_key(pk, "y", 12);
|
||||
bind_key(pk, "z", 33);
|
||||
}
|
||||
|
||||
static void
|
||||
bind_keys_azerty(PianoKeyboard *pk)
|
||||
{
|
||||
clear_notes(pk);
|
||||
|
||||
/* Lower keyboard row - "wxcvbn,". */
|
||||
bind_key(pk, "w", 12); /* C0 */
|
||||
bind_key(pk, "s", 13);
|
||||
bind_key(pk, "x", 14);
|
||||
bind_key(pk, "d", 15);
|
||||
bind_key(pk, "c", 16);
|
||||
bind_key(pk, "v", 17);
|
||||
bind_key(pk, "g", 18);
|
||||
bind_key(pk, "b", 19);
|
||||
bind_key(pk, "h", 20);
|
||||
bind_key(pk, "n", 21);
|
||||
bind_key(pk, "j", 22);
|
||||
bind_key(pk, "comma", 23);
|
||||
|
||||
/* Upper keyboard row, first octave - "azertyu". */
|
||||
bind_key(pk, "a", 24);
|
||||
bind_key(pk, "eacute", 25);
|
||||
bind_key(pk, "z", 26);
|
||||
bind_key(pk, "quotedbl", 27);
|
||||
bind_key(pk, "e", 28);
|
||||
bind_key(pk, "r", 29);
|
||||
bind_key(pk, "parenleft", 30);
|
||||
bind_key(pk, "t", 31);
|
||||
bind_key(pk, "minus", 32);
|
||||
bind_key(pk, "y", 33);
|
||||
bind_key(pk, "egrave", 34);
|
||||
bind_key(pk, "u", 35);
|
||||
|
||||
/* Upper keyboard row, the rest - "iop". */
|
||||
bind_key(pk, "i", 36);
|
||||
bind_key(pk, "ccedilla", 37);
|
||||
bind_key(pk, "o", 38);
|
||||
bind_key(pk, "agrave", 39);
|
||||
bind_key(pk, "p", 40);
|
||||
}
|
||||
|
||||
static gint
|
||||
keyboard_event_handler(GtkWidget *mk, GdkEventKey *event, gpointer notused)
|
||||
{
|
||||
int note;
|
||||
char *key;
|
||||
guint keyval;
|
||||
GdkKeymapKey kk;
|
||||
PianoKeyboard *pk = PIANO_KEYBOARD(mk);
|
||||
|
||||
/* We're not using event->keyval, because we need keyval with level set to 0.
|
||||
E.g. if user holds Shift and presses '7', we want to get a '7', not '&'. */
|
||||
kk.keycode = event->hardware_keycode;
|
||||
kk.level = 0;
|
||||
kk.group = 0;
|
||||
|
||||
keyval = gdk_keymap_lookup_key(NULL, &kk);
|
||||
|
||||
key = gdk_keyval_name(gdk_keyval_to_lower(keyval));
|
||||
|
||||
if (key == NULL) {
|
||||
g_message("gtk_keyval_name() returned NULL; please report this.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
note = key_binding(pk, key);
|
||||
|
||||
if (note < 0) {
|
||||
/* Key was not bound. Maybe it's one of the keys handled in jack-keyboard.c. */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
note += pk->octave * 12;
|
||||
|
||||
assert(note >= 0);
|
||||
assert(note < NNOTES);
|
||||
|
||||
if (event->type == GDK_KEY_PRESS) {
|
||||
press_key(pk, note);
|
||||
|
||||
} else if (event->type == GDK_KEY_RELEASE) {
|
||||
release_key(pk, note);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
get_note_for_xy(PianoKeyboard *pk, int x, int y)
|
||||
{
|
||||
int height = GTK_WIDGET(pk)->allocation.height;
|
||||
int note;
|
||||
|
||||
if (y <= height / 2) {
|
||||
for (note = 0; note < NNOTES - 1; note++) {
|
||||
if (pk->notes[note].white)
|
||||
continue;
|
||||
|
||||
if (x >= pk->notes[note].x && x <= pk->notes[note].x + pk->notes[note].w)
|
||||
return note;
|
||||
}
|
||||
}
|
||||
|
||||
for (note = 0; note < NNOTES - 1; note++) {
|
||||
if (!pk->notes[note].white)
|
||||
continue;
|
||||
|
||||
if (x >= pk->notes[note].x && x <= pk->notes[note].x + pk->notes[note].w)
|
||||
return note;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
mouse_button_event_handler(PianoKeyboard *pk, GdkEventButton *event, gpointer notused)
|
||||
{
|
||||
int x = event->x;
|
||||
int y = event->y;
|
||||
|
||||
int note = get_note_for_xy(pk, x, y);
|
||||
|
||||
if (event->button != 1)
|
||||
return TRUE;
|
||||
|
||||
if (event->type == GDK_BUTTON_PRESS) {
|
||||
/* This is possible when you make the window a little wider and then click
|
||||
on the grey area. */
|
||||
if (note < 0) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (pk->note_being_pressed_using_mouse >= 0)
|
||||
release_key(pk, pk->note_being_pressed_using_mouse);
|
||||
|
||||
press_key(pk, note);
|
||||
pk->note_being_pressed_using_mouse = note;
|
||||
|
||||
} else if (event->type == GDK_BUTTON_RELEASE) {
|
||||
if (note >= 0) {
|
||||
release_key(pk, note);
|
||||
|
||||
} else {
|
||||
if (pk->note_being_pressed_using_mouse >= 0)
|
||||
release_key(pk, pk->note_being_pressed_using_mouse);
|
||||
}
|
||||
|
||||
pk->note_being_pressed_using_mouse = -1;
|
||||
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
mouse_motion_event_handler(PianoKeyboard *pk, GdkEventMotion *event, gpointer notused)
|
||||
{
|
||||
int note;
|
||||
|
||||
if ((event->state & GDK_BUTTON1_MASK) == 0)
|
||||
return TRUE;
|
||||
|
||||
note = get_note_for_xy(pk, event->x, event->y);
|
||||
|
||||
if (note != pk->note_being_pressed_using_mouse && note >= 0) {
|
||||
|
||||
if (pk->note_being_pressed_using_mouse >= 0)
|
||||
release_key(pk, pk->note_being_pressed_using_mouse);
|
||||
press_key(pk, note);
|
||||
pk->note_being_pressed_using_mouse = note;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
piano_keyboard_expose(GtkWidget *widget, GdkEventExpose *event)
|
||||
{
|
||||
int i;
|
||||
PianoKeyboard *pk = PIANO_KEYBOARD(widget);
|
||||
|
||||
for (i = 0; i < NNOTES; i++)
|
||||
draw_note(pk, i);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
piano_keyboard_size_request(GtkWidget *widget, GtkRequisition *requisition)
|
||||
{
|
||||
requisition->width = PIANO_KEYBOARD_DEFAULT_WIDTH;
|
||||
requisition->height = PIANO_KEYBOARD_DEFAULT_HEIGHT;
|
||||
}
|
||||
|
||||
static void
|
||||
recompute_dimensions(PianoKeyboard *pk)
|
||||
{
|
||||
int number_of_white_keys = (NNOTES - 1) * (7.0 / 12.0);
|
||||
|
||||
int key_width;
|
||||
int black_key_width;
|
||||
int useful_width;
|
||||
|
||||
int note;
|
||||
int white_key = 0;
|
||||
int note_in_octave;
|
||||
|
||||
int width = GTK_WIDGET(pk)->allocation.width;
|
||||
int height = GTK_WIDGET(pk)->allocation.height;
|
||||
|
||||
key_width = width / number_of_white_keys;
|
||||
black_key_width = key_width * 0.8;
|
||||
useful_width = number_of_white_keys * key_width;
|
||||
pk->widget_margin = (width - useful_width) / 2;
|
||||
|
||||
for (note = 0, white_key = 0; note < NNOTES - 2; note++) {
|
||||
note_in_octave = note % 12;
|
||||
|
||||
if (note_in_octave == 1 || note_in_octave == 3 || note_in_octave == 6 ||
|
||||
note_in_octave == 8 || note_in_octave == 10) {
|
||||
|
||||
/* This note is black key. */
|
||||
pk->notes[note].x = pk->widget_margin + white_key * key_width - black_key_width / 2;
|
||||
pk->notes[note].w = black_key_width;
|
||||
pk->notes[note].h = height / 2;
|
||||
pk->notes[note].white = 0;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/* This note is white key. */
|
||||
pk->notes[note].x = pk->widget_margin + white_key * key_width;
|
||||
pk->notes[note].w = key_width;
|
||||
pk->notes[note].h = height;
|
||||
pk->notes[note].white = 1;
|
||||
|
||||
white_key++;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
piano_keyboard_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
|
||||
{
|
||||
/* XXX: Are these two needed? */
|
||||
g_return_if_fail(widget != NULL);
|
||||
g_return_if_fail(allocation != NULL);
|
||||
|
||||
widget->allocation = *allocation;
|
||||
|
||||
recompute_dimensions(PIANO_KEYBOARD(widget));
|
||||
|
||||
if (GTK_WIDGET_REALIZED(widget)) {
|
||||
gdk_window_move_resize (widget->window, allocation->x, allocation->y, allocation->width, allocation->height);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
piano_keyboard_class_init(PianoKeyboardClass *klass)
|
||||
{
|
||||
GtkWidgetClass *widget_klass;
|
||||
|
||||
/* Set up signals. */
|
||||
piano_keyboard_signals[NOTE_ON_SIGNAL] = g_signal_new ("note-on",
|
||||
G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
|
||||
0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
|
||||
|
||||
piano_keyboard_signals[NOTE_OFF_SIGNAL] = g_signal_new ("note-off",
|
||||
G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
|
||||
0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
|
||||
|
||||
widget_klass = (GtkWidgetClass*) klass;
|
||||
|
||||
widget_klass->expose_event = piano_keyboard_expose;
|
||||
widget_klass->size_request = piano_keyboard_size_request;
|
||||
widget_klass->size_allocate = piano_keyboard_size_allocate;
|
||||
}
|
||||
|
||||
static void
|
||||
piano_keyboard_init(GtkWidget *mk)
|
||||
{
|
||||
gtk_widget_add_events(mk, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK);
|
||||
|
||||
g_signal_connect(G_OBJECT(mk), "button-press-event", G_CALLBACK(mouse_button_event_handler), NULL);
|
||||
g_signal_connect(G_OBJECT(mk), "button-release-event", G_CALLBACK(mouse_button_event_handler), NULL);
|
||||
g_signal_connect(G_OBJECT(mk), "motion-notify-event", G_CALLBACK(mouse_motion_event_handler), NULL);
|
||||
g_signal_connect(G_OBJECT(mk), "key-press-event", G_CALLBACK(keyboard_event_handler), NULL);
|
||||
g_signal_connect(G_OBJECT(mk), "key-release-event", G_CALLBACK(keyboard_event_handler), NULL);
|
||||
}
|
||||
|
||||
GType
|
||||
piano_keyboard_get_type(void)
|
||||
{
|
||||
static GType mk_type = 0;
|
||||
|
||||
if (!mk_type) {
|
||||
static const GTypeInfo mk_info = {
|
||||
sizeof(PianoKeyboardClass),
|
||||
NULL, /* base_init */
|
||||
NULL, /* base_finalize */
|
||||
(GClassInitFunc) piano_keyboard_class_init,
|
||||
NULL, /* class_finalize */
|
||||
NULL, /* class_data */
|
||||
sizeof (PianoKeyboard),
|
||||
0, /* n_preallocs */
|
||||
(GInstanceInitFunc) piano_keyboard_init,
|
||||
};
|
||||
|
||||
mk_type = g_type_register_static(GTK_TYPE_DRAWING_AREA, "PianoKeyboard", &mk_info, 0);
|
||||
}
|
||||
|
||||
return mk_type;
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
piano_keyboard_new(void)
|
||||
{
|
||||
GtkWidget *widget = gtk_type_new(piano_keyboard_get_type());
|
||||
|
||||
PianoKeyboard *pk = PIANO_KEYBOARD(widget);
|
||||
|
||||
pk->maybe_stop_sustained_notes = 0;
|
||||
pk->sustain_new_notes = 0;
|
||||
pk->enable_keyboard_cue = 0;
|
||||
pk->octave = 4;
|
||||
pk->note_being_pressed_using_mouse = -1;
|
||||
memset((void *)pk->notes, 0, sizeof(struct Note) * NNOTES);
|
||||
pk->key_bindings = g_hash_table_new(g_str_hash, g_str_equal);
|
||||
bind_keys_qwerty(pk);
|
||||
|
||||
return widget;
|
||||
}
|
||||
|
||||
void
|
||||
piano_keyboard_set_keyboard_cue(PianoKeyboard *pk, int enabled)
|
||||
{
|
||||
pk->enable_keyboard_cue = enabled;
|
||||
}
|
||||
|
||||
void
|
||||
piano_keyboard_sustain_press(PianoKeyboard *pk)
|
||||
{
|
||||
if (!pk->sustain_new_notes) {
|
||||
pk->sustain_new_notes = 1;
|
||||
pk->maybe_stop_sustained_notes = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
piano_keyboard_sustain_release(PianoKeyboard *pk)
|
||||
{
|
||||
if (pk->maybe_stop_sustained_notes)
|
||||
stop_sustained_notes(pk);
|
||||
|
||||
pk->sustain_new_notes = 0;
|
||||
}
|
||||
|
||||
void
|
||||
piano_keyboard_set_note_on(PianoKeyboard *pk, int note)
|
||||
{
|
||||
if (pk->notes[note].pressed == 0) {
|
||||
pk->notes[note].pressed = 1;
|
||||
draw_note(pk, note);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
piano_keyboard_set_note_off(PianoKeyboard *pk, int note)
|
||||
{
|
||||
if (pk->notes[note].pressed || pk->notes[note].sustained) {
|
||||
pk->notes[note].pressed = 0;
|
||||
pk->notes[note].sustained = 0;
|
||||
draw_note(pk, note);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
piano_keyboard_set_octave(PianoKeyboard *pk, int octave)
|
||||
{
|
||||
stop_unsustained_notes(pk);
|
||||
pk->octave = octave;
|
||||
gtk_widget_queue_draw(GTK_WIDGET(pk));
|
||||
}
|
||||
|
||||
gboolean
|
||||
piano_keyboard_set_keyboard_layout(PianoKeyboard *pk, const char *layout)
|
||||
{
|
||||
assert(layout);
|
||||
|
||||
if (!strcasecmp(layout, "QWERTY")) {
|
||||
bind_keys_qwerty(pk);
|
||||
|
||||
} else if (!strcasecmp(layout, "QWERTZ")) {
|
||||
bind_keys_qwertz(pk);
|
||||
|
||||
} else if (!strcasecmp(layout, "AZERTY")) {
|
||||
bind_keys_azerty(pk);
|
||||
|
||||
} else {
|
||||
/* Unknown layout name. */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
66
gtk2_ardour/gtk_pianokeyboard.h
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
#ifndef __PIANO_KEYBOARD_H__
|
||||
#define __PIANO_KEYBOARD_H__
|
||||
|
||||
#include <glib.h>
|
||||
#include <gtk/gtkdrawingarea.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define TYPE_PIANO_KEYBOARD (piano_keyboard_get_type ())
|
||||
#define PIANO_KEYBOARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PIANO_KEYBOARD, PianoKeyboard))
|
||||
#define PIANO_KEYBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PIANO_KEYBOARD, PianoKeyboardClass))
|
||||
#define IS_PIANO_KEYBOARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PIANO_KEYBOARD))
|
||||
#define IS_PIANO_KEYBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PIANO_KEYBOARD))
|
||||
#define PIANO_KEYBOARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PIANO_KEYBOARD, PianoKeyboardClass))
|
||||
|
||||
typedef struct _PianoKeyboard PianoKeyboard;
|
||||
typedef struct _PianoKeyboardClass PianoKeyboardClass;
|
||||
|
||||
#define NNOTES 127
|
||||
|
||||
#define OCTAVE_MIN -1
|
||||
#define OCTAVE_MAX 7
|
||||
|
||||
struct Note {
|
||||
int pressed; /* 1 if key is in pressed down state. */
|
||||
int sustained; /* 1 if note is sustained. */
|
||||
int x; /* Distance between the left edge of the key
|
||||
* and the left edge of the widget, in pixels. */
|
||||
int w; /* Width of the key, in pixels. */
|
||||
int h; /* Height of the key, in pixels. */
|
||||
int white; /* 1 if key is white; 0 otherwise. */
|
||||
};
|
||||
|
||||
struct _PianoKeyboard
|
||||
{
|
||||
GtkDrawingArea da;
|
||||
int maybe_stop_sustained_notes;
|
||||
int sustain_new_notes;
|
||||
int enable_keyboard_cue;
|
||||
int octave;
|
||||
int widget_margin;
|
||||
int note_being_pressed_using_mouse;
|
||||
volatile struct Note notes[NNOTES];
|
||||
/* Table used to translate from PC keyboard character to MIDI note number. */
|
||||
GHashTable *key_bindings;
|
||||
};
|
||||
|
||||
struct _PianoKeyboardClass
|
||||
{
|
||||
GtkDrawingAreaClass parent_class;
|
||||
};
|
||||
|
||||
GType piano_keyboard_get_type (void) G_GNUC_CONST;
|
||||
GtkWidget* piano_keyboard_new (void);
|
||||
void piano_keyboard_sustain_press (PianoKeyboard *pk);
|
||||
void piano_keyboard_sustain_release (PianoKeyboard *pk);
|
||||
void piano_keyboard_set_note_on (PianoKeyboard *pk, int note);
|
||||
void piano_keyboard_set_note_off (PianoKeyboard *pk, int note);
|
||||
void piano_keyboard_set_keyboard_cue (PianoKeyboard *pk, int enabled);
|
||||
void piano_keyboard_set_octave (PianoKeyboard *pk, int octave);
|
||||
gboolean piano_keyboard_set_keyboard_layout (PianoKeyboard *pk, const char *layout);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __PIANO_KEYBOARD_H__ */
|
||||
|
||||
BIN
gtk2_ardour/icons/chord.png
Normal file
|
After Width: | Height: | Size: 769 B |
BIN
gtk2_ardour/icons/eighthnote.png
Normal file
|
After Width: | Height: | Size: 597 B |
BIN
gtk2_ardour/icons/forte.png
Normal file
|
After Width: | Height: | Size: 517 B |
BIN
gtk2_ardour/icons/fortissimo.png
Normal file
|
After Width: | Height: | Size: 775 B |
BIN
gtk2_ardour/icons/fortississimo.png
Normal file
|
After Width: | Height: | Size: 963 B |
BIN
gtk2_ardour/icons/halfnote.png
Normal file
|
After Width: | Height: | Size: 430 B |
BIN
gtk2_ardour/icons/mezzforte.png
Normal file
|
After Width: | Height: | Size: 802 B |
BIN
gtk2_ardour/icons/mezzoforte.png
Normal file
|
After Width: | Height: | Size: 802 B |
BIN
gtk2_ardour/icons/mezzopiano.png
Normal file
|
After Width: | Height: | Size: 784 B |
BIN
gtk2_ardour/icons/pianissimo.png
Normal file
|
After Width: | Height: | Size: 696 B |
BIN
gtk2_ardour/icons/pianississimo.png
Normal file
|
After Width: | Height: | Size: 746 B |
BIN
gtk2_ardour/icons/piano.png
Normal file
|
After Width: | Height: | Size: 481 B |
BIN
gtk2_ardour/icons/quarternote.png
Normal file
|
After Width: | Height: | Size: 335 B |
BIN
gtk2_ardour/icons/sixteenthnote.png
Normal file
|
After Width: | Height: | Size: 724 B |
BIN
gtk2_ardour/icons/sixtyfourthnote.png
Normal file
|
After Width: | Height: | Size: 1,004 B |
BIN
gtk2_ardour/icons/thirtysecondnote.png
Normal file
|
After Width: | Height: | Size: 858 B |
BIN
gtk2_ardour/icons/wholenote.png
Normal file
|
After Width: | Height: | Size: 414 B |
|
|
@ -81,6 +81,7 @@
|
|||
#include "rgb_macros.h"
|
||||
#include "selection.h"
|
||||
#include "simplerect.h"
|
||||
#include "step_entry.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include "ardour/midi_track.h"
|
||||
|
|
@ -918,6 +919,11 @@ MidiTimeAxisView::start_step_editing ()
|
|||
}
|
||||
|
||||
midi_track()->set_step_editing (true);
|
||||
|
||||
StepEntry* se = new StepEntry (*this);
|
||||
|
||||
se->set_position (WIN_POS_MOUSE);
|
||||
se->present ();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -951,39 +957,46 @@ MidiTimeAxisView::check_step_edit ()
|
|||
incoming.read_contents (size, buf);
|
||||
|
||||
if ((buf[0] & 0xf0) == MIDI_CMD_NOTE_ON) {
|
||||
|
||||
if (step_edit_region == 0) {
|
||||
|
||||
step_edit_region = add_region (step_edit_insert_position);
|
||||
RegionView* rv = view()->find_view (step_edit_region);
|
||||
step_edit_region_view = dynamic_cast<MidiRegionView*>(rv);
|
||||
}
|
||||
|
||||
if (step_edit_region && step_edit_region_view) {
|
||||
|
||||
if (step_edit_beat_pos < 0.0) {
|
||||
framecnt_t frames_from_start = _editor.get_preferred_edit_position() - step_edit_region->position();
|
||||
if (frames_from_start < 0) {
|
||||
continue;
|
||||
}
|
||||
step_edit_beat_pos = step_edit_region_view->frames_to_beats (frames_from_start);
|
||||
}
|
||||
|
||||
bool success;
|
||||
Evoral::MusicalTime beats = _editor.get_grid_type_as_beats (success, step_edit_insert_position);
|
||||
|
||||
if (!success) {
|
||||
continue;
|
||||
}
|
||||
|
||||
step_edit_region_view->step_add_note (buf[0] & 0xf, buf[1], buf[2], step_edit_beat_pos, beats);
|
||||
step_edit_beat_pos += beats;
|
||||
}
|
||||
step_add_note (buf[0] & 0xf, buf[1], buf[2], 0.0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
MidiTimeAxisView::step_add_note (uint8_t channel, uint8_t pitch, uint8_t velocity, Evoral::MusicalTime beat_duration)
|
||||
{
|
||||
if (step_edit_region == 0) {
|
||||
|
||||
step_edit_region = add_region (step_edit_insert_position);
|
||||
RegionView* rv = view()->find_view (step_edit_region);
|
||||
step_edit_region_view = dynamic_cast<MidiRegionView*>(rv);
|
||||
}
|
||||
|
||||
if (step_edit_region && step_edit_region_view) {
|
||||
if (step_edit_beat_pos < 0.0) {
|
||||
framecnt_t frames_from_start = _editor.get_preferred_edit_position() - step_edit_region->position();
|
||||
if (frames_from_start < 0) {
|
||||
return 1;
|
||||
}
|
||||
step_edit_beat_pos = step_edit_region_view->frames_to_beats (frames_from_start);
|
||||
}
|
||||
|
||||
if (beat_duration == 0.0) {
|
||||
bool success;
|
||||
beat_duration = _editor.get_grid_type_as_beats (success, step_edit_insert_position);
|
||||
|
||||
if (!success) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
step_edit_region_view->step_add_note (channel, pitch, velocity, step_edit_beat_pos, beat_duration);
|
||||
step_edit_beat_pos += beat_duration;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
MidiTimeAxisView::step_edit_rest ()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -91,6 +91,8 @@ class MidiTimeAxisView : public RouteTimeAxisView
|
|||
void stop_step_editing ();
|
||||
void check_step_edit ();
|
||||
void step_edit_rest ();
|
||||
int step_add_note (uint8_t channel, uint8_t pitch, uint8_t velocity,
|
||||
Evoral::MusicalTime beat_duration);
|
||||
|
||||
const MidiMultipleChannelSelector& channel_selector() { return _channel_selector; }
|
||||
|
||||
|
|
|
|||
243
gtk2_ardour/step_entry.cc
Normal file
|
|
@ -0,0 +1,243 @@
|
|||
/*
|
||||
Copyright (C) 2010 Paul Davis
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
#include "midi_time_axis.h"
|
||||
#include "step_entry.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
using namespace Gtk;
|
||||
|
||||
static void
|
||||
_note_off_event_handler (GtkWidget* widget, int note, gpointer arg)
|
||||
{
|
||||
((StepEntry*)arg)->note_off_event_handler (note);
|
||||
}
|
||||
|
||||
|
||||
StepEntry::StepEntry (MidiTimeAxisView& mtv)
|
||||
: ArdourDialog (_("Step Entry Editor"))
|
||||
, triplet_button ("3")
|
||||
, sustain_button ("sustain")
|
||||
, rest_button ("rest")
|
||||
, channel_adjustment (0, 15, 0, 1, 4)
|
||||
, channel_spinner (channel_adjustment)
|
||||
, _piano (0)
|
||||
, piano (0)
|
||||
, _mtv (&mtv)
|
||||
{
|
||||
RadioButtonGroup length_group = length_1_button.get_group();
|
||||
length_2_button.set_group (length_group);
|
||||
length_4_button.set_group (length_group);
|
||||
length_8_button.set_group (length_group);
|
||||
length_12_button.set_group (length_group);
|
||||
length_16_button.set_group (length_group);
|
||||
length_32_button.set_group (length_group);
|
||||
length_64_button.set_group (length_group);
|
||||
|
||||
Widget* w;
|
||||
|
||||
w = manage (new Image (::get_icon (X_("wholenote"))));
|
||||
w->show();
|
||||
length_1_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("halfnote"))));
|
||||
w->show();
|
||||
length_2_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("quarternote"))));
|
||||
w->show();
|
||||
length_4_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("eighthnote"))));
|
||||
w->show();
|
||||
length_8_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("sixteenthnote"))));
|
||||
w->show();
|
||||
length_16_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("thirtysecondnote"))));
|
||||
w->show();
|
||||
length_32_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("sixtyfourthnote"))));
|
||||
w->show();
|
||||
length_64_button.add (*w);
|
||||
|
||||
length_1_button.property_draw_indicator() = false;
|
||||
length_2_button.property_draw_indicator() = false;
|
||||
length_4_button.property_draw_indicator() = false;
|
||||
length_8_button.property_draw_indicator() = false;
|
||||
length_16_button.property_draw_indicator() = false;
|
||||
length_32_button.property_draw_indicator() = false;
|
||||
length_64_button.property_draw_indicator() = false;
|
||||
|
||||
note_length_box.pack_start (length_1_button, false, false);
|
||||
note_length_box.pack_start (length_2_button, false, false);
|
||||
note_length_box.pack_start (length_4_button, false, false);
|
||||
note_length_box.pack_start (length_8_button, false, false);
|
||||
note_length_box.pack_start (length_16_button, false, false);
|
||||
note_length_box.pack_start (length_32_button, false, false);
|
||||
note_length_box.pack_start (length_64_button, false, false);
|
||||
|
||||
RadioButtonGroup velocity_group = velocity_ppp_button.get_group();
|
||||
velocity_pp_button.set_group (velocity_group);
|
||||
velocity_p_button.set_group (velocity_group);
|
||||
velocity_mp_button.set_group (velocity_group);
|
||||
velocity_mf_button.set_group (velocity_group);
|
||||
velocity_f_button.set_group (velocity_group);
|
||||
velocity_ff_button.set_group (velocity_group);
|
||||
velocity_fff_button.set_group (velocity_group);
|
||||
|
||||
w = manage (new Image (::get_icon (X_("pianississimo"))));
|
||||
w->show();
|
||||
velocity_ppp_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("pianissimo"))));
|
||||
w->show();
|
||||
velocity_pp_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("piano"))));
|
||||
w->show();
|
||||
velocity_p_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("mezzopiano"))));
|
||||
w->show();
|
||||
velocity_mp_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("mezzoforte"))));
|
||||
w->show();
|
||||
velocity_mf_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("forte"))));
|
||||
w->show();
|
||||
velocity_f_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("fortissimo"))));
|
||||
w->show();
|
||||
velocity_ff_button.add (*w);
|
||||
w = manage (new Image (::get_icon (X_("fortississimo"))));
|
||||
w->show();
|
||||
velocity_fff_button.add (*w);
|
||||
|
||||
velocity_ppp_button.property_draw_indicator() = false;
|
||||
velocity_pp_button.property_draw_indicator() = false;
|
||||
velocity_p_button.property_draw_indicator() = false;
|
||||
velocity_mp_button.property_draw_indicator() = false;
|
||||
velocity_mf_button.property_draw_indicator() = false;
|
||||
velocity_f_button.property_draw_indicator() = false;
|
||||
velocity_ff_button.property_draw_indicator() = false;
|
||||
velocity_fff_button.property_draw_indicator() = false;
|
||||
|
||||
note_velocity_box.pack_start (velocity_ppp_button, false, false);
|
||||
note_velocity_box.pack_start (velocity_pp_button, false, false);
|
||||
note_velocity_box.pack_start (velocity_p_button, false, false);
|
||||
note_velocity_box.pack_start (velocity_mp_button, false, false);
|
||||
note_velocity_box.pack_start (velocity_mf_button, false, false);
|
||||
note_velocity_box.pack_start (velocity_f_button, false, false);
|
||||
note_velocity_box.pack_start (velocity_ff_button, false, false);
|
||||
note_velocity_box.pack_start (velocity_fff_button, false, false);
|
||||
|
||||
Label* l = manage (new Label);
|
||||
l->set_markup ("<b><big>.</big></b>");
|
||||
l->show ();
|
||||
dot_button.add (*l);
|
||||
|
||||
w = manage (new Image (::get_icon (X_("chord"))));
|
||||
w->show();
|
||||
chord_button.add (*w);
|
||||
|
||||
upper_box.set_spacing (6);
|
||||
upper_box.pack_start (chord_button, false, false);
|
||||
upper_box.pack_start (note_length_box, false, false, 12);
|
||||
upper_box.pack_start (triplet_button, false, false);
|
||||
upper_box.pack_start (dot_button, false, false);
|
||||
upper_box.pack_start (sustain_button, false, false);
|
||||
upper_box.pack_start (rest_button, false, false);
|
||||
upper_box.pack_start (note_velocity_box, false, false, 12);
|
||||
upper_box.pack_start (channel_spinner, false, false);
|
||||
|
||||
_piano = (PianoKeyboard*) piano_keyboard_new ();
|
||||
piano = Glib::wrap ((GtkWidget*) _piano);
|
||||
|
||||
g_signal_connect(G_OBJECT(_piano), "note-off", G_CALLBACK(_note_off_event_handler), this);
|
||||
|
||||
rest_button.signal_clicked().connect (sigc::mem_fun (*this, &StepEntry::rest_click));
|
||||
|
||||
packer.set_spacing (6);
|
||||
packer.pack_start (upper_box, false, false);
|
||||
packer.pack_start (*piano, false, false);
|
||||
packer.show_all ();
|
||||
|
||||
get_vbox()->add (packer);
|
||||
}
|
||||
|
||||
StepEntry::~StepEntry()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
StepEntry::note_off_event_handler (int note)
|
||||
{
|
||||
Evoral::MusicalTime length = 1.0;
|
||||
uint8_t velocity = 64;
|
||||
|
||||
if (length_64_button.get_active()) {
|
||||
length = 1.0/64.0;
|
||||
} else if (length_32_button.get_active()) {
|
||||
length = 1.0/32.0;
|
||||
} else if (length_16_button.get_active()) {
|
||||
length = 1.0/16.0;
|
||||
} else if (length_8_button.get_active()) {
|
||||
length = 1.0/8.0;
|
||||
} else if (length_4_button.get_active()) {
|
||||
length = 1.0/4.0;
|
||||
} else if (length_2_button.get_active()) {
|
||||
length = 1.0/2.0;
|
||||
} else if (length_1_button.get_active()) {
|
||||
length = 1.0/1.0;
|
||||
}
|
||||
|
||||
if (dot_button.get_active()) {
|
||||
length *= 0.5;
|
||||
}
|
||||
|
||||
if (velocity_ppp_button.get_active()) {
|
||||
velocity = 16;
|
||||
} else if (velocity_pp_button.get_active()) {
|
||||
velocity = 32;
|
||||
} else if (velocity_p_button.get_active()) {
|
||||
velocity = 48;
|
||||
} else if (velocity_mp_button.get_active()) {
|
||||
velocity = 64;
|
||||
} else if (velocity_mf_button.get_active()) {
|
||||
velocity = 80;
|
||||
} else if (velocity_f_button.get_active()) {
|
||||
velocity = 96;
|
||||
} else if (velocity_ff_button.get_active()) {
|
||||
velocity = 112;
|
||||
} else if (velocity_fff_button.get_active()) {
|
||||
velocity = 127;
|
||||
}
|
||||
|
||||
if (!triplet_button.get_active()) {
|
||||
_mtv->step_add_note (channel_adjustment.get_value(), note, velocity, length);
|
||||
} else {
|
||||
length *= 2.0/3.0;
|
||||
_mtv->step_add_note (channel_adjustment.get_value(), note, velocity, length);
|
||||
_mtv->step_add_note (channel_adjustment.get_value(), note, velocity, length);
|
||||
_mtv->step_add_note (channel_adjustment.get_value(), note, velocity, length);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
StepEntry::rest_click ()
|
||||
{
|
||||
_mtv->step_edit_rest ();
|
||||
}
|
||||
84
gtk2_ardour/step_entry.h
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
Copyright (C) 2010 Paul Davis
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __gtk2_ardour_step_entry_h__
|
||||
#define __gtk2_ardour_step_entry_h__
|
||||
|
||||
#include <gtkmm/togglebutton.h>
|
||||
#include <gtkmm/radiobutton.h>
|
||||
#include <gtkmm/spinbutton.h>
|
||||
#include <gtkmm/box.h>
|
||||
#include <gtkmm/adjustment.h>
|
||||
|
||||
#include "ardour_dialog.h"
|
||||
#include "gtk_pianokeyboard.h"
|
||||
|
||||
class MidiTimeAxisView;
|
||||
|
||||
class StepEntry : public ArdourDialog
|
||||
{
|
||||
public:
|
||||
StepEntry (MidiTimeAxisView&);
|
||||
~StepEntry ();
|
||||
|
||||
void note_off_event_handler (int note);
|
||||
|
||||
private:
|
||||
Gtk::VBox packer;
|
||||
Gtk::HBox upper_box;
|
||||
Gtk::HBox note_length_box;
|
||||
Gtk::HBox note_velocity_box;
|
||||
|
||||
Gtk::ToggleButton chord_button;
|
||||
Gtk::ToggleButton triplet_button;
|
||||
Gtk::ToggleButton dot_button;
|
||||
|
||||
Gtk::Button sustain_button;
|
||||
Gtk::Button rest_button;
|
||||
|
||||
Gtk::RadioButton length_1_button;
|
||||
Gtk::RadioButton length_2_button;
|
||||
Gtk::RadioButton length_4_button;
|
||||
Gtk::RadioButton length_8_button;
|
||||
Gtk::RadioButton length_12_button;
|
||||
Gtk::RadioButton length_16_button;
|
||||
Gtk::RadioButton length_32_button;
|
||||
Gtk::RadioButton length_64_button;
|
||||
|
||||
Gtk::RadioButton velocity_ppp_button;
|
||||
Gtk::RadioButton velocity_pp_button;
|
||||
Gtk::RadioButton velocity_p_button;
|
||||
Gtk::RadioButton velocity_mp_button;
|
||||
Gtk::RadioButton velocity_mf_button;
|
||||
Gtk::RadioButton velocity_f_button;
|
||||
Gtk::RadioButton velocity_ff_button;
|
||||
Gtk::RadioButton velocity_fff_button;
|
||||
|
||||
Gtk::Adjustment channel_adjustment;
|
||||
Gtk::SpinButton channel_spinner;
|
||||
|
||||
PianoKeyboard* _piano;
|
||||
Gtk::Widget* piano;
|
||||
MidiTimeAxisView* _mtv;
|
||||
|
||||
void rest_click ();
|
||||
void sustain_click ();
|
||||
};
|
||||
|
||||
#endif /* __gtk2_ardour_step_entry_h__ */
|
||||
|
|
@ -116,6 +116,7 @@ gtk2_ardour_sources = [
|
|||
'group_tabs.cc',
|
||||
'gtk-custom-hruler.c',
|
||||
'gtk-custom-ruler.c',
|
||||
'gtk_pianokeyboard.c',
|
||||
'interthread_progress_window.cc',
|
||||
'io_selector.cc',
|
||||
'keyboard.cc',
|
||||
|
|
@ -187,6 +188,7 @@ gtk2_ardour_sources = [
|
|||
'simplerect.cc',
|
||||
'splash.cc',
|
||||
'startup.cc',
|
||||
'step_entry.cc',
|
||||
'streamview.cc',
|
||||
'strip_silence_dialog.cc',
|
||||
'tape_region_view.cc',
|
||||
|
|
|
|||
20
icons/Music_dynamic_forte.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.0"
|
||||
width="93.925705"
|
||||
height="112.74568"
|
||||
id="svg2">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<g
|
||||
transform="translate(-328.00046,-476.66)"
|
||||
id="layer1">
|
||||
<path
|
||||
d="M 389.33969,518.30794 L 399.62098,518.30794 C 401.0513,518.27167 402.24206,517.77794 403.19329,516.82674 C 404.14439,515.87561 404.63813,514.68484 404.67449,513.25443 C 404.63813,511.82409 404.14439,510.63332 403.19329,509.68211 C 402.24206,508.73099 401.0513,508.23726 399.62098,508.20091 L 392.30209,508.20091 C 393.48192,502.95504 395.08656,498.11209 397.116,493.67205 C 399.14534,489.23214 402.36187,486.87238 406.7656,486.59277 L 407.98542,486.59277 C 408.98371,486.56744 409.86227,486.66183 410.62108,486.87595 C 411.37977,487.09021 411.77911,487.57668 411.81912,488.33537 C 411.54314,490.77143 410.4395,492.39059 408.50819,493.19284 C 406.57676,493.99522 405.47312,495.57081 405.19727,497.91962 C 405.2553,500.06887 406.01042,501.86955 407.46264,503.32165 C 408.91473,504.77387 410.71541,505.52899 412.86467,505.58702 C 415.91051,505.44186 418.18313,504.03326 419.68256,501.36124 C 421.18184,498.68932 421.9297,495.62527 421.92615,492.16907 C 421.81716,487.78724 420.33596,484.13507 417.48254,481.21252 C 414.62897,478.29013 411.05666,476.77262 406.7656,476.66 C 398.67338,476.96141 391.33272,480.19246 384.7436,486.35317 C 378.15439,492.51403 373.29692,499.7966 370.17118,508.20091 L 360.93544,508.20091 C 359.50505,508.23726 358.31428,508.73099 357.36313,509.68211 C 356.41195,510.63332 355.91822,511.82409 355.88193,513.25443 C 355.91822,514.68484 356.41195,515.87561 357.36313,516.82674 C 358.31428,517.77794 359.50505,518.27167 360.93544,518.30794 L 367.38303,518.30794 L 355.88193,564.1381 C 354.97069,568.06255 353.52579,571.58403 351.54723,574.70256 C 349.56866,577.82105 346.77326,579.46925 343.16101,579.64716 L 342.11545,579.64716 C 341.0336,579.67619 340.10422,579.57453 339.32731,579.34221 C 338.55041,579.10984 338.1438,578.57254 338.10749,577.73031 C 338.38341,575.38143 339.48705,573.80583 341.41842,573.00353 C 343.34979,572.2012 344.45343,570.58204 344.72934,568.14606 C 344.68215,566.00411 343.94881,564.23248 342.52932,562.83115 C 341.10984,561.42981 339.28738,560.70373 337.06194,560.65292 C 334.09228,560.78724 331.84144,562.17405 330.30939,564.81335 C 328.77738,567.45264 328.00774,570.53848 328.00046,574.07087 C 328.10939,578.44548 329.59059,582.06861 332.44407,584.94028 C 335.29757,587.8119 338.86988,589.30036 343.16101,589.40568 C 348.90941,589.17653 354.3351,586.61428 359.4381,581.71891 C 364.54108,576.8235 368.98576,570.96969 372.77215,564.15746 C 376.5585,557.34522 379.35094,550.94927 381.14951,544.96959 L 389.33969,518.30794 z"
|
||||
id="text2502"
|
||||
style="font-size:174.26139832px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Emmentaler;-inkscape-font-specification:Emmentaler" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
20
icons/Music_dynamic_fortissimo.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.0"
|
||||
width="150.08417"
|
||||
height="112.74568"
|
||||
id="svg2">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<g
|
||||
transform="translate(-299.92123,-476.66)"
|
||||
id="layer1">
|
||||
<path
|
||||
d="M 361.26046,518.30794 L 371.54175,518.30794 C 372.97207,518.27167 374.16283,517.77794 375.11406,516.82674 C 376.06516,515.87561 376.5589,514.68484 376.59526,513.25443 C 376.5589,511.82409 376.06516,510.63332 375.11406,509.68211 C 374.16283,508.73099 372.97207,508.23726 371.54175,508.20091 L 364.22286,508.20091 C 365.40269,502.95504 367.00733,498.11209 369.03677,493.67205 C 371.06611,489.23214 374.28264,486.87238 378.68637,486.59277 L 379.90619,486.59277 C 380.90448,486.56744 381.78304,486.66183 382.54185,486.87595 C 383.30054,487.09021 383.69988,487.57668 383.73989,488.33537 C 383.46391,490.77143 382.36027,492.39059 380.42896,493.19284 C 378.49753,493.99522 377.39389,495.57081 377.11804,497.91962 C 377.17607,500.06887 377.93119,501.86955 379.38341,503.32165 C 380.8355,504.77387 382.63618,505.52899 384.78544,505.58702 C 387.83128,505.44186 390.1039,504.03326 391.60333,501.36124 C 393.10261,498.68932 393.85047,495.62527 393.84692,492.16907 C 393.73793,487.78724 392.25673,484.13507 389.40331,481.21252 C 386.54974,478.29013 382.97744,476.77262 378.68637,476.66 C 370.59416,476.96141 363.25349,480.19246 356.66437,486.35317 C 350.07516,492.51403 345.21769,499.7966 342.09195,508.20091 L 332.85621,508.20091 C 331.42582,508.23726 330.23505,508.73099 329.2839,509.68211 C 328.33272,510.63332 327.83899,511.82409 327.8027,513.25443 C 327.83899,514.68484 328.33272,515.87561 329.2839,516.82674 C 330.23505,517.77794 331.42582,518.27167 332.85621,518.30794 L 339.3038,518.30794 L 327.8027,564.1381 C 326.89146,568.06255 325.44656,571.58403 323.468,574.70256 C 321.48943,577.82105 318.69403,579.46925 315.08178,579.64716 L 314.03623,579.64716 C 312.95437,579.67619 312.02499,579.57453 311.24808,579.34221 C 310.47118,579.10984 310.06457,578.57254 310.02826,577.73031 C 310.30418,575.38143 311.40782,573.80583 313.33919,573.00353 C 315.27056,572.2012 316.3742,570.58204 316.65011,568.14606 C 316.60292,566.00411 315.86958,564.23248 314.45009,562.83115 C 313.03061,561.42981 311.20815,560.70373 308.98271,560.65292 C 306.01306,560.78724 303.76221,562.17405 302.23016,564.81335 C 300.69815,567.45264 299.92851,570.53848 299.92123,574.07087 C 300.03016,578.44548 301.51136,582.06861 304.36484,584.94028 C 307.21834,587.8119 310.79065,589.30036 315.08178,589.40568 C 320.83018,589.17653 326.25587,586.61428 331.35888,581.71891 C 336.46185,576.8235 340.90653,570.96969 344.69293,564.15746 C 348.47927,557.34522 351.27171,550.94927 353.07028,544.96959 L 361.26046,518.30794 z M 417.41891,518.30794 L 427.70021,518.30794 C 429.13052,518.27167 430.32129,517.77794 431.27252,516.82674 C 432.22362,515.87561 432.71736,514.68484 432.75372,513.25443 C 432.71736,511.82409 432.22362,510.63332 431.27252,509.68211 C 430.32129,508.73099 429.13052,508.23726 427.70021,508.20091 L 420.38132,508.20091 C 421.56115,502.95504 423.16579,498.11209 425.19523,493.67205 C 427.22457,489.23214 430.4411,486.87238 434.84483,486.59277 L 436.06464,486.59277 C 437.06294,486.56744 437.9415,486.66183 438.70031,486.87595 C 439.459,487.09021 439.85834,487.57668 439.89835,488.33537 C 439.62237,490.77143 438.51873,492.39059 436.58742,493.19284 C 434.65599,493.99522 433.55235,495.57081 433.2765,497.91962 C 433.33452,500.06887 434.08965,501.86955 435.54187,503.32165 C 436.99396,504.77387 438.79464,505.52899 440.9439,505.58702 C 443.98974,505.44186 446.26236,504.03326 447.76179,501.36124 C 449.26107,498.68932 450.00893,495.62527 450.00538,492.16907 C 449.89639,487.78724 448.41519,484.13507 445.56177,481.21252 C 442.7082,478.29013 439.13589,476.77262 434.84483,476.66 C 426.75261,476.96141 419.41195,480.19246 412.82283,486.35317 C 406.23362,492.51403 401.37615,499.7966 398.25041,508.20091 L 389.01467,508.20091 C 387.58428,508.23726 386.39351,508.73099 385.44236,509.68211 C 384.49118,510.63332 383.99745,511.82409 383.96116,513.25443 C 383.99745,514.68484 384.49118,515.87561 385.44236,516.82674 C 386.39351,517.77794 387.58428,518.27167 389.01467,518.30794 L 395.46226,518.30794 L 383.96116,564.1381 C 383.04992,568.06255 381.60502,571.58403 379.62646,574.70256 C 377.64789,577.82105 374.85249,579.46925 371.24024,579.64716 L 370.19468,579.64716 C 369.11283,579.67619 368.18345,579.57453 367.40654,579.34221 C 366.62964,579.10984 366.22303,578.57254 366.18672,577.73031 C 366.46264,575.38143 367.56628,573.80583 369.49765,573.00353 C 371.42902,572.2012 372.53266,570.58204 372.80857,568.14606 C 372.76138,566.00411 372.02804,564.23248 370.60855,562.83115 C 369.18906,561.42981 367.36661,560.70373 365.14117,560.65292 C 362.17151,560.78724 359.92067,562.17405 358.38862,564.81335 C 356.85661,567.45264 356.08697,570.53848 356.07969,574.07087 C 356.18862,578.44548 357.66982,582.06861 360.5233,584.94028 C 363.3768,587.8119 366.94911,589.30036 371.24024,589.40568 C 376.98864,589.17653 382.41433,586.61428 387.51733,581.71891 C 392.62031,576.8235 397.06499,570.96969 400.85138,564.15746 C 404.63773,557.34522 407.43017,550.94927 409.22873,544.96959 L 417.41891,518.30794 z"
|
||||
id="text2502"
|
||||
style="font-size:174.26139832px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Emmentaler;-inkscape-font-specification:Emmentaler" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.6 KiB |
20
icons/Music_dynamic_fortississimo.svg
Normal file
|
After Width: | Height: | Size: 8 KiB |
20
icons/Music_dynamic_mezzo_forte.svg
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
20
icons/Music_dynamic_pianissimo.svg
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
20
icons/Music_dynamic_pianississimo.svg
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
20
icons/Music_dynamic_piano.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.0"
|
||||
width="84.864212"
|
||||
height="76.325508"
|
||||
id="svg2">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<g
|
||||
transform="translate(-319.37731,-505.93554)"
|
||||
id="layer1">
|
||||
<path
|
||||
d="M 369.91246,552.11422 C 367.93387,552.07792 366.53254,551.45349 365.70846,550.24093 C 364.88434,549.02838 364.485,547.44553 364.51043,545.49237 C 364.53408,542.47619 365.29996,538.55644 366.80807,533.7331 C 368.31614,528.90981 370.42446,524.55118 373.13303,520.65721 C 375.84154,516.76331 379.00833,514.70232 382.63338,514.47424 C 384.18715,514.51785 385.30531,515.08419 385.98787,516.17327 C 386.67034,517.26243 387.00434,518.61293 386.98986,520.22479 C 387.00165,521.49627 386.41648,524.6652 385.23436,529.73159 C 384.05215,534.79804 382.20199,539.70956 379.68388,544.46617 C 377.16569,549.22281 373.90856,551.77216 369.91246,552.11422 L 369.91246,552.11422 z M 332.96952,532.77145 C 333.00221,533.81703 333.37251,534.60119 334.08042,535.12395 C 334.78836,535.64674 335.63787,535.90813 336.62897,535.90812 C 339.74735,535.64352 342.02993,533.79121 343.47671,530.35119 C 344.92348,526.91121 346.34122,523.47121 347.72992,520.03117 C 349.11861,516.5912 351.28501,514.7389 354.22914,514.47424 C 354.74464,514.47428 355.10768,514.60498 355.31826,514.86632 C 355.52881,515.12775 355.63046,515.51984 355.62321,516.04257 C 355.61594,516.58354 355.49977,517.24427 355.2747,518.02477 C 355.0496,518.80534 354.75917,519.59677 354.4034,520.39905 L 338.37156,567.79754 C 336.8753,571.46127 334.64005,573.54377 331.6658,574.04505 C 328.69158,574.5463 325.94001,574.83458 323.41108,574.90989 C 320.88219,574.98517 319.5376,576.21574 319.37731,578.60161 C 319.38096,579.51644 319.67866,580.34417 320.27039,581.0848 C 320.86216,581.82538 321.7262,582.21746 322.86249,582.26105 C 323.16383,582.22472 325.08794,582.0795 328.63483,581.8254 C 332.18174,581.57125 336.58904,581.42603 341.85674,581.38975 C 346.95381,581.42603 351.26672,581.57125 354.79548,581.8254 C 358.32421,582.0795 360.28463,582.22472 360.67673,582.26105 C 361.81302,582.21746 362.67706,581.82538 363.26883,581.0848 C 363.86057,580.34418 364.15826,579.51645 364.16191,578.60161 C 364.05217,576.46638 363.28414,575.33477 361.85782,575.20678 C 360.43146,575.07875 359.00511,574.8249 357.57879,574.4452 C 356.15243,574.06547 355.3844,572.43045 355.2747,569.54013 C 355.28194,568.85034 355.35455,568.18235 355.49252,567.53615 C 355.63046,566.88993 355.7902,566.22193 355.97173,565.53217 L 358.93414,556.64495 C 359.64931,554.90963 361.35559,554.76441 364.053,556.2093 C 366.75036,557.6542 370.85271,558.55454 376.36005,558.91032 C 381.86732,558.79415 387.75582,555.8027 394.02557,549.93597 C 400.29521,544.06926 403.70053,536.02431 404.24152,525.80108 C 404.21604,520.01789 402.61141,515.29112 399.42761,511.62074 C 396.24369,507.95046 391.63309,506.05539 385.59579,505.93554 C 382.48449,505.97553 379.34057,506.81052 376.164,508.44051 C 372.98737,510.07061 370.14841,512.25611 367.6471,514.99702 C 367.03716,512.40859 365.86091,510.26665 364.11834,508.57121 C 362.37573,506.87586 360.0668,505.99731 357.19155,505.93554 C 352.39403,506.22817 348.18385,508.39243 344.56098,512.4283 C 340.93812,516.46427 338.1091,520.61637 336.07392,524.88461 C 334.03875,529.15291 333.00395,531.78185 332.96952,532.77145 L 332.96952,532.77145 z"
|
||||
id="text2502"
|
||||
style="font-size:174.26139832px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Emmentaler;-inkscape-font-specification:Emmentaler" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
66
icons/chord.svg
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
width="103.64716"
|
||||
height="282.17834"
|
||||
style="fill-rule:evenodd"
|
||||
viewBox="0 0 941.057 9801.2191"
|
||||
id="svg2"
|
||||
sodipodi:version="0.34"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="chord.svg"
|
||||
version="1.1"><metadata
|
||||
id="metadata34"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
inkscape:window-height="745"
|
||||
inkscape:window-width="1030"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:zoom="1.0051986"
|
||||
inkscape:cx="73.669444"
|
||||
inkscape:cy="88.293688"
|
||||
inkscape:window-x="198"
|
||||
inkscape:window-y="198"
|
||||
inkscape:current-layer="svg2"
|
||||
showgrid="false"
|
||||
inkscape:showpageshadow="false"
|
||||
borderlayer="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-maximized="0" /><defs
|
||||
id="defs4"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 141.08917 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="103.64716 : 141.08917 : 1"
|
||||
inkscape:persp3d-origin="51.823582 : 94.059448 : 1"
|
||||
id="perspective8" /><style
|
||||
type="text/css"
|
||||
id="style6">
|
||||
|
||||
.str1 {stroke:#131516;stroke-width:3}
|
||||
.str0 {stroke:#131516;stroke-width:42}
|
||||
.fil0 {fill:none}
|
||||
.fil1 {fill:#131516}
|
||||
|
||||
</style></defs><path
|
||||
style="fill:#131516;stroke:#131516;stroke-width:9.4368515"
|
||||
d="m 544.61291,9796.4848 -149.7909,0 0,-3490.7799 0,-1786.6368 0,-1745.39 0,-331.0596 c -128.3162,103.5445 -287.7921,157.389 -472.16711,157.389 -181.8057,0 -369.9636,-47.5917 -561.1733,-145.4492 -191.2096,-94.7005 -354.5038,-224.3408 -483.0214,-385.3317 -128.5181,-160.991 -196.7084,-334.6679 -202.9776,-517.7556 12.5383,-167.3046 78.4363,-297.1436 197.5503,-391.8444 119.1141,-91.5439 266.2382,-137.8511 441.7748,-137.8511 184.9401,0 372.2564,43.9369 566.6004,129.1675 191.20971,85.2306 351.12561,207.9595 476.50891,365.7938 13.0683,16.1219 25.1985,33.3319 36.905,49.9303 l 0,-538.379 c 0,-195.71463 62.3981,-372.84693 187.7814,-527.52453 125.3834,-157.8344 285.2994,-280.5632 476.50839,-365.7938 194.345,-85.230604 382.746,-130.2530039 567.686,-130.2530039 175.537,0 322.661,47.3925999 441.775,138.9365039 119.114,94.7009 185.012,224.5398 197.55,391.8444 -6.269,183.0878 -75.545,356.7646 -204.063,517.75563 -128.518,160.991 -291.811,290.6312 -483.021,385.3317 -191.21,97.8575 -379.367,145.4492 -561.173,145.4492 -184.94099,0 -344.73499,-54.3037 -473.25289,-158.4745 l 0,569.8568 c 0.8823,16.1622 2.1709,32.4139 2.1709,48.8449 l -2.1709,5.4272 0,246.3953 c 11.9374,-16.9812 24.6289,-33.4473 37.9905,-49.9304 125.3834,-157.8343 285.2994,-280.5631 476.50839,-365.7938 194.345,-85.2306 382.746,-130.2529 567.686,-130.2529 175.537,0 322.661,47.3926 441.775,138.9365 119.114,94.7008 185.012,224.5398 197.55,391.8444 -6.269,183.0877 -75.545,356.7646 -204.063,517.7556 -128.518,160.9909 -291.811,290.6312 -483.021,385.3317 -191.21,97.8575 -379.367,144.3637 -561.173,144.3637 -184.94099,0 -344.73499,-53.2182 -473.25289,-157.389 l 0,870.5241 c 11.9374,-16.9811 24.6289,-33.4472 37.9905,-49.9303 125.3834,-157.8343 285.2994,-280.5632 476.50839,-365.7938 194.345,-85.2306 382.746,-130.253 567.686,-130.253 175.537,0 322.661,47.3927 441.775,138.9366 119.114,94.7008 185.012,224.5398 197.55,391.8444 -6.269,183.0877 -75.545,356.7646 -204.063,517.7556 -128.518,160.9909 -291.811,290.6312 -483.021,385.3317 -191.21,97.8575 -379.367,144.3637 -561.173,144.3637 -184.94099,0 -344.73499,-53.2182 -473.25289,-157.389 l 0,1389.3652 0,3490.7799 z"
|
||||
id="path23"
|
||||
inkscape:connector-curvature="0" /></svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
64
icons/eighthnote.svg
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
width="257mm"
|
||||
height="95mm"
|
||||
style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd"
|
||||
viewBox="0 0 8268 11692"
|
||||
id="svg2"
|
||||
sodipodi:version="0.34"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Notes.svg"
|
||||
version="1.1"><metadata
|
||||
id="metadata34"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
inkscape:window-height="1155"
|
||||
inkscape:window-width="1643"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:zoom="2.0103972"
|
||||
inkscape:cx="534.71016"
|
||||
inkscape:cy="281.79409"
|
||||
inkscape:window-x="82"
|
||||
inkscape:window-y="0"
|
||||
inkscape:current-layer="svg2"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0" /><defs
|
||||
id="defs4"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 168.30708 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="910.62994 : 168.30708 : 1"
|
||||
inkscape:persp3d-origin="455.31497 : 112.20472 : 1"
|
||||
id="perspective20" /><style
|
||||
type="text/css"
|
||||
id="style6">
|
||||
|
||||
.str1 {stroke:#131516;stroke-width:3}
|
||||
.str0 {stroke:#131516;stroke-width:42}
|
||||
.fil0 {fill:none}
|
||||
.fil1 {fill:#131516}
|
||||
|
||||
</style></defs><path
|
||||
style="fill:none;stroke:#131516;stroke-width:132.11592102"
|
||||
id="path17"
|
||||
d="m -11065.602,11076.63 30399.205,0"
|
||||
class="fil0 str0" /><path
|
||||
style="fill:#131516;stroke:#131516;stroke-width:9.4368515"
|
||||
id="path25"
|
||||
d="m 4431.786,2945.0013 150.4601,0 c 37.615,239.9083 84.6338,441.9363 147.3255,606.0841 59.5571,160.9911 131.6525,299.8854 210.0172,416.6828 81.4992,116.7975 203.748,265.1618 366.7464,448.2497 162.9984,183.0879 291.5164,337.7657 391.8231,467.1899 300.9202,388.2726 451.3803,795.4853 451.3803,1218.4815 0,435.623 -181.806,965.9466 -551.687,1590.9708 l -100.3067,0 c 47.0188,-110.4841 103.4413,-236.7516 166.133,-378.8026 59.5571,-145.2076 112.8451,-274.6318 156.7292,-391.4293 40.7496,-116.7974 75.2301,-233.5949 100.3068,-350.3924 21.9421,-116.7974 34.4804,-230.4382 34.4804,-344.079 0,-179.9312 -34.4804,-359.8624 -106.5759,-539.7936 -72.0954,-183.0879 -175.5368,-350.3924 -304.0547,-505.0701 -131.6526,-154.6777 -278.9781,-277.7885 -445.1111,-375.6459 -166.133,-94.7006 -338.5352,-148.3643 -517.2065,-157.8344 l 0,3573.3709 c 0,202.028 -59.5572,385.1159 -184.9406,542.9503 -122.2488,157.8344 -282.1126,280.9452 -476.4569,366.1758 -191.2097,85.2306 -382.4193,126.2675 -573.629,126.2675 -181.806,0 -335.4006,-47.3503 -457.6494,-138.8942 -119.1143,-91.544 -181.806,-227.2816 -181.806,-404.0561 0,-186.2446 62.6917,-359.8624 184.9406,-520.8535 122.2488,-157.8344 278.978,-284.1019 467.0531,-375.6459 188.0751,-91.544 369.881,-138.8943 545.4178,-138.8943 244.4976,0 420.0344,47.3503 526.6103,145.2077 l 0,-3226.1352 0,-1654.1045 z"
|
||||
class="fil1 str1" /></svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
64
icons/halfnote.svg
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
width="257mm"
|
||||
height="95mm"
|
||||
style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd"
|
||||
viewBox="0 0 8268 11692"
|
||||
id="svg2"
|
||||
sodipodi:version="0.34"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Notes.svg"
|
||||
version="1.1"><metadata
|
||||
id="metadata34"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
inkscape:window-height="1155"
|
||||
inkscape:window-width="1643"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:zoom="2.0103972"
|
||||
inkscape:cx="534.71016"
|
||||
inkscape:cy="281.79409"
|
||||
inkscape:window-x="82"
|
||||
inkscape:window-y="0"
|
||||
inkscape:current-layer="svg2"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0" /><defs
|
||||
id="defs4"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 168.30708 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="910.62994 : 168.30708 : 1"
|
||||
inkscape:persp3d-origin="455.31497 : 112.20472 : 1"
|
||||
id="perspective20" /><style
|
||||
type="text/css"
|
||||
id="style6">
|
||||
|
||||
.str1 {stroke:#131516;stroke-width:3}
|
||||
.str0 {stroke:#131516;stroke-width:42}
|
||||
.fil0 {fill:none}
|
||||
.fil1 {fill:#131516}
|
||||
|
||||
</style></defs><path
|
||||
style="fill:none;stroke:#131516;stroke-width:132.11592102"
|
||||
id="path17"
|
||||
d="m -11065.602,11076.63 30399.205,0"
|
||||
class="fil0 str0" /><path
|
||||
style="fill:#131516;stroke:#131516;stroke-width:9.4368515"
|
||||
id="path19"
|
||||
d="m -3039.4604,7768.4206 0,-4810.7925 150.4601,0 0,5366.3696 c -3.1346,170.4611 -68.9609,331.4522 -197.4789,486.1299 -128.5179,154.6777 -282.1126,280.9453 -467.0531,375.6459 -181.8059,91.544 -354.2081,142.051 -514.072,148.3643 -166.133,0 -297.7855,-22.0968 -398.0923,-63.1337 -97.1721,-41.037 -169.2675,-110.4841 -216.2863,-211.4981 -43.8842,-101.014 -68.9609,-243.065 -68.9609,-422.9962 6.2692,-192.558 72.0955,-366.1758 200.6135,-520.8535 131.6525,-151.5211 294.6509,-271.4752 488.9952,-359.8625 194.3443,-85.2305 385.554,-126.2675 570.4945,-126.2675 178.6713,0 329.1314,44.1937 451.3802,138.8943 z m -1122.1814,580.8306 c -65.8263,41.0369 -150.4601,123.1108 -253.9014,246.2216 -103.4413,123.1109 -159.8638,227.2816 -166.133,315.6688 12.5383,88.3873 68.9609,142.051 162.9984,164.1478 94.0376,0 216.2864,-31.5669 366.7465,-94.7006 147.3255,-59.9771 291.5164,-145.2077 429.4381,-252.5351 90.903,-59.977 206.8826,-167.3044 344.8044,-318.8254 137.9217,-151.5211 206.8826,-274.6319 206.8826,-369.3325 0,-88.3873 -43.8842,-142.051 -137.9218,-164.1478 -228.8247,0 -545.4178,157.8344 -952.9138,473.5032 z"
|
||||
class="fil1 str1" /></svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
75
icons/mezzopiano.svg
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.0"
|
||||
width="158.25"
|
||||
height="78.0625"
|
||||
id="svg2"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Music_dynamic_mezzo_piano_edit.svg"
|
||||
inkscape:export-filename="/tmp/mezzopiano.png"
|
||||
inkscape:export-xdpi="19.290001"
|
||||
inkscape:export-ydpi="19.290001">
|
||||
<metadata
|
||||
id="metadata8">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="721"
|
||||
inkscape:window-height="826"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="3.4841854"
|
||||
inkscape:cx="94.325401"
|
||||
inkscape:cy="71.498003"
|
||||
inkscape:window-x="628"
|
||||
inkscape:window-y="89"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg2" />
|
||||
<defs
|
||||
id="defs4">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 39.03125 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="158.25 : 39.03125 : 1"
|
||||
inkscape:persp3d-origin="79.125 : 26.020833 : 1"
|
||||
id="perspective2819" />
|
||||
</defs>
|
||||
<path
|
||||
style="font-size:174.26139832px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Emmentaler;-inkscape-font-specification:Emmentaler"
|
||||
d="M 29.4375,0 C 23.53311,0.27758 18.40058,2.45881 14,6.53125 9.59942,10.6038 6.16376,14.90035 3.71875,19.4375 1.27375,23.97472 0.03766,27.07842 0,28.75 c 0.0218,0.95482 0.31814,1.67122 0.90625,2.125 0.58814,0.45382 1.32568,0.6599 2.21875,0.65625 1.17262,0.004 2.33024,-0.34728 3.4375,-1.0625 1.10728,-0.71516 1.93729,-1.80366 2.5,-3.28125 1.00199,-3.22377 2.51495,-6.50154 4.5625,-9.8125 2.04754,-3.31088 4.36717,-5.08233 6.9375,-5.34375 0.78053,0.0146 1.35207,0.27525 1.71875,0.8125 0.36666,0.53734 0.53487,1.27047 0.53125,2.15625 -0.029,0.87133 -0.14045,1.72249 -0.34375,2.59375 l -10.4375,30.3125 c -0.14522,0.52278 -0.21654,1.07098 -0.1875,1.59375 0.007,0.89308 0.3014,1.63063 0.875,2.21875 0.5736,0.58813 1.38468,0.88447 2.4375,0.90625 l 3.84375,0 c 1.35776,-0.0327 2.64791,-0.49281 3.875,-1.375 1.22706,-0.88218 2.07601,-2.00413 2.5625,-3.34375 l 10.28125,-30.3125 c 0.58084,-1.45212 1.57244,-2.70882 2.9375,-3.8125 1.365,-1.1036 2.76656,-1.69187 4.21875,-1.75 0.78051,0.0182 1.35205,0.29339 1.71875,0.8125 0.36664,0.51919 0.53485,1.16647 0.53125,1.96875 -3e-5,0.44294 -0.03791,0.91981 -0.125,1.40625 -0.0872,0.48651 -0.20078,0.93213 -0.375,1.375 l -8.5625,30.3125 c -0.0908,0.25413 -0.1498,0.50819 -0.21875,0.71875 -0.069,0.21057 -0.1214,0.43338 -0.125,0.6875 0.0109,0.97658 0.35739,1.76872 1,2.375 0.64256,0.60627 1.51265,0.91935 2.65625,0.9375 l 3.84375,0 C 44.57285,52.5923 45.84187,52.13219 47,51.25 c 1.15806,-0.88218 1.91675,-2.00413 2.3125,-3.34375 l 8.71875,-30.3125 c 0.50095,-1.45212 1.42123,-2.70882 2.75,-3.8125 1.32868,-1.1036 2.65891,-1.69187 4.03125,-1.75 0.86398,0.0218 1.49013,0.31817 1.875,0.90625 0.38477,0.58817 0.5697,1.32571 0.5625,2.21875 -0.0291,0.72611 -0.1405,1.5372 -0.34375,2.4375 l -6.78125,28.75 c -0.20335,0.66801 -0.31476,1.43901 -0.34375,2.28125 0.004,1.68814 0.46593,3.06856 1.40625,4.125 0.94022,1.05645 2.32284,1.59232 4.15625,1.625 6.433,-0.43202 12.525475,-2.327445 17.71875,-6.4375 13.159087,-10.444013 12.810304,-20.869283 18.55478,-32.195224 1.78864,-3.52652 3.65734,-5.196366 6.60147,-5.461026 0.5155,4e-5 0.88317,0.14491 1.09375,0.40625 0.21055,0.26143 0.31974,0.63352 0.3125,1.15625 -0.007,0.54097 -0.11868,1.2195 -0.34375,2 -0.2251,0.78057 -0.51923,1.57272 -0.875,2.375 L 92.375,63.59375 c -1.49626,3.66373 -3.74451,5.74872 -6.71875,6.25 -2.97423,0.50125 -5.72107,0.79969 -8.25,0.875 -2.52889,0.0753 -3.87095,1.30163 -4.03125,3.6875 0.004,0.91483 0.31452,1.75937 0.90625,2.5 0.59178,0.74058 1.45746,1.11266 2.59375,1.15625 0.30134,-0.0363 2.20311,-0.1834 5.75,-0.4375 3.54691,-0.25415 7.9823,-0.40122 13.25,-0.4375 5.09707,0.0363 9.40874,0.18335 12.9375,0.4375 3.52873,0.2541 5.4829,0.40117 5.875,0.4375 1.1363,-0.0436 2.00198,-0.41567 2.59375,-1.15625 0.59174,-0.74062 0.87135,-1.58516 0.875,-2.5 C 118.04652,72.27102 117.30133,71.12799 115.875,71 c -1.42636,-0.12803 -2.85492,-0.3703 -4.28125,-0.75 -1.42636,-0.37973 -2.2028,-2.01593 -2.3125,-4.90625 0.007,-0.68979 0.0808,-1.3538 0.21875,-2 0.13794,-0.64622 0.28722,-1.31024 0.46875,-2 l 2.96875,-8.90625 c 0.71517,-1.73532 2.42759,-1.85114 5.125,-0.40625 2.69736,1.4449 6.80516,2.33172 12.3125,2.6875 5.50728,-0.11617 11.38651,-3.10202 17.65625,-8.96875 C 154.3009,39.88329 157.70901,31.81698 158.25,21.59375 158.2245,15.81056 156.6213,11.10788 153.4375,7.4375 150.25358,3.76722 145.63105,1.86985 139.59375,1.75 c -3.1113,0.04 -6.26094,0.87001 -9.4375,2.5 -3.17663,1.6301 -5.99869,3.82159 -8.5,6.5625 C 121.04631,8.22407 119.86757,6.07044 118.125,4.375 116.38239,2.67965 114.06275,1.81177 111.1875,1.75 106.38998,2.04263 102.14908,4.1818543 98.5625,8.25 93.618378,13.85797 93.202903,28.579746 86.364436,37.141836 83.157329,41.157289 79.07146,43.08458 77.03125,43.375 76.6754,43.371 76.38127,43.2745 76.15625,43.03125 75.9311,42.78803 75.8197,42.43928 75.8125,42 75.7834,41.7967 75.82349,41.50257 75.96875,41.125 L 82.0625,15.15625 c 0.0907,-0.44287 0.18095,-0.88848 0.25,-1.375 0.0689,-0.48643 0.1213,-0.9633 0.125,-1.40625 C 82.3757,9.19118 81.40084,6.37134 79.53125,3.90625 77.66153,1.44126 75.24943,0.13437 72.3125,0 69.76027,0.0255 67.23676,0.63267 64.75,1.8125 62.26312,2.99242 59.96022,4.59565 57.84375,6.625 57.3173,4.67189 56.45161,3.0876 55.25,1.875 54.04829,0.6625 52.55206,0.03635 50.71875,0 48.16654,0.0218 45.64304,0.57665 43.15625,1.6875 40.6694,2.79845 38.36649,4.34267 36.25,6.28125 35.72719,4.4189 34.88266,2.89363 33.75,1.75 32.61729,0.60648 31.18007,0.03273 29.4375,0 z M 136.625,10.28125 c 1.55377,0.0436 2.69244,0.59842 3.375,1.6875 0.68247,1.08916 1.01448,2.45064 1,4.0625 0.0118,1.27148 -0.56787,4.43361 -1.75,9.5 -1.18221,5.06645 -3.04439,9.99339 -5.5625,14.75 -2.51818,4.75664 -5.78516,7.28294 -9.78125,7.625 -1.9786,-0.0363 -3.36342,-0.63119 -4.1875,-1.84375 -0.82412,-1.21255 -1.24418,-2.79684 -1.21875,-4.75 0.0236,-3.01618 0.80439,-6.95791 2.3125,-11.78125 1.50807,-4.82329 3.60393,-9.16853 6.3125,-13.0625 2.70852,-3.8939 5.87495,-5.95942 9.5,-6.1875 z"
|
||||
id="text2502"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="csscccccsccccccsccscccccccccccccccccscccccccccsccccccsscccccccccccccccscscccccccsscccccccccscccccccccccscccssc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.3 KiB |
64
icons/quarternote.svg
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
width="257mm"
|
||||
height="95mm"
|
||||
style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd"
|
||||
viewBox="0 0 8268 11692"
|
||||
id="svg2"
|
||||
sodipodi:version="0.34"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Notes.svg"
|
||||
version="1.1"><metadata
|
||||
id="metadata34"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
inkscape:window-height="1155"
|
||||
inkscape:window-width="1643"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:zoom="2.0103972"
|
||||
inkscape:cx="534.71016"
|
||||
inkscape:cy="281.79409"
|
||||
inkscape:window-x="82"
|
||||
inkscape:window-y="0"
|
||||
inkscape:current-layer="svg2"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0" /><defs
|
||||
id="defs4"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 168.30708 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="910.62994 : 168.30708 : 1"
|
||||
inkscape:persp3d-origin="455.31497 : 112.20472 : 1"
|
||||
id="perspective20" /><style
|
||||
type="text/css"
|
||||
id="style6">
|
||||
|
||||
.str1 {stroke:#131516;stroke-width:3}
|
||||
.str0 {stroke:#131516;stroke-width:42}
|
||||
.fil0 {fill:none}
|
||||
.fil1 {fill:#131516}
|
||||
|
||||
</style></defs><path
|
||||
style="fill:none;stroke:#131516;stroke-width:132.11592102"
|
||||
id="path17"
|
||||
d="m -11065.602,11076.63 30399.205,0"
|
||||
class="fil0 str0" /><path
|
||||
style="fill:#131516;stroke:#131516;stroke-width:9.4368515"
|
||||
id="path23"
|
||||
d="m 830.14782,2957.6281 0,5277.9823 c 0,195.7147 -62.6917,372.4892 -188.0751,527.1669 -125.3834,157.8344 -285.24723,280.9452 -476.45692,366.1758 -194.34427,85.2306 -382.41937,129.4242 -567.35989,129.4242 -175.53676,0 -322.86225,-47.3503 -441.97648,-138.8942 -119.11423,-94.7007 -184.94053,-224.1249 -197.47883,-391.4294 6.2691,-183.0879 75.23001,-356.7057 203.748,-517.6968 128.51798,-160.9911 291.51641,-290.4153 482.72609,-385.1159 191.20969,-97.8574 379.284785,-145.2077 561.09071,-145.2077 184.94052,0 344.80435,53.6637 473.32234,157.8344 l 0,-4880.2396 150.46008,0 z"
|
||||
class="fil1 str1" /></svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
64
icons/sixteenthnote.svg
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
width="257mm"
|
||||
height="95mm"
|
||||
style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd"
|
||||
viewBox="0 0 8268 11692"
|
||||
id="svg2"
|
||||
sodipodi:version="0.34"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Notes.svg"
|
||||
version="1.1"><metadata
|
||||
id="metadata34"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
inkscape:window-height="1155"
|
||||
inkscape:window-width="1643"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:zoom="2.0103972"
|
||||
inkscape:cx="534.71016"
|
||||
inkscape:cy="281.79409"
|
||||
inkscape:window-x="82"
|
||||
inkscape:window-y="0"
|
||||
inkscape:current-layer="svg2"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0" /><defs
|
||||
id="defs4"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 168.30708 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="910.62994 : 168.30708 : 1"
|
||||
inkscape:persp3d-origin="455.31497 : 112.20472 : 1"
|
||||
id="perspective20" /><style
|
||||
type="text/css"
|
||||
id="style6">
|
||||
|
||||
.str1 {stroke:#131516;stroke-width:3}
|
||||
.str0 {stroke:#131516;stroke-width:42}
|
||||
.fil0 {fill:none}
|
||||
.fil1 {fill:#131516}
|
||||
|
||||
</style></defs><path
|
||||
style="fill:none;stroke:#131516;stroke-width:132.11592102"
|
||||
id="path17"
|
||||
d="m -11065.602,11076.63 30399.205,0"
|
||||
class="fil0 str0" /><path
|
||||
style="fill:#131516;stroke:#131516;stroke-width:9.4368515"
|
||||
id="path27"
|
||||
d="m 8183.8842,7837.8677 0,-4880.2396 162.9985,0 c 21.942,243.065 75.23,432.4662 162.9984,561.8904 84.6338,129.4243 225.6901,284.102 426.3035,457.7198 197.4789,176.7745 351.0736,337.7656 463.9186,482.9733 162.9984,205.1847 285.2472,404.056 373.0156,593.4573 84.6338,189.4013 128.518,407.2128 128.518,656.5911 0,192.558 -28.2113,391.4293 -87.7684,599.7707 109.7105,148.3644 162.9985,381.9593 162.9985,694.4714 0,202.028 -25.0767,400.8994 -78.3647,599.7707 -56.4225,198.8714 -134.7871,372.4892 -238.2284,517.6968 l -103.4413,0 c 197.4788,-385.1159 294.651,-722.8815 294.651,-1010.1401 0,-549.2637 -316.5931,-984.8867 -952.9139,-1306.8688 -47.0188,-25.2535 -112.8451,-66.2905 -197.4788,-126.2676 -87.7684,-56.8203 -156.7293,-104.1707 -200.6135,-132.5809 -47.0188,-28.4102 -97.1721,-56.8203 -153.5946,-75.7605 l 0,2777.8855 c 0,189.4012 -62.6917,363.0191 -184.9406,517.6968 -125.3834,154.6777 -282.1126,274.6319 -473.3223,363.0191 -191.2097,85.2306 -379.2848,129.4242 -564.2253,129.4242 -178.6713,0 -325.9968,-41.0369 -441.9765,-123.1108 -119.1142,-82.0739 -184.9405,-205.1847 -197.4788,-369.3325 0,-186.2446 62.6917,-363.0191 191.2096,-530.3236 128.518,-167.3044 291.5164,-299.8853 485.8607,-397.7427 197.4789,-97.8573 385.554,-145.2076 570.4945,-145.2076 191.2097,0 341.6698,47.3503 451.3802,145.2076 z M 8384.4977,4131.916 c 0,277.7886 72.0954,517.6968 216.2863,719.7249 147.3255,202.028 354.2081,432.4662 626.917,694.4713 269.5743,262.0051 438.8419,457.7198 507.8028,590.3007 15.6729,-82.0739 21.9421,-170.4612 21.9421,-265.1618 0,-208.3414 -40.7496,-404.0561 -125.3834,-580.8306 -84.6338,-179.9312 -194.3443,-340.9223 -325.9968,-479.8166 -131.6526,-138.8942 -275.8435,-262.0051 -429.4382,-372.4891 -156.7292,-110.4841 -319.7277,-211.4981 -492.1298,-306.1988 z"
|
||||
class="fil1 str1" /></svg>
|
||||
|
After Width: | Height: | Size: 4 KiB |
64
icons/sixyfourthnote.svg
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
width="257mm"
|
||||
height="95mm"
|
||||
style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd"
|
||||
viewBox="0 0 8268 11692"
|
||||
id="svg2"
|
||||
sodipodi:version="0.34"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Notes.svg"
|
||||
version="1.1"><metadata
|
||||
id="metadata34"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
inkscape:window-height="1155"
|
||||
inkscape:window-width="1643"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:zoom="2.0103972"
|
||||
inkscape:cx="534.71016"
|
||||
inkscape:cy="281.79409"
|
||||
inkscape:window-x="82"
|
||||
inkscape:window-y="0"
|
||||
inkscape:current-layer="svg2"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0" /><defs
|
||||
id="defs4"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 168.30708 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="910.62994 : 168.30708 : 1"
|
||||
inkscape:persp3d-origin="455.31497 : 112.20472 : 1"
|
||||
id="perspective20" /><style
|
||||
type="text/css"
|
||||
id="style6">
|
||||
|
||||
.str1 {stroke:#131516;stroke-width:3}
|
||||
.str0 {stroke:#131516;stroke-width:42}
|
||||
.fil0 {fill:none}
|
||||
.fil1 {fill:#131516}
|
||||
|
||||
</style></defs><path
|
||||
style="fill:none;stroke:#131516;stroke-width:132.11592102"
|
||||
id="path17"
|
||||
d="m -11065.602,11076.63 30399.205,0"
|
||||
class="fil0 str0" /><path
|
||||
style="fill:#131516;stroke:#131516;stroke-width:9.4368515"
|
||||
id="path31"
|
||||
d="m 15678.677,7799.9875 0,-6212.362 0,-972.25992 150.46,0 c 0,246.22167 56.423,448.24972 172.402,602.92742 115.98,151.521 300.92,350.3924 561.091,593.4573 260.17,243.065 457.649,476.6599 589.302,700.7848 131.652,227.2815 197.479,514.5401 197.479,861.7758 0,167.3045 -21.942,366.1758 -62.692,593.4573 75.23,145.2077 112.845,331.4523 112.845,555.5771 0,214.6548 -37.615,416.6828 -112.845,606.0841 81.499,189.4013 125.383,391.4293 125.383,599.7707 0,205.1848 -43.884,391.4294 -125.383,555.5771 97.172,148.3644 147.326,359.8625 147.326,631.3376 0,385.116 -94.038,776.5453 -282.113,1180.6013 l -112.845,0 c 172.402,-492.4433 257.036,-874.4025 257.036,-1142.721 0,-205.1847 -37.615,-369.3325 -112.845,-498.7567 -78.365,-129.4242 -166.133,-230.4382 -263.305,-299.8854 -97.173,-69.4471 -266.44,-176.7745 -507.803,-321.9822 -241.363,-145.2076 -429.438,-274.6318 -570.495,-388.2726 l -12.538,2765.2587 c 0,208.3414 -62.692,391.4293 -184.94,552.4204 -125.384,160.9911 -282.113,280.9452 -473.323,366.1758 -191.209,85.2306 -379.285,129.4242 -564.225,129.4242 -188.075,0 -341.67,-44.1936 -467.053,-135.7376 -122.249,-91.5439 -184.941,-220.9681 -184.941,-394.586 0,-183.0879 65.826,-356.7057 197.479,-514.5401 128.518,-160.9911 297.786,-287.2586 498.399,-381.9592 200.614,-94.7007 398.092,-138.8943 589.302,-138.8943 184.941,0 329.131,34.7235 438.842,107.3274 z m 162.998,-4854.9862 c 0,217.8115 43.885,397.7427 128.518,542.9504 84.634,145.2076 231.96,309.3554 438.842,495.6 206.883,186.2446 369.881,337.7656 485.861,460.8764 115.98,123.1109 222.555,287.2586 319.728,495.6 18.807,-78.9172 25.076,-164.1477 25.076,-258.8484 0,-243.0649 -65.826,-473.5032 -203.748,-691.3146 -134.787,-220.9682 -307.189,-416.6829 -520.341,-587.144 -210.017,-173.6179 -435.707,-325.1389 -673.936,-457.7198 z m -12.538,1161.6612 c 0,211.4981 53.288,410.3695 156.729,590.3007 103.442,179.9312 241.363,356.7057 410.631,530.3236 172.402,170.4611 335.401,334.6089 492.13,486.1299 153.594,154.6777 260.17,293.572 313.458,413.5261 21.942,-104.1707 31.346,-195.7146 31.346,-271.4751 0,-372.4892 -141.056,-710.2548 -426.303,-1016.4536 -285.248,-303.042 -611.245,-546.107 -977.991,-732.3516 z m 12.538,-2335.9491 c 0,208.3414 40.75,385.1159 119.115,527.1669 78.364,142.0509 222.555,309.3554 426.303,501.9134 206.883,192.5579 363.612,347.2357 476.457,464.0331 109.711,116.7975 222.556,287.2586 338.535,508.2268 12.539,-82.0739 18.808,-157.8344 18.808,-233.5949 0,-293.572 -72.096,-549.2637 -216.287,-770.2319 -144.19,-224.1248 -310.323,-404.0561 -492.129,-542.9503 -181.806,-138.8943 -404.362,-290.4153 -670.802,-454.5631 z"
|
||||
class="fil1 str1" /></svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
64
icons/thirtysecondnote.svg
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
width="257mm"
|
||||
height="95mm"
|
||||
style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd"
|
||||
viewBox="0 0 8268 11692"
|
||||
id="svg2"
|
||||
sodipodi:version="0.34"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Notes.svg"
|
||||
version="1.1"><metadata
|
||||
id="metadata34"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
inkscape:window-height="1155"
|
||||
inkscape:window-width="1643"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:zoom="2.0103972"
|
||||
inkscape:cx="534.71016"
|
||||
inkscape:cy="281.79409"
|
||||
inkscape:window-x="82"
|
||||
inkscape:window-y="0"
|
||||
inkscape:current-layer="svg2"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0" /><defs
|
||||
id="defs4"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 168.30708 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="910.62994 : 168.30708 : 1"
|
||||
inkscape:persp3d-origin="455.31497 : 112.20472 : 1"
|
||||
id="perspective20" /><style
|
||||
type="text/css"
|
||||
id="style6">
|
||||
|
||||
.str1 {stroke:#131516;stroke-width:3}
|
||||
.str0 {stroke:#131516;stroke-width:42}
|
||||
.fil0 {fill:none}
|
||||
.fil1 {fill:#131516}
|
||||
|
||||
</style></defs><path
|
||||
style="fill:none;stroke:#131516;stroke-width:132.11592102"
|
||||
id="path17"
|
||||
d="m -11065.602,11076.63 30399.205,0"
|
||||
class="fil0 str0" /><path
|
||||
style="fill:#131516;stroke:#131516;stroke-width:9.4368515"
|
||||
id="path29"
|
||||
d="m 11904.637,7837.8677 0,-5795.6791 153.594,0 c 18.808,211.4981 59.557,378.8025 122.249,495.6 62.692,116.7974 153.595,236.7516 282.113,356.7057 125.383,119.9542 304.054,287.2586 532.879,505.0701 410.631,397.7427 614.379,864.9325 614.379,1407.8828 0,186.2446 -25.077,369.3325 -75.23,555.5771 50.153,157.8344 75.23,328.2956 75.23,505.0701 0,138.8943 -18.808,299.8854 -62.692,479.8166 100.307,129.4242 150.46,334.6089 150.46,618.7108 0,195.7147 -25.076,397.7427 -81.499,599.7708 -53.288,202.028 -131.653,381.9592 -238.228,542.9503 l -100.307,0 c 188.075,-394.586 282.113,-735.5083 282.113,-1022.7669 0,-183.0879 -34.481,-350.3924 -106.576,-498.7567 -72.096,-151.521 -172.403,-287.2586 -300.921,-410.3695 -128.518,-119.9541 -266.439,-233.5949 -416.899,-337.7656 -150.46,-101.014 -376.151,-249.3783 -677.071,-438.7796 l 0,2847.3326 c 0,186.2446 -62.691,356.7057 -188.075,511.3834 -125.383,154.6777 -282.112,277.7886 -473.322,366.1758 -191.21,88.3873 -379.285,132.5809 -564.225,132.5809 -188.076,0 -341.67,-47.3503 -460.784,-138.8942 -119.115,-94.7007 -178.672,-233.595 -178.672,-416.6829 0,-179.9312 65.827,-347.2356 194.344,-501.9134 125.384,-154.6777 288.382,-277.7885 482.727,-372.4891 194.344,-91.544 376.15,-135.7376 548.552,-135.7376 203.748,0 366.746,47.3503 485.861,145.2076 z m 175.536,-4646.6447 c 0,186.2446 43.885,347.2357 125.384,476.6599 81.499,132.5809 225.69,293.572 429.438,482.9732 203.748,189.4013 363.612,344.079 479.591,470.3466 115.98,126.2675 225.691,296.7286 325.997,508.2267 12.539,-75.7605 18.808,-148.3643 18.808,-214.6548 0,-258.8484 -68.961,-492.4433 -210.017,-703.9414 -141.057,-214.6548 -297.786,-388.2726 -476.457,-527.1669 -175.537,-138.8943 -407.496,-303.042 -692.744,-492.4433 z m -12.538,1098.5274 c 12.538,198.8714 68.961,375.6459 169.268,533.4803 100.306,157.8344 225.69,309.3554 379.284,457.7197 153.595,145.2077 313.459,293.572 476.457,448.2497 162.999,154.6778 278.978,296.7287 347.939,422.9962 6.269,-34.7235 6.269,-85.2305 6.269,-151.521 0,-637.651 -457.649,-1209.0115 -1379.217,-1710.9249 z"
|
||||
class="fil1 str1" /></svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
64
icons/wholenote.svg
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
width="257mm"
|
||||
height="95mm"
|
||||
style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd"
|
||||
viewBox="0 0 8268 11692"
|
||||
id="svg2"
|
||||
sodipodi:version="0.34"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Notes.svg"
|
||||
version="1.1"><metadata
|
||||
id="metadata34"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
inkscape:window-height="1155"
|
||||
inkscape:window-width="1643"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:zoom="2.0103972"
|
||||
inkscape:cx="534.71016"
|
||||
inkscape:cy="281.79409"
|
||||
inkscape:window-x="82"
|
||||
inkscape:window-y="0"
|
||||
inkscape:current-layer="svg2"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0" /><defs
|
||||
id="defs4"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 168.30708 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="910.62994 : 168.30708 : 1"
|
||||
inkscape:persp3d-origin="455.31497 : 112.20472 : 1"
|
||||
id="perspective20" /><style
|
||||
type="text/css"
|
||||
id="style6">
|
||||
|
||||
.str1 {stroke:#131516;stroke-width:3}
|
||||
.str0 {stroke:#131516;stroke-width:42}
|
||||
.fil0 {fill:none}
|
||||
.fil1 {fill:#131516}
|
||||
|
||||
</style></defs><path
|
||||
style="fill:none;stroke:#131516;stroke-width:132.11592102"
|
||||
id="path17"
|
||||
d="m -11065.602,11076.63 30399.205,0"
|
||||
class="fil0 str0" /><path
|
||||
style="fill:#131516;stroke:#131516;stroke-width:9.4368515"
|
||||
id="path21"
|
||||
d="m -8448.2238,8323.9977 c 12.5384,233.5949 81.4992,429.3095 206.8826,580.8306 125.3834,151.521 275.8435,227.2815 451.3803,227.2815 134.7871,-15.7834 228.8247,-59.9771 282.1126,-135.7376 50.1534,-75.7605 75.2301,-208.3414 75.2301,-394.586 -18.8075,-239.9083 -87.7684,-435.6229 -213.1518,-583.9873 -125.3834,-148.3643 -275.8435,-224.1248 -457.6494,-224.1248 -125.3834,22.0968 -213.1518,66.2904 -266.4398,138.8943 -53.2879,69.4471 -78.3646,202.028 -78.3646,391.4293 z m -783.6462,132.5809 c 0,-192.558 68.9608,-347.2357 210.0172,-464.0332 141.0563,-119.9541 310.3239,-202.028 507.8027,-252.535 194.3443,-47.3503 376.1502,-72.6038 542.2832,-72.6038 181.806,0 373.0157,25.2535 570.4945,72.6038 200.6135,47.3503 373.0156,132.5809 520.3411,249.3784 147.3255,116.7974 225.6901,274.6318 231.9593,467.1898 0,192.5579 -68.9609,350.3923 -210.0172,470.3465 -141.0563,119.9541 -310.3239,205.1847 -504.6682,255.6917 -197.4788,50.507 -382.4193,75.7605 -557.9561,75.7605 -188.0751,0 -379.2848,-25.2535 -579.8982,-72.6038 -197.4789,-50.507 -366.7465,-132.5809 -510.9374,-252.535 -141.0563,-119.9542 -216.2863,-277.7886 -219.4209,-476.6599 z"
|
||||
class="fil1 str1" /></svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |