./PaxHeaders.13848/kmetronome-1.3.00000644000000000000000000000013214155347442013530 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.353062933 30 ctime=1639304994.353062933 kmetronome-1.3.0/0000755000175000001440000000000014155347442014234 5ustar00pedrousers00000000000000kmetronome-1.3.0/PaxHeaders.13848/configure.release0000644000000000000000000000013214155347442016773 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.353062933 30 ctime=1639304994.353062933 kmetronome-1.3.0/configure.release0000755000175000001440000000047014155347442017563 0ustar00pedrousers00000000000000#!/bin/bash # a typical configuration for production usage... mkdir -p build cmake -S . -B build \ -DCMAKE_PREFIX_PATH=$HOME/Qt/5.12.11/gcc_64 \ -DDrumstick_DIR=$HOME/Projects/drumstick/build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr echo "You can run 'cmake --build build' now" kmetronome-1.3.0/PaxHeaders.13848/CMakeLists.txt0000644000000000000000000000013214155347442016210 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.353062933 30 ctime=1639304994.353062933 kmetronome-1.3.0/CMakeLists.txt0000644000175000001440000001071214155347442016775 0ustar00pedrousers00000000000000# Drumstick Metronome - ALSA Sequencer based MIDI metronome # Copyright (C) 2005-2021 Pedro Lopez-Cabanillas # # 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, see . cmake_minimum_required(VERSION 3.14) project ( kmetronome VERSION 1.3.0 LANGUAGES CXX DESCRIPTION "ALSA Sequencer based MIDI metronome" HOMEPAGE_URL "https://kmetronome.sourceforge.io" ) set(PROJECT_RELEASE_DATE "December 12, 2021") option(BUILD_DOCS "Process Markdown sources of man pages and help files" ON) option(EMBED_TRANSLATIONS "Embed translations instead of installing" OFF) option(USE_QT "Choose which Qt major version (5 or 6) to prefer. By default uses whatever is found") list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_admin") include(SCMRevision) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED Yes) if (USE_QT) if (NOT (USE_QT EQUAL 5 OR USE_QT EQUAL 6)) message(FATAL_ERROR "Wrong Qt major version. Only 5 and 6 are valid options") endif() endif() if (USE_QT EQUAL 5) find_package(QT NAMES Qt5) elseif (USE_QT EQUAL 6) find_package(QT NAMES Qt6) else() find_package(QT NAMES Qt5 Qt6) endif() if(QT_FOUND) message(STATUS "Found Qt version: ${QT_VERSION}") endif() find_package(Qt${QT_VERSION_MAJOR} 5.12 COMPONENTS Gui Widgets DBus Svg LinguistTools REQUIRED) if(QT_VERSION VERSION_GREATER_EQUAL 6.0.0) find_package(Qt6 COMPONENTS Core5Compat SvgWidgets REQUIRED) endif() find_package(Drumstick 2.0 COMPONENTS ALSA REQUIRED) if(Drumstick_FOUND) message(STATUS "Found Drumstick version: ${Drumstick_VERSION}") endif() message (STATUS "${PROJECT_NAME} v${PROJECT_VERSION} install prefix: ${CMAKE_INSTALL_PREFIX} Build configuration: ${CMAKE_BUILD_TYPE} Processor: ${CMAKE_SYSTEM_PROCESSOR} Qt: ${QT_VERSION} Drumstick: ${Drumstick_VERSION} Embed translations: ${EMBED_TRANSLATIONS} Build docs: ${BUILD_DOCS}") include(GNUInstallDirs) if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wzero-as-null-pointer-constant -Wsuggest-override") endif() add_subdirectory(icons) if(NOT EMBED_TRANSLATIONS) add_subdirectory(translations) endif() add_subdirectory(doc) add_subdirectory(data) add_subdirectory(src) include(DBusMacros) dbus_add_activation_service(net.sourceforge.kmetronome.service.in) configure_file("${CMAKE_SOURCE_DIR}/kmetronome.spec.in" "${CMAKE_SOURCE_DIR}/kmetronome.spec" IMMEDIATE @ONLY) configure_file( "${CMAKE_SOURCE_DIR}/cmake_admin/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") add_custom_target ( tarball COMMAND mkdir -p kmetronome-${PROJECT_VERSION} COMMAND cp -r cmake_admin kmetronome-${PROJECT_VERSION} COMMAND cp -r data kmetronome-${PROJECT_VERSION} COMMAND cp -r doc kmetronome-${PROJECT_VERSION} COMMAND cp -r icons kmetronome-${PROJECT_VERSION} COMMAND cp -r translations kmetronome-${PROJECT_VERSION} COMMAND cp -r src kmetronome-${PROJECT_VERSION} COMMAND cp AUTHORS ChangeLog CMakeLists.txt configure.* lconvert.pri COPYING INSTALL kmetronome.{lsm,pro,spec,spec.in} net.sourceforge.kmetronome.{desktop,service.in,appdata.xml} NEWS readme.md TODO kmetronome-${PROJECT_VERSION} COMMAND tar -cj -f kmetronome-${PROJECT_VERSION}.tar.bz2 kmetronome-${PROJECT_VERSION} COMMAND tar -cz -f kmetronome-${PROJECT_VERSION}.tar.gz kmetronome-${PROJECT_VERSION} COMMAND rm -rf kmetronome-${PROJECT_VERSION} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) install( FILES net.sourceforge.kmetronome.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications ) install( FILES net.sourceforge.kmetronome.appdata.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo ) kmetronome-1.3.0/PaxHeaders.13848/kmetronome.spec.in0000644000000000000000000000013214155347442017111 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.353062933 30 ctime=1639304994.353062933 kmetronome-1.3.0/kmetronome.spec.in0000644000175000001440000000346214155347442017702 0ustar00pedrousers00000000000000# spec file for package kmetronome (Version @PROJECT_VERSION@) # # norootforbuild Name: kmetronome Version: @PROJECT_VERSION@ Release: 0 License: GPL v2 or later Summary: MIDI Metronome using ALSA Sequencer Group: Productivity/Multimedia/Sound/Midi URL: http://kmetronome.sourceforge.net Source: %name-%version.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: cmake BuildRequires: alsa-lib-devel BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtsvg-devel BuildRequires: qt5-qttools-devel BuildRequires: libdrumstick-devel %description Drumstick Metronome is a MIDI metronome with Qt interface, based on the ALSA sequencer. Intended for musicians and music students, it is a tool to keep the rhythm while playing musical instruments. It uses MIDI for sound generation instead of digital audio, allowing low CPU usage, and very accurate timing thanks to the ALSA sequencer. Authors: -------- Pedro Lopez-Cabanillas %prep %setup -q %build %cmake make %{?jobs:-j %jobs} VERBOSE=1 %install make install DESTDIR=$RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %doc INSTALL README ChangeLog AUTHORS TODO %doc %{_mandir}/man1/* %dir %{_datadir}/%name %dir %{_datadir}/icons/hicolor/*/apps %dir %{_datadir}/dbus-1/services %dir %{_datadir}/dbus-1/interfaces %{_bindir}/%name %{_datadir}/applications/%name.desktop %{_datadir}/dbus-1/*/* %{_datadir}/icons/hicolor/*/*/* %{_datadir}/%name/* %changelog * Thu Dec 31 2020 Pedro Lopez-Cabanillas 1.2.0 - New release * Tue Nov 5 2019 Pedro Lopez-Cabanillas 1.0.1 - New release * Sun Oct 12 2014 Pedro Lopez-Cabanillas 1.0.0 - Initial version kmetronome-1.3.0/PaxHeaders.13848/src0000644000000000000000000000013214155347442014162 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.353062933 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/0000755000175000001440000000000014155347442015023 5ustar00pedrousers00000000000000kmetronome-1.3.0/src/PaxHeaders.13848/about.h0000644000000000000000000000013214155347442015522 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.353062933 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/about.h0000644000175000001440000000200714155347442016305 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #ifndef ABOUT_H #define ABOUT_H #include "ui_about.h" #include class About : public QDialog { Q_OBJECT public: About(QWidget *parent = nullptr); void retranslateUi(); private: Ui::AboutClass ui; }; #endif // ABOUT_H kmetronome-1.3.0/src/PaxHeaders.13848/CMakeLists.txt0000644000000000000000000000013214155347442016777 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.353062933 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/CMakeLists.txt0000644000175000001440000000656514155347442017577 0ustar00pedrousers00000000000000# KMetronome - ALSA Sequencer based MIDI metronome # Copyright (C) 2005-2021 Pedro Lopez-Cabanillas # # 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, see . set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) if(EMBED_TRANSLATIONS) set( TRANSLATIONS ../translations/kmetronome_cs.ts ../translations/kmetronome_de.ts ../translations/kmetronome_es.ts ../translations/kmetronome_fr.ts ../translations/kmetronome_tr.ts ) if (QT_VERSION VERSION_LESS 5.15.0) qt5_add_translation(QM_FILES ${TRANSLATIONS}) else() qt_add_translation(QM_FILES ${TRANSLATIONS}) endif() include(TranslationUtils) add_app_translations_resource(APP_RES ${QM_FILES}) add_qt_translations_resource(QT_RES cs de es fr tr) endif() set(kmetronome_SRCS about.h drumgrid.h drumgridmodel.h iconutils.h kmetronome.h kmetropreferences.h lcdnumberview.h sequenceradapter.h defs.h instrument.h helpwindow.h about.cpp drumgrid.cpp drumgridmodel.cpp iconutils.cpp instrument.cpp kmetronome.cpp kmetropreferences.cpp lcdnumberview.cpp main.cpp sequenceradapter.cpp helpwindow.cpp about.ui drumgrid.ui kmetronome.ui kmetropreferencesbase.ui kmetronome.qrc lcdnumbers.qrc ../data/datafiles.qrc ../doc/docs.qrc ${APP_RES} ${QT_RES} ) if (QT_VERSION VERSION_LESS 5.15.0) qt5_add_dbus_adaptor( kmetronome_SRCS net.sourceforge.kmetronome.xml kmetronome.h KMetronome kmetronome_adaptor ) else() qt_add_dbus_adaptor( kmetronome_SRCS net.sourceforge.kmetronome.xml kmetronome.h KMetronome kmetronome_adaptor ) endif() set_property(SOURCE kmetronome_adaptor.h kmetronome_adaptor.cpp PROPERTY SKIP_AUTOGEN ON) add_executable( kmetronome ${kmetronome_SRCS} ) if (BUILD_DOCS) add_dependencies ( kmetronome update_helpfiles ) endif() target_link_libraries( kmetronome Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::DBus Qt${QT_VERSION_MAJOR}::Svg Drumstick::ALSA ) if (QT_VERSION VERSION_GREATER_EQUAL 6.0.0) target_link_libraries( kmetronome Qt6::Gui Qt6::SvgWidgets Qt6::Core5Compat ) endif() target_compile_definitions( kmetronome PRIVATE VERSION=${PROJECT_VERSION} $<$:TRANSLATIONS_EMBEDDED> ) if (DEFINED PROJECT_WC_REVISION) target_compile_definitions( ${PROJECT_NAME} PRIVATE REVISION=${PROJECT_WC_REVISION} ) endif() install( TARGETS kmetronome RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install( FILES net.sourceforge.kmetronome.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/dbus-1/interfaces ) kmetronome-1.3.0/src/PaxHeaders.13848/about.cpp0000644000000000000000000000013214155347442016055 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.353062933 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/about.cpp0000644000175000001440000000505614155347442016647 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #include #include "about.h" #include "iconutils.h" const QString PGM_VERSION(QT_STRINGIFY(VERSION)); const QString BLD_DATE(__DATE__); const QString BLD_TIME(__TIME__); #if defined(Q_CC_GNU) || defined(Q_CC_GCCE) const QString CMP_VERSION(__VERSION__); #elif defined(Q_CC_MSVC) const QString CMP_VERSION(QString::number(_MSC_VER/100.0,'g',2)); #else const QString CMP_VERSION(QString()); #endif About::About(QWidget *parent) : QDialog(parent) { ui.setupUi(this); retranslateUi(); IconUtils::SetLabelIcon(ui.labelIcon, ":/icons/midi/icon128.png"); IconUtils::SetWindowIcon(this); #if defined(SMALL_SCREEN) setWindowState(Qt::WindowActive | Qt::WindowMaximized); #else setMinimumSize(550,580); #endif } void About::retranslateUi() { QString strver = PGM_VERSION; #ifdef REVISION strver.append(" r"); strver.append(QT_STRINGIFY(REVISION)); #endif ui.retranslateUi(this); ui.labelVersion->setText(tr("" "" "" "" "" "" "

" "Version: %1
" "Qt version: %5
" "Drumstick version: %6
" "Build date: %2
" "Build time: %3
" "Compiler: %4" "

" "" "").arg(strver, BLD_DATE, BLD_TIME, CMP_VERSION, qVersion(), drumstick::ALSA::getDrumstickLibraryVersion())); } kmetronome-1.3.0/src/PaxHeaders.13848/sequenceradapter.h0000644000000000000000000000013214155347442017743 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.353062933 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/sequenceradapter.h0000644000175000001440000001457014155347442020536 0ustar00pedrousers00000000000000/*************************************************************************** * KMetronome - ALSA Sequencer based MIDI metronome * * Copyright (C) 2005-2021 Pedro Lopez-Cabanillas * * * * 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, see .* ***************************************************************************/ #ifndef SEQUENCERADAPTER_H #define SEQUENCERADAPTER_H namespace drumstick { class MidiPort; class MidiQueue; class SequencerEvent; }; #include class DrumGridModel; const int TAG_FIXED(0); const int TAG_WEAK(1); const int TAG_STRONG(2); class SequencerAdapter : public QObject, public drumstick::ALSA::SequencerEventHandler { Q_OBJECT public: SequencerAdapter(QObject *parent); virtual ~SequencerAdapter(); void setBank(int newValue) { m_bank = newValue; } void setProgram(int newValue) { m_program = newValue; } void setWeakNote(int newValue) { m_weak_note = newValue; } void setStrongNote(int newValue) { m_strong_note = newValue; } void setWeakVelocity(int newValue) { m_weak_velocity = newValue; } void setStrongVelocity(int newValue) { m_strong_velocity = newValue; } void setVolume(int newValue) { m_volume = newValue; } void setBalance(int newValue) { m_balance = newValue; } void setChannel(int newValue) { m_channel = newValue; } void setResolution(int newValue) { m_resolution = newValue; } void setBpm(int newValue) { m_bpm = newValue; } void setRhythmNumerator(int newValue) { m_ts_num = newValue; } void setRhythmDenominator(int newValue) { m_ts_div = newValue; } void setAutoConnect(bool newValue) { m_autoconnect = newValue; } void setOutputConn(QString newValue) { m_outputConn = newValue; } void setInputConn(QString newValue) { m_inputConn = newValue; } void setNoteDuration(int newValue) { m_noteDuration = newValue; } void setSendNoteOff(bool newValue) { m_useNoteOff = newValue; } void setPatternMode(bool newValue) { m_patternMode = newValue; } void setBankSelMethod(int newValue) { m_bankSelMethod = newValue; } void setModel(DrumGridModel* model) { m_model = model; } int getBank() { return m_bank; } int getProgram() { return m_program; } int getWeakNote() { return m_weak_note; } int getStrongNote() { return m_strong_note; } int getWeakVelocity() { return m_weak_velocity; } int getStrongVelocity() { return m_strong_velocity; } int getVolume() { return m_volume; } int getBalance() { return m_balance; } int getChannel() { return m_channel; } int getResolution() { return m_resolution; } int getBpm() { return m_bpm; } int getRhythmNumerator() { return m_ts_num; } int getRhythmDenominator() { return m_ts_div; } bool getAutoConnect() { return m_autoconnect; } bool isPlaying() { return m_playing; } QString getOutputConn() { return m_outputConn; } QString getInputConn() { return m_inputConn; } int getNoteDuration() { return m_noteDuration; } bool getSendNoteOff() { return m_useNoteOff; } bool getPatternMode() { return m_patternMode; } int getBankSelMethod() { return m_bankSelMethod; } void sendControlChange( int cc, int value ); void sendInitialControls(); void retranslateUi(); void metronome_start(); void metronome_stop(); void metronome_continue(); void metronome_set_bank(); void metronome_set_program(); void metronome_set_tempo(); void metronome_set_rhythm(); void metronome_set_controls(); void connect_output(); void disconnect_output(); void connect_input(); void disconnect_input(); QStringList inputConnections(); QStringList outputConnections(); int decodeVelocity(const QString drumVel); int decodeTag(const QString drumVel); void parse_sysex(drumstick::ALSA::SequencerEvent *ev); void metronome_note(int note, int vel, int tick, int tag); void metronome_echo(int tick, int ev_type); void metronome_simple_pattern(int tick); void metronome_grid_pattern(int tick); void metronome_event_output(drumstick::ALSA::SequencerEvent* ev); void metronome_note_output(drumstick::ALSA::SequencerEvent* ev); void metronome_schedule_event(drumstick::ALSA::SequencerEvent* ev, int tick); int calc_lsb(int x); int calc_msb(int x); //public Q_SLOTS: // void sequencerEvent(SequencerEvent *ev); // SequencerEventHandler method void handleSequencerEvent(drumstick::ALSA::SequencerEvent *ev) override; signals: void signalUpdate(int,int); void signalPlay(); void signalStop(); void signalCont(); void signalNotation(int,int); private: drumstick::ALSA::MidiClient* m_Client; drumstick::ALSA::MidiPort* m_Port; drumstick::ALSA::MidiQueue* m_Queue; DrumGridModel* m_model; int m_clientId; int m_inputPortId; int m_outputPortId; int m_queueId; int m_bar; int m_beat; int m_instrument; int m_bank; int m_program; int m_weak_note; int m_strong_note; int m_weak_velocity; int m_strong_velocity; int m_channel; int m_volume; int m_balance; int m_resolution; int m_bpm; int m_ts_num; /* time signature: numerator */ int m_ts_div; /* time signature: denominator */ int m_noteDuration; int m_bankSelMethod; int m_patternDuration; bool m_autoconnect; bool m_playing; bool m_useNoteOff; bool m_patternMode; QString m_outputConn; QString m_inputConn; QString NO_CONNECTION; }; #endif kmetronome-1.3.0/src/PaxHeaders.13848/drumgrid.cpp0000644000000000000000000000013214155347442016560 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.353062933 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/drumgrid.cpp0000644000175000001440000003501314155347442017346 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #include #include #include #include #include #include #include #include #include "defs.h" #include "drumgrid.h" #include "drumgridmodel.h" #include "sequenceradapter.h" #include "ui_drumgrid.h" #include "iconutils.h" DrumGrid::DrumGrid(QWidget *parent) : QDialog(parent), m_ui(new Ui::DrumGrid), m_seq(nullptr), m_model(nullptr), m_figure(PATTERN_FIGURE), m_columns(PATTERN_COLUMNS), m_internalIcons(false) { m_ui->setupUi(this); setWindowTitle( tr("Pattern Editor") ); resize( 700, 400 ); m_ui->tableView->setSelectionMode(QTableView::ContiguousSelection); QHeaderView *vH = m_ui->tableView->verticalHeader(); vH->setSectionResizeMode(QHeaderView::ResizeToContents); QHeaderView *hH = m_ui->tableView->horizontalHeader(); hH->setSectionResizeMode(QHeaderView::ResizeToContents); m_ui->startButton->setIcon(IconUtils::GetIcon("media-playback-start")); m_ui->startButton->setShortcut( Qt::Key_MediaPlay ); m_ui->stopButton->setIcon(IconUtils::GetIcon("media-playback-stop")); m_ui->stopButton->setShortcut( Qt::Key_MediaStop ); m_ui->saveButton->setIcon(IconUtils::GetIcon("document-save")); m_ui->deleteButton->setIcon(IconUtils::GetIcon("edit-delete")); m_ui->addButton->setIcon(IconUtils::GetIcon("list-add")); m_ui->removeButton->setIcon(IconUtils::GetIcon("list-remove")); m_ui->tempoSlider->setMaximum(TEMPO_MAX); m_ui->tempoSlider->setMinimum(TEMPO_MIN); m_ui->beatNumber->setDigitCount(2); m_ui->beatNumber->setNumber("1"); IconUtils::SetupComboFigures(m_ui->figureCombo); IconUtils::SetWindowIcon(this); m_popup = new QMenu(this); addEditAction(tr("Cut"), SLOT(slotCut()), QKeySequence::Cut); addEditAction(tr("Copy"), SLOT(slotCopy()), QKeySequence::Copy); addEditAction(tr("Paste"), SLOT(slotPaste()), QKeySequence::Paste); m_popup->addSeparator(); addShortcut(QKeySequence(Qt::Key_F), "f"); addShortcut(QKeySequence(Qt::Key_P), "p"); addShortcut(QKeySequence(Qt::Key_1), "1"); addShortcut(QKeySequence(Qt::Key_2), "2"); addShortcut(QKeySequence(Qt::Key_3), "3"); addShortcut(QKeySequence(Qt::Key_4), "4"); addShortcut(QKeySequence(Qt::Key_5), "5"); addShortcut(QKeySequence(Qt::Key_6), "6"); addShortcut(QKeySequence(Qt::Key_7), "7"); addShortcut(QKeySequence(Qt::Key_8), "8"); addShortcut(QKeySequence(Qt::Key_9), "9"); addShortcut(QKeySequence(Qt::Key_0), QString()); addShortcut(QKeySequence::Delete, QString()); connect( m_ui->startButton, SIGNAL(clicked()), SLOT(play())); connect( m_ui->stopButton, SIGNAL(clicked()), SLOT(stop())); connect( m_ui->tempoSlider, SIGNAL(valueChanged(int)), SLOT(slotTempoChanged(int))); connect( m_ui->gridColumns, SIGNAL(valueChanged(int)), SLOT(slotColumnsChanged(int))); connect( m_ui->figureCombo, SIGNAL(activated(int)), SLOT(slotFigureChanged(int))); connect( m_ui->patternCombo, SIGNAL(activated(int)), SLOT(patternChanged(int))); connect( m_ui->saveButton, SIGNAL(clicked()), SLOT(savePattern())); connect( m_ui->deleteButton, SIGNAL(clicked()), SLOT(removePattern())); connect( m_ui->addButton, SIGNAL(clicked()), SLOT(addRow())); connect( m_ui->removeButton, SIGNAL(clicked()), SLOT(removeRow())); connect( m_ui->tableView, SIGNAL(customContextMenuRequested(const QPoint&)), SLOT(gridContextMenu(const QPoint&)) ); connect( this, SIGNAL(signalUpdate(int,int)), SLOT(updateDisplay(int,int))); } DrumGrid::~DrumGrid() { foreach(QShortcut* s, m_shortcuts) delete s; delete m_ui; } void DrumGrid::setModel(DrumGridModel* model) { m_model = model; m_ui->tableView->setModel(m_model); connect ( m_ui->tableView, SIGNAL(doubleClicked(const QModelIndex&)), m_model, SLOT(changeCell(const QModelIndex &)) ); } void DrumGrid::setSequencer(SequencerAdapter* seq) { m_seq = seq; connect( m_seq, SIGNAL(signalUpdate(int,int)), SLOT(updateDisplay(int,int)), Qt::QueuedConnection); } void DrumGrid::setInstrument(const QString& instrument) { int bank = m_seq->getBank(); int patch = m_seq->getProgram(); m_model->loadKeyNames(instrument, bank, patch); } void DrumGrid::updateView() { m_ui->tableView->resizeColumnsToContents(); m_ui->tableView->resizeRowsToContents(); } void DrumGrid::enableWidgets(bool enable) { m_ui->gridColumns->setEnabled(enable); m_ui->figureCombo->setEnabled(enable); m_ui->addButton->setEnabled(enable); m_ui->removeButton->setEnabled(enable); m_ui->saveButton->setEnabled(enable); m_ui->deleteButton->setEnabled(enable); m_ui->patternCombo->setEnabled(enable); } void DrumGrid::setIcons(bool internal) { m_internalIcons = internal; m_ui->startButton->setIcon(IconUtils::GetIcon("media-playback-start", m_internalIcons)); m_ui->stopButton->setIcon(IconUtils::GetIcon("media-playback-stop", m_internalIcons)); m_ui->saveButton->setIcon(IconUtils::GetIcon("document-save", m_internalIcons)); m_ui->deleteButton->setIcon(IconUtils::GetIcon("edit-delete", m_internalIcons)); m_ui->addButton->setIcon(IconUtils::GetIcon("list-add", m_internalIcons)); m_ui->removeButton->setIcon(IconUtils::GetIcon("list-remove", m_internalIcons)); } void DrumGrid::play() { enableWidgets(false); m_seq->metronome_set_tempo(); m_seq->metronome_start(); } void DrumGrid::stop() { m_seq->metronome_stop(); enableWidgets(true); } void DrumGrid::slotTempoChanged(int newTempo) { m_seq->setBpm(newTempo); m_seq->metronome_set_tempo(); updateTempo(newTempo); } void DrumGrid::updateTempo(int newTempo) { m_ui->tempoLabel->setNum(newTempo); } void DrumGrid::slotFigureChanged(int idx) { m_figure = (int)pow(2, idx); m_model->setPatternFigure(m_figure); } void DrumGrid::setFigure(int newValue) { int ts_dd; int x = m_figure = newValue; for (ts_dd = 0; x > 1; x /= 2) ++ts_dd; m_ui->figureCombo->setCurrentIndex(ts_dd); m_model->setPatternFigure(newValue); } void DrumGrid::slotColumnsChanged(int columns) { m_columns = columns; m_model->updatePatternColumns(columns); updateView(); } void DrumGrid::shortcutPressed(const QString& value) { QModelIndex index = m_ui->tableView->currentIndex(); m_model->changeCell(index, value); } void DrumGrid::addShortcut(const QKeySequence& key, const QString& value) { QShortcut* shortcut = new QShortcut(key, m_ui->tableView); connect (shortcut, &QShortcut::activated, [=]{ shortcutPressed(value); }); m_shortcuts.append(shortcut); QAction* action = m_popup->addAction(value.isEmpty() ? key.toString() : value); connect(action, &QAction::triggered, [=]{ shortcutPressed(value); }); } void DrumGrid::addEditAction(const QString& name, const char* slot, const QKeySequence& key) { QShortcut* shortcut = new QShortcut(key, m_ui->tableView); connect (shortcut, SIGNAL(activated()), this, slot); m_shortcuts.append(shortcut); m_popup->addAction(name, this, slot, key); } void DrumGrid::readPattern() { QSettings settings; settings.beginGroup(QSTR_PATTERN+m_currentPattern); QStringList keys = settings.childKeys(); if (!keys.empty()) { setFigure(settings.value(QSTR_FIGURE, PATTERN_FIGURE).toInt()); int cols = settings.value(QSTR_BEATS, PATTERN_COLUMNS).toInt(); m_ui->gridColumns->setValue(cols); slotColumnsChanged(cols); keys.removeOne(QSTR_FIGURE); keys.removeOne(QSTR_BEATS); keys.sort(); m_model->clearPattern(); foreach(const QString& key, keys) { bool isNumber; int k = key.toInt(&isNumber); if (isNumber) { QStringList row = settings.value(key, QStringList()).toStringList(); m_model->addPatternData(k, row); } } m_model->endOfPattern(); } } void DrumGrid::readPattern(const QString& name) { m_currentPattern = name; readPattern(); } void DrumGrid::writePattern() { QSettings settings; settings.beginGroup(QSTR_PATTERN+m_currentPattern); settings.remove(""); settings.setValue(QSTR_FIGURE, m_figure); settings.setValue(QSTR_BEATS, m_columns); for(int r = 0; r < m_model->rowCount(); ++r) { settings.setValue( m_model->patternKey(r), m_model->patternData(r) ); } settings.endGroup(); settings.sync(); } void DrumGrid::writePattern(const QString& name) { m_currentPattern = name; writePattern(); } void DrumGrid::removePattern(const QString& name) { if( QMessageBox::question(this, tr("Remove Pattern"), tr("Do you want to remove the current pattern?")) == QMessageBox::Yes ) { QSettings settings; settings.remove(QSTR_PATTERN+name); settings.sync(); } } QStringList DrumGrid::patterns() { QStringList lst; int n = QSTR_PATTERN.size(); QSettings settings; foreach(const QString& name, settings.childGroups()) { if (name.startsWith(QSTR_PATTERN)) lst += name.mid(n); } return lst; } void DrumGrid::patternChanged(int /*idx*/) { readPattern(m_ui->patternCombo->currentText()); } void DrumGrid::savePattern() { QString newName = m_ui->patternCombo->currentText(); writePattern(newName); m_ui->patternCombo->setCurrentText(newName); } void DrumGrid::removePattern() { int idx = m_ui->patternCombo->currentIndex(); QString tmpPattern = m_ui->patternCombo->currentText(); m_ui->patternCombo->removeItem(idx); removePattern(tmpPattern); m_currentPattern.clear(); m_model->clearPattern(); if (m_ui->patternCombo->count() > 0) m_ui->patternCombo->setCurrentIndex(0); } void DrumGrid::showEvent(QShowEvent* /*event*/) { m_ui->tempoSlider->setValue(m_seq->getBpm()); updateTempo(m_seq->getBpm()); m_seq->setPatternMode(true); m_ui->patternCombo->clear(); m_ui->patternCombo->addItems(patterns()); if (m_currentPattern.isEmpty()) if (m_ui->patternCombo->count() == 0) { m_currentPattern = tr("Sample Pattern", "name of an automatically created pattern"); m_model->fillSampleData(); m_ui->patternCombo->setCurrentText(m_currentPattern); } else { m_currentPattern = m_ui->patternCombo->currentText(); readPattern(); } else m_ui->patternCombo->setCurrentText(m_currentPattern); updateView(); } void DrumGrid::done(int r) { stop(); m_seq->setPatternMode(false); if (r == QDialog::Accepted && !m_currentPattern.isEmpty()) writePattern(); QDialog::done(r); } void DrumGrid::updateDisplay(int /*bar*/, int beat) { if (m_ui->chkselbeat->isChecked()) m_ui->tableView->selectColumn(beat-1); m_ui->beatNumber->setNumber(QString("%1").arg(beat, 2, 10, QChar(' '))); } void DrumGrid::addRow() { QStringList keys = m_model->keyNames(); QString name = QInputDialog::getItem(this, tr("Insert Pattern Row"), tr("Drum Key:"), keys); if (!name.isEmpty()) m_model->insertPatternRow(name); } void DrumGrid::removeRow() { int row = -1; const QModelIndexList indexlist = m_ui->tableView->selectionModel()->selectedIndexes(); if (indexlist.count() == m_columns) { foreach (const QModelIndex& idx, indexlist) { if (row < 0) row = idx.row(); else if (row != idx.row()) { row = -1; break; } } } if (row < 0) QMessageBox::warning(this, tr("Sorry"), tr("Please select one, and only one row")); else if ( QMessageBox::question (this, tr("Remove Row"), tr("Do you want to remove the selected pattern row?")) == QMessageBox::Yes ) m_model->removePatternRow(row); } void DrumGrid::gridContextMenu(const QPoint&) { if (m_popup != nullptr) m_popup->exec(QCursor::pos()); } void DrumGrid::slotCut() { QStringList list; QItemSelectionModel* selModel = m_ui->tableView->selectionModel(); QItemSelectionRange range = selModel->selection().first(); QModelIndexList indexes = selModel->selectedIndexes(); for (int row=range.top(); row<=range.bottom(); ++row) { QStringList rowList; foreach ( const QModelIndex& idx, indexes ) { if (idx.row() == row) { rowList << idx.data().toString(); m_model->changeCell(idx, QString()); } } list << rowList.join(QString(',')); } qApp->clipboard()->setText( list.join(QString('\n')) ) ; } void DrumGrid::slotCopy() { QStringList list; QItemSelectionModel* selModel = m_ui->tableView->selectionModel(); QItemSelectionRange range = selModel->selection().first(); QModelIndexList indexes = selModel->selectedIndexes(); for (int row=range.top(); row<=range.bottom(); ++row) { QStringList rowList; foreach ( const QModelIndex& idx, indexes ) { if (idx.row() == row) rowList << idx.data().toString(); } list << rowList.join(QString(',')); } qApp->clipboard()->setText( list.join(QString('\n')) ) ; } void DrumGrid::slotPaste() { QString clbrdText = qApp->clipboard()->text(); if (!clbrdText.isEmpty()) { int x, y=0; QItemSelectionModel* selModel = m_ui->tableView->selectionModel(); QItemSelectionRange range = selModel->selection().first(); QStringList rows = clbrdText.split('\n'); foreach( const QString& r, rows ) { QStringList list = r.split(','); for(x=0; xindex(range.top()+y, range.left()+x); m_model->changeCell(idx, list.at(x)); } y++; } } } kmetronome-1.3.0/src/PaxHeaders.13848/drumgrid.ui0000644000000000000000000000013214155347442016413 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.353062933 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/drumgrid.ui0000644000175000001440000002705014155347442017203 0ustar00pedrousers00000000000000 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2005-2021 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> 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, see <http://www.gnu.org/licenses/>. DrumGrid 0 0 579 440 :/icons/midi/icon16.png:/icons/midi/icon16.png true true 120 16777215 QFrame::StyledPanel QFrame::Raised Rows: Use this button to add new rows (sounds) to the current pattern definition Add Use this button to remove the selected row (sound) from the pattern definition Remove Qt::Vertical 20 155 0 0 Beats: Highligh the grid columns while playing Highlight Columns 16777215 100 This is the current beat number QFrame::StyledPanel QFrame::Raised Pattern: patternCombo 0 0 Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. true This button stores the current pattern definition with the name given Save This button deletes the current pattern definition Delete QFrame::StyledPanel QFrame::Raised Number of beats per measure (bar) 1 99 16 This is the beat length for the pattern column. -1 0 This button starts playing the current pattern Play true true This button stops the playback Stop true true true QPM: quarters per minute QPM: tempoSlider This is the current tempo in quarters per minute 100 Drag the slider handle to change the tempo, in quarters per minute 10 250 100 Qt::Horizontal QSlider::TicksAbove Qt::CustomContextMenu This is the pattern table, beats as columns and sounds as rows 16 QDialogButtonBox::Cancel|QDialogButtonBox::Ok LCDNumberView QGraphicsView
lcdnumberview.h
patternCombo saveButton deleteButton tableView addButton removeButton chkselbeat gridColumns figureCombo startButton stopButton tempoSlider buttonBox accepted() DrumGrid accept() 560 407 566 481 buttonBox rejected() DrumGrid reject() 516 409 515 456
kmetronome-1.3.0/src/PaxHeaders.13848/kmetronome.qrc0000644000000000000000000000013214155347442017126 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.353062933 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/kmetronome.qrc0000644000175000001440000000245014155347442017713 0ustar00pedrousers00000000000000 icons/notevalues/1.png icons/notevalues/2.png icons/notevalues/4.png icons/notevalues/8.png icons/notevalues/16.png icons/notevalues/32.png icons/notevalues/64.png icons/midi/icon16.png icons/midi/icon32.png icons/midi/icon64.png icons/midi/icon128.png icons/document-save.png icons/edit-delete.png icons/go-home.png icons/go-previous.png icons/list-add.png icons/list-remove.png icons/media-playback-start.png icons/media-playback-stop.png icons/window-close.png icons/application-exit.png icons/configure.png icons/document-edit.png icons/document-export.png icons/document-import.png icons/help-contents.png icons/format-font-size-less.png icons/format-font-size-more.png kmetronome-1.3.0/src/PaxHeaders.13848/net.sourceforge.kmetronome.xml0000644000000000000000000000013214155347442022250 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.353062933 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/net.sourceforge.kmetronome.xml0000644000175000001440000000112314155347442023031 0ustar00pedrousers00000000000000 kmetronome-1.3.0/src/PaxHeaders.13848/about.ui0000644000000000000000000000013214155347442015710 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/about.ui0000644000175000001440000002526414155347442016505 0ustar00pedrousers00000000000000 Pedro Lopez-Cabanillas <plcl@users.sf.net> KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2005-2021 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> 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, see <http://www.gnu.org/licenses/>. AboutClass 0 0 506 548 About :/icons/midi/icon16.png:/icons/midi/icon16.png true true 0 QLayout::SetMinimumSize 3 3 3 3 0 QLayout::SetMinimumSize 0 0 160 160 160 160 false Qt::AlignCenter false 10 Qt::NoTextInteraction 0 0 280 170 Qt::RichText true 10 true 500 0 true 0 0 498 342 3 3 3 3 0 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Drumstick Metronome</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://kmetronome.sourceforge.io"><span style=" text-decoration: underline; color:#007af4;">https://kmetronome.sourceforge.io</span></a></p></body></html> true 0 0 0 277 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" font-family:'Sans Serif'; text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This program is free software; you can redistribute 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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">You should have received a copy of the GNU General Public License along with this program; if not, see </span><a href="https://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#007af4;">https://www.gnu.org/licenses/</span></a><span style=" font-family:'DejaVu Sans';">.</span></p></body></html> Qt::RichText true true QDialogButtonBox::Close buttonBox rejected() AboutClass close() 306 315 325 335 kmetronome-1.3.0/src/PaxHeaders.13848/instrument.cpp0000644000000000000000000000013214155347442017153 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/instrument.cpp0000644000175000001440000003547414155347442017754 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2005-2021 Pedro Lopez-Cabanillas For this file, the following copyright notice is also applicable: Copyright (C) 2005-2021, rncbc aka Rui Nuno Capela. All rights reserved. See http://qtractor.sourceforge.net 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, see . */ #include #include #include #include #include #include "instrument.h" #if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) #define endl Qt::endl #endif //---------------------------------------------------------------------- // class Instrument -- instrument definition instance class. // // Retrieve patch/program list for given bank address. const InstrumentData& Instrument::patch ( int iBank ) const { if (m_pData->patches.contains(iBank)) return m_pData->patches[iBank]; return m_pData->patches[-1]; } // Retrieve key/notes list for given (bank, prog) pair. const InstrumentData& Instrument::notes ( int iBank, int iProg ) const { if (m_pData->keys.contains(iBank)) { if (m_pData->keys[iBank].contains(iProg)) { return m_pData->keys[iBank][iProg]; } else { return m_pData->keys[iBank][-1]; } } else if (iBank >= 0) return notes(-1, iProg); return m_pData->keys[-1][-1]; } // Check if given (bank, prog) pair is a drum patch. bool Instrument::isDrum ( int iBank, int iProg ) const { if (m_pData->drums.contains(iBank)) { if (m_pData->drums[iBank].contains(iProg)) { return (bool) m_pData->drums[iBank][iProg]; } else { return (bool) m_pData->drums[iBank][-1]; } } else if (iBank >= 0) return isDrum(-1, iProg); return false; return isDrum(-1, iProg); } //---------------------------------------------------------------------- // class InstrumentList -- A Cakewalk .ins file container class. // // Clear all contents. void InstrumentList::clearAll (void) { clear(); m_patches.clear(); m_notes.clear(); m_controllers.clear(); m_rpns.clear(); m_nrpns.clear(); m_files.clear(); } // Special list merge method. void InstrumentList::merge ( const InstrumentList& instruments ) { // Maybe its better not merging to itself. if (this == &instruments) return; // Names data lists merge... mergeDataList(m_patches, instruments.patches()); mergeDataList(m_notes, instruments.notes()); mergeDataList(m_controllers, instruments.controllers()); mergeDataList(m_rpns, instruments.rpns()); mergeDataList(m_nrpns, instruments.nrpns()); // Instrument merge... InstrumentList::ConstIterator it; for (it = instruments.begin(); it != instruments.end(); ++it) { Instrument& instr = (*this)[it.key()]; instr = it.value(); } } // Special instrument data list merge method. void InstrumentList::mergeDataList ( InstrumentDataList& dst, const InstrumentDataList& src ) { InstrumentDataList::ConstIterator it; for (it = src.begin(); it != src.end(); ++it) dst[it.key()] = it.value(); } // The official loaded file list. const QStringList& InstrumentList::files (void) const { return m_files; } // File load method. bool InstrumentList::load ( const QString& sFilename ) { // Open and read from real file. QFile file(sFilename); if (!file.open(QIODevice::ReadOnly)) return false; enum FileSection { None = 0, PatchNames = 1, NoteNames = 2, ControlNames = 3, RpnNames = 4, NrpnNames = 5, InstrDefs = 6 } sect = None; Instrument *pInstrument = nullptr; InstrumentData *pData = nullptr; QRegExp rxTitle ("^\\[([^\\]]+)\\]$"); QRegExp rxData ("^([0-9]+)=(.*)$"); QRegExp rxBasedOn ("^BasedOn=(.+)$"); QRegExp rxBankSel ("^BankSelMethod=(0|1|2|3)$"); QRegExp rxUseNotes("^UsesNotesAsControllers=(0|1)$"); QRegExp rxControl ("^Control=(.+)$"); QRegExp rxRpn ("^RPN=(.+)$"); QRegExp rxNrpn ("^NRPN=(.+)$"); QRegExp rxPatch ("^Patch\\[([0-9]+|\\*)\\]=(.+)$"); QRegExp rxKey ("^Key\\[([0-9]+|\\*),([0-9]+|\\*)\\]=(.+)$"); QRegExp rxDrum ("^Drum\\[([0-9]+|\\*),([0-9]+|\\*)\\]=(0|1)$"); const QString s0_127("0..127"); const QString s1_128("1..128"); const QString s0_16383("0..16383"); const QString sAsterisk('*'); // Read the file. unsigned int iLine = 0; QTextStream ts(&file); while (!ts.atEnd()) { // Read the line. iLine++; QString sLine = ts.readLine().simplified(); // If not empty, nor a comment, call the server... if (sLine.isEmpty() || sLine[0] == ';') continue; // Check for section intro line... if (sLine[0] == '.') { if (sLine == ".Patch Names") { sect = PatchNames; // m_patches.clear(); m_patches[s0_127].setName(s0_127); m_patches[s1_128].setName(s1_128); } else if (sLine == ".Note Names") { sect = NoteNames; // m_notes.clear(); m_notes[s0_127].setName(s0_127); } else if (sLine == ".Controller Names") { sect = ControlNames; // m_controllers.clear(); m_controllers[s0_127].setName(s0_127); } else if (sLine == ".RPN Names") { sect = RpnNames; // m_rpns.clear(); m_rpns[s0_16383].setName(s0_16383); } else if (sLine == ".NRPN Names") { sect = NrpnNames; // m_nrpns.clear(); m_nrpns[s0_16383].setName(s0_16383); } else if (sLine == ".Instrument Definitions") { sect = InstrDefs; // clear(); } else { // Unknown section found... qWarning("%s(%d): %s: Unknown section.", sFilename.toUtf8().constData(), iLine, sLine.toUtf8().constData()); } // Go on... continue; } // Now it depends on the section... switch (sect) { case PatchNames: { if (rxTitle.exactMatch(sLine)) { // New patch name... const QString& sTitle = rxTitle.cap(1); pData = &(m_patches[sTitle]); pData->setName(sTitle); } else if (rxBasedOn.exactMatch(sLine)) { pData->setBasedOn(rxBasedOn.cap(1)); } else if (rxData.exactMatch(sLine)) { (*pData)[rxData.cap(1).toInt()] = rxData.cap(2); } else { qWarning("%s(%d): %s: Unknown .Patch Names entry.", sFilename.toUtf8().constData(), iLine, sLine.toUtf8().constData()); } break; } case NoteNames: { if (rxTitle.exactMatch(sLine)) { // New note name... const QString& sTitle = rxTitle.cap(1); pData = &(m_notes[sTitle]); pData->setName(sTitle); } else if (rxBasedOn.exactMatch(sLine)) { pData->setBasedOn(rxBasedOn.cap(1)); } else if (rxData.exactMatch(sLine)) { (*pData)[rxData.cap(1).toInt()] = rxData.cap(2); } else { qWarning("%s(%d): %s: Unknown .Note Names entry.", sFilename.toUtf8().constData(), iLine, sLine.toUtf8().constData()); } break; } case ControlNames: { if (rxTitle.exactMatch(sLine)) { // New controller name... const QString& sTitle = rxTitle.cap(1); pData = &(m_controllers[sTitle]); pData->setName(sTitle); } else if (rxBasedOn.exactMatch(sLine)) { pData->setBasedOn(rxBasedOn.cap(1)); } else if (rxData.exactMatch(sLine)) { (*pData)[rxData.cap(1).toInt()] = rxData.cap(2); } else { qWarning("%s(%d): %s: Unknown .Controller Names entry.", sFilename.toUtf8().constData(), iLine, sLine.toUtf8().constData()); } break; } case RpnNames: { if (rxTitle.exactMatch(sLine)) { // New RPN name... const QString& sTitle = rxTitle.cap(1); pData = &(m_rpns[sTitle]); pData->setName(sTitle); } else if (rxBasedOn.exactMatch(sLine)) { pData->setBasedOn(rxBasedOn.cap(1)); } else if (rxData.exactMatch(sLine)) { (*pData)[rxData.cap(1).toInt()] = rxData.cap(2); } else { qWarning("%s(%d): %s: Unknown .RPN Names entry.", sFilename.toUtf8().constData(), iLine, sLine.toUtf8().constData()); } break; } case NrpnNames: { if (rxTitle.exactMatch(sLine)) { // New NRPN name... const QString& sTitle = rxTitle.cap(1); pData = &(m_nrpns[sTitle]); pData->setName(sTitle); } else if (rxBasedOn.exactMatch(sLine)) { pData->setBasedOn(rxBasedOn.cap(1)); } else if (rxData.exactMatch(sLine)) { (*pData)[rxData.cap(1).toInt()] = rxData.cap(2); } else { qWarning("%s(%d): %s: Unknown .NRPN Names entry.", sFilename.toUtf8().constData(), iLine, sLine.toUtf8().constData()); } break; } case InstrDefs: { if (rxTitle.exactMatch(sLine)) { // New instrument definition... const QString& sTitle = rxTitle.cap(1); pInstrument = &((*this)[sTitle]); pInstrument->setInstrumentName(sTitle); } else if (rxBankSel.exactMatch(sLine)) { pInstrument->setBankSelMethod( rxBankSel.cap(1).toInt()); } else if (rxUseNotes.exactMatch(sLine)) { pInstrument->setUsesNotesAsControllers( (bool) rxBankSel.cap(1).toInt()); } else if (rxPatch.exactMatch(sLine)) { int iBank = (rxPatch.cap(1) == sAsterisk ? -1 : rxPatch.cap(1).toInt()); pInstrument->setPatch(iBank, m_patches[rxPatch.cap(2)]); } else if (rxControl.exactMatch(sLine)) { pInstrument->setControl(m_controllers[rxControl.cap(1)]); } else if (rxRpn.exactMatch(sLine)) { pInstrument->setRpn(m_rpns[rxRpn.cap(1)]); } else if (rxNrpn.exactMatch(sLine)) { pInstrument->setNrpn(m_nrpns[rxNrpn.cap(1)]); } else if (rxKey.exactMatch(sLine)) { int iBank = (rxKey.cap(1) == sAsterisk ? -1 : rxKey.cap(1).toInt()); int iProg = (rxKey.cap(2) == sAsterisk ? -1 : rxKey.cap(2).toInt()); pInstrument->setNotes(iBank, iProg, m_notes[rxKey.cap(3)]); } else if (rxDrum.exactMatch(sLine)) { int iBank = (rxDrum.cap(1) == sAsterisk ? -1 : rxDrum.cap(1).toInt()); int iProg = (rxDrum.cap(2) == sAsterisk ? -1 : rxKey.cap(2).toInt()); pInstrument->setDrum(iBank, iProg, (bool) rxDrum.cap(3).toInt()); } else { qWarning("%s(%d): %s: Unknown .Instrument Definitions entry.", sFilename.toUtf8().constData(), iLine, sLine.toUtf8().constData()); } break; } default: break; } } // Ok. We've read it all. file.close(); // We're in business... appendFile(sFilename); return true; } // File save method. bool InstrumentList::save ( const QString& sFilename ) { // Open and write into real file. QFile file(sFilename); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { return false; } // A visual separator line. const QString sepl = "; -----------------------------" "------------------------------------------------"; // Write the file. QTextStream ts(&file); ts << sepl << endl; ts << "; " << QObject::tr("Cakewalk Instrument Definition File") << endl; /* ts << ";" << endl; ts << "; " << _TITLE " - " << QObject::tr(_SUBTITLE) << endl; ts << "; " << QObject::tr("Version") << ": " _VERSION << endl; ts << "; " << QObject::tr("Build") << ": " __DATE__ " " __TIME__ << endl; */ ts << ";" << endl; ts << "; " << QObject::tr("File") << ": " << QFileInfo(sFilename).fileName() << endl; ts << "; " << QObject::tr("Date") << ": " << QDate::currentDate().toString("MMM dd yyyy") << " " << QTime::currentTime().toString("hh:mm:ss") << endl; ts << ";" << endl; // - Patch Names... ts << sepl << endl << endl; ts << ".Patch Names" << endl; saveDataList(ts, m_patches); // - Note Names... ts << sepl << endl << endl; ts << ".Note Names" << endl; saveDataList(ts, m_notes); // - Controller Names... ts << sepl << endl << endl; ts << ".Controller Names" << endl; saveDataList(ts, m_controllers); // - RPN Names... ts << sepl << endl << endl; ts << ".RPN Names" << endl; saveDataList(ts, m_rpns); // - NRPN Names... ts << sepl << endl << endl; ts << ".NRPN Names" << endl; saveDataList(ts, m_nrpns); // - Instrument Definitions... ts << sepl << endl << endl; ts << ".Instrument Definitions" << endl; ts << endl; InstrumentList::Iterator iter; for (iter = begin(); iter != end(); ++iter) { Instrument& instr = *iter; ts << "[" << instr.instrumentName() << "]" << endl; if (instr.bankSelMethod() > 0) ts << "BankSelMethod=" << instr.bankSelMethod() << endl; if (!instr.control().name().isEmpty()) ts << "Control=" << instr.control().name() << endl; if (!instr.rpn().name().isEmpty()) ts << "RPN=" << instr.rpn().name() << endl; if (!instr.nrpn().name().isEmpty()) ts << "NRPN=" << instr.nrpn().name() << endl; // - Patches... InstrumentPatches::ConstIterator pit; for (pit = instr.patches().begin(); pit != instr.patches().end(); ++pit) { int iBank = pit.key(); const QString sBank = (iBank < 0 ? QString("*") : QString::number(iBank)); ts << "Patch[" << sBank << "]=" << pit.value().name() << endl; } // - Keys... InstrumentKeys::ConstIterator kit; for (kit = instr.keys().begin(); kit != instr.keys().end(); ++kit) { int iBank = kit.key(); const QString sBank = (iBank < 0 ? QString("*") : QString::number(iBank)); const InstrumentNotes& notes = kit.value(); InstrumentNotes::ConstIterator nit; for (nit = notes.begin(); nit != notes.end(); ++nit) { int iProg = nit.key(); const QString sProg = (iProg < 0 ? QString("*") : QString::number(iProg)); ts << "Key[" << sBank << "," << sProg << "]=" << nit.value().name() << endl; } } // - Drums... InstrumentDrums::ConstIterator dit; for (dit = instr.drums().begin(); dit != instr.drums().end(); ++dit) { int iBank = dit.key(); const QString sBank = (iBank < 0 ? QString("*") : QString::number(iBank)); const InstrumentDrumFlags& flags = dit.value(); InstrumentDrumFlags::ConstIterator fit; for (fit = flags.begin(); fit != flags.end(); ++fit) { int iProg = fit.key(); const QString sProg = (iProg < 0 ? QString("*") : QString::number(iProg)); ts << "Drum[" << sBank << "," << sProg << "]=" << fit.value() << endl; } } ts << endl; } // Done. file.close(); return true; } void InstrumentList::saveDataList ( QTextStream& ts, const InstrumentDataList& list ) { ts << endl; InstrumentDataList::ConstIterator it; for (it = list.begin(); it != list.end(); ++it) { ts << "[" << it.value().name() << "]" << endl; saveData(ts, it.value()); } } void InstrumentList::saveData ( QTextStream& ts, const InstrumentData& data ) { if (!data.basedOn().isEmpty()) ts << "BasedOn=" << data.basedOn() << endl; InstrumentData::ConstIterator it; for (it = data.constBegin(); it != data.constEnd(); ++it) ts << it.key() << "=" << it.value() << endl; ts << endl; } kmetronome-1.3.0/src/PaxHeaders.13848/kmetronome.ui0000644000000000000000000000013214155347442016756 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/kmetronome.ui0000644000175000001440000005401414155347442017546 0ustar00pedrousers00000000000000 KMetronomeWindow 0 0 396 430 Drumstick Metronome QLayout::SetNoConstraint QLayout::SetNoConstraint 0 200 0 0 0 0 0 0 This button starts playing the rhythm pattern Play false 0 0 This button stops playing the rhythm pattern Stop 0 0 This button opens the configuration window Settings This button opens the pattern editor Patterns 0 0 This button exits the program Quit Qt::Vertical 20 60 QLayout::SetNoConstraint 0 0 Number of measures (bars) and beats played from beginning QLayout::SetNoConstraint QFormLayout::AllNonFixedFieldsGrow Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 0 0 This is the pattern definition to play, either "Automatic" or a custom defined one. Beats/Bar: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter m_beatsBar 60 16777215 This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. 4 32 1 Beat Length: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false m_figure This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. -1 0 Pattern: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter m_pattern Weak Qt::AlignBottom|Qt::AlignHCenter m_dial1 Strong Qt::AlignBottom|Qt::AlignHCenter m_dial2 Volume Qt::AlignBottom|Qt::AlignHCenter m_dial3 Pan Qt::AlignBottom|Qt::AlignHCenter m_dial4 50 50 This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) 127 1 10.000000000000000 true 50 50 This is the velocity of the strong note in the automatic rhythm pattern (the first one) 127 1 10.000000000000000 true 50 50 This is the MIDI volume control (CC7) 127 1 10.000000000000000 true 50 50 This is the MIDI pan control (CC10) 127 1 10.000000000000000 true This is the musical name of the tempo value 0 0 150 100 150 100 The current <i>tempo</i> value QLayout::SetNoConstraint 0 0 Tempo (in quarters per minute) false m_tempo 0 0 0 0 This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). 25 250 100 Qt::Horizontal QSlider::TicksBelow 5 0 0 396 23 File Edit Help language Settings toolBar 32 32 TopToolBarArea false .. Import Patterns .. Export Patterns true .. Play/Stop .. Edit Patterns .. Configuration about Quit Ctrl+Q true true Show Action Buttons true true Show Toolbar about Qt Help Contents LCDNumberView QGraphicsView
lcdnumberview.h
actionShowToolbar toggled(bool) toolBar setVisible(bool) -1 -1 197 42 toolBar visibilityChanged(bool) actionShowToolbar setChecked(bool) 197 42 -1 -1
kmetronome-1.3.0/src/PaxHeaders.13848/lcdnumbers.svg0000644000000000000000000000013214155347442017116 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/lcdnumbers.svg0000644000175000001440000002766614155347442017723 0ustar00pedrousers00000000000000 kmetronome-1.3.0/src/PaxHeaders.13848/instrument.h0000644000000000000000000000013214155347442016620 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/instrument.h0000644000175000001440000002223414155347442017407 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2005-2021 Pedro Lopez-Cabanillas For this file, the following copyright notice is also applicable: Copyright (C) 2005-2021, rncbc aka Rui Nuno Capela. All rights reserved. See http://qtractor.sourceforge.net 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, see . */ /* Library of compatible instrument definitions: ftp://ftp.cakewalk.com/pub/InstrumentDefinitions/ */ #ifndef INSTRUMENT_H #define INSTRUMENT_H #include #include // Forward declarations. class QTextStream; //---------------------------------------------------------------------- // class InstrumentData -- instrument definition data classes. // class InstrumentData { public: typedef QMap DataMap; // Constructor. InstrumentData() : m_pData(new DataRef()) {} // Copy constructor. InstrumentData(const InstrumentData& data) { attach(data); } // Destructor. ~InstrumentData() { detach(); } // Assignment operator. InstrumentData& operator= (const InstrumentData& data) { if (m_pData != data.m_pData) { detach(); attach(data); } return *this; } // Accessor operator. QString& operator[] (int iIndex) const { return m_pData->map[iIndex]; } // Property accessors. void setName(const QString& sName) { m_pData->name = sName; } const QString& name() const { return m_pData->name; } void setBasedOn(const QString& sBasedOn) { m_pData->basedOn = sBasedOn; } const QString& basedOn() const { return m_pData->basedOn; } // Indirect iterator stuff. typedef DataMap::Iterator Iterator; Iterator begin() { return m_pData->map.begin(); } Iterator end() { return m_pData->map.end(); } typedef DataMap::ConstIterator ConstIterator; ConstIterator constBegin() const { return m_pData->map.constBegin(); } ConstIterator constEnd() const { return m_pData->map.constEnd(); } unsigned int count() const { return m_pData->map.count(); } bool contains(int iKey) const { return m_pData->map.contains(iKey); } protected: // Copy/clone method. void attach(const InstrumentData& data) { m_pData = data.m_pData; m_pData->refCount++; } // Destroy method. void detach() { if (--(m_pData->refCount) == 0) delete m_pData; } private: // The ref-counted data. struct DataRef { // Default payload constructor. DataRef() : refCount(1) {}; // Payload members. int refCount; QString name; QString basedOn; DataMap map; } * m_pData; }; class InstrumentDataList : public QMap {}; class InstrumentPatches : public QMap {}; class InstrumentNotes : public QMap {}; class InstrumentKeys : public QMap {}; class InstrumentDrumFlags : public QMap {}; class InstrumentDrums : public QMap {}; //---------------------------------------------------------------------- // class Instrument -- instrument definition instance class. // class Instrument { public: // Constructor. Instrument() : m_pData(new DataRef()) {} // Copy constructor. Instrument(const Instrument& instr) { attach(instr); } // Destructor. ~Instrument() { detach(); } // Assignment operator. Instrument& operator= (const Instrument& instr) { if (m_pData != instr.m_pData) { detach(); attach(instr); } return *this; } // Instrument title property accessors. void setInstrumentName(const QString& sInstrumentName) { m_pData->instrumentName = sInstrumentName; } const QString& instrumentName() const { return m_pData->instrumentName; } // BankSelMethod accessors. void setBankSelMethod(int iBankSelMethod) { m_pData->bankSelMethod = iBankSelMethod; } int bankSelMethod() const { return m_pData->bankSelMethod; } void setUsesNotesAsControllers(bool bUsesNotesAsControllers) { m_pData->usesNotesAsControllers = bUsesNotesAsControllers; } bool usesNotesAsControllers() const { return m_pData->usesNotesAsControllers; } // Patch banks accessors. const InstrumentPatches& patches() const { return m_pData->patches; } const InstrumentData& patch(int iBank) const; void setPatch(int iBank, const InstrumentData& patch) { m_pData->patches[iBank] = patch; } // Control names accessors. void setControlName(const QString& sControlName) { m_pData->control.setName(sControlName); } const QString& controlName() const { return m_pData->control.name(); } void setControl(const InstrumentData& control) { m_pData->control = control; } const InstrumentData& control() const { return m_pData->control; } // RPN names accessors. void setRpnName(const QString& sRpnName) { m_pData->rpn.setName(sRpnName); } const QString& rpnName() const { return m_pData->rpn.name(); } void setRpn(const InstrumentData& rpn) { m_pData->rpn = rpn; } const InstrumentData& rpn() const { return m_pData->rpn; } // NRPN names accessors. void setNrpnName(const QString& sNrpnName) { m_pData->nrpn.setName(sNrpnName); } const QString& nrpnName() const { return m_pData->nrpn.name(); } void setNrpn(const InstrumentData& nrpn) { m_pData->nrpn = nrpn; } const InstrumentData& nrpn() const { return m_pData->nrpn; } // Keys banks accessors. const InstrumentData& notes(int iBank, int iProg) const; void setNotes(int iBank, int iProg, const InstrumentData& notes) { m_pData->keys[iBank][iProg] = notes; } const InstrumentKeys& keys() const { return m_pData->keys; } // Drumflags banks accessors. bool isDrum(int iBank, int iProg) const; void setDrum(int iBank, int iProg, bool bDrum) { m_pData->drums[iBank][iProg] = (int) bDrum; } const InstrumentDrums& drums() const { return m_pData->drums; } protected: // Copy/clone method. void attach(const Instrument& instr) { m_pData = instr.m_pData; m_pData->refCount++; } // Destroy method. void detach() { if (--(m_pData->refCount) == 0) delete m_pData; } private: // The ref-counted data. struct DataRef { // Default payload constructor. DataRef() : refCount(1), bankSelMethod(0), usesNotesAsControllers(false) {}; // Payload members. int refCount; int bankSelMethod; bool usesNotesAsControllers; QString instrumentName; InstrumentPatches patches; InstrumentData control; InstrumentData rpn; InstrumentData nrpn; InstrumentKeys keys; InstrumentDrums drums; } * m_pData; }; //---------------------------------------------------------------------- // class InstrumentList -- A Cakewalk .ins file container class. // class InstrumentList : public QMap { public: // Open file methods. bool load(const QString& sFilename); bool save(const QString& sFilename); // The official loaded file list. const QStringList& files() const; // Manage a file list (out of sync) void appendFile(const QString& sFilename) { m_files.append(sFilename); } void removeFile(const QString& sFilename) { int iFile = m_files.indexOf(sFilename); if (iFile >= 0) m_files.removeAt(iFile); } // Patch Names definition accessors. const InstrumentDataList& patches() const { return m_patches; } const InstrumentData& patch(const QString& sName) { return m_patches[sName]; } // Note Names definition accessors. const InstrumentDataList& notes() const { return m_notes; } InstrumentData& note(const QString& sName) { return m_notes[sName]; } // Controller Names definition accessors. const InstrumentDataList& controllers() const { return m_controllers; } InstrumentData& controller(const QString& sName) { return m_controllers[sName]; } // RPN Names definition accessors. const InstrumentDataList& rpns() const { return m_rpns; } InstrumentData& rpn(const QString& sName) { return m_rpns[sName]; } // NRPN Names definition accessors. const InstrumentDataList& nrpns() const { return m_nrpns; } InstrumentData& nrpn(const QString& sName) { return m_nrpns[sName]; } // Clear all contents. void clearAll(); // Special instrument list merge method. void merge(const InstrumentList& instruments); protected: // Internal instrument data list save method helpers. void saveDataList(QTextStream& ts, const InstrumentDataList& list); void saveData(QTextStream& ts, const InstrumentData& data); // Special instrument data list merge method. void mergeDataList(InstrumentDataList& dst, const InstrumentDataList& src); private: // To hold the names definition lists. InstrumentDataList m_patches; InstrumentDataList m_notes; InstrumentDataList m_controllers; InstrumentDataList m_rpns; InstrumentDataList m_nrpns; // To old the official file list. QStringList m_files; }; #endif // INSTRUMENT_H kmetronome-1.3.0/src/PaxHeaders.13848/lcdnumberview.h0000644000000000000000000000013214155347442017256 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/lcdnumberview.h0000644000175000001440000000270614155347442020047 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #ifndef LCDNUMBERVIEW_H #define LCDNUMBERVIEW_H #include #include #include #include class LCDNumberView : public QGraphicsView { Q_OBJECT public: explicit LCDNumberView(QWidget *parent = nullptr); QString number(); int digitCount(); void setDigitCount(const int count); void loadRenderer(); void update(); void rescale(); void resizeEvent(QResizeEvent *event) override; public slots: void setNumber(const QString& number); private: QSvgRenderer m_renderer; QString m_number; qreal m_digitWidth; qreal m_digitHeight; int m_digitsCount; }; #endif // LCDNUMBERVIEW_H kmetronome-1.3.0/src/PaxHeaders.13848/kmetropreferences.cpp0000644000000000000000000000013214155347442020466 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/kmetropreferences.cpp0000644000175000001440000001341714155347442021260 0ustar00pedrousers00000000000000/*************************************************************************** * KMetronome - ALSA Sequencer based MIDI metronome * * Copyright (C) 2005-2021 Pedro Lopez-Cabanillas * * * * 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, see .* ***************************************************************************/ #include #include #include "kmetropreferences.h" #include "iconutils.h" KMetroPreferences::KMetroPreferences(QWidget *parent) : QDialog(parent) { m_ui.setupUi(this); setWindowTitle(tr("Preferences")); connect( m_ui.m_instrument, SIGNAL(currentIndexChanged(int)), SLOT(slotInstrumentChanged(int))); connect( m_ui.m_bank, SIGNAL(currentIndexChanged(int)), SLOT(slotBankChanged(int))); connect( m_ui.m_program, SIGNAL(currentIndexChanged(int)), SLOT(slotProgramChanged(int))); IconUtils::SetWindowIcon(this); } KMetroPreferences::~KMetroPreferences() {} void KMetroPreferences::setOutputConnection(QString newValue) { int index = m_ui.m_out_connection->findText(newValue); if (index >= 0) { m_ui.m_out_connection->setCurrentIndex(index); } } void KMetroPreferences::setInputConnection(QString newValue) { int index = m_ui.m_in_connection->findText(newValue); if (index >= 0) { m_ui.m_in_connection->setCurrentIndex(index); } } void KMetroPreferences::fillInstruments(InstrumentList* instruments) { m_insList = instruments; InstrumentList::ConstIterator it; for(it = m_insList->constBegin(); it != m_insList->constEnd(); ++it) { //kDebug() << it.key(); m_ui.m_instrument->addItem(it.key()); } } void KMetroPreferences::fillStyles() { QStringList styleNames = QStyleFactory::keys(); m_ui.m_style->addItems(styleNames); QString currentStyle = qApp->style()->objectName(); foreach(const QString& s, styleNames) { if (QString::compare(s, currentStyle, Qt::CaseInsensitive) == 0) { m_ui.m_style->setCurrentText(s); break; } } } void KMetroPreferences::slotInstrumentChanged(int /*idx*/) { QString name = m_ui.m_instrument->currentText(); m_ins = m_insList->value(name); const InstrumentPatches& patches = m_ins.patches(); InstrumentPatches::ConstIterator j; m_ui.m_bank->clear(); m_ui.m_program->clear(); m_ui.m_weak_note->clear(); m_ui.m_strong_note->clear(); for( j = patches.constBegin(); j != patches.constEnd(); ++j ) { InstrumentData patch = j.value(); m_ui.m_bank->addItem(patch.name(), j.key()); } } void KMetroPreferences::slotBankChanged(int idx) { m_ui.m_program->clear(); m_ui.m_weak_note->clear(); m_ui.m_strong_note->clear(); if (idx < 0) return; int bank = m_ui.m_bank->itemData(idx).toInt(); const InstrumentData& patch = m_ins.patch(bank); InstrumentData::ConstIterator k; for( k = patch.constBegin(); k != patch.constEnd(); ++k ) { m_ui.m_program->addItem(k.value(), k.key()); } } void KMetroPreferences::slotProgramChanged(int idx) { if (idx < 0) return; int bank = m_ui.m_bank->itemData(m_ui.m_bank->currentIndex()).toInt(); int patch = m_ui.m_program->itemData(idx).toInt(); m_ui.m_weak_note->clear(); m_ui.m_strong_note->clear(); const InstrumentData& notes = m_ins.notes(bank, patch); InstrumentData::ConstIterator k; for( k = notes.constBegin(); k != notes.constEnd(); ++k ) { m_ui.m_weak_note->addItem(k.value(), k.key()); m_ui.m_strong_note->addItem(k.value(), k.key()); } } int KMetroPreferences::getWeakNote() { return m_ui.m_weak_note->itemData( m_ui.m_weak_note->currentIndex() ).toInt(); } int KMetroPreferences::getStrongNote() { return m_ui.m_strong_note->itemData( m_ui.m_strong_note->currentIndex() ).toInt(); } void KMetroPreferences::setWeakNote(int newValue) { QString test = QString::number(newValue); int idx = m_ui.m_weak_note->findData(test); m_ui.m_weak_note->setCurrentIndex(idx); } void KMetroPreferences::setStrongNote(int newValue) { QString test = QString::number(newValue); int idx = m_ui.m_strong_note->findData(test); m_ui.m_strong_note->setCurrentIndex(idx); } QString KMetroPreferences::getInstrumentName() { return m_ui.m_instrument->currentText(); } QString KMetroPreferences::getProgramName() { return m_ui.m_program->currentText(); } QString KMetroPreferences::getBankName() { return m_ui.m_bank->currentText(); } QString KMetroPreferences::getStyle() { return m_ui.m_style->currentText(); } void KMetroPreferences::setInstrumentName(QString name) { m_ui.m_instrument->setCurrentText(name); } void KMetroPreferences::setProgramName(QString name) { m_ui.m_program->setCurrentText(name); } void KMetroPreferences::setBankName(QString name) { m_ui.m_bank->setCurrentText(name); } kmetronome-1.3.0/src/PaxHeaders.13848/drumgrid.h0000644000000000000000000000013214155347442016225 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/drumgrid.h0000644000175000001440000000541614155347442017017 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #ifndef DRUMGRID_H #define DRUMGRID_H #include "defs.h" #include #include #include #include #include namespace Ui { class DrumGrid; } class SequencerAdapter; class DrumGridModel; class DrumGrid : public QDialog { Q_OBJECT public: DrumGrid(QWidget *parent = nullptr); virtual ~DrumGrid(); void setSequencer(SequencerAdapter* seq); void setModel(DrumGridModel* model); void subscribe(const QString& portName); void addShortcut(const QKeySequence& key, const QString& value); void addEditAction(const QString& name, const char* slot, const QKeySequence& key); void readPattern(); void readPattern(const QString& name); void writePattern(); void writePattern(const QString& name); void removePattern(const QString& name); void updateTempo(int newTempo); void showEvent(QShowEvent* event) override; void done(int r) override; QStringList patterns(); QString currentPattern() { return m_currentPattern; } void setFigure(int figure); void setInstrument(const QString& instrument); void enableWidgets(bool enable); void setIcons(bool internal); public slots: void updateView(); void play(); void stop(); void slotTempoChanged(int newTempo); void slotColumnsChanged(int columns); void slotFigureChanged(int idx); void shortcutPressed(const QString& value); void updateDisplay(int bar, int beat); void patternChanged(int idx); void savePattern(); void removePattern(); void addRow(); void removeRow(); void gridContextMenu( const QPoint& ); void slotCut(); void slotCopy(); void slotPaste(); signals: void signalUpdate(int bar, int beat); private: Ui::DrumGrid *m_ui; SequencerAdapter *m_seq; DrumGridModel* m_model; int m_figure; int m_columns; unsigned long m_tick; QVector m_shortcuts; QString m_currentPattern; QMenu* m_popup; bool m_internalIcons; }; #endif // DRUMGRID_H kmetronome-1.3.0/src/PaxHeaders.13848/iconutils.cpp0000644000000000000000000000013214155347442016754 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/iconutils.cpp0000644000175000001440000000603414155347442017543 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #include #include #include #include "iconutils.h" namespace IconUtils { void PaintPixmap(QPixmap &pixmap, const QColor& color) { if (!pixmap.isNull()) { QPainter painter(&pixmap); painter.setRenderHints(QPainter::SmoothPixmapTransform | QPainter::Antialiasing); painter.setCompositionMode(QPainter::CompositionMode_SourceIn); painter.fillRect(pixmap.rect(), color); } } QPixmap GetPixmap(const QString& fileName) { QPixmap pixmap; if (QFileInfo::exists(fileName)) { QImage image(fileName); pixmap = QPixmap::fromImage(image); if (image.allGray()) { PaintPixmap(pixmap, qApp->palette().color(QPalette::Active, QPalette::WindowText)); } } return pixmap; } QIcon GetIcon(const QString& name, bool forcedIconTheme) { QIcon icon; if (!forcedIconTheme && QIcon::hasThemeIcon(name)) { icon = QIcon::fromTheme(name); } if (icon.isNull() || forcedIconTheme) { QString iconName = QString(":/icons/%1.png").arg(name); icon = QIcon(GetPixmap(iconName)); } return icon; } void SetLabelIcon(QLabel *label, const QString& fileName) { label->setPixmap(GetPixmap(fileName)); } void SetupComboFigures(QComboBox *combo) { QList> elements = { {QApplication::tr("Whole"), ":/icons/notevalues/1.png" }, {QApplication::tr("Half"), ":/icons/notevalues/2.png" }, {QApplication::tr("Quarter"), ":/icons/notevalues/4.png" }, {QApplication::tr("Eight"), ":/icons/notevalues/8.png" }, {QApplication::tr("Sixteenth"), ":/icons/notevalues/16.png" }, {QApplication::tr("Thirty-Second"), ":/icons/notevalues/32.png" }, {QApplication::tr("Sixty-Fourth"), ":/icons/notevalues/64.png" } }; for(const auto &p : elements) { combo->addItem(QIcon(GetPixmap(p.second)), p.first); } } void SetWindowIcon(QWidget *widget) { widget->setWindowIcon(QIcon(GetPixmap(":/icons/midi/icon64.png"))); } } kmetronome-1.3.0/src/PaxHeaders.13848/drumgridmodel.cpp0000644000000000000000000000013214155347442017601 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/drumgridmodel.cpp0000644000175000001440000001454114155347442020372 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #include "drumgridmodel.h" #include "instrument.h" #include const QString DEFVAL("f"); DrumGridModel::DrumGridModel(QObject *parent) : QAbstractTableModel(parent), m_columns(PATTERN_COLUMNS), m_figure(PATTERN_FIGURE), m_lastValue(DEFVAL), m_insList(nullptr) { m_modelData.clear(); m_keys.clear(); } void DrumGridModel::setInstrumentList(InstrumentList* instruments) { m_insList = instruments; } void DrumGridModel::loadKeyNames(const QString& instrument, int bank, int patch) { if (m_insList != nullptr) { Instrument ins = m_insList->value(instrument); const InstrumentData& notes = ins.notes(bank, patch); InstrumentData::ConstIterator k; m_keyNames.clear(); for( k = notes.constBegin(); k != notes.constEnd(); ++k ) m_keyNames[k.key()] = k.value(); } } void DrumGridModel::fillSampleData() { beginInsertRows(QModelIndex(), 0, 4); m_modelData.insert(0, QString(",p,,,,p,,,,p,,,,p,,").split(',')); m_modelData.insert(1, QString("f,,,p,f,,,p,f,,,p,f,,,p").split(',')); m_modelData.insert(2, QString(",,,,,,,,,,,,,4,4,").split(',')); m_modelData.insert(3, QString(",,,,f,,,,,,,,f,,,").split(',')); m_modelData.insert(4, QString("f,,,,p,,,,f,,,,p,,,").split(',')); m_keys.insert(0, 46); m_keys.insert(1, 42); m_keys.insert(2, 39); m_keys.insert(3, 38); m_keys.insert(4, 36); endInsertRows(); setPatternFigure(PATTERN_FIGURE); updatePatternColumns(PATTERN_COLUMNS); } int DrumGridModel::rowCount(const QModelIndex & /* parent */) const { return m_modelData.count(); } int DrumGridModel::columnCount(const QModelIndex & /* parent */) const { return m_columns; } QVariant DrumGridModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || role != Qt::DisplayRole || index.row() > m_modelData.count() || index.column() > m_columns ) return QVariant(); return m_modelData[index.row()][index.column()].trimmed(); } QVariant DrumGridModel::headerData(int section , Qt::Orientation orientation, int role) const { if (role == Qt::DisplayRole) { if ( orientation == Qt::Horizontal ) { int m = section % 10; if (m == 9) m = 0; else m++; return QString::number(m); } else { int k = m_keys.value(section, 0); if (m_keyNames.contains(k)) return m_keyNames[k]; else return QString::number(k); } } return QVariant(); } void DrumGridModel::changeCell(const QModelIndex &index) { QString after, before = m_modelData[index.row()][index.column()]; if (before.isEmpty()) after = m_lastValue; else after.clear(); changeCell(index, after); } void DrumGridModel::changeCell(const QModelIndex &index, const QString& newValue) { const QString validation("fp123456789"); if (index.isValid() && !m_modelData.isEmpty()) { QString cell = newValue; if (cell.length() > 1) cell = cell.left(1); if (cell.isNull() || validation.contains(cell)) { m_lastValue = m_modelData[index.row()][index.column()] = cell; emit dataChanged(index, index); } } } QStringList DrumGridModel::patternData(int row) { return m_modelData.value(row, QStringList()); } QString DrumGridModel::patternKey(int row) { return QString::number(m_keys.value(row, 0)); } void DrumGridModel::clearPattern() { beginResetModel(); m_modelData.clear(); m_keys.clear(); m_tempData.clear(); m_tempKeys.clear(); endResetModel(); } void DrumGridModel::addPatternData(int key, const QStringList& row) { m_tempKeys.prepend(key); m_tempData.prepend(row); } void DrumGridModel::endOfPattern() { beginInsertRows(QModelIndex(), 0, m_tempData.count()-1); m_keys = m_tempKeys; m_modelData = m_tempData; endInsertRows(); } void DrumGridModel::updatePatternColumns(int columns) { int diff = m_columns - columns; if (diff == 0) return; if (diff > 0) { beginRemoveColumns(QModelIndex(), columns, m_columns-1); for(int i=0; i columns ) m_modelData[i].removeLast(); } else { beginInsertColumns(QModelIndex(), columns, columns-diff-1); for(int i=0; i 0) endRemoveColumns(); else endInsertColumns(); } QString DrumGridModel::patternHit(int row, int col) { if ((col < m_columns) && (row < m_modelData.size())) return m_modelData[row][col].trimmed(); return QString(); } void DrumGridModel::insertPatternRow(const QString& name) { int i = 0, j = 0, key = m_keyNames.key(name); QStringList data; for (i = 0; i < m_columns; ++i) data.append(QString()); while (j < m_keys.count() && m_keys[j] > key) j++; beginInsertRows(QModelIndex(), j, j); m_keys.insert(j, key); m_modelData.insert(j, data); endInsertRows(); } void DrumGridModel::removePatternRow(int row) { beginRemoveRows(QModelIndex(), row, row); m_modelData.removeAt(row); m_keys.removeAt(row); endRemoveRows(); } QStringList DrumGridModel::keyNames() { QStringList tmp = m_keyNames.values(); foreach(int key, m_keys) tmp.removeOne(m_keyNames[key]); return tmp; } kmetronome-1.3.0/src/PaxHeaders.13848/helpwindow.cpp0000644000000000000000000000013214155347442017123 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/helpwindow.cpp0000644000175000001440000001347014155347442017714 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #include #include #include #include #include #include #include #include #include #include #if QT_VERSION < QT_VERSION_CHECK(5,14,0) #include #else #include #endif #include "kmetronome.h" #include "helpwindow.h" #include "iconutils.h" HelpWindow::HelpWindow(QWidget *parent): QMainWindow(parent) { setObjectName(QString::fromUtf8("HelpWindow")); IconUtils::SetWindowIcon(this); setWindowFlag(Qt::Tool, true); setAttribute(Qt::WA_DeleteOnClose, false); QToolBar* tbar = new QToolBar(this); tbar->setObjectName("toolbar"); tbar->setMovable(false); tbar->setFloatable(false); tbar->setIconSize(QSize(22,22)); tbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); addToolBar(tbar); m_textBrowser = new QTextBrowser(this); m_home = new QAction(tr("&Home"), this); m_back = new QAction(tr("&Back"), this); m_close = new QAction(tr("Close"), this); m_zoomIn = new QAction(tr("Zoom In"), this); m_zoomOut = new QAction(tr("Zoom Out"), this); QWidget* spacer = new QWidget(this); spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); tbar->addAction(m_home); tbar->addAction(m_back); tbar->addAction(m_zoomIn); tbar->addAction(m_zoomOut); tbar->addWidget(spacer); tbar->addAction(m_close); setCentralWidget(m_textBrowser); connect(m_home, &QAction::triggered, m_textBrowser, &QTextBrowser::home); connect(m_back, &QAction::triggered, m_textBrowser, &QTextBrowser::backward); connect(m_zoomIn, &QAction::triggered, this, [=]{ m_textBrowser->zoomIn(); }); connect(m_zoomOut, &QAction::triggered, this, [=]{ m_textBrowser->zoomOut(); }); connect(m_close, &QAction::triggered, this, &QWidget::close); connect(m_textBrowser, &QTextBrowser::sourceChanged, this, &HelpWindow::updateWindowTitle); m_textBrowser->setOpenExternalLinks(true); m_textBrowser->setSearchPaths({":/help/en",":/help", ":/"}); applySettings(); } void HelpWindow::updateWindowTitle() { setWindowTitle(m_textBrowser->documentTitle()); } void HelpWindow::showPage(const QString &page) { //qDebug() << Q_FUNC_INFO << page; QDir hdir(":/"); QFileInfo finfo(hdir, page); if (finfo.exists()) { m_page = page; } else { m_page = "help/en/index.html"; } m_textBrowser->clear(); m_textBrowser->clearHistory(); m_textBrowser->setSource(m_page); show(); } void HelpWindow::setIcons(bool internal) { m_internalIcons = internal; } void HelpWindow::readSettings() { QSettings settings; settings.beginGroup("HelpWindow"); const QByteArray geometry = settings.value("geometry").toByteArray(); const QByteArray state = settings.value("windowState").toByteArray(); const int fontSize = settings.value("fontSize", 0).toInt(); if (geometry.isEmpty()) { const QRect availableGeometry = #if QT_VERSION < QT_VERSION_CHECK(5,14,0) QApplication::desktop()->availableGeometry(this); #else screen()->availableGeometry(); #endif QSize size(640,480); setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, size, availableGeometry)); } else { restoreGeometry(geometry); } if (!state.isEmpty()) { restoreState(state); } if (fontSize > 0) { //qDebug() << Q_FUNC_INFO << fontSize; auto font = m_textBrowser->font(); font.setPointSize(fontSize); m_textBrowser->setFont(font); } settings.endGroup(); } void HelpWindow::writeSettings() { QSettings settings; settings.beginGroup("HelpWindow"); auto fontSize = m_textBrowser->font().pointSize(); settings.setValue("geometry", saveGeometry()); settings.setValue("windowState", saveState()); settings.setValue("fontSize", fontSize); settings.endGroup(); //qDebug() << Q_FUNC_INFO << fontSize; } void HelpWindow::showEvent(QShowEvent *event) { static bool firstTime = true; QMainWindow::showEvent(event); if (firstTime) { readSettings(); firstTime = false; } } void HelpWindow::closeEvent(QCloseEvent *event) { writeSettings(); event->accept(); } void HelpWindow::retranslateUi() { QString language = qobject_cast(parent())->configuredLanguage(); m_page = QStringLiteral("help/%1/index.html").arg(language); if (isVisible()) { showPage(m_page); } updateWindowTitle(); m_home->setText(tr("&Home")); m_back->setText(tr("&Back")); m_close->setText(tr("Close")); m_zoomIn->setText(tr("Zoom In")); m_zoomOut->setText(tr("Zoom Out")); } void HelpWindow::applySettings() { m_home->setIcon(IconUtils::GetIcon("go-home")); m_back->setIcon(IconUtils::GetIcon("go-previous")); m_close->setIcon(IconUtils::GetIcon("window-close")); m_zoomIn->setIcon(IconUtils::GetIcon("format-font-size-more")); m_zoomOut->setIcon(IconUtils::GetIcon("format-font-size-less")); } kmetronome-1.3.0/src/PaxHeaders.13848/iconutils.h0000644000000000000000000000013214155347442016421 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/iconutils.h0000644000175000001440000000237314155347442017212 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #ifndef ICONUTILS_H #define ICONUTILS_H #include #include #include #include namespace IconUtils { void PaintPixmap(QPixmap &pixmap, const QColor& color); QPixmap GetPixmap(const QString& fileName); QIcon GetIcon(const QString& name, bool forcedTheme = false); void SetLabelIcon(QLabel *label, const QString& fileName); void SetupComboFigures(QComboBox *combo); void SetWindowIcon(QWidget *widget); } #endif // ICONUTILS_H kmetronome-1.3.0/src/PaxHeaders.13848/lcdnumberview.cpp0000644000000000000000000000013214155347442017611 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/lcdnumberview.cpp0000644000175000001440000001047014155347442020377 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #include #include #include #include #include #include "lcdnumberview.h" LCDNumberView::LCDNumberView(QWidget *parent) : QGraphicsView(parent), m_digitWidth(0), m_digitHeight(0), m_digitsCount(0) { setScene(new QGraphicsScene(this)); setTransformationAnchor(AnchorUnderMouse); setViewportUpdateMode(FullViewportUpdate); setBackgroundRole(QPalette::Window); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); loadRenderer(); } QString LCDNumberView::number() { return m_number; } void LCDNumberView::setNumber(const QString& number) { if (number != m_number) { m_number = number; if (m_number.length() > m_digitsCount) { setDigitCount(m_number.length()); } update(); } } int LCDNumberView::digitCount() { return m_digitsCount; } void LCDNumberView::setDigitCount(const int count) { if (count != m_digitsCount) { m_digitsCount = count; scene()->clear(); for ( int i = 0; i < count; ++i ) { QGraphicsSvgItem *itm = new QGraphicsSvgItem(); itm->setSharedRenderer(&m_renderer); itm->setPos(i * m_digitWidth, 0); scene()->addItem(itm); } QRectF rect(0, 0, m_digitsCount * m_digitWidth, m_digitHeight); scene()->setSceneRect(rect); } } void LCDNumberView::update() { int i; QList lst = scene()->items(Qt::AscendingOrder); for (i = 0; i < lst.length(); ++i) { lst.at(i)->setVisible(false); } i = m_digitsCount - m_number.length(); if (i >= lst.length()) return; foreach(const QChar& ch, m_number) { QGraphicsSvgItem *itm = dynamic_cast(lst.at(i)); if (itm != nullptr) { if(ch == ':') { itm->setElementId(QStringLiteral("colon")); itm->setVisible(true); } else if (ch == '_') { itm->setElementId(QStringLiteral("underscore")); itm->setVisible(true); } else { QString id = QString("d%0").arg(ch); if (m_renderer.elementExists(id)) { itm->setElementId(id); itm->setVisible(true); } } } i++; if (i > m_digitsCount) break; } rescale(); } void LCDNumberView::rescale() { fitInView(scene()->sceneRect(), Qt::KeepAspectRatio); } void LCDNumberView::resizeEvent(QResizeEvent *event) { QGraphicsView::resizeEvent(event); rescale(); } void LCDNumberView::loadRenderer() { QString foreColor = qApp->palette().color(QPalette::Active, QPalette::WindowText).name(QColor::HexRgb); QString backColor = qApp->palette().color(QPalette::Active, QPalette::Window).name(QColor::HexRgb); //qDebug() << Q_FUNC_INFO << "FG:" << foreColor << "BG:" << backColor; QFile resource(QStringLiteral(":/lcdnumbers.svg")); if (resource.open(QIODevice::ReadOnly | QIODevice::Text)) { QString rescontents = QString::fromUtf8(resource.readAll()).arg(foreColor, backColor); resource.close(); if(m_renderer.load(rescontents.toUtf8())) { m_digitWidth = m_renderer.boundsOnElement("d8").width(); m_digitHeight = m_renderer.boundsOnElement("d8").height(); } else qWarning() << "renderer failed to load the SVG resource"; } else qWarning() << "failed to open" << resource.fileName(); } kmetronome-1.3.0/src/PaxHeaders.13848/sequenceradapter.cpp0000644000000000000000000000013214155347442020276 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/sequenceradapter.cpp0000644000175000001440000002705414155347442021072 0ustar00pedrousers00000000000000/*************************************************************************** * KMetronome - ALSA Sequencer based MIDI metronome * * Copyright (C) 2005-2021 Pedro Lopez-Cabanillas * * * * 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, see .* ***************************************************************************/ #include "sequenceradapter.h" #include "defs.h" #include "drumgridmodel.h" #include #include #include using namespace drumstick::ALSA; SequencerAdapter::SequencerAdapter(QObject *parent) : QObject(parent), m_Client(nullptr), m_Port(nullptr), m_Queue(nullptr), m_model(nullptr), m_clientId(-1), m_inputPortId(-1), m_outputPortId(-1), m_queueId(-1), m_bar(0), m_beat(0), m_instrument(METRONOME_INSTRUMENT), m_bank(METRONOME_BANK), m_program(METRONOME_PROGRAM), m_weak_note(METRONOME_WEAK_NOTE), m_strong_note(METRONOME_STRONG_NOTE), m_weak_velocity(METRONOME_VELOCITY), m_strong_velocity(METRONOME_VELOCITY), m_channel(METRONOME_CHANNEL), m_volume(METRONOME_VOLUME), m_balance(METRONOME_PAN), m_resolution(METRONOME_RESOLUTION), m_bpm(TEMPO_DEFAULT), m_ts_num(RHYTHM_TS_NUM), m_ts_div(RHYTHM_TS_DEN), m_noteDuration(NOTE_DURATION), m_bankSelMethod(3), m_autoconnect(false), m_playing(false), m_useNoteOff(true), m_patternMode(false), m_outputConn(""), m_inputConn("") { retranslateUi(); m_Client = new MidiClient(this); m_Client->open(); m_Client->setClientName(QSTR_APPNAME); m_clientId = m_Client->getClientId(); //connect(m_Client, SIGNAL(eventReceived(SequencerEvent*)), // SLOT(sequencerEvent(SequencerEvent*)), Qt::DirectConnection); m_Client->setHandler(this); m_Port = new MidiPort(this); m_Port->attach( m_Client ); m_Port->setPortName(QSTR_APPNAME); m_Port->setCapability(SND_SEQ_PORT_CAP_WRITE | SND_SEQ_PORT_CAP_SUBS_WRITE | SND_SEQ_PORT_CAP_READ | SND_SEQ_PORT_CAP_SUBS_READ); m_Port->setPortType(SND_SEQ_PORT_TYPE_MIDI_GENERIC | SND_SEQ_PORT_TYPE_APPLICATION); m_inputPortId = m_outputPortId = m_Port->getPortId(); m_Port->subscribeFromAnnounce(); m_Queue = m_Client->createQueue(QSTR_APPNAME); m_queueId = m_Queue->getId(); m_Client->setRealTimeInput(true); m_Client->startSequencerInput(); } SequencerAdapter::~SequencerAdapter() { m_Client->stopSequencerInput(); m_Port->detach(); m_Client->close(); } void SequencerAdapter::retranslateUi() { NO_CONNECTION = tr("No connection"); } QStringList SequencerAdapter::inputConnections() { QStringList list; list += NO_CONNECTION; QListIterator it(m_Client->getAvailableInputs()); while(it.hasNext()) { PortInfo p = it.next(); list << QString("%1:%2").arg(p.getClientName()).arg(p.getPort()); } return list; } QStringList SequencerAdapter::outputConnections() { QStringList list; list += NO_CONNECTION; QListIterator it(m_Client->getAvailableOutputs()); while(it.hasNext()) { PortInfo p = it.next(); list << QString("%1:%2").arg(p.getClientName()).arg(p.getPort()); } return list; } void SequencerAdapter::connect_output() { if (m_outputConn.isEmpty() || m_outputConn == NO_CONNECTION) return; m_Port->subscribeTo(m_outputConn); } void SequencerAdapter::disconnect_output() { if (m_outputConn.isEmpty() || m_outputConn == NO_CONNECTION) return; m_Port->unsubscribeTo(m_outputConn); } void SequencerAdapter::connect_input() { if (m_inputConn.isEmpty() || m_inputConn == NO_CONNECTION) return; m_Port->subscribeFrom(m_inputConn); } void SequencerAdapter::disconnect_input() { if (m_inputConn.isEmpty() || m_inputConn == NO_CONNECTION) return; m_Port->unsubscribeFrom(m_inputConn); } void SequencerAdapter::metronome_event_output(SequencerEvent* ev) { ev->setSource(m_outputPortId); ev->setSubscribers(); ev->setDirect(); m_Client->outputDirect(ev); } void SequencerAdapter::sendControlChange(int cc, int value) { ControllerEvent ev(m_channel, cc, value); metronome_event_output(&ev); } void SequencerAdapter::sendInitialControls() { metronome_set_bank(); metronome_set_program(); metronome_set_controls(); metronome_set_tempo(); } inline int SequencerAdapter::calc_lsb(int x) { return (x % 0x80); } inline int SequencerAdapter::calc_msb(int x) { return (x / 0x80); } void SequencerAdapter::metronome_set_bank() { int lsb, msb; switch (m_bankSelMethod) { case 0: lsb = calc_lsb(m_bank); msb = calc_msb(m_bank); sendControlChange(MSB_CC, msb); sendControlChange(LSB_CC, lsb); break; case 1: sendControlChange(MSB_CC, m_bank); break; case 2: sendControlChange(LSB_CC, m_bank); break; default: /* if method is 3 or above, do nothing */ break; } } void SequencerAdapter::metronome_set_program() { ProgramChangeEvent ev(m_channel, m_program); metronome_event_output(&ev); } void SequencerAdapter::metronome_note_output(SequencerEvent* ev) { NoteOnEvent* note = static_cast(ev); if (note->getTag() == TAG_WEAK) note->setVelocity(m_weak_velocity); else if (note->getTag() == TAG_STRONG) note->setVelocity(m_strong_velocity); metronome_event_output(note); } void SequencerAdapter::metronome_schedule_event(SequencerEvent* ev, int tick) { ev->setSource(m_outputPortId); ev->setDestination(m_clientId, m_inputPortId); ev->scheduleTick(m_queueId, tick, false); m_Client->outputDirect(ev); } void SequencerAdapter::metronome_note(int note, int vel, int tick, int tag) { SequencerEvent* ev; if (m_useNoteOff) ev = new NoteEvent(m_channel, note, vel, m_noteDuration); else ev = new NoteOnEvent(m_channel, note, vel); ev->setTag(tag); metronome_schedule_event(ev, tick); delete ev; } void SequencerAdapter::metronome_echo(int tick, int ev_type) { SystemEvent ev(ev_type); metronome_schedule_event(&ev, tick); } void SequencerAdapter::metronome_simple_pattern(int tick) { int j, t, duration, tag, note; t = tick; duration = m_resolution * 4 / m_ts_div; for (j = 0; j < m_ts_num; j++) { note= ( j ? m_weak_note : m_strong_note ); tag = ( j ? TAG_WEAK : TAG_STRONG ); metronome_note(note, METRONOME_VELOCITY, t, tag); metronome_echo(t, SND_SEQ_EVENT_USR1); t += duration; } metronome_echo(t, SND_SEQ_EVENT_USR0); } int SequencerAdapter::decodeVelocity(const QString drumVel) { const qreal f = 127.0 / 9.0; int num = 0; bool isNum = false; if (drumVel.isEmpty()) return 0; if (drumVel == "f") return m_strong_velocity; else if (drumVel == "p") return m_weak_velocity; num = drumVel.toInt(&isNum); if (isNum) return qRound(f * num); return 0; } int SequencerAdapter::decodeTag(const QString drumVel) { if (drumVel == "f") return TAG_STRONG; else if (drumVel == "p") return TAG_WEAK; return TAG_FIXED; } void SequencerAdapter::metronome_grid_pattern(int tick) { int i, j, t, duration, key, vel, tag; t = tick; duration = m_resolution * 4 / m_model->patternFigure(); for(i=0; icolumnCount(); ++i) { for(j=0; jrowCount(); ++j) { QString n = m_model->patternHit(j, i); if (!n.isEmpty()) { key = m_model->patternKey(j).toInt(); vel = decodeVelocity(n); tag = decodeTag(n); metronome_note(key, vel, t, tag); } } metronome_echo(t, SND_SEQ_EVENT_USR1); t += duration; } metronome_echo(t, SND_SEQ_EVENT_USR0); } void SequencerAdapter::metronome_set_tempo() { QueueTempo t = m_Queue->getTempo(); t.setPPQ(m_resolution); t.setNominalBPM(m_bpm); m_Queue->setTempo(t); m_Client->drainOutput(); } void SequencerAdapter::metronome_set_controls() { sendControlChange(VOLUME_CC, m_volume); sendControlChange(PAN_CC, m_balance); } void SequencerAdapter::parse_sysex(SequencerEvent *ev) { int num, den; SysExEvent* syx = static_cast(ev); if (syx == nullptr) return; unsigned char *ptr =(unsigned char *) syx->getData(); if (syx->getLength() < 6) return; if (*ptr++ != 0xf0) return; int msgId = *ptr++; if (msgId != 0x7f) return; // Universal Real Time int deviceId = *ptr++; if (deviceId != 0x7f) return; // broadcast int subId1 = *ptr++; int subId2 = *ptr++; switch (subId1) { case 0x03: // Notation switch (subId2) { case 0x02: case 0x42: if (syx->getLength() < 9) return; (void) *ptr++; num = *ptr++; den = *ptr++; emit signalNotation(num, den); break; } break; case 0x06: // MMC switch (subId2) { case 0x01: // Stop emit signalStop(); break; case 0x02: // Play case 0x03: // Deferred Play emit signalPlay(); break; } break; } } void SequencerAdapter::handleSequencerEvent(SequencerEvent *ev) { int when = 0; switch (ev->getSequencerType()) { case SND_SEQ_EVENT_USR0: when = ev->getTick() + m_patternDuration; if (m_patternMode) metronome_grid_pattern(when); else metronome_simple_pattern(when); m_bar++; m_beat = 0; break; case SND_SEQ_EVENT_USR1: m_beat++; emit signalUpdate(m_bar, m_beat); break; case SND_SEQ_EVENT_START: emit signalPlay(); break; case SND_SEQ_EVENT_CONTINUE: emit signalCont(); break; case SND_SEQ_EVENT_STOP: emit signalStop(); break; case SND_SEQ_EVENT_SYSEX: parse_sysex(ev); break; case SND_SEQ_EVENT_NOTEON: metronome_note_output(ev); break; case SND_SEQ_EVENT_NOTEOFF: metronome_event_output(ev); break; } delete ev; } void SequencerAdapter::metronome_start() { m_Queue->start(); if (m_patternMode) { m_patternDuration = m_resolution * 4 / m_model->patternFigure() * m_model->columnCount(); metronome_grid_pattern(0); metronome_grid_pattern(m_patternDuration); } else { m_patternDuration = m_resolution * 4 / m_ts_div * m_ts_num; metronome_simple_pattern(0); metronome_simple_pattern(m_patternDuration); } m_bar = 1; m_beat = 0; m_playing = true; } void SequencerAdapter::metronome_stop() { m_Queue->stop(); m_playing = false; } void SequencerAdapter::metronome_continue() { m_Queue->continueRunning(); m_playing = true; } kmetronome-1.3.0/src/PaxHeaders.13848/kmetronome.cpp0000644000000000000000000000013214155347442017123 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/kmetronome.cpp0000644000175000001440000007323514155347442017721 0ustar00pedrousers00000000000000/*************************************************************************** * KMetronome - ALSA Sequencer based MIDI metronome * * Copyright (C) 2005-2021 Pedro Lopez-Cabanillas * * * * 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, see .* ***************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "kmetronome.h" #include "kmetropreferences.h" #include "sequenceradapter.h" #include "defs.h" #include "drumgrid.h" #include "drumgridmodel.h" #include "instrument.h" #include "about.h" #include "kmetronome_adaptor.h" #include "iconutils.h" #include "helpwindow.h" static QString dataDirectory() { QDir test(QApplication::applicationDirPath() + "/../share/kmetronome/"); if (test.exists()) { return test.absolutePath(); } QStringList candidates = #if QT_VERSION < QT_VERSION_CHECK(6,0,0) QStandardPaths::standardLocations(QStandardPaths::DataLocation); #else QStandardPaths::standardLocations(QStandardPaths::AppLocalDataLocation); #endif foreach(const QString& d, candidates) { test = QDir(d); if (test.exists()) { return d; } } return QString(); } static QString trDirectory() { #if defined(TRANSLATIONS_EMBEDDED) return QLatin1String(":/"); #else QDir test(dataDirectory() + "/translations/"); //qDebug() << test.absolutePath(); if (test.exists()) { return test.absolutePath(); } return QString(); #endif } static QString trQtDirectory() { #if defined(TRANSLATIONS_EMBEDDED) return QLatin1String(":/"); #else return QLibraryInfo::location(QLibraryInfo::TranslationsPath); #endif } KMetronome::KMetronome(QWidget *parent) : QMainWindow(parent), m_patternMode(false), m_seq(nullptr) { new KmetronomeAdaptor(this); QDBusConnection dbus = QDBusConnection::sessionBus(); dbus.registerObject("/", this); dbus.registerService("net.sourceforge.kmetronome"); m_trq = new QTranslator(this); QCoreApplication::installTranslator(m_trq); m_trp = new QTranslator(this); QCoreApplication::installTranslator(m_trp); QLocale locale(configuredLanguage()); //qDebug() << "locale:" << locale << "path:" << trDirectory(); if (!m_trq->load(locale, QLatin1String("qt"), QLatin1String("_"), trQtDirectory())) { qWarning() << "Failure loading Qt5 translations for" << configuredLanguage(); } if (!m_trp->load(locale, QLatin1String("kmetronome"), QLatin1String("_"), trDirectory())) { qWarning() << "Failure loading program translations for" << configuredLanguage(); } QLocale::setDefault(locale); m_ui.setupUi(this); m_ui.m_exitbtn->setFocusPolicy(Qt::NoFocus); m_ui.m_playbtn->setShortcut(Qt::Key_MediaPlay); m_ui.m_stopbtn->setShortcut(Qt::Key_MediaStop); m_ui.m_tempoLCD->setDigitCount(3); m_ui.m_tempoLCD->setNumber("100"); m_ui.m_measureLCD->setDigitCount(5); m_ui.m_measureLCD->setNumber("1:01"); /** * Tempo reference: * http://www.music.vt.edu/musicdictionary/appendix/tempo/tempo1.html */ m_ui.m_air->addItem("Larghissimo", 20); m_ui.m_air->addItem("Largo", 40); m_ui.m_air->addItem("Larghetto", 60); m_ui.m_air->addItem("Adagio", 70); m_ui.m_air->addItem("Andante", 90); m_ui.m_air->addItem("Moderato", 110); m_ui.m_air->addItem("Allegro", 120); m_ui.m_air->addItem("Vivace", 160); m_ui.m_air->addItem("Presto", 170); m_ui.m_air->addItem("Prestissimo",200); m_ui.m_air->setCurrentIndex(4); IconUtils::SetupComboFigures(m_ui.m_figure); connect( m_ui.m_exitbtn, &QAbstractButton::clicked, this, &QWidget::close ); connect( m_ui.m_configbtn, &QAbstractButton::clicked, this, &KMetronome::optionsPreferences ); connect( m_ui.m_patternbtn, &QAbstractButton::clicked, this, &KMetronome::editPatterns ); connect( m_ui.m_playbtn, &QAbstractButton::clicked, this, &KMetronome::play ); connect( m_ui.m_stopbtn, &QAbstractButton::clicked, this, &KMetronome::stop ); connect( m_ui.m_beatsBar, QOverload::of(&QSpinBox::valueChanged), this, &KMetronome::beatsBarChanged ); connect( m_ui.m_figure, QOverload::of(&QComboBox::activated), this, &KMetronome::rhythmFigureChanged ); connect( m_ui.m_tempo, &QAbstractSlider::valueChanged, this, &KMetronome::tempoChanged ); connect( m_ui.m_dial1, &QAbstractSlider::valueChanged, this, &KMetronome::weakVeloChanged ); connect( m_ui.m_dial2, &QAbstractSlider::valueChanged, this, &KMetronome::strongVeloChanged ); connect( m_ui.m_dial3, &QAbstractSlider::valueChanged, this, &KMetronome::volumeChanged ); connect( m_ui.m_dial4, &QAbstractSlider::valueChanged, this, &KMetronome::balanceChanged ); connect( m_ui.m_air, QOverload::of(&QComboBox::activated), this, &KMetronome::tempoComboChanged ); connect( m_ui.m_tempo, &QAbstractSlider::valueChanged, this, &KMetronome::displayTempo ); connect( m_ui.m_pattern, QOverload::of(&QComboBox::activated), this, &KMetronome::patternChanged ); m_model = new DrumGridModel(this); m_instrumentList = new InstrumentList; m_model->setInstrumentList(m_instrumentList); QString data = dataDirectory(); if (data.isEmpty()) { m_instrumentList->load(":/data/drums.ins"); } else { QFileInfo f(data, "drums.ins"); if (f.exists()) { m_instrumentList->load(f.absoluteFilePath()); } else { m_instrumentList->load(":/data/drums.ins"); } } try { m_seq = new SequencerAdapter(this); m_seq->setModel(m_model); connect(m_seq, &SequencerAdapter::signalUpdate, this, &KMetronome::updateDisplay, Qt::QueuedConnection); connect(m_seq, &SequencerAdapter::signalPlay, this, &KMetronome::play, Qt::QueuedConnection); connect(m_seq, &SequencerAdapter::signalStop, this, &KMetronome::stop, Qt::QueuedConnection); connect(m_seq, &SequencerAdapter::signalCont, this, &KMetronome::cont, Qt::QueuedConnection); connect(m_seq, &SequencerAdapter::signalNotation, this, &KMetronome::setTimeSignature, Qt::QueuedConnection); setupActions(); readConfiguration(); createLanguageMenu(); applyVisualStyle(); } catch (drumstick::ALSA::SequencerError& ex) { QString errorstr = tr("Fatal error from the ALSA sequencer. " "This usually happens when the kernel doesn't have ALSA support, " "or the device node (/dev/snd/seq) doesn't exists, " "or the kernel module (snd_seq) is not loaded. " "Please check your ALSA/MIDI configuration. Returned error was: %1") .arg(ex.qstrError()); QMessageBox::critical(nullptr, tr("Error"), errorstr); close(); } m_helpWindow = new HelpWindow(this); m_helpWindow->applySettings(); } KMetronome::~KMetronome() { delete m_instrumentList; } void KMetronome::setupActions() { m_ui.actionAboutQt->setIcon(QIcon(":/qt-project.org/qmessagebox/images/qtlogo-64.png")); m_ui.actionAbout->setIcon(QIcon(IconUtils::GetPixmap(":/icons/midi/icon32.png"))); connect( m_ui.actionPlayStop, &QAction::triggered, this, &KMetronome::toggle ); connect( m_ui.actionImportPatterns, &QAction::triggered, this, &KMetronome::slotImportPatterns ); connect( m_ui.actionExportPatterns, &QAction::triggered, this, &KMetronome::slotExportPatterns ); connect( m_ui.actionQuit, &QAction::triggered, this, &KMetronome::close ); connect( m_ui.actionEditPatterns, &QAction::triggered, this, &KMetronome::editPatterns ); connect( m_ui.actionShowActionButtons, &QAction::triggered, this, &KMetronome::displayFakeToolbar ); connect( m_ui.actionConfiguration, &QAction::triggered, this, &KMetronome::optionsPreferences ); connect( m_ui.actionAbout, &QAction::triggered, this, &KMetronome::about ); connect( m_ui.actionAboutQt, &QAction::triggered, qApp, &QApplication::aboutQt ); connect( m_ui.actionHelp, &QAction::triggered, this, &KMetronome::help ); } void KMetronome::closeEvent(QCloseEvent *event) { saveConfiguration(); QMainWindow::closeEvent(event); } void KMetronome::about() { About dlg(this); dlg.exec(); } void KMetronome::help() { m_helpWindow->setIcons(m_internalIcons); QString hname = QString("help/%1/index.html").arg(configuredLanguage()); m_helpWindow->showPage(hname); } void KMetronome::saveConfiguration() { QSettings settings; settings.beginGroup("Settings"); settings.setValue("geometry", saveGeometry()); settings.setValue("windowState", saveState()); settings.setValue("language", m_language); settings.setValue("fakeToolbar", m_ui.actionShowActionButtons->isChecked()); settings.setValue("toolbar", m_ui.actionShowToolbar->isChecked()); settings.setValue("qtstyle", m_style); settings.setValue("darkMode", m_darkMode); settings.setValue("internalIcons", m_internalIcons); if (m_seq != nullptr) { settings.setValue("instrument", m_instrument); settings.setValue("bank", m_bank); settings.setValue("program", m_program); settings.setValue("weakNote", m_seq->getWeakNote()); settings.setValue("strongNote", m_seq->getStrongNote()); settings.setValue("channel", m_seq->getChannel()); settings.setValue("weakVelocity", m_seq->getWeakVelocity()); settings.setValue("strongVelocity", m_seq->getStrongVelocity()); settings.setValue("volume", m_seq->getVolume()); settings.setValue("balance", m_seq->getBalance()); settings.setValue("resolution", m_seq->getResolution()); settings.setValue("sendNoteOff", m_seq->getSendNoteOff()); settings.setValue("duration", m_seq->getNoteDuration()); settings.setValue("tempo", m_seq->getBpm()); settings.setValue("rhythmNumerator", m_seq->getRhythmNumerator()); settings.setValue("rhythmDenominator", m_seq->getRhythmDenominator()); settings.setValue("autoconnect", m_seq->getAutoConnect()); settings.setValue("outputConn", m_seq->getOutputConn()); settings.setValue("inputConn", m_seq->getInputConn()); } settings.endGroup(); settings.sync(); } void KMetronome::applyInstrumentSettings() { Instrument ins = m_instrumentList->value(m_instrument); m_seq->setBankSelMethod(ins.bankSelMethod()); InstrumentPatches banks = ins.patches(); InstrumentPatches::ConstIterator j; for( j = banks.constBegin(); j != banks.constEnd(); ++j ) { InstrumentData bank = j.value(); if (bank.name() == m_bank) { int ibank = j.key(); InstrumentData::ConstIterator k; for( k = bank.constBegin(); k != bank.constEnd(); ++k ) { if (k.value() == m_program) { int iprogram = k.key(); m_seq->setBank(ibank); m_seq->setProgram(iprogram); return; } } } } } void KMetronome::readConfiguration() { QSettings settings; settings.beginGroup("Settings"); restoreGeometry(settings.value("geometry").toByteArray()); restoreState(settings.value("windowState").toByteArray()); m_instrument = settings.value("instrument", QString()).toString(); m_bank = settings.value("bank", QString()).toString(); m_program = settings.value("program", QString()).toString(); applyInstrumentSettings(); m_seq->setChannel(settings.value("channel", METRONOME_CHANNEL).toInt()); m_seq->setWeakNote(settings.value("weakNote", METRONOME_WEAK_NOTE).toInt()); m_seq->setStrongNote(settings.value("strongNote", METRONOME_STRONG_NOTE).toInt()); m_seq->setResolution(settings.value("resolution", METRONOME_RESOLUTION).toInt()); int volume = settings.value("volume", METRONOME_VOLUME).toInt(); int balance = settings.value("balance", METRONOME_PAN).toInt(); int weakVel = settings.value("weakVelocity", METRONOME_VELOCITY).toInt(); int strongVel = settings.value("strongVelocity", METRONOME_VELOCITY).toInt(); int tempo = settings.value("tempo", 100).toInt(); int ts_num = settings.value("rhythmNumerator", 4).toInt(); int ts_div = settings.value("rhythmDenominator", 4).toInt(); m_style = settings.value("qtstyle", "fusion").toString(); m_darkMode = settings.value("darkMode", false).toBool(); m_internalIcons = settings.value("internalIcons", false).toBool(); m_seq->setVolume(volume); m_seq->setBalance(balance); m_seq->setWeakVelocity(weakVel); m_seq->setStrongVelocity(strongVel); m_seq->setBpm(tempo); m_seq->setRhythmNumerator(ts_num); m_seq->setRhythmDenominator(ts_div); setBeatsBar(ts_num); setFigure(ts_div); setTempo(tempo); displayWeakVelocity(weakVel); displayStrongVelocity(strongVel); displayVolume(volume); displayBalance(balance); int duration = settings.value("duration", NOTE_DURATION).toInt(); m_seq->setNoteDuration(duration); bool sendNoteOff = settings.value("sendNoteOff", true).toBool(); m_seq->setSendNoteOff(sendNoteOff); bool autoconn = settings.value("autoconnect", false).toBool(); m_seq->setAutoConnect(autoconn); if(autoconn) { m_seq->setOutputConn(settings.value("outputConn", "20:0").toString()); m_seq->setInputConn(settings.value("inputConn", "20:0").toString()); m_seq->connect_output(); m_seq->connect_input(); } m_seq->sendInitialControls(); bool fakeToolbar = settings.value("fakeToolbar", true).toBool(); m_ui.actionShowActionButtons->setChecked(fakeToolbar); bool realToolbar = settings.value("toolbar", true).toBool(); m_ui.actionShowToolbar->setChecked(realToolbar); displayFakeToolbar(fakeToolbar); m_ui.toolBar->setVisible(realToolbar); updatePatterns(); if (m_ui.m_pattern->count() == 0) { importPatterns(":/data/samples.pat"); } } void KMetronome::optionsPreferences() { QPointer dlg = new KMetroPreferences(this); dlg->fillOutputConnections(m_seq->outputConnections()); dlg->fillInputConnections(m_seq->inputConnections()); dlg->fillInstruments(m_instrumentList); dlg->fillStyles(); dlg->setDarkMode(m_darkMode); dlg->setInternalIcons(m_internalIcons); dlg->setAutoConnect(m_seq->getAutoConnect()); QString conn = m_seq->getOutputConn(); if (conn != nullptr && !conn.isEmpty()) dlg->setOutputConnection(conn); conn = m_seq->getInputConn(); if (conn != nullptr && !conn.isEmpty()) dlg->setInputConnection(conn); dlg->setInstrumentName(m_instrument); dlg->setBankName(m_bank); dlg->setProgramName(m_program); dlg->setWeakNote(m_seq->getWeakNote()); dlg->setStrongNote(m_seq->getStrongNote()); dlg->setChannel(m_seq->getChannel()); dlg->setResolution(m_seq->getResolution()); dlg->setSendNoteOff(m_seq->getSendNoteOff()); dlg->setDuration(m_seq->getNoteDuration()); if (dlg->exec() == QDialog::Accepted) { m_seq->disconnect_output(); m_seq->disconnect_input(); if (dlg != nullptr) { m_seq->setAutoConnect(dlg->getAutoConnect()); m_seq->setOutputConn(dlg->getOutputConnection()); m_seq->setInputConn(dlg->getInputConnection()); m_instrument = dlg->getInstrumentName(); m_bank = dlg->getBankName(); m_program = dlg->getProgramName(); applyInstrumentSettings(); m_seq->setWeakNote(dlg->getWeakNote()); m_seq->setStrongNote(dlg->getStrongNote()); m_seq->setResolution(dlg->getResolution()); m_seq->setChannel(dlg->getChannel()); m_seq->setSendNoteOff(dlg->getSendNoteOff()); m_seq->setNoteDuration(dlg->getDuration()); m_seq->connect_output(); m_seq->connect_input(); m_seq->sendInitialControls(); } m_style = dlg->getStyle(); m_darkMode = dlg->getDarkMode(); m_internalIcons = dlg->getInternalIcons(); applyVisualStyle(); } delete dlg; } void KMetronome::updateDisplay(int bar, int beat) { display(bar, beat); } void KMetronome::tempoChanged(int newTempo) { m_seq->setBpm(newTempo); m_seq->metronome_set_tempo(); } void KMetronome::beatsBarChanged(int beats) { m_seq->setRhythmNumerator(beats); } void KMetronome::rhythmFigureChanged(int figure) { m_seq->setRhythmDenominator((int)pow(2, figure)); } void KMetronome::weakVeloChanged(int vel) { m_seq->setWeakVelocity(vel); } void KMetronome::strongVeloChanged(int vel) { m_seq->setStrongVelocity(vel); } void KMetronome::volumeChanged(int vol) { m_seq->setVolume(vol); m_seq->sendControlChange(VOLUME_CC, vol); } void KMetronome::balanceChanged(int bal) { m_seq->setBalance(bal); m_seq->sendControlChange(PAN_CC, bal); } void KMetronome::toggle(bool checked) { if (checked) play(); else stop(); } /** * Public D-Bus Interface Slots */ void KMetronome::play() { enableControls(false); m_ui.actionConfiguration->setEnabled(false); m_ui.actionPlayStop->setChecked(true); m_seq->metronome_start(); updateDisplay(1, 0); m_ui.m_stopbtn->setFocus(); } void KMetronome::stop() { m_seq->metronome_stop(); enableControls(true); m_ui.actionConfiguration->setEnabled(true); m_ui.actionPlayStop->setChecked(false); m_ui.m_playbtn->setFocus(); } void KMetronome::cont() { enableControls(false); m_ui.actionConfiguration->setEnabled(false); m_seq->metronome_continue(); } void KMetronome::setTempo(int newTempo) { if (newTempo < TEMPO_MIN || newTempo > TEMPO_MAX) return; m_ui.m_tempo->setValue(newTempo); } void KMetronome::setTimeSignature(int numerator, int denominator) { static const int valids[] = {1, 2, 4, 8, 16, 32, 64}; bool invalid = true; for(int i=0; i<7; ++i) { if (denominator == valids[i]) { invalid = false; break; } } if (m_seq->isPlaying() || numerator < 1 || numerator > 32 || invalid) return; setBeatsBar(numerator); setFigure(denominator); m_seq->setRhythmDenominator(denominator); } /** * Patterns stuff */ void KMetronome::updatePatterns() { const int n(QSTR_PATTERN.size()); QStringList lst; QSettings settings; foreach(const QString& name, settings.childGroups()) { if (name.startsWith(QSTR_PATTERN)) lst += name.mid(n); } if (!lst.isEmpty()) { setPatterns(lst); } } void KMetronome::readDrumGridPattern() { if (m_drumgrid == nullptr) { m_drumgrid = new DrumGrid(this); m_drumgrid->setModel(m_model); m_drumgrid->setSequencer(m_seq); } m_drumgrid->setInstrument(m_instrument); m_drumgrid->setIcons(m_internalIcons); if (m_patternMode) m_drumgrid->readPattern(getSelectedPattern()); } void KMetronome::editPatterns() { int res; QString tmpPattern; readDrumGridPattern(); res = m_drumgrid->exec(); updatePatterns(); if (res == QDialog::Accepted && m_drumgrid != nullptr) tmpPattern = m_drumgrid->currentPattern(); tempoChanged(getTempo()); setSelectedPattern(tmpPattern); m_seq->setPatternMode(patternMode()); } void KMetronome::patternChanged(int idx) { m_patternMode = (idx > 0); if (m_patternMode) { readDrumGridPattern(); } m_seq->setPatternMode(m_patternMode); if (m_patternMode) { setBeatsBar(m_model->columnCount()); setFigure(m_model->patternFigure()); } m_ui.m_beatsBar->setEnabled(!m_patternMode); m_ui.m_figure->setEnabled(!m_patternMode); } void KMetronome::importPatterns(const QString& path) { QSettings settings; QSettings input(path, QSettings::IniFormat, this); foreach(const QString& name, input.childGroups()) { input.beginGroup(name); settings.beginGroup(QSTR_PATTERN+name); settings.remove(""); foreach(const QString& key, input.childKeys()) { settings.setValue(key, input.value(key)); } settings.endGroup(); input.endGroup(); } settings.sync(); updatePatterns(); } void KMetronome::exportPatterns(const QString& path) { QSettings settings; QSettings output(path, QSettings::IniFormat, this); const int n(QSTR_PATTERN.size()); QStringList lst; foreach(const QString& name, settings.childGroups()) { if (name.startsWith(QSTR_PATTERN)) { lst += name.mid(n); } } if (!lst.isEmpty()) { foreach(const QString& name, lst) { settings.beginGroup(QSTR_PATTERN+name); output.beginGroup(name); output.remove(""); foreach(const QString& key, settings.childKeys()) { output.setValue(key, settings.value(key)); } output.endGroup(); settings.endGroup(); } output.sync(); } } void KMetronome::slotImportPatterns() { QString dirName = QStandardPaths::locate( #if QT_VERSION < QT_VERSION_CHECK(6,0,0) QStandardPaths::DataLocation #else QStandardPaths::AppLocalDataLocation #endif , "*.pat", QStandardPaths::LocateDirectory); QString path = QFileDialog::getOpenFileName(this, tr("Import Patterns"),dirName,tr("Pattern Files (*.pat)")); if (!path.isEmpty()) { importPatterns(path); } } void KMetronome::slotExportPatterns() { QString dirName = QStandardPaths::writableLocation( #if QT_VERSION < QT_VERSION_CHECK(6,0,0) QStandardPaths::DataLocation); #else QStandardPaths::AppLocalDataLocation); #endif QDir dir(dirName); if (!dir.exists()) { dir.mkpath(dirName); } QFileDialog dialog(this); dialog.setWindowModality(Qt::WindowModal); dialog.setAcceptMode(QFileDialog::AcceptSave); dialog.setWindowTitle(tr("Export Patterns")); dialog.setFileMode(QFileDialog::AnyFile); dialog.setNameFilter(tr("Pattern Files (*.pat)")); dialog.setDirectory(dirName); dialog.setDefaultSuffix("pat"); if (dialog.exec() == QDialog::Accepted) { QStringList files = dialog.selectedFiles(); if (!files.isEmpty()) { QString path = files.at(0); if (!path.isEmpty()) { exportPatterns(path); } } } } void KMetronome::display(int bar, int beat) { m_ui.m_measureLCD->setNumber(QString("%1:%2").arg(bar, 2, 10, QChar(' ')) .arg(beat, 2, 10, QChar('0'))); } void KMetronome::setFigure(int newValue) { int ts_dd; int x = newValue; for(ts_dd = 0; x > 1; x /= 2) ++ts_dd; m_ui.m_figure->setCurrentIndex(ts_dd); } void KMetronome::displayTempo(int newTempo) { int i, j = 0; m_ui.m_tempoLCD->setNumber(QString("%1").arg(newTempo, 3, 10, QChar(' '))); for(i = 0; i < m_ui.m_air->count(); ++i) { if (m_ui.m_air->itemData(i).toInt() > newTempo) break; j = i; } m_ui.m_air->setCurrentIndex(j); } void KMetronome::enableControls(bool e) { m_ui.m_playbtn->setEnabled(e); m_ui.m_stopbtn->setEnabled(!e); m_ui.m_configbtn->setEnabled(e); m_ui.m_patternbtn->setEnabled(e); m_ui.m_beatsBar->setEnabled(e & !m_patternMode); m_ui.m_figure->setEnabled(e & !m_patternMode); m_ui.m_pattern->setEnabled(e); } void KMetronome::mouseDoubleClickEvent(QMouseEvent *) { bool ok = false; int newTempo = QInputDialog::getInt(this, tr("Tempo"), tr("Enter new Tempo:"), m_ui.m_tempo->value(), TEMPO_MIN, TEMPO_MAX, 1, &ok ); if (ok) { m_ui.m_tempo->setValue(newTempo); } } void KMetronome::tempoComboChanged(int v) { m_ui.m_tempo->setValue(m_ui.m_air->itemData(v).toInt()); } void KMetronome::setPatterns(const QStringList& patterns) { m_ui.m_pattern->clear(); m_ui.m_pattern->addItem(tr("Automatic", "the pattern is created automatically")); m_ui.m_pattern->addItems(patterns); } QString KMetronome::getSelectedPattern() { return m_ui.m_pattern->currentText(); } void KMetronome::setSelectedPattern(const QString& pattern) { if (pattern.isEmpty()) { patternChanged(0); } else { m_ui.m_pattern->setCurrentText(pattern); patternChanged(m_ui.m_pattern->currentIndex()); } } QString KMetronome::configuredLanguage() { if (m_language.isEmpty()) { QSettings settings; QString defLang = QLocale::system().name().left(2); settings.beginGroup("Settings"); m_language = settings.value("language", defLang).toString(); settings.endGroup(); } //qDebug() << Q_FUNC_INFO << m_language; return m_language; } void KMetronome::slotSwitchLanguage(QAction *action) { QString lang = action->data().toString(); QLocale qlocale(lang); QString localeName = qlocale.nativeLanguageName(); if ( QMessageBox::question (this, tr("Language Changed"), tr("The language for this application is going to change to %1. " "Do you want to continue?").arg(localeName), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes ) { m_language = lang; retranslateUi(); } else { if (m_currentLang == nullptr) { m_currentLang = action; } m_currentLang->setChecked(true); } } void KMetronome::createLanguageMenu() { QString currentLang = configuredLanguage(); QActionGroup *languageGroup = new QActionGroup(this); connect(languageGroup, &QActionGroup::triggered, this, &KMetronome::slotSwitchLanguage); QStringList locales; locales << "en"; QDirIterator it(trDirectory(), {"*.qm"}, QDir::NoFilter, QDirIterator::NoIteratorFlags); while (it.hasNext()) { QFileInfo f(it.next()); QString locale = f.fileName(); if (locale.startsWith("kmetronome_")) { locale.remove(0, locale.indexOf('_') + 1); locale.truncate(locale.lastIndexOf('.')); locales << locale; } } locales.sort(); m_ui.menuLanguage->clear(); for (const QString& loc : qAsConst(locales)) { QLocale qlocale(loc); QString localeName = loc == "en" ? QLocale::languageToString(qlocale.language()) : qlocale.nativeLanguageName(); QAction *action = new QAction(localeName.section(" ", 0, 0), this); action->setCheckable(true); action->setData(loc); m_ui.menuLanguage->addAction(action); languageGroup->addAction(action); if (currentLang.startsWith(loc)) { action->setChecked(true); m_currentLang = action; } } } void KMetronome::applyVisualStyle() { //qDebug() << Q_FUNC_INFO << m_darkMode; static QPalette light = qApp->palette(); static QPalette dark(QColor(0x30,0x30,0x30)); qApp->setPalette( m_darkMode ? dark : light ); qApp->setStyle( m_style ); refreshIcons(); m_ui.m_measureLCD->loadRenderer(); m_ui.m_tempoLCD->loadRenderer(); m_ui.m_measureLCD->update(); m_ui.m_tempoLCD->update(); } void KMetronome::refreshIcons() { m_ui.actionImportPatterns->setIcon(IconUtils::GetIcon("document-import", m_internalIcons)); m_ui.actionExportPatterns->setIcon(IconUtils::GetIcon("document-export", m_internalIcons)); m_ui.actionPlayStop->setIcon(IconUtils::GetIcon("media-playback-start", m_internalIcons)); m_ui.actionEditPatterns->setIcon(IconUtils::GetIcon("document-edit", m_internalIcons)); m_ui.actionConfiguration->setIcon(IconUtils::GetIcon("configure", m_internalIcons)); m_ui.actionAbout->setIcon(IconUtils::GetIcon("midi/icon32", true)); m_ui.actionQuit->setIcon(IconUtils::GetIcon("application-exit", m_internalIcons)); m_ui.actionHelp->setIcon(IconUtils::GetIcon("help-contents", m_internalIcons)); m_ui.m_playbtn->setIcon(IconUtils::GetIcon("media-playback-start", m_internalIcons)); m_ui.m_stopbtn->setIcon(IconUtils::GetIcon("media-playback-stop", m_internalIcons)); m_ui.m_patternbtn->setIcon(IconUtils::GetIcon("document-edit", m_internalIcons)); m_ui.m_configbtn->setIcon(IconUtils::GetIcon("configure", m_internalIcons)); m_ui.m_exitbtn->setIcon(IconUtils::GetIcon("application-exit", m_internalIcons)); IconUtils::SetWindowIcon(this); } void KMetronome::retranslateUi() { QLocale locale(configuredLanguage()); if (!m_trq->load(locale, QLatin1String("qt"), QLatin1String("_"), trQtDirectory())) { qWarning() << "Failure loading Qt5 translations for" << configuredLanguage(); } if (!m_trp->load(locale, QLatin1String("kmetronome"), QLatin1String("_"), trDirectory())) { qWarning() << "Failure loading program translations for" << configuredLanguage(); } m_ui.retranslateUi(this); m_seq->retranslateUi(); m_helpWindow->retranslateUi(); createLanguageMenu(); updatePatterns(); } kmetronome-1.3.0/src/PaxHeaders.13848/kmetropreferences.h0000644000000000000000000000013214155347442020133 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/kmetropreferences.h0000644000175000001440000000724514155347442020727 0ustar00pedrousers00000000000000/*************************************************************************** * KMetronome - ALSA Sequencer based MIDI metronome * * Copyright (C) 2005-2021 Pedro Lopez-Cabanillas * * * * 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, see .* ***************************************************************************/ #ifndef KMETROPREFERENCES_H #define KMETROPREFERENCES_H #include #include "ui_kmetropreferencesbase.h" #include "instrument.h" class KMetroPreferences : public QDialog { Q_OBJECT public: KMetroPreferences(QWidget *parent = nullptr); virtual ~KMetroPreferences(); void fillInputConnections(QStringList lst) { m_ui.m_in_connection->insertItems(0, lst); } void fillOutputConnections(QStringList lst) { m_ui.m_out_connection->insertItems(0, lst); } void fillInstruments(InstrumentList* instruments); void fillStyles(); bool getAutoConnect() { return m_ui.m_autoconn->isChecked(); } QString getOutputConnection() { return m_ui.m_out_connection->currentText(); } QString getInputConnection() { return m_ui.m_in_connection->currentText(); } int getChannel() { return (m_ui.m_channel->value()-1); } int getResolution() { return m_ui.m_resolution->value(); } int getDuration() { return m_ui.m_duration->value(); } bool getSendNoteOff() { return m_ui.m_use_noteoff->isChecked(); } QString getInstrumentName(); QString getProgramName(); QString getBankName(); QString getStyle(); int getWeakNote(); int getStrongNote(); bool getDarkMode() { return m_ui.m_dark_mode->isChecked(); } bool getInternalIcons() { return m_ui.m_internal_icons->isChecked(); } void setAutoConnect(bool newValue) { m_ui.m_autoconn->setChecked(newValue); } void setOutputConnection(QString newValue); void setInputConnection(QString newValue); void setChannel(int newValue) { m_ui.m_channel->setValue(newValue+1); } void setResolution(int newValue) { m_ui.m_resolution->setValue(newValue); } void setDuration(int newValue) { m_ui.m_duration->setValue(newValue); } void setSendNoteOff(bool newValue) { m_ui.m_use_noteoff->setChecked(newValue); } void setWeakNote(int newValue); void setStrongNote(int newValue); void setInstrumentName(QString name); void setProgramName(QString name); void setBankName(QString name); void setDarkMode(bool mode) { m_ui.m_dark_mode->setChecked(mode); } void setInternalIcons(bool icons) { m_ui.m_internal_icons->setChecked(icons); } public slots: void slotInstrumentChanged(int idx); void slotBankChanged(int idx); void slotProgramChanged(int idx); private: Ui::KMetroPreferencesBase m_ui; InstrumentList* m_insList; Instrument m_ins; }; #endif // KMETROPREFERENCES_H kmetronome-1.3.0/src/PaxHeaders.13848/main.cpp0000644000000000000000000000013214155347442015667 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/main.cpp0000644000175000001440000000437414155347442016463 0ustar00pedrousers00000000000000/*************************************************************************** * KMetronome - ALSA Sequencer based MIDI metronome * * Copyright (C) 2005-2021 Pedro Lopez-Cabanillas * * * * 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, see .* ***************************************************************************/ #include #include #include "kmetronome.h" int main (int argc, char **argv) { const QString QSTR_APPNAME("Drumstick Metronome"); const QString QSTR_DOMAIN("kmetronome.sourceforge.net"); const QString QSTR_DESCRIPTION("ALSA Sequencer based MIDI Metronome"); const QString QSTR_VERSION(QT_STRINGIFY(VERSION)); QCoreApplication::setOrganizationName(QSTR_DOMAIN); QCoreApplication::setOrganizationDomain(QSTR_DOMAIN); QCoreApplication::setApplicationName(QSTR_APPNAME); QCoreApplication::setApplicationVersion(QSTR_VERSION); QApplication app(argc, argv); QCommandLineParser parser; parser.setApplicationDescription(QSTR_DESCRIPTION); auto helpOption = parser.addHelpOption(); auto versionOption = parser.addVersionOption(); parser.process(app); if (parser.isSet(versionOption) || parser.isSet(helpOption)) { return 0; } KMetronome mainWin; mainWin.show(); return app.exec(); } kmetronome-1.3.0/src/PaxHeaders.13848/kmetronome.h0000644000000000000000000000013214155347442016570 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/kmetronome.h0000644000175000001440000001056214155347442017360 0ustar00pedrousers00000000000000/*************************************************************************** * KMetronome - ALSA Sequencer based MIDI metronome * * Copyright (C) 2005-2021 Pedro Lopez-Cabanillas * * * * 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, see .* ***************************************************************************/ #ifndef KMETRONOME_H #define KMETRONOME_H #include #include #include #include "ui_kmetronome.h" #include "helpwindow.h" class SequencerAdapter; class DrumGrid; class DrumGridModel; class Instrument; class InstrumentList; class QCloseEvent; class KMetronome : public QMainWindow { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "net.sourceforge.kmetronome") public: KMetronome(QWidget* parent = nullptr); virtual ~KMetronome(); void display(int, int); int getTempo() { return m_ui.m_tempo->value(); } int getBeatsBar() { return m_ui.m_beatsBar->value(); } int getFigure() { return m_ui.m_figure->currentIndex(); } void setBeatsBar(int newValue) { m_ui.m_beatsBar->setValue(newValue); } void setFigure(int newValue); void enableControls(bool e); void setPatterns(const QStringList& patterns); bool patternMode() { return m_patternMode; } QString getSelectedPattern(); void setSelectedPattern(const QString& pattern); QString configuredLanguage(); void retranslateUi(); protected: void closeEvent(QCloseEvent *event) override; void mouseDoubleClickEvent ( QMouseEvent * e ) override; public Q_SLOTS: void about(); void help(); void play(); void stop(); void cont(); void setTempo(int newTempo); void setTimeSignature(int numerator, int denominator); void displayTempo(int); void displayWeakVelocity(int v) { m_ui.m_dial1->setValue(v); } void displayStrongVelocity(int v) { m_ui.m_dial2->setValue(v); } void displayVolume(int v) { m_ui. m_dial3->setValue(v); } void displayBalance(int v) { m_ui.m_dial4->setValue(v); } void displayFakeToolbar(bool b) { m_ui.m_fakeToolbar->setVisible(b); } void tempoComboChanged(int); protected Q_SLOTS: void optionsPreferences(); void tempoChanged(int); void beatsBarChanged(int); void rhythmFigureChanged(int); void weakVeloChanged(int); void strongVeloChanged(int); void volumeChanged(int); void balanceChanged(int); void toggle(bool checked); void updateDisplay(int, int); void editPatterns(); void patternChanged(int); void updatePatterns(); void slotExportPatterns(); void slotImportPatterns(); void slotSwitchLanguage(QAction *action); private: void setupAccel(); void setupActions(); void saveConfiguration(); void readConfiguration(); void readDrumGridPattern(); void applyInstrumentSettings(); void exportPatterns(const QString& path); void importPatterns(const QString& path); void createLanguageMenu(); void applyVisualStyle(); void refreshIcons(); bool m_patternMode; Ui::KMetronomeWindow m_ui; SequencerAdapter* m_seq; QPointer m_drumgrid; QPointer m_helpWindow; InstrumentList* m_instrumentList; DrumGridModel* m_model; QString m_instrument; QString m_bank; QString m_program; QString m_language; QTranslator* m_trp; QTranslator* m_trq; QAction* m_currentLang; QString m_style; bool m_darkMode; bool m_internalIcons; }; #endif // KMETRONOME_H kmetronome-1.3.0/src/PaxHeaders.13848/lcdnumbers.qrc0000644000000000000000000000013214155347442017104 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/lcdnumbers.qrc0000644000175000001440000000013514155347442017667 0ustar00pedrousers00000000000000 lcdnumbers.svg kmetronome-1.3.0/src/PaxHeaders.13848/drumgridmodel.h0000644000000000000000000000013214155347442017246 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/drumgridmodel.h0000644000175000001440000000465214155347442020041 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #ifndef DRUMGRIDMODEL_H #define DRUMGRIDMODEL_H #include "defs.h" #include #include class InstrumentList; class DrumGridModel : public QAbstractTableModel { Q_OBJECT public: DrumGridModel(QObject *parent = nullptr); int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; void setInstrumentList(InstrumentList* instruments); void loadKeyNames(const QString& ins, int bank, int patch); void fillSampleData(); void clearPattern(); void addPatternData(int key, const QStringList& row); void endOfPattern(); QStringList patternData(int row); QString patternKey(int row); QString patternHit(int row, int col); void updatePatternColumns(int columns); void setPatternFigure(int figure) { m_figure = figure; } int patternFigure() { return m_figure; } void insertPatternRow(const QString& name); void removePatternRow(int row); QStringList keyNames(); public slots: void changeCell(const QModelIndex &index); void changeCell(const QModelIndex &index, const QString& newValue); private: int m_columns; int m_figure; QString m_lastValue; InstrumentList* m_insList; QMap m_keyNames; QList m_modelData; QList m_tempData; QList m_keys; QList m_tempKeys; }; #endif /* DRUMGRIDMODEL_H */ kmetronome-1.3.0/src/PaxHeaders.13848/helpwindow.h0000644000000000000000000000013214155347442016570 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/helpwindow.h0000644000175000001440000000312714155347442017357 0ustar00pedrousers00000000000000/* KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2006-2021, Pedro Lopez-Cabanillas 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 library 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, see . */ #ifndef HELPWINDOW_H #define HELPWINDOW_H #include #include #include #include #include #include class HelpWindow : public QMainWindow { Q_OBJECT public: explicit HelpWindow(QWidget *parent = nullptr); void readSettings(); void writeSettings(); void retranslateUi(); void applySettings(); void showPage(const QString &page); void setIcons(bool internal); private slots: void updateWindowTitle(); void showEvent( QShowEvent *event ) override; void closeEvent( QCloseEvent *event ) override; private: QTextBrowser *m_textBrowser; QAction *m_home; QAction *m_back; QAction *m_close; QAction *m_zoomIn; QAction *m_zoomOut; bool m_internalIcons; QString m_page; }; #endif // HELPWINDOW_H kmetronome-1.3.0/src/PaxHeaders.13848/defs.h0000644000000000000000000000013214155347442015331 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/defs.h0000644000175000001440000000445214155347442016122 0ustar00pedrousers00000000000000/*************************************************************************** * KMetronome - ALSA Sequencer based MIDI metronome * * Copyright (C) 2005-2021 Pedro Lopez-Cabanillas * * * * 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, see .* ***************************************************************************/ #ifndef DEFS_H #define DEFS_H #include const int TEMPO_MIN(25); const int TEMPO_MAX(250); const int TEMPO_DEFAULT(100); const int NOTE_DURATION(10); const int RHYTHM_TS_NUM(4); const int RHYTHM_TS_DEN(4); const int METRONOME_INSTRUMENT(0); const int METRONOME_BANK(0); const int METRONOME_PROGRAM(0); const int METRONOME_STRONG_NOTE(34); const int METRONOME_WEAK_NOTE(33); const int METRONOME_CHANNEL(9); const int METRONOME_VELOCITY(100); const int METRONOME_RESOLUTION(120); const int METRONOME_VOLUME(100); const int METRONOME_PAN(64); const int TRANSPORT_PLAY(0); const int TRANSPORT_STOP(1); const int TRANSPORT_CONT(2); const int VOLUME_CC(7); const int PAN_CC(10); const int MSB_CC(0); const int LSB_CC(0x20); const int PATTERN_FIGURE(16); const int PATTERN_COLUMNS(16); const QString QSTR_PATTERN("Pattern_"); const QString QSTR_FIGURE("Figure"); const QString QSTR_BEATS("Beats"); const QString QSTR_APPNAME("Drumstick Metronome"); const QString QSTR_DOMAIN("kmetronome.sourceforge.net"); #endif /*DEFS_H*/ kmetronome-1.3.0/src/PaxHeaders.13848/icons0000644000000000000000000000013214155347442015275 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/0000755000175000001440000000000014155347442016136 5ustar00pedrousers00000000000000kmetronome-1.3.0/src/icons/PaxHeaders.13848/midi0000644000000000000000000000013214155347442016217 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/midi/0000755000175000001440000000000014155347442017060 5ustar00pedrousers00000000000000kmetronome-1.3.0/src/icons/midi/PaxHeaders.13848/icon16.png0000644000000000000000000000013214155347442020101 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/midi/icon16.png0000644000175000001440000000111114155347442020657 0ustar00pedrousers00000000000000PNG  IHDRa pHYsvvN{&tEXtSoftwarewww.inkscape.org<RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/4.0/TbxIDAT8u?Haw_*Zhpj D7\ȡ[- Y4TIA =K~,99>=-t}8'lTe\O8J]-42𛸍"ɰdA ^Z/sIe&{ßd%FQ^<|v&b,HFqy-i _‵ PZ p =wxP 쌝vA?A )! >E|x ߤ-O9]Q~#t ,=xk؍.iO TH48: [r;cQUE/Gs0?IENDB`kmetronome-1.3.0/src/icons/midi/PaxHeaders.13848/icon.svg0000644000000000000000000000013214155347442017745 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/midi/icon.svg0000644000175000001440000001304614155347442020535 0ustar00pedrousers00000000000000 image/svg+xml kmetronome-1.3.0/src/icons/midi/PaxHeaders.13848/icon128.png0000644000000000000000000000013214155347442020165 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/midi/icon128.png0000644000175000001440000001117114155347442020752 0ustar00pedrousers00000000000000PNG  IHDR>a pHYs'tEXtSoftwarewww.inkscape.org<RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/4.0/TbIDATxiEy//$/( E䀢\Mʢ%z@ n`APD. dy? scs$Lߺ]S˽nA:tСC]V = Y`ߧu`mVO+t =m # n{<.v^W!"yYUpJ.Q28V:x 8VVB9^0 p''Vd|_<鱮cKGA&rY@&i+,,e"ɹ*b] i xl:p;%`?N 5e p 1 ` y8q<$l&H"˰L@L''#uEi05.vt{[ǚu#:2y;#~gq h^lafz$}wĝ=X&-H ƞtEIG] %!݁iՅSi:R ^>CcWlܹb}cmt&]V 'f&S_>u5A; :HiK(ǨL f : L%w!9VŇOK+s?<`qI:EL:$dhz72D~݈ߌ~6k,G0w9C]bI|W,}Ȑ| Ygd4R s08Ϸ),tf=/{CqQC4Ab?[| +l㏖` `[?ݫՠ٢^x,7 ߷{A^1n5Ih+p.d&*E]BR>2e6oO8 ˿̳֬=m^ ؎փ8qDFY5d~`^Uc eAtOhCŷf_݃#]_iX'y ˲5@P'jgeAՑ/NTѣ|i+A$PŅ3 2K6Tx·FfjCo um.bd,yCHgVSy-톑\T {O/l1Gـu@G}"ϱR*iYIAz]oYjN\~/{DUh +l!q ^l:_18}MB<f=RK ({!sB?zt,[mRkFq>≋Vpkə0IkyġWvL@ ޔWEh ߪ"GUs l\*L1epjA[ 3JldW@Ms$miS7AWo#t"p=-X>9La&/u l@vC/E` ZK6űk)7]VHU EXr^M=1md.5=7~ SV\_~%~?߄P< ~$ IvS򆕎d&nNxD0nLI e|{DӲ@tcV{ 3$g !lD,mL|\2u#'X+!NF a58]?[r+k39K3,WaqݻH?eRM[ `_csjCҨMa$#MIl)'c]GHpeZymMh,!=Nu]fR-B/'6U>[Ro"^q$WK҇S|0{;%6|G|k+np;͝e8[M>OfpNz{'rɉ S -X#z#UYT656()M;C7t*\R&h/ Uy0 &N2\2!o@| ^TY0yF&|󸇯N7$u?{X[ 萰r'8}E<%P$ 9BIJmxLnT /L.<R9ċrbODs:5s4Oϩ*M0׷ Iqx3 }ih1}s.'^`7G&qZ8},; aܐ6$4ȣŸmuN>ZY9~V6 g%o$}Ll"V,&iÍm8ٲ]x oua2kRie',"=O2KJ.5 6jh5NȞ,/gpYs*+htB垂kdd֑\CEC7&!ьYÈX{ 2w] !6ee+W5n!WѰ:uܝiC EJY1Tl@]stPx2q"U5aK#>H8CXL/ަ߬Ke<d!RmsnlqiL+Ϳ߅* $ы"Sn|-kMSC;tСC:t?joE|IENDB`kmetronome-1.3.0/src/icons/midi/PaxHeaders.13848/icon64.png0000644000000000000000000000013214155347442020104 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/midi/icon64.png0000644000175000001440000000437714155347442020703 0ustar00pedrousers00000000000000PNG  IHDR@@iq pHYs\rtEXtSoftwarewww.inkscape.org<RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/4.0/Tb.IDATxilUE֪(RV)*"Q *AM@b4bЀbFM#@%Ⱦ*Rhνܹ˻[ ɻo93sgΜsf.!4S>I@g88vB`M#Ap0x LT| Q{'_WQ1֛h< }E@Gd\<|'0YB9ۀj F:S08`ȨI;1J Q VY(^2gG7@ @ˈ|ʀ@ccη 00"R` @<58uÀ<"VN:8>/q+%1té{.'@~ >FP4\O oEfu`bA>0S-&/Z kf>&4VYgm਄<И~{gr9Fr/"[*oQV3B8qFyeERaR>x޺y|A l k@,m: E5]J X`0j='AdX5w &N {R5CSt֞ x; zx-OAiϝ}  BmAfڎӣ^=>\/d3 f"Jaʏi,x b,D8sӞԬ2 ŝ١x};X 8#Lyٸ(j4{g evڍ\2|Kfx߃t:l'=\z#@GxatGAw807жقf#wo? B{a1gX1O1;U4  ;VYD5e86$0!2ҹp+X'F-!x((a:JPEyK8x[d [w8ܢj#JwKLJHEw䂽ްx }Ӣ|JpV\=xz TV٤wU{^Dh{iY' CC֬AܙR~ Bԥs' + Jo eKA~\P[P[ }Kˠ^p1jH#qΖBHx4xwAsG+#ňתiT` @DGT!"f-:R-'p?\%f)jr!"߰H;9zn,vWU!3LNFSkNZ3Uu:qv-l:$2g^R|Z3Ѻ"}^O;NZ2ܙ.pfcu& NiFM#(;Mh4Ƈ[}c:V"_|V`hCS٪GöA R5 aIENDB`kmetronome-1.3.0/src/icons/midi/PaxHeaders.13848/icon32.png0000644000000000000000000000013214155347442020077 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/midi/icon32.png0000644000175000001440000000215614155347442020667 0ustar00pedrousers00000000000000PNG  IHDR szz pHYsy(qtEXtSoftwarewww.inkscape.org<RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/4.0/TbIDATX[]SߴCiCi UFi: ԄДy񀈔TD(uNE(B$Rh%0Ht"÷gsΌIONNַZmm2Z&!3 ]XcQw).V\{2Z_;JL -_`N4tllƇp1>O3JxfYx;nš5!NrWTFI7Ƽf# `8|qc09&Z]<3>nqKV=l+09N( xpwr $ I*V|Ws"kxDfy\=*܇ [Փ7Q׳EY\ap6ndv΃gMi}Ų"6hG|R ({d<{VtVsepǀE4 6*mf:LurԏjOdz4aY<3Q5uhvb<0L,gOK^ٛT f {zw,`ظxbøR Ch@(K.)n2p쪒)WP7aΦv Lȉ ~>h!⣲QFfhe}{ʹĖ琬8evGh0^;3AnÌ.~ .*K OYb# KIUI{IWlqмsB2}2ѡxTr 3:1j.48(KL WcK>fL| n7D>Ulz^IǏѶz=ۢ a|2`/ .%tEXtdate:create2021-04-18T19:50:29+02:00%%tEXtdate:modify2018-04-07T09:46:27+02:00/̱IENDB`kmetronome-1.3.0/src/icons/PaxHeaders.13848/document-edit.png0000644000000000000000000000013214155347442020621 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/document-edit.png0000644000175000001440000000331014155347442021402 0ustar00pedrousers00000000000000PNG  IHDR n<gAMA a cHRMz&u0`:pQ<bKGD#2 pHYs``kBtIME$ eq^IDATXiPe^zpnLPQ,IjNTj6[%NSNhXa -\' $Ⱦeoe>|~yssμ?e+ z hx ّ])W  tEXwO--2 # buIT0#B2;i쵔U]Az3<+& zh D yCs>`AZ1eEHnK_9_F4Y(b,Gg_mxO!\ʢoEANf:`tTpv|N^9c\C OBt0x*m4A%#wB+gegt\x̏ |s~ݻ{<@eAIOrqt>g-=tmE")>rJj75q2Q(IR]!: :潘Фb,ewSi愹Qm]R# ~u e6596S7. C;&Vb+!W~$OPj*/qВ(ח28ýt@.6;ZWlM[ez}rg-Zj1fj8߄1p;,$0ߏ%h5 [GF!g3vx}ޥA(8!O&үpNlS#v-5h# u eִBbhQs\i> V;Cʀ#Xo|2~ONv~D+HtkNS0c%kI(7|ȍͤ#w*y C($?;a|rˤ8ɼרoߪ[M%"4v*COV'oьV3Nݦ;NɏYH/h)YD6Fw5e kyX cB4KUx gq=qśY 7lWZL1 `a;\ÖuyGt\.E$5B:t4,zMZL5avK@~8Jo)ѸXB~9]w.wY L 1%tEXtdate:create2021-04-23T15:36:32+02:00%tEXtdate:modify2021-04-23T15:36:32+02:00ٰ ;IENDB`kmetronome-1.3.0/src/icons/PaxHeaders.13848/notevalues0000644000000000000000000000013214155347442017462 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/notevalues/0000755000175000001440000000000014155347442020323 5ustar00pedrousers00000000000000kmetronome-1.3.0/src/icons/notevalues/PaxHeaders.13848/4.png0000644000000000000000000000013214155347442020410 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/notevalues/4.png0000644000175000001440000000045014155347442021173 0ustar00pedrousers00000000000000PNG  IHDR*lbKGD pHYs.#.#x?vtIME M:tEXtCommentCreated with The GIMPd%nIDATHQ 0DKOzͦ?1X4U؁f,5*JҤJ8N8῅T 7P"?T$$ Xϭ2za0<[fZA}r~پU=$B06YuIHG/:j_"IENDB`kmetronome-1.3.0/src/icons/notevalues/PaxHeaders.13848/32.png0000644000000000000000000000013214155347442020471 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/notevalues/32.png0000644000175000001440000000104514155347442021255 0ustar00pedrousers00000000000000PNG  IHDR5@.bKGD pHYs.#.#x?vtIME  ޑz#tEXtCommentCreated with The GIMPd%nIDATXݘQr D^d'=UL=xHVx@w_ G x+H(9~ C; !HuWe5Wp0m#[Д|HڲwMr9g&q=!Yw36bҖ!ڍQw-4dyeG2v"'g8jh Mף^}"wi&Hz*߮]M3ZX6.kqAvzp+Ц2wW߂D_K{L4qn:2NwBlkFld cE>p:ׯe{#~ęPjpi5 7|\U-@D#viS0IENDB`kmetronome-1.3.0/src/icons/notevalues/PaxHeaders.13848/16.png0000644000000000000000000000013214155347442020473 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/notevalues/16.png0000644000175000001440000000074414155347442021264 0ustar00pedrousers00000000000000PNG  IHDR+bHbKGD pHYs.#.#x?vtIME 0tEXtCommentCreated with The GIMPd%nHIDATXWQ NUs2ғiO7V?B벀`f!"Yk]x9x3xx0s9|bGO T<Uq+( [4 Pآ*;@l +D]X4L(zU22 ,v0es"X-@aMD"9J wEVѱVK<v&"KZI taPH?:Yt,d9F/K'JܛnY4wװԵi;La%n?T}xZ>}\~ċwT+a:$|`^ IENDB`kmetronome-1.3.0/src/icons/notevalues/PaxHeaders.13848/2.png0000644000000000000000000000013214155347442020406 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/notevalues/2.png0000644000175000001440000000046614155347442021200 0ustar00pedrousers00000000000000PNG  IHDR*lbKGD pHYs.#.#x?vtIME :HJtEXtCommentCreated with The GIMPd%nIDATHQ 0D'KlO-&kҖ@yGmSU</ .ޮ䵟+Uh"1#D sYdUۖnC,9N2Ghv9|J"7: 80Y@AM 2$?IENDB`kmetronome-1.3.0/src/icons/notevalues/PaxHeaders.13848/8.png0000644000000000000000000000013214155347442020414 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/notevalues/8.png0000644000175000001440000000070014155347442021175 0ustar00pedrousers00000000000000PNG  IHDR+[#bKGD pHYs.#.#x?vtIME 'N&VtEXtCommentCreated with The GIMPd%n$IDATXW[ := =l-EQ0ğ20n$<9Hyw9iE D'm"}'ُ\]u.Ӧ @&]QD8!Y#~WpuY|7PW-5)Hј #qR6i>9՜'"f Yߊ摤clQp<֘cէ*IvR@RګXМYŧ<:+nmgWVu\ArcC;[ͮS!` w kpIENDB`kmetronome-1.3.0/src/icons/notevalues/PaxHeaders.13848/64.png0000644000000000000000000000013214155347442020476 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/notevalues/64.png0000644000175000001440000000113314155347442021260 0ustar00pedrousers00000000000000PNG  IHDR;!^bKGD pHYs.#.#x?vtIME *bgF$tEXtCommentCreated with The GIMPd%nIDATXX[ ldeڕθ? ;3|sD~j"]Ͽ8C6U {]9G8sT?Ln~ED .vžse@h :bdCK 3#ycݴP>Jm%R2`j%#<yf2xz]bb j%Oޠ^2'5)зԸQDG( a 9~?{u6Sr/ٜ!~3 k|?"+ò/WQ4ؾYWs!| _Bt휳or` ;"*K>R2|唞q;PLZ|F*Q+_B k>;UcExI">f)c_hk\E?IoI#n=~ Ee-k: +|YĿC(8Q, ~ςo&CMy~h84}rsh,>5]Oڭ;qKS%UNr l4 X&{zNHqW(D58o)M ±j2HUOAh1tju`m{.ǀfj0&4bca6<6*2;df̿p$ e`|44?΋(w%tEXtdate:create2021-08-12T11:06:03+02:00uk5%tEXtdate:modify2018-04-07T09:46:27+02:00/̱IENDB`kmetronome-1.3.0/src/icons/PaxHeaders.13848/document-save.png0000644000000000000000000000013214155347442020632 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/document-save.png0000644000175000001440000000245214155347442021421 0ustar00pedrousers00000000000000PNG  IHDR n<gAMA a cHRMz&u0`:pQ<bKGD#2 pHYs``kBtIME .r8qIDATXLUe?﹇N. ݖGh1,nΥB?5dr6Xla#"fJ *tYtq#Z\ԩ˽psờ=}}?CL]@vTH1" +S=l- Q Ϟn놂z0 8-XS.N$OoA 1Q265Hh,bhDJ - WB.X9W *\x3!h` :rܵGo\rL͢in\ʅC_1y='>mC_UUsWo 򨖃`EUv@R@@L 9q}A 6!)4~'S~ϱ Q R@DAh>?.V"@,gGd|IƖƺ AFrGQԹe H'~n`;h ξ5d/g+C4#' w@t]L_V7/9:9QD \\*GO]Ёcf[`YU[b׎vV$q*q@= I | ((<Ozpe >Svjgp5GJ v ^J1|c][M.X,Ԥ7l5 No`3Ɲ$ ]0?kuax=ތqv*õ3C`8aC)ʡa#ib1/WJdՀT0"'0z$Fk#mq# @<ubJ7LD,7u DB`DZ.`լ)ɵ!IL,ROv&7Р=_hRx5 @1b9T1㚸 ;c&rK1=LٿѬ =4!WR4|P6KɖB7,8Wt#"ۏ$,DxH)57?%tEXtdate:create2021-04-18T19:50:29+02:00%%tEXtdate:modify2018-04-07T09:46:27+02:00/̱IENDB`kmetronome-1.3.0/src/icons/PaxHeaders.13848/help-contents.png0000644000000000000000000000013214155347442020643 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/help-contents.png0000644000175000001440000000506514155347442021435 0ustar00pedrousers00000000000000PNG  IHDR n<gAMA a cHRMz&u0`:pQ<bKGD#2 pHYs``kBtIME$ܠ (IDATX{TU;\(P0E"ij`(R&IG\e+.-h)2-0Qut&/`H(rs9R=?g}6סA <w7 F xɞ ]* o=[` @@˯ >^@5Z:`-b?rZ<2 57]T\.ϴo(* A^99T ]Tڐh%˟uF>w~Ox, 1> Ų8g͕HY: 4htp Q_ |cϟz Wb@W[6qY&>C,r$$ǧ}kŭ>B!˧A8n?JᙡI ;~"YbLY:U MdP:2">Cj.$ɪy\EIΛ@,"{:Af`Dq,VdL}#䮲[GWފ۽v͑a?PM+‚$S@'&3l\b&Z9r@j*=i$!,o "sBmx#Wt$eS5}lzTrpJKĴs⳸J87Gl=፨.=E@6;S.[8ĬSԼTf"a8vnY_f,d<s1Ci5}x81 Dn!mRۏ~yy~<Ҕmٻm%tEXtdate:create2021-04-22T14:36:16+02:00my%tEXtdate:modify2021-04-22T14:36:16+02:00$bAIENDB`kmetronome-1.3.0/src/icons/PaxHeaders.13848/go-previous.png0000644000000000000000000000013214155347442020337 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/go-previous.png0000644000175000001440000000206214155347442021123 0ustar00pedrousers00000000000000PNG  IHDR n<gAMA a cHRMz&u0`:pQ<bKGD#2 pHYs``kBtIME' %IDATXKhQ4ZJ2UB-BIԀ/|P%&T\4MkQ\AA,X u]UITlV/Zь*&\b#i bs?1P"E%PÚ|MomD뀇@9$_ sP;Wfe%A'b*N`B\s)gUG1S*QVJwq&r=b,?1.=mXqT%5CTԗ3F84T8mU*LfJBy#ۘI'@2<6S9|)Mq|T5Tnb{i##={E>@]KT5'@7]< |OLly;Osu-"/mS){*H㉍p3i**SWzT5%U1 .`[tFi<.vzM1iw]>-O,{źcD#Bȁ^ w}ݏi[0_­^N2ͬC_}.c-fԆ2}"pbE1 U߿Ӂs?geCM'.sE˾(N+FnI274G՚te)u"}iL=Q"7zIt}py He6!>-/B;cD~=k0#|יcQNU4(WDP*cY W1ɽhٛcPSq#*ۋ&Hc,`_0 wz9FP %tEXtdate:create2021-04-22T14:39:13+02:00J%tEXtdate:modify2021-04-22T14:39:13+02:00kIENDB`kmetronome-1.3.0/src/icons/PaxHeaders.13848/application-exit.png0000644000000000000000000000013214155347442021332 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/application-exit.png0000644000175000001440000000147014155347442022120 0ustar00pedrousers00000000000000PNG  IHDR DgAMA a cHRMz&u0`:pQ<PLTEDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDS([DtRNSf梡#"$fb2~bKGDH pHYs``kBtIME .r8qIDAT8˽0a Eŭ 7&!iMw%__Jg R +AY\^ @(KU(1U{Qi"~*ZAV$@jn5 |Ic `٦C1m+ku={n `8 .'y}ac 1LQeʩSpx hoM52Q +`.0Qԅ| 4 B_~`Y 9ym%#W2Գ9y*膷k~^%X &D\0< ]𶀼  G@? @UUh33Ġu Ѝ("(L>@? <r#rDx9 싴n["{hlȼ($ Z~2"L % +&`3xw4l)GeնR F@6X0O$K3A5}T& D60 v4Xl-)zd1}Bk^-.S*ĿypT#.p0 1|(O#"iS-ۘYO)w3 J{$KOS^<Ww"]e)5FyvFAKԽm,]t1Ÿ4cUšoE 7EMfyr{GA8p_Q\9,,9%{.iyaogju-WA) 2)sl!!:3 0ɯR߽ @3|(,#%tEXtdate:create2021-04-23T15:35:49+02:00KWg%tEXtdate:modify2021-04-23T15:35:49+02:00:EIENDB`kmetronome-1.3.0/src/icons/PaxHeaders.13848/window-close.png0000644000000000000000000000013214155347442020472 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/window-close.png0000644000175000001440000000652014155347442021261 0ustar00pedrousers00000000000000PNG  IHDR #ꦷgAMA a cHRMz&u0`:pQ<bKGDC pHYs``kBtIME'$O{ ?IDATh{\eo0A"^v15-SJcWX 5״m+-}Mw}UssӬڶx-RwE (( 8ߌf|g~Ϲ ܁; v1*u(2B| 6-"4oޗW%<%~l`(slb QnBrUȢ ou Nؤ5z [=Ptzn(Jqy Tu0Pi/Tgӟ0xI=nˉXdh߭GMX/e1iУ;GXȃrՁ `q v3~^gt[f[4육">)Dڵk׮Evx 75E)W dg@Y_}eXGtV1\1Lp(" 'Iq~@254;,yjF$؝S3 ;DCgˇzvT25gsė\[8>633YGt8e| 솮fj([#13ѱ}0>Xd ض1W1rf 񠒈$֫2Qige=bByy+UŲEP^~:krgه2C$ ͙VۘꨖElk7研8,S鏐M$zbD## yY3 t $bHgq鐙I:ۺ$5=9!g Wi &C *:mG雵{2ս+MU-VyTr1cVdxr:bM!&-<@I&$vz Ch'Tk NH% 'M"/L"6GtrǼ97f:HKY8)O&GOÜ,+ţbďbtrn'!D^6}Tr(n*Ax%H  a4!hkI4R%lMT$>ǙDf%!r8a#{Z~iuXգq5'[.^֝QiDZ- 7 o1(CGeŋՙ _JʙB̴~q@$r8.9{UNәßV(&M ~ͼT!W``ֶ|\T%4|CaM<.#' I j\Qb$tj5>ylm3Esc63g>n9[k,@a|[Y$_WJ_ H'Z4eU|_c/ṊC rᏞNG$9i0 Ƃ{{0p;bGEЁc"UѾYn|H1GT<ѡ+)H.ЂBBK6*kf3@iEseqTvbNh %k+GHpH4µ[#>Dk#$Y4R{kH (m'Ɨg?Eع2 #F@_Dc'G;*=Wtϊ,9`bJ̝2=e$% :fs5څ_V݌)(30 Npqr>GuE<'T+p'l%KGj%Hu\o&԰uG8j"3#pJr}FW!PLMq(g𘗐ř$bM]i#*aS__-2w&b"eD`|{0Zb_@L;"ab96f"Q@2f a;ˍᜏv T>*; 4@~(܊,~S{D|LO3\!.&Tt .hJ p؜oRZUVgy'{0&{'\S]NCԪy=yfz= %I3_A!U>jԮ}R@.WBGCUM^8<9bÇՍ5˪db?lMՓGe j6pvLaeOa/Rs7-LZ 7^OhmƉո2))Hn3jg>fܥO&H[~̊E7k-8sSQFtדPY3D2Q 8irWvK0Gd *=B;EOiSN]Iqc+}S 7yIX1PވFYRḻ&O̾鍐wݹleףCuveXso*+s8g@'Ml%ȡ O@ tj1b"z3ޮmnɮF#ۊ >y2~ y既Cg%Bv%P{|R$w1E" xl20E7/쬦 "ߊ7xe-|7+fܰ߁;pn BrN[%tEXtdate:create2021-04-22T14:39:36+02:00W %tEXtdate:modify2021-04-22T14:39:36+02:00 >IENDB`kmetronome-1.3.0/src/icons/PaxHeaders.13848/format-font-size-less.png0000644000000000000000000000013214155347442022230 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.357062938 30 ctime=1639304994.349062928 kmetronome-1.3.0/src/icons/format-font-size-less.png0000644000175000001440000000372114155347442023017 0ustar00pedrousers00000000000000PNG  IHDR n<gAMA a cHRMz&u0`:pQ<bKGD#2 pHYs``kBtIME .r8qIDATXyTTߝ\QEbq˸5j,1ni xf&I-Ij]N&`{Ԉư\"QY !hը}Ϲy<wJB#SsQ~&vYz/ȑ]yw@^\L{+SBc-47Pǣ~2/W4|Id w0(Wqc&ڒp1ތk pdĜdiw@wtM JeP#4ve?tS^KN0q Zޣ [\y>)WVߐ'׀z4RGG"Z#,6+ ޗ KgLTb:QQ_0MgbR1˖o:D"D 88 ODUh xmD. 1[|S `dV?\XZ]9= (P=+YTwPlvx<+׷PWӘEA|F2EEj':1x^K i$: 8-L=-"5Ĵs=f"H iO8>D1^b,䙣#8>.jQ๷/K2 jm&.qzײrG9ZPJrGĈcNJ 8uW0N'uuȏ=>)؛&?tw5TP@mRVy eG0N5HY!~M]l4V-QrPtcԆ` w+1)% [i8U !jYxG;ZgOR,OX]!yɜ#Ce7 HU͂s"o ӱ#}?8 1H8HɅ|y"~W S81O^QY|sG,|ɮ~qD3ߢ}bˆleY<涉V]*Z+rc2_7[AȪp,77/|(%T1JE1Biڠl:W 0t^d|*2=j5@ ~}d39~eJvZ՛\0+f T!?5WZHφ#scdViI?/rJN`@!:8ObƷz$RUU"BZr!w?VR4cm¤lZMx SMT>1 B/N`a5LS'eU\"e`:yb0={bБN6W6̡cEM*Z93a7X8&[k3d2pI3_`@N#5jވy`]}csmEǐ ?+ h92N6^X^2̨Mq }~'t7d Z@6xDCC Y )f1(c]dCKJ[@" TS: ё@Ir86[Ln9;f XN岐)$=Еd@3pIlCe9=áur>ptx Y*O%NP5 [vMGXSZ~m{&4@GHd}XP~'>iy9q^l^6&$|_d^a((VWV _ڛa0 h|eijGa?,$xʽMϳ%?.";:+:0i_~q`.lbK6?H@26'+XqOnN7ST*+̴~i_W"C[wff H1; ixE׷v/.i?f v1ĺ)P"|U! U{(X xݱLB% mndu)oc:S eExʃ 0voJ s?lnTηؖT:"=1V8I83f bKGDH pHYs``kBtIME8&П IDAT8׎@aT2cw,X.UHb\{IKf2 3aY Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> KMetronome - ALSA Sequencer based MIDI metronome Copyright (C) 2005-2021 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> 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, see <http://www.gnu.org/licenses/>. KMetroPreferencesBase 0 0 345 423 Output instrument: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter m_instrument This is the Bank of the selected MIDI program 0 0 160 22 Output port connection: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false m_out_connection 0 0 This is the mandatory connection for the MIDI OUT port Forced Dark Mode This is the MIDI time resolution (number of ticks in a quarter note) 48 960 0 0 This is the definition of the instrument connected to the MIDI OUT port 90 17 Strong note: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false m_strong_note This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. 1 16 10 0 0 75 17 Program: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false m_program 75 17 Resolution: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false m_resolution QDialogButtonBox::Cancel|QDialogButtonBox::Ok This is the note duration in ticks, when using NOTE OFF events 1 960 10 90 17 Weak note: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false m_weak_note 90 17 Note duration: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false m_duration 0 0 This is the sound of the strong notes for the automatic patterns Optional setting to send NOTE OFF events Send NOTE OFF events true If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Automatic ports connection on startup 0 0 This is the optional connection for the MIDI IN port. 0 0 This is the sound of the weak notes for the automatic patterns 0 0 75 17 Channel: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false m_channel Internal Icon Theme Bank: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter m_bank 0 0 This is the MIDI program 0 0 160 22 Optional input port conn: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false m_in_connection Qt Style: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter m_autoconn m_in_connection m_out_connection m_instrument m_bank m_channel m_program m_resolution m_weak_note m_duration m_strong_note m_use_noteoff m_use_noteoff toggled(bool) m_duration setEnabled(bool) 139 264 162 230 buttonBox accepted() KMetroPreferencesBase accept() 261 288 326 315 buttonBox rejected() KMetroPreferencesBase reject() 217 289 218 325 kmetronome-1.3.0/PaxHeaders.13848/kmetronome.lsm0000644000000000000000000000013214155347442016345 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.357062938 30 ctime=1639304994.353062933 kmetronome-1.3.0/kmetronome.lsm0000644000175000001440000000101014155347442017121 0ustar00pedrousers00000000000000Begin4 Title: Drumstick Metronome Version: 1.3.0 Entered-date: 2021-12-12 Description: ALSA Sequencer based MIDI Metronome Keywords: Qt ALSA MIDI Metronome Author: plcl@users.sourceforge.net (Pedro Lopez-Cabanillas) Maintained-by: plcl@users.sourceforge.net (Pedro Lopez-Cabanillas) Primary-site: https://sourceforge.net/projects/kmetronome Alternate-site: https://kmetronome.sourceforge.io/ Original-site: Platforms: Linux, requires Qt and ALSA MIDI Copying-policy: GPL End kmetronome-1.3.0/PaxHeaders.13848/AUTHORS0000644000000000000000000000013214155347442014520 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.357062938 30 ctime=1639304994.353062933 kmetronome-1.3.0/AUTHORS0000644000175000001440000000123614155347442015306 0ustar00pedrousers00000000000000Copyright (C) 2005-2021 Pedro Lopez-Cabanillas Translations Czech: Pavel Fric file: translations/cs.ts German. Rene Landert file: translations/de.ts Spanish: Pedro López-Cabanillas file: translations/es.ts French: Julien Richard-Foy file: translations/fr.ts Turkish: Server Acim file: translations/tr.ts Instrument definitions (.INS files) support: Copyright (C) 2005-2021, rncbc aka Rui Nuno Capela Files: src/Instrument.h src/Instrument.cpp kmetronome-1.3.0/PaxHeaders.13848/net.sourceforge.kmetronome.desktop0000644000000000000000000000013214155347442022332 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.357062938 30 ctime=1639304994.353062933 kmetronome-1.3.0/net.sourceforge.kmetronome.desktop0000644000175000001440000000076514155347442023126 0ustar00pedrousers00000000000000[Desktop Entry] Name=Drumstick Metronome Name[en_US]=Drumstick Metronome Name[es]=Metrónomo Drumstick Type=Application Terminal=false Exec=kmetronome Icon=kmetronome Categories=AudioVideo;Audio;Midi;Education;Music; Keywords=Music;MIDI;Metronome;ALSA; Comment=MIDI Metronome Using ALSA Sequencer Comment[en_US]=MIDI Metronome Using ALSA Sequencer Comment[es]=Metrónomo MIDI utilizando el secuenciador ALSA GenericName=MIDI Metronome GenericName[en_US]=MIDI Metronome GenericName[es]=Metrónomo MIDI kmetronome-1.3.0/PaxHeaders.13848/kmetronome.spec0000644000000000000000000000013214155347442016504 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.357062938 30 ctime=1639304994.353062933 kmetronome-1.3.0/kmetronome.spec0000644000175000001440000000343214155347442017272 0ustar00pedrousers00000000000000# spec file for package kmetronome (Version 1.3.0) # # norootforbuild Name: kmetronome Version: 1.3.0 Release: 0 License: GPL v2 or later Summary: MIDI Metronome using ALSA Sequencer Group: Productivity/Multimedia/Sound/Midi URL: http://kmetronome.sourceforge.net Source: %name-%version.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: cmake BuildRequires: alsa-lib-devel BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtsvg-devel BuildRequires: qt5-qttools-devel BuildRequires: libdrumstick-devel %description Drumstick Metronome is a MIDI metronome with Qt interface, based on the ALSA sequencer. Intended for musicians and music students, it is a tool to keep the rhythm while playing musical instruments. It uses MIDI for sound generation instead of digital audio, allowing low CPU usage, and very accurate timing thanks to the ALSA sequencer. Authors: -------- Pedro Lopez-Cabanillas %prep %setup -q %build %cmake make %{?jobs:-j %jobs} VERBOSE=1 %install make install DESTDIR=$RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %doc INSTALL README ChangeLog AUTHORS TODO %doc %{_mandir}/man1/* %dir %{_datadir}/%name %dir %{_datadir}/icons/hicolor/*/apps %dir %{_datadir}/dbus-1/services %dir %{_datadir}/dbus-1/interfaces %{_bindir}/%name %{_datadir}/applications/%name.desktop %{_datadir}/dbus-1/*/* %{_datadir}/icons/hicolor/*/*/* %{_datadir}/%name/* %changelog * Thu Dec 31 2020 Pedro Lopez-Cabanillas 1.2.0 - New release * Tue Nov 5 2019 Pedro Lopez-Cabanillas 1.0.1 - New release * Sun Oct 12 2014 Pedro Lopez-Cabanillas 1.0.0 - Initial version kmetronome-1.3.0/PaxHeaders.13848/readme.md0000644000000000000000000000013214155347442015227 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.357062938 30 ctime=1639304994.353062933 kmetronome-1.3.0/readme.md0000644000175000001440000000450114155347442016013 0ustar00pedrousers00000000000000# Drumstick Metronome (a.k.a. kmetronome) Drumstick Metronome is a MIDI based metronome using the ALSA sequencer. The intended audience are musicians and music students. Like any physical metronome, it is a tool to keep the rhythm while playing musical instruments. It uses MIDI instead of digital audio, allowing low CPU usage and very accurate timing thanks to the ALSA sequencer. This means that you also need a MIDI synthesizer for sound generation, because the program does not produce any sound by itself. The best results come from using a hardware synthesizer, but you may also use software synthesizers instead. For brief building instructions, see INSTALL. ## Developers environment You need the following software: * CMake 3.14 or later * Qt libraries 5.12 or later * ALSA library * Drumstick libraries 2.0 or later ## Getting the development sources Compiling and hacking the SVN sources is a bit different compared to the distribution tarball. You can get the latest sources either using a sourceforge user account, or the anonymous user (with read only rights). The SVN client documentation for SourceForge users is available at https://sourceforge.net/p/forge/documentation/SVN%20Overview/ 1. Check out the module drumstick from the SVN repository.         Host: svn.code.sf.net         Path: /p/drumstick/code/trunk         Module: drumstick There is also a [Git mirror at GitHub](https://github.com/pedrolcl/drumstick) example: ~~~ $ svn checkout https://svn.code.sf.net/p/drumstick/code/trunk drumstick ~~~ The module 'drumstick' is also used by other projects in a similar way as an independent shared dynamic library. You need to configure, compile and optionally install drumstick libraries. 2. Check out the module kmetronome from the SVN repository.         Host: svn.code.sf.net         Path: /p/kmetronome/code/trunk         Module: kmetronome There is also a [Git mirror at GitHub](https://github.com/pedrolcl/kmetronome) example: ~~~ $ svn checkout https://svn.code.sf.net/p/kmetronome/code/trunk kmetronome ~~~ 4. Configure and compile ~~~ $ cd kmetronome $ mkdir build $ cd build $ cmake .. -DCMAKE_BUILD_TYPE=debug \ -DCMAKE_PREFIX_PATH=$HOME/Qt/5.12.11/gcc_64/ \ -DCMAKE_INSTALL_PREFIX=/usr/local/ $ make VERBOSE=1 ~~~ 5. Hack and enjoy! kmetronome-1.3.0/PaxHeaders.13848/COPYING0000644000000000000000000000013214155347442014503 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.357062938 30 ctime=1639304994.353062933 kmetronome-1.3.0/COPYING0000644000175000001440000004310314155347442015270 0ustar00pedrousers00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. kmetronome-1.3.0/PaxHeaders.13848/cmake_admin0000644000000000000000000000013214155347442015623 xustar0030 mtime=1639304994.337062914 30 atime=1639304994.357062938 30 ctime=1639304994.337062914 kmetronome-1.3.0/cmake_admin/0000755000175000001440000000000014155347442016464 5ustar00pedrousers00000000000000kmetronome-1.3.0/cmake_admin/PaxHeaders.13848/PandocMacros.cmake0000644000000000000000000000013214155347442021253 xustar0030 mtime=1639304994.337062914 30 atime=1639304994.357062938 30 ctime=1639304994.337062914 kmetronome-1.3.0/cmake_admin/PandocMacros.cmake0000644000175000001440000000715614155347442022050 0ustar00pedrousers00000000000000#======================================================================= # Copyright © 2021 Pedro López-Cabanillas # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * 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. # # * Neither the name of Kitware, Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT # HOLDER 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. #======================================================================= if(NOT EXISTS ${PANDOC_EXECUTABLE}) find_program(PANDOC_EXECUTABLE pandoc) mark_as_advanced(PANDOC_EXECUTABLE) if(NOT EXISTS ${PANDOC_EXECUTABLE}) set(_msg "Pandoc not found. Install Pandoc or set the cache variable PANDOC_EXECUTABLE.") if(BUILD_DOCS) message(FATAL_ERROR ${_msg}) else() message(WARNING ${_msg}) endif() endif() endif() if (EXISTS ${PANDOC_EXECUTABLE}) macro(add_manpage out_file) set(_src ${CMAKE_CURRENT_SOURCE_DIR}/${out_file}.md) if (NOT PROJECT_RELEASE_DATE) unset(_date) execute_process ( COMMAND bash -c "LANG=C;date +'%B %d, %Y'" OUTPUT_VARIABLE _date OUTPUT_STRIP_TRAILING_WHITESPACE ) else() set(_date ${PROJECT_RELEASE_DATE}) endif() set(_footer "${PROJECT_NAME} ${PROJECT_VERSION}") add_custom_command ( OUTPUT ${out_file} COMMAND ${PANDOC_EXECUTABLE} -s -t man -Vdate=${_date} -Vfooter=${_footer} ${_src} -o ${out_file} DEPENDS ${_src} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} VERBATIM ) add_custom_target(manpage ALL DEPENDS ${out_file}) endmacro() macro(update_helpfiles) set (_languages ${ARGN}) set (_outfiles) foreach(_lang ${_languages}) set(_help_file ${_lang}/index) set(_src ${CMAKE_CURRENT_SOURCE_DIR}/${_help_file}.md) set(_out ${CMAKE_CURRENT_SOURCE_DIR}/${_help_file}.html) add_custom_command( OUTPUT ${_out} COMMAND ${PANDOC_EXECUTABLE} -s --toc -t html4 -o ${_out} ${_src} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${_src} VERBATIM) list(APPEND _outfiles ${_out}) endforeach() add_custom_target(update_helpfiles DEPENDS ${_outfiles}) endmacro() endif() kmetronome-1.3.0/cmake_admin/PaxHeaders.13848/cmake_uninstall.cmake.in0000644000000000000000000000013214155347442022460 xustar0030 mtime=1639304994.337062914 30 atime=1639304994.357062938 30 ctime=1639304994.337062914 kmetronome-1.3.0/cmake_admin/cmake_uninstall.cmake.in0000644000175000001440000000174414155347442023252 0ustar00pedrousers00000000000000# source: https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake if (NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt") endif() file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) string(REGEX REPLACE "\n" ";" files "${files}") foreach(file ${files}) message(STATUS "Uninstalling $ENV{DESTDIR}${file}") if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") exec_program( "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval) if(NOT "${rm_retval}" STREQUAL 0) message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") endif() else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") message(STATUS "File $ENV{DESTDIR}${file} does not exist.") endif() endforeach() kmetronome-1.3.0/cmake_admin/PaxHeaders.13848/SCMRevision.cmake0000644000000000000000000000013214155347442021043 xustar0030 mtime=1639304994.337062914 30 atime=1639304994.357062938 30 ctime=1639304994.337062914 kmetronome-1.3.0/cmake_admin/SCMRevision.cmake0000644000175000001440000000164414155347442021634 0ustar00pedrousers00000000000000find_package(Subversion QUIET) if (Subversion_FOUND) Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJECT IGNORE_SVN_FAILURE) if (DEFINED PROJECT_WC_REVISION) message(STATUS "Current revision (SVN) is ${PROJECT_WC_REVISION}") endif() endif() if (NOT DEFINED PROJECT_WC_REVISION) find_package(Git QUIET) if (Git_FOUND) execute_process( COMMAND "${GIT_EXECUTABLE}" rev-parse --short HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE PROJECT_WC_REVISION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if (${res} EQUAL 0) message(STATUS "Current revision (Git) is ${PROJECT_WC_REVISION}") else() unset(PROJECT_WC_REVISION) endif() endif() endif() if (DEFINED PROJECT_WC_REVISION) set(${PROJECT_NAME}_WC_REVISION ${PROJECT_WC_REVISION}) endif() kmetronome-1.3.0/cmake_admin/PaxHeaders.13848/TranslationUtils.cmake0000644000000000000000000000013214155347442022221 xustar0030 mtime=1639304994.337062914 30 atime=1639304994.357062938 30 ctime=1639304994.337062914 kmetronome-1.3.0/cmake_admin/TranslationUtils.cmake0000644000175000001440000001157214155347442023013 0ustar00pedrousers00000000000000#======================================================================= # Copyright © 2019-2021 Pedro López-Cabanillas # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * 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. # # * Neither the name of Kitware, Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT # HOLDER 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. #======================================================================= if (NOT TARGET Qt${QT_VERSION_MAJOR}::lconvert) message(FATAL_ERROR "The package \"Qt${QT_VERSION_MAJOR}LinguistTools\" is required.") endif() set(Qt_LCONVERT_EXECUTABLE Qt${QT_VERSION_MAJOR}::lconvert) function(ADD_APP_TRANSLATIONS_RESOURCE res_file) set(_qm_files ${ARGN}) set(_res_file ${CMAKE_CURRENT_BINARY_DIR}/app_translations.qrc) file(WRITE ${_res_file} "\n \n") foreach(_lang ${_qm_files}) get_filename_component(_filename ${_lang} NAME) file(APPEND ${_res_file} " ${_filename}\n") endforeach() file(APPEND ${_res_file} " \n\n") set(${res_file} ${_res_file} PARENT_SCOPE) endfunction() function(ADD_QT_TRANSLATIONS_RESOURCE res_file) set(_languages ${ARGN}) set(_res_file ${CMAKE_CURRENT_BINARY_DIR}/qt_translations.qrc) set(_patterns qtbase qtmultimedia qtscript qtxmlpatterns) get_filename_component(_srcdir "${Qt5_DIR}/../../../translations" ABSOLUTE) set(_outfiles) foreach(_lang ${_languages}) set(_infiles) set(_out qt_${_lang}.qm) foreach(_pat ${_patterns}) set(_file "${_srcdir}/${_pat}_${_lang}.qm") if (EXISTS ${_file}) list(APPEND _infiles ${_file}) endif() endforeach() if(_infiles) add_custom_command(OUTPUT ${_out} COMMAND ${Qt_LCONVERT_EXECUTABLE} ARGS -i ${_infiles} -o ${_out} COMMAND_EXPAND_LISTS VERBATIM) list(APPEND _outfiles ${_out}) set_property(SOURCE ${_out} PROPERTY SKIP_AUTOGEN ON) endif() endforeach() file(WRITE ${_res_file} "\n \n") foreach(_file ${_outfiles}) get_filename_component(_filename ${_file} NAME) file(APPEND ${_res_file} " ${_filename}\n") endforeach() file(APPEND ${_res_file} " \n\n") set(${res_file} ${_res_file} PARENT_SCOPE) endfunction() function(ADD_QT_TRANSLATIONS out_files) set(_languages ${ARGN}) set(_patterns qtbase qtmultimedia qtscript qtxmlpatterns) get_filename_component(_srcdir "${Qt5_DIR}/../../../translations" ABSOLUTE) set(_outfiles) foreach(_lang ${_languages}) set(_infiles) set(_out qt_${_lang}.qm) foreach(_pat ${_patterns}) set(_file "${_srcdir}/${_pat}_${_lang}.qm") if (EXISTS ${_file}) list(APPEND _infiles ${_file}) endif() endforeach() if(_infiles) add_custom_command(OUTPUT ${_out} COMMAND ${Qt_LCONVERT_EXECUTABLE} ARGS -i ${_infiles} -o ${_out} COMMAND_EXPAND_LISTS VERBATIM) list(APPEND _outfiles ${_out}) set_property(SOURCE ${_out} PROPERTY SKIP_AUTOGEN ON) endif() endforeach() set(${out_files} ${_outfiles} PARENT_SCOPE) endfunction() file(GLOB TRANSLATION_FILES ${PROJECT_SOURCE_DIR}/translations/*.ts) add_custom_target(lupdate COMMAND ${Qt5_LUPDATE_EXECUTABLE} -recursive . -ts ${TRANSLATION_FILES} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMENT "Updating translations" VERBATIM ) kmetronome-1.3.0/cmake_admin/PaxHeaders.13848/DBusMacros.cmake0000644000000000000000000000013214155347442020704 xustar0030 mtime=1639304994.337062914 30 atime=1639304994.357062938 30 ctime=1639304994.337062914 kmetronome-1.3.0/cmake_admin/DBusMacros.cmake0000644000175000001440000000072614155347442021475 0ustar00pedrousers00000000000000macro(dbus_add_activation_service _sources) foreach (_i ${_sources}) get_filename_component(_service_file ${_i} ABSOLUTE) string(REGEX REPLACE "\\.service.*$" ".service" _output_file ${_i}) set(_target ${CMAKE_CURRENT_BINARY_DIR}/${_output_file}) configure_file(${_service_file} ${_target}) install(FILES ${_target} DESTINATION share/dbus-1/services) endforeach (_i ${ARGN}) endmacro(dbus_add_activation_service _sources) kmetronome-1.3.0/PaxHeaders.13848/net.sourceforge.kmetronome.service.in0000644000000000000000000000013214155347442022726 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.357062938 30 ctime=1639304994.353062933 kmetronome-1.3.0/net.sourceforge.kmetronome.service.in0000644000175000001440000000013314155347442023507 0ustar00pedrousers00000000000000[D-BUS Service] Name=net.sourceforge.kmetronome Exec=@CMAKE_INSTALL_PREFIX@/bin/kmetronome kmetronome-1.3.0/PaxHeaders.13848/configure.debug0000644000000000000000000000013214155347442016441 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.357062938 30 ctime=1639304994.353062933 kmetronome-1.3.0/configure.debug0000755000175000001440000000046714155347442017237 0ustar00pedrousers00000000000000#!/bin/bash # a typical configuration for development usage... mkdir -p build cmake -S . -B build \ -DCMAKE_PREFIX_PATH=$HOME/Qt/5.12.11/gcc_64 \ -DDrumstick_DIR=$HOME/Projects/drumstick/build \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_INSTALL_PREFIX=/usr echo "You can run 'cmake --build build' now" kmetronome-1.3.0/PaxHeaders.13848/doc0000644000000000000000000000013214155347442014140 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.357062938 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/0000755000175000001440000000000014155347442015001 5ustar00pedrousers00000000000000kmetronome-1.3.0/doc/PaxHeaders.13848/old0000644000000000000000000000013214155347442014716 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.357062938 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/old/0000755000175000001440000000000014155347442015557 5ustar00pedrousers00000000000000kmetronome-1.3.0/doc/old/PaxHeaders.13848/kmetronome_2.png0000644000000000000000000000013214155347442020102 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.357062938 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/old/kmetronome_2.png0000644000175000001440000010177514155347442020701 0ustar00pedrousers00000000000000PNG  IHDRQtsBIT|d pHYs+$tEXtDescriptionWindow Class: kmetronomed>tEXtTitlePreferencesJB IDATxwXG?Ew'v󳾶-!Ē+PlQXf& kDc)cC@#J9ppw|gvg[fw1!CRh@ J%L4I8ɤ0əNLeX| @`BVy4%=ZmRHTJEO2s%@ zjbN9<|̢OZ89:Ӹ| vʴuP$$I):U0 VR&VR&M,%b vZl2C/ 7nrMJ%rF!ArJ rR GqIEa`#ePm%t s0t7Tǎg歘QnV~Y,zz߷[\LRRӨQ.. =V*I11ܻ{k+ /5NbyO%펠):U(2K d.a98TM*k,OOg%`§,W /N-l U 'f137GhbL&#+#gp€K%xڭ֖ުȑTPh#}F1B5o΃MA)8WUˢ(pŴ" 5%kӆqcƨss9,˕chv+,ZWA qq4h ty!#tyL -aPŕk׹r:BzYlyEGGSM4le muR\\,_囯"6&ڨ:8뻲P.gIZY^ePg2=@.?-[4g.\װ= 0T&&9%'gHOK#3## OM''SR jמwom1x`ݻNڭ;{cp/uؾc#F@V J%;vR u7ƆJxygLÇ [0˛~WV/2aDzꍗ~;t(/+:gqfYdTT.ׯ]{%e嗤dfd΢ ĖmuDTH SZ<- $&&/EYCz4oܸɶ;|ƍ ~ܜ-[ٽ@_ձPq7n؉}a:m{y67,9YV%K1zXNfMܻwP׵,_TB>8jիQ\p:I3:.%%Z*s`6nPRme:mׯ]oE.Oc=۠2dLLfffbiiIx~|ԩ]KKK7BdYX&{yͤceiɥ;-(t֝ݺ3j?yW_;uYaCɌ315g|N<Σ *fΚL~B޽s:L>sS%3i$uZA-,,σR_|Y[ȯNJMIqD8VѳW/$ml¤xDfF)L6B dV\?۶mcͥ.Vغ}7ns''Od뎝UU,?nߦn:8y /!c]ԩ]wP?/dY/H'#3ǎGyk055E$R;GPP t9 qdef-d(rOdp(J%]Fzz:)66r${ _φ g$͛5˷|I7oftؑ8u>u6ݳI'2uT= wsB>!֬ `æMԩSM[1?LLe IXY4co%O&)CveFB{,ɤgHIM!+K2HIO$+3I4>b(<҈ddg Pďܿ*VĚ@*W}c#Lwww"éV8;ڳdRʕ՗_qCֲN誓 DN!ElH[gO \x{ySV-6lB\232 `ƍT\ʖmu,rA$VK'&ϗĉdzŰdބZjr]Ӵ Ç -A޼׮nߢVZ335Ҳ1OPJ<"SJJ,iҧOO#qucFY~cerҭǬ  **dwq&4yRf޼6T'd$m?#]hժ6Q8Ϟ=-~R;At#l6ܫT֥ʰq&_;qvvbիW ZO`mmiii(JLudsڴnCZFvY+TVY)!K>B$ΛOTTUTaرEXՓԔϘ\.[o;vbyPZ5͝ݲJAuuT[';3#{on߸BJIA<<0XB[ZlɄI%$2G'v͟"3#2xtZA'y;_eW|G~Hu{o% 6浱ҥ+ddS^=E xfmÒ;`ko9_ҢysLMM _C<.3oIKK bGWĄX$667oafnY,LdD=yBع󘛚Rf-+a&b8WUˢcݸt[iɹY~Y,RS333Fx qxDVVO!.62037WWp/U7C MNzUu, WMYP;Ą*$Idfe\.GP`jj̬tA٧8WUˢ(pԝuagKjYD'UT1ܘ`an9@ x}):U(2?_[ @ "7@ 9s3pXR RɋM@PnJ@ B5R@P@ /@ *=7Ѷ  &fGP"2ˋŸ@ ^}J@ (KM eĄ@ Ą@ Q^m{l 5|`[@ Gv{Òt _l@ E՚4S{{{ +++>Ϩҵ[wemKڧ&_^&*GYAN^lyS<J-\sm_~LL&ƍ? -"]T]53"ݻ[GGG*V̟ Ezi]uS)T>^~n.^Ⱥu뉈~ҩcG>_ƍî?Sj&ի.I;vCoQ>XZZMRXsSGMsjȳMuJbމ믿"++3fbccS`L?{{9v8zR';weKYl)<`] _O,Zx2p֮U7]taCz֯[6li?'W1wL/o9+W([r]|K}dRˎX07o]s7o.[lYfZ+̝;,6oZoܗ8w+T>φ>zFH46oĹs8~ 6o~z8J5qqqŅ5kzP~97>>>j||8<ʊڷG.3h@ÇVQXXX`mmOOξ(>ǟCŊ0r}||pvv#9|AN2) $%%ʧ7}7v ܰgܹ{W_;Ę1P666x{yq |+8r@TgCt=AIZ8Űd%O}S\95th۶ɉhU 'Opv6E п?ӧOښ ~N\\\xIVrh )WnWfM>5I8s,~~+شquֆ+_5 RԾ>]H[ zNiS~FHdxyyT*Uŗ?r۷SǑV͚ A.U4t׮m[#..@ڵmgTt$&&+ <# ++`"|+EO=VSmhS~FJrӧo?>5 VZjz_'Y'̸qc_ɮ]qppw^ߩ_חLmڴo>Fo§ Z pttgGy3f"_&3aD ڶm1ۭfRJL.:k[0g<\˷KQ^t#me+9Ն6=gT (1^ KtFN(/]B\=۷ӷUNvlB w5A4l4!QAii³{nR}֦m[ڴm[$@ 0Bmggǎ[ PlroT0p#QA饘W(;q P$[@P1,Y*@   %@ &71*)2jaɒD "F K Vd ' HRRRս۹@ (`kmC* ~1he჎K@P=JD#i-)RSS RYҮBNbz#n$6Lu$csXR (KHHHb] x)"qˁ؀l )E&۶IŰ+0Ǝq#,A]u+$x~TK˵.,J2OhV}5^[u"PS緂 A\z~~[x TiCP0J)?BΚ3)-.˗_ (L{6+-Ν8p-[ʊ-Z0`@vܥӵ[w~q{2` V^CVV:M7g"qff& `!xygLÇ=b޼ 83g<={Wrˎr֕;.-.\1lݺ]B-[M k͂t}R0ɬ'#=C#^u.OgxoG,?tyV}R"+3U+ܱ#myzjҰ!vÎhټ9qmY VNh RSR IÆ4iؐ& j+*EBaA|}-ZlvVܺuK#-g "EsWv|{I;v$<<˖|R+,]?k̝3AtaOA7QF hm4UǁܽsM[iVnݺEP``C&ܹ֮ য়.Ǐ_ݷ蝾y&΄: }&33W,з/d_8{Qס D!wq.=[kٳ'_9cPg=" !1{{{8{{{5|||pvv#9|6\\\pqqaG>g1TpsҒ=zp]uJ4j s /lv [N}eCk3'''lǟCŊ0rlt JIR ѣGm=K҈$%9d__\qssחЪOiSNrz1s&+ciYܸ~]=?2m4*U 'N?7mȐPo";|ңٓ=rwww=_9cPf܊HRR...긤$5Wﱻ; zHHHАXbʕ+GFF;s=Ɍe WN}eCkjx*V5t}{OT'=z6(O'LPRR%y*Udtt4Tњ.GGGz?y>{kM&uw 7^#Yt))u ^#)wn&iSԩ][#.*:ZߞCA5899i?yDC .Z}{ٶuK]X]TU*rnC }Un;uqqɓ'Z { I 0` 9“G5]]]T? -*T aִt崫-twwwPN %t'O囉N݅] &NSSS&L;!;]/v.}u6NJXmN>5O||?<~J+1ԨQC#_ƍ0a"Y m۶o>>{1w*)))Z`&N 6mZkĄO D=8~ℑ%֍r7ڵzEh追ނ>6Vٳ't9gD.ӿB,t KCvء?t0V\CxÃ!Cۻ0p =4{y u `ԩ<~jժ1G7OOOFz{'. b %IPiTj͊-Q.+r.P9vOzDP+7dmZkMS7քE]M (-5dJu!$IB HF΢5 IDATd$vx]^F9_ki R!>Y!Ů2  (2 B:7+5zotakc˥hа ETrelm!zn2Ex0ӡHL|Z#ptt֎ժC4n2ի 6@ (shħ@ ( dgkK %@ (ډ[@꣹Y@ eՂbIJJ qq%@ 0WlmR:ɂ2È[A%@ (ǎ%"U mIE[@P HMMţC'@Nbư qqbGu(f쎧AiDBB6U풘P"(sHkU+׮n@B^wn;|ң'c3wֽ}*@[J ުϮ;oU_#6ye=卉aƴioۆ4i>|X†|U*s(^ÇѬikז/?"S(,Yj;ob%(b-e?' oÆa 6~~XZZM}Rw}qiFxJzuҥkvr޵/333Yh!+fffxeK}Vaմq#&LĦP(tC&OU=##_Թ3&NB-?y/7m$&&&ϳ RRR>'N2f(< w̙06o`ʕ:1t'>>xuk;FP` 7l/ 727Ѧ6u凰_[֭[jR#Vu^?i _8rV Q$;w*貱cNYl)˗-ܩÕWXd1ڧ?իט;gkcd}l=wyuf5oƪU띾o>._ܹs @bO 뻾C oۗ֩Аyؾslر[[|:y-۶}.ܿڠ@uz`@waӖlڲ[n!L6m̹=!;Ξ0Ohh(oT*tD,ZHFFƋ|MRRiFwܡ[oկݻwJ|XK~ܽgBWr-Y|$$&boogooObbbu쌳3>#GrB4Ƒ#ニ ...Grɏ 'GP;6661 Ǝу;wo3f4*To//N8oQ$)J*Rre9zSrg&ꂛ+板`>Y]̚9h*].L2?N?&檶uy]\'ܸ~%1k,$II:W۶najՊU(vZZVskRRR O>www`9;?\aP*tHRR...긤$ ۽B݉O(NCl$$$hWX1یbŊZږ+W cbb;v=D)IƔ\]Da}]~J%}ƎΗ38&&J*+Wo^GGMδILH`Æ ̚19uU\ylll[9K_gϞٳ`UVU˽+b<;}F3qkkk} ^#Yt))X[5»ȟemySNmBOֈ;Jڵs!*:Z: 䤑tmv“'Oc0ORO/ *[qB^|#@v\-HO@.OeVi܈TGG7gpppdH_7ȈH箮5ҳi311j?w8!s,\[H۶e dAlܰAoܡF\rU}~5jԨ">aĉbjjʄu7B?ۧ[ntXa۶[V͚ A.U4tGw``Dv ڶ% 8]v:cV **d e># ++`"|+l]wn3 YmvخU3-qNXt 1DDt|~6i"gϞA.'!1uR^=9u-[:;tȒ%"*:KӡcGT{qefWrJԭvҵ+={ܾs@9U~GD>dQ.%>N|Mwڴɰdq.PRF >?<~J+1ԨQCgܸd׮888лW/BC݋)SIIIjҸ1&L$Km6ۧ:sF~}YIЦMktmcgϞL1\N eu늉 s#::ʕ+1x`|+l ]Òdr:˖1h8haOkIYkWbmmMMrl͚7g'YYY|СCU6U+W2|PH濧'#INNɓZ˵i_d'LK/)W| Ifܗj;q=1\($_MB|Z\>r$fdܬXg/GG &&&1^Qd2 GG#56+6\x  3rXC ,J˗/ckkgѸ իWpN"1iI#[[;Wjި^]%cWo:@ Rve)޸ !7@ 9D&2@P$%%ظvE  6TRh[ވOe჎K@P=JD#\~KLRSSI,%Ӻ5.=Ò2E\lX}_ (#AݺFɾ؉[te B ;qc"NQ$e6n ުϕk׋L/r*ȋƭl=Fp?~LJ>l-Z4[kE>:nq_gRqk4jԘӦQzuu'߸q~?wLիaCXd 'Oٳg4hؐ^޴k׮X}{n|`§iРW^es7xɫ $$R<}73s 6nެNm߽s>#=f _Ξ=7_gCp0өS;v֖˗.~:ڴmS> ʼn̤pawhٲ%VVVlтc.uݺS3_n= ɀXz YYYҙ_~A^2ŗ/^Ȅ ٫7^#С߻oÆ{ѭ:޾csPBCOkn İ^\rUW$؁rrʣI) 92t7o@RJY8>Ѿ= ']UL4v[ ILHT7iؐ];vaNlA}:=#=}G֭hߞuYRJa5ÆO~banAFYt: 5z NN4|u « Ë.nK#V ٫w-`ܵJ.Ξ;ϼys#d^V dRFE-x)۶mSǎ:m]|K䤷 _cǏhb>A;~kYl)+̝;kkkyVF'?fJR0*YR[lV(J{l/>'(0c<)|233~J//T=~8AA8::yF֭ (0}.$I/>Пӌ0AeoGZ"dϏ\|EkZƍOX-o2 kۓXh>>>8;;ȑ>|:u1n*aiiI=s:M&3%!>$\]]iP0x x}{r9TI!ƌM ˋ'N] I<Y&4kڄڷcoHG}}qss___r@CVumv5o9V7'k1s&+ciYܸ~]ˁ닫V~>K$24kD7|22M65s11A>ww'Gpww+ e~'GGpqqQ%%%Xh*{N||Bu"ʕ###C}ض}[m4oL>WWW}c+CJehټZёiӧ3mtذaf`u@^K xxfe$`mm"e̠ls]6O壏qBCS\U+W O.Y;QT{1  cuK͚5|L$I̙` :m/gCpsuoQ>zU\Jo>-ZJdD$o&qssС:5s&#F0o|lllHNNZja+"<"_&Mrk&ȑ>|aB '`}zԪY=!!rYj;;;""" ">>xh߮}uE@P ># ++`"IRs n4nܘ_=HYd1QQDEGtb:tU6-- +++ʕG̝Fzn;:vIJK&:&KhQ^^'$dqqzJCI9{ t9 [SJ2Ni+aɲL5txc*UĄOSF uqᅭ]v@^ =NӻS|14֤qc&LHBA۶m۷OuۭfRJLl|6nݺbbbœ󈎎rJ у5kpUiҴ)_Ξ-;zcg98Tۢ EWU0ucGOuV 7dmZk]+D+^/Tؗn&9$!v^m$YᦄHĐdE睛@ xuŖ7e;7녣  (2 B:se[[.]D rXC  J˗/ckkgjG2Bzj-iw8::`kkGjjY oTV.F̑ݸ@ l/6+@ 9s_,❛ ,-׏AY@;7@ ЏHRRR+iWeWlmR9W(3J< t\Ү8ǎ%"U m4V(K =HMMţC'(yuk 1XN՜aI@7qqbյ055ٙ4#GR^/X1ШqՒvRfbԠY,Y˖W"!6._ӧlݼ3gqftjW;1crlq:yfΘN:uر{7\tѦm|]|,<~̡C>5AA[R>L]cDP"jʗ/ݻ{gAן9s3uzn9x ^#٫7SCܹa%)ɓ&Ѯuk}|6a" & k>؉͛9hoVgg0h׺5n}>KJ5?fW,-hԨ1K.SxF s3sf\N=S)UT˛^^^QM6hڨ:.qM6$`ڼǑ60v[ӹCΆQ =y}вys>؉=T)^G:wm4iPö.} Cv&%RGZZZj_@.]Ć 5Ξ;ϼysٺe3͚7cժ>쯾f̘t ՅRr?ML$x:jծR$0 wiV6mʭ[ *;y2}o_qusorǏ' (woQŦ-[9v|}V*=MW*ԯ~~<|Pg>mQ>yΞ cæ͜9w>_q18+cǍciİ/5ŋΚ9#?[ǥi7mLXٷg233~JJ%g_Ξ>}wZCȞ=:3EM (et֝ݺӧo?v(괕+hԨ!X[[1ӓiȏ; nnXZZҳGܽ\fۭZ$)fMЬikߎ!!̛?IRrL77W|}}9 YiּX[[1v8N8w̙T莥e9{zruu/~f/.j[,IJpvvRЬiug7ڴfDS=?g/..:r3+|ᇤ1j(ݻwyMMM!!! /i!{~diTT[[&Nȟ] 聻{dݝwy-%x&T222_ Zys}ܽwdd2ߨrʑw><<ާvZD~O9$Ic+CJehټZёiӧ3mtذaf`u@kh4g8[[J%fffy322y-Yڠ ֬ޞS;?5.}5›KZ[5»&iD&6,,; IDAT,ܹ3nR-\ XOm+rq~ܳ($);,ȎCʕ*7߲`|RSpuu%2"R7a8nnnZ߹͚9.]gO'OfԒW[2XMr:sGFs8;7|:ZXX>Wݙ^]ueEvw&Mķ_NswwgO^N PBOqT:$&L)L8Qw~%1D (dddpT}ӱҒV\e^̟~g׮x}߹IehUpqA:tȒ%"*:KӡcGiiiXYYQ?b4sױS'-]BtL41,]D* "8x=!!{#5-S2MٳgIHL`ݺԭW/_*̬L"" ^͛女gM(ys,gddf,UZ^3;ݿGzF:f֬t{ݿ[>CiNV`"47Ԡjd,,,U&'NPMt%X8%<2++ZoI/wlgĨ<{1y%( xt$;n}!Z8Y<)tKIQ ۺm8#u(c ǫ2TpDESVbFPHHHb1vkK mW__'M-H۸5x>W]/:z`tUl6zwֽ]IiX$R#,;,2X0wnt1UQ-gaƴioۆ4i>|XZ:_i)XԄ3gΰa&"""puu_~|QntިZE} "2O$I,7[6{Wű6"I/vcWh5|Q`LԠXFc^Q-4vSވ-&(b lQ r) ;̻svv: !!L8DjM3/ǏYbCdRs1bkkKF cJѪ*O_O&Q~}m֖II[6ma%˲]3;qk@Il`0?K2rp4iƒ,4ZB.7_mѣGw BuݧOۢy)ܾ[7oߺy[ E9jLػg7=b,\ys甲U%9}cee?ٔ)J43I\veK9q8JZliӰW fco|)k׬{4hЀϦrcX0*Ud 6m@ZZNQ+L->!~}iժ ߲u_Z.#Gvܸq 6t,Jƍ3rpԛ3|XX$̤UV ˺E2۶me|jTo]2>bˣHy)t [@p WϞ|0Cϟs.ݻǞݻb]\m6|T\Pcb9z(..N.DuiH ǎ;`$''}Tq|èd԰a#.w߾Ԭ_N&崬1n#"|,Xb9K,agɺǎ#:66mgv]11\z- [$Ϧ~jt'OgMR)0ۿs:eލ- Ҵd=\p͛_=;/7oiXR͞3]>n֮ɑ7Ok.Ξ=Gd,bcQ*ٴKvtۅnX>%ng/ =zD֭ZXp!d,^Ēŋz* [ IKc(-]3g7NCXv 0ݿǚC5r8C$9s琕EAkӚ)?!--U*~ M5¢2V >ߟNO 666 8x233/{U(L!|g0%3f-yh8::牉 gggx(!#||iӐ|+++ӧW>v׭&ozv'9»>>4?iצ wqpp-,,x|Fj5jhcHZ6S8VO%AښnynG>|sa*UsKq0333X_<--aÆ&JI )'3h`fϞ txV8]h\]]r95-!#)(Ù;g|\}L-Z"z9q$;w2IyݛI&bmmMFF}+6\]\>c:noP3gy]o*a|V5xqttvj*rnݺ<559۩z,| IR=8~X'|y3 9\U{{y:u:O<ʊ*U,q+푉F)j:vE 2u*-Ԓ8E'bD@=UXi>VJՋM&GK&$>zAO> KKKXi]\t҅(7OH`℈|a}KԃQz,?HZ/];w_u_#)VAkۖhG:EGЮm;-ylF @l8NWQ@` W_ښ&ogӦǃαP-[)'D~qҕ>dbCJۯY8/Kfu>z7ldΜ;8`ѣF9sH@c/ YIMMzj[=@s{[ߐY{{.[4_g~ݺq=n߾%wwwԯ@pp/>f,mڴWZ A%ss|}}IJ?$7%ouk*[o[o3,@ppo{kjZi/C=ctrU2OE__9jq?IyPGupAc +m3 %ul+V6֌]677giKrU>951m̑@T) 9w4]p̑'n*Dzɻֈ#X`|W.U&K ][96$e%dfL5MtU;@Yޑ~7\3vYYlՊK(HE-YXYF!ec133#;[S!9*:~`RDPNPbT*qp7ZWkmIAښÉ)mS J")) ;[;-Igײ%Jٳ]4b@Iy# 222ƥprvζ*5{)Bz-}1} n޼Yfi%U^\uj֐.%&ҷw0 ^GdbD<$1'27 Ιmzr ?~$?~+5C#p|M>}V~.\`ȑ/ծRQBB%֭ d+׮]/|AΘ|:e2C ѣ\yN=oE^ĽwnMUԫWEIzٻgwi s5:WS(&tPNIc^ɜqceW7s}{#eIh2q r_[7ouk|Lr|ڵ`b|~eӹ|yve$4mڌo:D:utJWKN}MJfF&JMh%4b tz=FRI<{ysLJ>>̛3gOilhѬ⅋Ui۴]8ȚڵnM8yAפDG3lp||WQg|u/sۡ9fEr:wHfC\NJټqS6gZUakkKPl߮*I LZj!XZZp֮]G܋N;ź8>@۶m\rt}V?&\n}i3|X[}_ūu2rj׮]|76~|lmm͔)Ҽ?em۶2>b5k1Qݧii2h@ 0{m7annNJhР>JGxBƍlذgQ*4nܘ#cg7K.Yu_>, 7WW,--ȥ\`/_ϝcƿ3{\/33CaW*&oepy{yu?ПG- N:}X|Z,Ԯ)YR؀^%z*zoí[٣-5EftЁBFjݹsjժk --MKA>ٳgFڢRTRϟ|My3/Nqjj*k(Pgƍt 栜aemJ5*]S+[]nݳI};Kpe\]IKKcذCǧ~:W_akkKh4k&޽%b!i988UT1|j5u_}UѣG8::CMJ4F֭Y~\ GGG\©S'^eE_xqqq\rt̴wE믿׮)Y;IBghެ9ϞlѢV;KEOSAtHh jrqqzuU%_KUK M/\5QF;r@HLztZMXPlml ߿K̝3[>._M2\evBÝ;n EWG'{kdAA̚5Qzu[g=W"wE[CYpN бVl4Es}ה}HQ;:мys߻GܺuLɱ%oZ㮾,?ɟ~kbc 3FV1|0|0`K'7 K75e~5jDCt҅(RRRk̝7_;o|SRP*øs۵mKtt4wݻDGЮm;iVwӧ| -)))lLZ(>ؘh"g- 6,?dRRY0=z2)-ͨ۷3k:^*vq&) ř$y忧Oaee%iii,_"_:̝3u6ՓtQ}5& uL0˴Sydyx jٲи|!khԭm4Us}הիWSM=&oYO߾xzy1lPqssё+V7߰&6ԛ"LBʽ+@sĭŋP(@xt IDAT̊n^9\Iڝ;ԬQ^V ź8njMSgzÇ#*j9[nޞAAϲg GL ##CgS1iisO 9C2Hw}~< !99+ !wol|uݻ}ݝ~r~[oڊ7ho`ccC\b~~ѣF9sH@rttdH&ORIF۫/ʣ7]ô&2 z#_Mppo-?]qWT1.~vtѪ[j蹮s:!8:8LN_ٮ(:$7sKP9zаamFDnݴ-#3]=8ƚFiٹ};mZΑ[Gܜ;w.H1s`e{w9#Fp8\kKy$IF23m0<+͒v1c(;PPa@b (w a̖7fffdg+qrv.AERB033CT`ov%emmI~l9H[6P T*Ϳ\l`kcKҙ$<*jn噚5K߉:k Ahv@ T8r 71@ ܻE@ D@ *pACn@ pW()mFA#u222{ni"88ckmCNFPR.I~̌ 3kk2p-%Wlxc6EP9z0)oy Eډ[ׯceeCo\Jl!C9r7oߦ{ Y%( I+)(qnݚ=vIzl%m۰gFPT޹+4޹ Ъ )Ҙ]4Nk5@BB=FQMdTAɠj6}F>YQ3Tp+M<5o;p*L"RF/m9H*IvV6Y̍'M^eUfglMH!<5ԩSP<-γQCٵh֔}ȥK zřDQW(g:>̛3gOilhѬ⅋Ui۴]8ȚڵnM8yATн[bEt/yTg -܊4d9zJGź8Vm۶?r濦p$?@Ff&ZbP,--uڐMLL,ܜ-'?b]ܻw=wq 6lHٳ(J7nñ+qvݚÇu_Z.#GvmVGLfM\#&!d,^Ēŋz* [?{vkwٳ爌ElL4Je6r2.r G-cEn֮ɑ7j׭_=;/7oiXRtSمnX>%Kkg/^ uV>Ya2o(3ONZ+GlN9B+ߖNT@jT^oJjժra cL4jOLp,X˛'LbA8::kCVA6ȡWp0kbc^}p-zAfhѬ;t 55Z~wܡZjy5HKKqpp-,,xQ6T*U* &]|G#t-X`=*yE7p SIfA)ϊ<ޞΝ:i߿|{X6l8/;++k=z$=|uUM& aa!۶}ͼ 3;PyWA苯[;IBghެ9ϞlѢV;KE  AO...\ONݺ>kɸjd&]hd-䋕+OuUF3wl{TA9-n履HKKwttvj|~-^| *\]\fٽ{vbvo֒k4z:-k}xa>.>}.0n}S`y{ #%lzWaWH-ܦϘAPԯ_O}^˹n,5kۖ555&\24dTX-]# BL07oRV-> AHOO[`>˗р_|0`Vl4Es}פZ5 0ewbZk׎{jb]\cЦMkz){b|222/ YIMMzjnp^D2|H*=ӧ_JFTrn݆==駟 ѣF9sH@e1]ߦ9=5oHt^ٽ_H{-Knݸ{^;]|pE]ظi3.\ 7`ر\߳Pg܋ A%ss|}}IJ?T{Ui=cMLe  (G8՛Z~\2c3]:/\504iv;EUtI̍$c +m3 %ul+V6֌5JKnnnifgipU>95[G? RYڦ*8޹w ,b}hղ"Is5j0~ܸbJ@PQQtIh悇QIgܷߑÇx={ckkO'x{y`@  Ž'π mڶM۶@ F.Lð#F@PRhM^8Nm@ (yYL,i &A"pb@PȽptA WXH bY[R {'n@ *pAA{'n@ *͒bD@ *9řX~K 1@ @ *(pA$@͡>R7lTxNk뇅K~ ޹,+88ckmCMڬT ILuU4+mS~}thk+V6ױK|saRߠI(AiYU *M)W hh>)PI}5[fϮ&n B s)]BS.n;wDfw܅ tUQ 5$ԍDa\* q_Ő ]K1#3*I%^F0`H{nrߋ'2%"<H*udiăGtPbqZ.^"+bd@SJ*Vw(1l:cbOWjZ&V˩@ X$J1py>9M6ɓL2/bz/̱/0mf͙^c*xlp̰٣VO&O Yv,߳{ .zuɲۿfET@xx8>1c80uBkQ ^J g'gݻw}]0y S'MbɊԩji*0Z5 NܿWWW(Ο?G033JA>ٳgyjj*ki[٣u卻?6°>qp"=z~aFZvv R%F ee?J\КECШa#9J@`Nɓ4x0gƆt:^+}]hHLzqwwg(<<dmt4G;ru11`@~NwaĘ93KnO CV^ED223HIIe'OJ nܼA䬙{g@N1㮾,?)<|Eʲ f͚ɕ?3.^Ȕ) Tgjfڶ %_}u">ªQHU="IDATIz͚DL«ed^Ic0mf$Mx6P9(fz1yVZŧ'Ƈ}$,[)9j}z5~}%33aC>8P&M͛7UH+~&5sUX gfJeiRdn'\Sv6G# ;Jq_ܜ;Ӧ;F)lsX[R 8kT0 'xN7%%4+]cP&D2`]h3E@ (Je[Fl4f3[ ݩcB0S(/bdfRe_(J ( ,:8؛(ժpTw LB IENDB`kmetronome-1.3.0/doc/old/PaxHeaders.13848/handbook.xml0000644000000000000000000000013214155347442017302 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.357062938 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/old/handbook.xml0000644000175000001440000004021514155347442020070 0ustar00pedrousers00000000000000 Drumstick Metronome"> ]> The &kmetronome; Handbook Pedro Lopez-Cabanillas
plcl@users.sourceforge.net
2005-2012 Pedro Lopez-Cabanillas &FDLNotice; 2012-05-28 0.10.1 &kmetronome; is a MIDI based metronome using the ALSA sequencer. KDE KMetronome Metronome ALSA MIDI
Introduction &kmetronome; is a MIDI based metronome using the ALSA sequencer. The intended audience are musicians and music students. Like the solid, real metronomes it is a tool to keep the rhythm while playing musical instruments. It uses MIDI for sound generation instead of digital audio, allowing low CPU usage and very accurate timing thanks to the ALSA sequencer. Report problems, bugs and feature requests to the mailing lists or the tracking system at SourceForge project site Using &kmetronome; Here's a screenshot of &kmetronome; Screenshot Features You only need to adjust some controls, like the tempo slider, the beats/bar spin box and the beat length selector. Press the play button to start. Use the stop button at your convenience. Tempo can be set from 25 to 250 QPM using the slider. The units are quarters per minute (Mälzel Metronome units). You can also double click over the main window to open a dialog box where you can enter a new tempo directly with the keyboard. There is also a combo box to choose and display the tempo using Italian musical names. Beats/Bar can be set from 1 to 32 beats. These are the number of beats on each measure or bar, and it is the numerator on the time signature as it would be notated. The beat length is the denominator on the time signature specification, and represents the duration of each beat. Changing this value doesn't change the meaning of the tempo units. Pattern is a drop-down list to choose a pattern definition. The default "Automatic" value means that the program generates patterns using the notes set in the configuration dialog (Strong/Weak) and the rhythm definition provided by "Beats/Bar" and "Beat length". It also contains the names of user-defined patterns. Getting Started This program uses the MIDI protocol, so it is a good idea to to have some basic notions about MIDI in order to fully understand the concepts behind it. You can find here a good introduction: What is MIDI. &kmetronome; produces MIDI events. If you want to hear the events translated into sounds you need to connect the MIDI OUT port from this program to the MIDI IN port of a MIDI synthesizer. It can be either a hardware MIDI synthesizer or a software one. If it is an external hardware synthesizer, you also need an ALSA supported MIDI interface installed in your computer, and a MIDI cable attached to both the computer's MIDI interface, and the synthesizer MIDI IN socket. If you don't have an external MIDI synthesizer, you can still use the program with a MIDI software synthesizer supporting ALSA sequencer connections, like QSynth. Start your software synthesizer before &kmetronome;, and then make the connection between the two programs, either on &kmetronome;'s configuration dialog or using an external connection manager like QJackCtl. Don't forget to install a good Sound Font into QSynth's "Setup..." dialog. Configuration Here's a screenshot of &kmetronome; configuration dialog Screenshot &kmetronome; has limited session management capabilities. It can remember one connection for the ALSA output port, and one connection for its input port. Connections are stored when the program exits and remembered at startup. You don't need this feature if you prefer to make such connections by hand, using aconnect or any other equivalent utility, or if you use an external session manager like the patchbay included in the program QJackCtl. &kmetronome; uses an instrument definition file in .INS format, the same format as Qtractor, TSE3, Cakewalk and Sonar. The Output instrument drop-down list allows to choose one among the standard General MIDI, Roland GS and Yamaha XG drum maps. You can add more definitions creating a file named drums.ins at $HOME/.kde4/share/apps/kmetronome. The contents of Bank, Program, Weak and Strong note drop-down lists also depend on this definition. Channel is usually 10, meaning the percussion channel of a MIDI synthesizer. It must be a number beween 1 and 16. Resolution is the number of ticks (time units) for each quarter note. Value range from 48 to 960. Note duration is the length (in number of ticks) of the time span between a NOTE ON and its corresponding NOTE OFF event. This control is enabled only when Send NOTE OFF events is also enabled. Very low values can cause muted clicks on some synthesizers. Percussion sounds usually don't need NOTE OFF events to be sent after every NOTE ON. Select the Send NOTE OFF events checkbox only if your synthesizer or instrument supports or requires this setting. Bank and Program is used to change the drum set for instruments supporting several settings. Many synthesizers don't understand program changes for the percussion channel. In Automatic pattern mode, Strong note is played as the first beat in every measure, while any other beat in the same measure is played using the Weak note. The numeric values 33 and 34 are the GM2 and XG sounds for metronome click and metronome bell. Pattern Editor Pattern Editor Screenshot Using this dialog box you may edit, test and select patterns. To create new patterns, you simply save the current definition under a new name. Patterns are represented by a table. The rows in the table correspond to the percussion sounds. You can remove and add rows from a list of sounds defined by the instrument settings in the configuration dialog. The number of columns in the table determine the length of the pattern, between 1 and 99 elements of any beat length. Each table cell accepts values between N=1 and 9, corresponding to the MIDI velocity (N*127/9) of the notes, or 0 to cancel the sound. Valid values are also f (=forte) and p (=piano) corresponding to variable velocities defined by the rotary knobs (Strong/Weak) in the main window. The cell values can be selected and modified using either the keyboard or the mouse. There is no need to stop the playback before modifying the cells. Command Reference The main &kmetronome; window The <guimenu>File</guimenu> Menu File Import Patterns Imports pattern definitions into &kmetronome; File Export Patterns Exports pattern definitions from &kmetronome; File Play/Stop Controls pattern playback &Ctrl;Q File Quit Quits &kmetronome; The <guimenu>Edit</guimenu> Menu Edit Patterns Opens the pattern editor The <guimenu>Settings</guimenu> Menu Settings Configure &kmetronome;... Configures &kmetronome; The <guimenu>Help</guimenu> Menu &help.menu.documentation; External Control &kmetronome; can be controlled using its D-Bus interface, System Realtime and System Exclusive MIDI messages. D-Bus Interface &kmetronome; provides some functions through its D-Bus interface. You can use a D-Bus enabled program to control &kmetronome; like kdbus or the commandline utility qdbus. For instance, these commands can be used from a shell prompt: $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150 $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8 Universal System Exclusive messages &kmetronome; understands some Universal System Exclusive messages. Because the device ID is not yet implemented, all the recogniced messages must be marked as broadcast (0x7F). MTC Message: Time Signature Change Message Format: 0xF0 0x7F 0x7F 0x03 Command Length Numerator Denominator ... 0xF7 0x02: TS change 0x42: TS change Notes: both commands affect only the next scheduled patterns after receiving the command. Length is at least 2. Extra bytes following Numerator and Denominator are ignored. MMC Messages Format: 0xF0 0x7F 0x7F 0x06 Command 0xF7 0x01: Stop 0x02: Play 0x03: Deferred Play MIDI System Realtime Interface You can use a MIDI device generating MIDI System Realtime messages to control &kmetronome;. System Realtime messages accepted are: Start (0xFA), Stop (0xFC) and Continue (0xFB). Many master MIDI keyboards and MIDI buttons devices provide those three MIDI transport controls. You need to connect your external MIDI devices to the computer using MIDI (or USB) cables, and connect the corresponding ALSA port to the input port of &kmetronome;. This connection must be done by hand, or using a session management software like QJackCtl. Credits and License &kmetronome; Program copyright 2005-2012 Pedro Lopez-Cabanillas plcl@users.sourceforge.net Documentation copyright 2005-2012 Pedro Lopez-Cabanillas plcl@users.sourceforge.net &underFDL; &underGPL; Installation How to obtain &kmetronome; Here you can find the last version: Project home page Requirements In order to successfully compile and use &kmetronome;, you need &kde; 4.2 or later, Drumstick, ALSA drivers and ALSA library. You also need a MIDI synthesizer to produce sound. The build system requires CMake 2.6 or newer. ALSA library, drivers and utilities can be found at ALSA home page. Drumstick is a C++ wrapper around the ALSA sequencer interface using Qt4 objects, idioms and style. You can find it at the Drumstick home page. You can find a list of changes at http://kmetronome.sourceforge.net Compilation and Installation In order to compile and install &kmetronome; on your system, type the following in the base directory of the &kmetronome; distribution: % cmake . % make % sudo make install Since &kmetronome; uses cmake and make you should have no trouble compiling it. Should you run into problems please report them to the author or the project's bug tracking system. &documentation.index;
kmetronome-1.3.0/doc/old/PaxHeaders.13848/kmetronome.html0000644000000000000000000000013214155347442020041 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.357062938 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/old/kmetronome.html0000644000175000001440000011775014155347442020640 0ustar00pedrousers00000000000000 Drumstick Metronome Help Page

The Drumstick Metronome Handbook

Pedro Lopez-Cabanillas

Revision 1.0.0

Drumstick Metronome is a MIDI based metronome using the ALSA sequencer.


Chapter 1. Introduction

Drumstick Metronome is a MIDI based metronome using the ALSA sequencer.

Intended for musicians and music students, it is a tool to keep the rhythm while playing musical instruments.

It uses MIDI for sound generation instead of digital audio, allowing low CPU usage and very accurate timing thanks to the ALSA sequencer.

Report problems, bugs and feature requests to the mailing lists or the tracking system at SourceForge project site

Chapter 2. Using Drumstick Metronome


Screenshot

Features

You only need to adjust some controls, like the tempo slider, the beats/bar spin box and the beat length selector. Press the play button to start. Use the stop button at your convenience.

Tempo can be set from 25 to 250 QPM using the slider. The units are quarters per minute (Mälzel Metronome units). You can also double click over the main window to open a dialog box where you can enter a new tempo directly with the keyboard. There is also a combo box to choose and display the tempo using Italian musical names.

Beats/Bar can be set from 1 to 32 beats. These are the number of beats on each measure or bar, and it is the numerator on the time signature as it would be notated.

The beat length is the denominator on the time signature specification, and represents the duration of each beat. Changing this value doesn't change the meaning of the tempo units.

Pattern is a drop-down list to choose a pattern definition. The default "Automatic" value means that the program generates patterns using the notes set in the configuration dialog (Strong/Weak) and the rhythm definition provided by "Beats/Bar" and "Beat length". It also contains the names of user-defined patterns.

Getting Started

This program uses the MIDI protocol, so it is a good idea to to have some basic notions about MIDI in order to fully understand the concepts behind it. You can find here a good introduction: What is MIDI.

Drumstick Metronome produces MIDI events. If you want to hear the events translated into sounds you need to connect the MIDI OUT port from this program to the MIDI IN port of a MIDI synthesizer. It can be either a hardware MIDI synthesizer or a software one. If it is an external hardware synthesizer, you also need an ALSA supported MIDI interface installed in your computer, and a MIDI cable attached to both the computer's MIDI interface, and the synthesizer MIDI IN socket.

If you don't have an external MIDI synthesizer, you can still use the program with a MIDI software synthesizer supporting ALSA sequencer connections, like QSynth. Start your software synthesizer before Drumstick Metronome, and then make the connection between the two programs, either on Drumstick Metronome's configuration dialog or using an external connection manager like QJackCtl. Don't forget to install a good Sound Font into QSynth's "Setup..." dialog.

Configuration


Screenshot

Drumstick Metronome has limited session management capabilities. It can remember one connection for the ALSA output port, and one connection for its input port. Connections are stored when the program exits and remembered at start-up. You don't need this feature if you prefer to make such connections by hand, using aconnect or any other equivalent utility, or if you use an external session manager like the patch-bay included in the program QJackCtl.

Drumstick Metronome uses an instrument definition file in .INS format, the same format as Qtractor, TSE3, Cakewalk and Sonar. The Output instrument drop-down list allows to choose one among the standard General MIDI, Roland GS and Yamaha XG drum maps. You can add more definitions creating a file named "drums.ins" at "$HOME/.local/share/net.sourceforge.kmetronome/Drumstick Metronome". The contents of Bank, Program, Weak and Strong note drop-down lists also depend on this definition.

Channel number is usually 10, meaning the percussion channel of a MIDI synthesizer. It must be a number between 1 and 16.

Resolution is the number of ticks (time units) for each quarter note. Value range from 48 to 960.

Note duration is the length (in number of ticks) of the time span between a NOTE ON and its corresponding NOTE OFF event. This control is enabled only when Send NOTE OFF events is also enabled. Very low values can cause muted clicks on some synthesizers.

Percussion sounds usually don't need NOTE OFF events to be sent after every NOTE ON. Select the Send NOTE OFF events check-box only if your synthesizer or instrument supports or requires this setting.

Bank and Program is used to change the drum set for instruments supporting several settings. Many synthesizers don't understand program changes for the percussion channel.

In Automatic pattern mode, Strong note is played as the first beat in every measure, while any other beat in the same measure is played using the Weak note. The numeric values 33 and 34 are the GM2 and XG sounds for metronome click and metronome bell.

Pattern Editor


Screenshot

Using this dialog box you may edit, test and select patterns. To create new patterns, you simply save the current definition under a new name. Patterns are represented by a table. The rows in the table correspond to the percussion sounds. You can remove and add rows from a list of sounds defined by the instrument settings in the configuration dialog. The number of columns in the table determine the length of the pattern, between 1 and 99 elements of any beat length.

Each table cell accepts values between N=1 and 9, corresponding to the MIDI velocity (N*127/9) of the notes, or 0 to cancel the sound. Valid values are also f (=forte) and p (=piano) corresponding to variable velocities defined by the rotary knobs (Strong/Weak) in the main window. The cell values can be selected and modified using either the keyboard or the mouse. There is no need to stop the playback before modifying the cells.

Chapter 3. Command Reference

The main Drumstick Metronome window

The File Menu

FileImport Patterns

Imports pattern definitions into Drumstick Metronome

FileExport Patterns

Exports pattern definitions from Drumstick Metronome

FilePlay/Stop

Controls pattern playback

FileQuit (Ctrl+Q)

Quits Drumstick Metronome

The Edit Menu

Edit → Edit Patterns

Opens the pattern editor

The Settings Menu

SettingsConfigure Drumstick Metronome...

Configures Drumstick Metronome

The Help Menu

HelpDrumstick Metronome Handbook (F1)

Invokes the  Help system starting at the Drumstick Metronome help pages. (this document).

HelpLanguage...

Opens a list where you can choose the language for this application.

HelpAbout

Opens a dialog displaying the program version, credits, license and other basic information.

HelpAbout Qt

This will display the Qt version and license information.

Chapter 4. External Control

Drumstick Metronome can be controlled using its D-Bus interface, System Realtime and System Exclusive MIDI messages.

D-Bus Interface

Drumstick Metronome provides some functions through its D-Bus interface. You can use a D-Bus enabled program to control Drumstick Metronome like qdbusviewer or the command-line utility qdbus.

For instance, these commands can be used from a shell prompt:

$ qdbus net.sourceforge.kmetronome / net.sourceforge.kmetronome.play
$ qdbus net.sourceforge.kmetronome / net.sourceforge.kmetronome.stop
$ qdbus net.sourceforge.kmetronome / net.sourceforge.kmetronome.cont
$ qdbus net.sourceforge.kmetronome / net.sourceforge.kmetronome.setTempo 150
$ qdbus net.sourceforge.kmetronome / net.sourceforge.kmetronome.setTimeSignature 3 8

Universal System Exclusive messages

Drumstick Metronome understands some Universal System Exclusive messages. Because the device ID is not yet implemented, all the recogniced messages must be marked as broadcast (0x7F).

MTC Message: Time Signature Change Message

Format: 0xF0 0x7F 0x7F 0x03 Command Length Numerator Denominator ... 0xF7
                            0x02: TS change 
                            0x42: TS change 

Notes: both commands affect only the next scheduled patterns after receiving the command. Length is at least 2. Extra bytes following Numerator and Denominator are ignored.

MMC Messages

Format: 0xF0 0x7F 0x7F 0x06 Command 0xF7
                            0x01: Stop
                            0x02: Play
                            0x03: Deferred Play

MIDI System Realtime Interface

You can use a MIDI device generating MIDI System Realtime messages to control Drumstick Metronome. System Realtime messages accepted are: Start (0xFA), Stop (0xFC) and Continue (0xFB).

Many master MIDI keyboards and MIDI buttons devices provide those three MIDI transport controls. You need to connect your external MIDI devices to the computer using MIDI (or USB) cables, and connect the corresponding ALSA port to the input port of Drumstick Metronome. This connection must be done by hand, or using a session management software like QJackCtl.

Chapter 5. Credits and License

Drumstick Metronome

Program copyright © 2005-2021 Pedro Lopez-Cabanillas

Documentation copyright © 2005-2021 Pedro Lopez-Cabanillas

This program is licensed under the terms of the GNU General Public License.

Appendix A. Installation

How to obtain Drumstick Metronome

Here you can find the last version: Project home page

Requirements

In order to successfully compile and use Drumstick Metronome, you need Qt5, Drumstick, ALSA drivers and ALSA library.

You also need a MIDI synthesizer to produce sound.

The build system requires CMake 2.8.11 or newer.

ALSA library, drivers and utilities can be found at ALSA home page.

Drumstick is a C++ wrapper around the ALSA sequencer interface using Qt objects, idioms and style. You can find it at the Drumstick home page.

You can find a list of changes at http://kmetronome.sourceforge.net

Compilation and Installation

In order to compile and install Drumstick Metronome on your system, type the following in the base directory of the Drumstick Metronome distribution:

% cmake .
% make
% sudo make install

Since Drumstick Metronome uses cmake and make you should have no trouble compiling it. Should you run into problems please report them to the author or the project's bug tracking system.

kmetronome-1.3.0/doc/old/PaxHeaders.13848/kmetronome.10000644000000000000000000000013214155347442017235 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.357062938 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/old/kmetronome.10000644000175000001440000001042514155347442020023 0ustar00pedrousers00000000000000'\" t .\" Title: kmetronome .\" Author: Pedro Lopez-Cabanillas .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: 2009-06-27 .\" Manual: Drumstick Metronome User's Manual .\" Source: Drumstick Metronome .\" Language: English .\" .TH "KMETRONOME" "1" "2009\-06\-27" "Drumstick Metronome" "Drumstick Metronome User's Man" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" kmetronome \- MIDI metronome using ALSA sequencer and Qt5 user interface .SH "SYNOPSIS" .HP \w'\fB\fIkmetronome\fR\fR\ 'u \fB\fIkmetronome\fR\fR [Standard\ options\&.\&.\&.] .SH "DESCRIPTION" .PP Drumstick Metronome is a MIDI metronome with Qt5 interface based on the ALSA sequencer\&. It is a tool for musicians and music students to keep the rhythm while playing musical instruments\&. It uses MIDI for sound generation instead of digital audio, allowing low CPU usage, and very accurate timing thanks to the ALSA sequencer\&. .SH "OPTIONS" .PP \fB\-\-display\fR \fIdisplayname\fR .RS 4 Use the X\-server display \fIdisplayname\fR\&. .RE .PP \fB\-\-session\fR \fIsessionId\fR .RS 4 Restore the application for the given \fIsessionId\fR\&. .RE .PP \fB\-\-cmap\fR .RS 4 Causes the application to install a private color map on an 8\-bit display\&. .RE .PP \fB\-\-ncols\fR \fIcount\fR .RS 4 Limits the number of colors allocated in the color cube on an 8\-bit display, if the application is using the QApplication::ManyColor color specification\&. .RE .PP \fB\-\-nograb\fR .RS 4 Tells Qt5 to never grab the mouse or the keyboard\&. .RE .PP \fB\-\-dograb\fR .RS 4 Running under a debugger can cause an implicit \fB\-\-nograb\fR, use \fB\-\-dograb\fR to override\&. .RE .PP \fB\-\-sync\fR .RS 4 Switches to synchronous mode for debugging\&. .RE .PP \fB\-\-fn\fR,\fB\-\-font\fR \fIfontname\fR .RS 4 Defines the application font\&. .RE .PP \fB\-\-bg\fR,\fB\-\-background\fR \fIcolor\fR .RS 4 Sets the default background color and an application palette (light and dark shades are calculated)\&. .RE .PP \fB\-\-fg\fR,\fB\-\-foreground\fR \fIcolor\fR .RS 4 Sets the default foreground color .RE .PP \fB\-\-btn\fR,\fB\-\-button\fR \fIcolor\fR .RS 4 Sets the default button color\&. .RE .PP \fB\-\-name\fR \fIname\fR .RS 4 Sets the application name\&. .RE .PP \fB\-\-title\fR \fItitle\fR .RS 4 Sets the application title (caption)\&. .RE .PP \fB\-\-visual\fR \fITrueColor\fR .RS 4 Forces the application to use a \fITrueColor\fR visual on an 8\-bit display\&. .RE .PP \fB\-\-inputstyle\fR \fIinputstyle\fR .RS 4 Sets XIM (X Input Method) input style\&. Possible values are \fIonthespot\fR, \fIoverthespot\fR, \fIoffthespot\fR and \fIroot\fR\&. .RE .PP \fB\-\-im\fR \fIXIM server\fR .RS 4 Set XIM server\&. .RE .PP \fB\-\-noxim\fR .RS 4 Disable XIM .RE .PP \fB\-\-reverse\fR .RS 4 mirrors the whole layout of widgets .RE .PP \fB\-\-stylesheet\fR \fIfile\&.qss\fR .RS 4 applies the Qt5 stylesheet to the application widgets .RE .SH "LICENSE" .PP This manual page was written by Pedro Lopez\-Cabanillas Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation; considering as source code all the file that enable the production of this manpage\&. .SH "AUTHOR" .PP \fBPedro Lopez\-Cabanillas\fR <\&plcl@users\&.sourceforge\&.net\&> .RS 4 .RE .SH "COPYRIGHT" .br Copyright \(co 2009-2014 Pedro Lopez-Cabanillas .br kmetronome-1.3.0/doc/old/PaxHeaders.13848/kmetronome_3.png0000644000000000000000000000013214155347442020103 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.357062938 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/old/kmetronome_3.png0000644000175000001440000012000014155347442020660 0ustar00pedrousers00000000000000PNG  IHDR0jsBIT|d pHYs+$tEXtDescriptionWindow Class: kmetronomed>tEXtTitlePattern Editor^. IDATxw\UϽ Q ^3ަVnsoˑҴfG{gif=2G **Cepd\_S#y9*tYixB!YRgmU}SQkY_C!Bxm4!b^Z*sN)S r[:V!"Vʊ("m1s:RY8;J0f((JBR@!Ȁ<ԼJZڐGѐGPFᙣ3>[*9b6@N?ne|FIhX:rE@hXr)K!dy'U2;%yb`+% oo6lڂ%e˖`huZ>ۗzu뤹!y]\\\QT(\RgϸwvyJsB7Ov9x`!r<Լ)`T%*KdT#5&W..]BTT#?NdT .#G;Klr2!Ѽ zXZY0JE^gg*U耵Qy kۮg{{{*T(AϟߨoG|%~e`#R睜wV1e@ZΣIF :08p"_M\ Nu5gQ tPbE"#hnQDEFZ{*$xS\qk7nrϔ-W J׎[Z a;L6`=My'3io2qB_&نij%@rO}9퍥%kդ{>L2U*3ߧ8||p2kpNx{ӰA 9 DEpX5y !B-߽ ‚>}s=zĆ r*:*U0888f<$A̔; ^ݺ 쎍!g d}r`>ڶkaC.^x;%K2b/^d9-ܹûロJ6xL%&L@V( -⡯/sK qc5{L"6mfΝ3SJ/V%PPA|9[^_ ?ᯏ’"#_ϟ?J/?gͪU+Wfӧo_qߏhѢxm?ӑ>}?Ӌ_lIP?b\~ðkxnxi3Xعgٻ?+IK ;vϏ?bOx;vL ͒y'5bŋӺM[.]NRy=BBB޽ ٳ}+[/jøyӧM#22ysr⯿4yQmX&WFƆܹsP|d+XtilllBbit:PrY[ZÇ)RHºTɓPt:juWx6Srexxky1*A x5#}?‚ PA@F1pCƣJvĉ~tҙ4͠q,\&:_Mn^\<~\o7~<_m ,ɝw4фrYmFΝDܑky'7o5k&s&::IΎIPd5,Zɓ&޽[UjCc!/2fժxmH2eٸe+{tGX26D&ի`4kz^xiHgLb.!^_c@ؤGep0aah"#ҠhDG'>4:hSC(ܿ{xF9sԹ30^z`TR */;̕k׹znʵ $.>EIjq툿qssCg__dI jě'N޽i٢%A:$;$kc^Nkf"B37 (R0n*۞/!:*3fp7{;|DEFՆɎ4}wޥzh79 i&{&+ֻ<}zEӧOɅe:I 6‚ g;}qcJ鵁@RvױܹucG~g`L|ZfuȚ5kTZl5k kҲU̮fR;DDDi>$whH0zZԩ"ywً M4O<ޖ~deRmذa#/]bm}V\ Ғh°5z,RQ[Xȕh԰ѯI,Mn^FbEQg_ٔS'|!|7PZiEQL$<, sW%Gpuu֎"E O5m׌Xfb o?y"xc.yKh2'[I_M%]Hr ) s6/i(e6KW.{$s<ԑv/ [KTZ4hؐ$.>kFōXR=bma!D'~td偤e&&>) `]Hv;DOB$=M0EFFP52q YcoeEp!Afc AmO?%(9_l5ZJ3}̞^^.܌9f_FY5%3M"! &rcD^m MTLҫT*jj*~ڱw!F ӯ.hf\ˇ& 7n\éISVMSƪ^^)y%ӯd]Hm۵7looO q4BTk`Q%3>z\6X[+ ˏYO>NC'(3 q)X I&WJYiח.s/Ԯ+wvxW\?g*6Rl$VIrŊXXX/իUcA+W. :WX+׮)e3rR܀#88{0ofϚU !D3%$ʸ>3>:VZ }WDūyEQ+Ҡj ʜ7)S;ޞW~4j8Lju~=?t("c -ýˈh~9+"/4iCiZ\E1f`Z *]9#MR׌{tڕ{#~a&={[|?W37m۵Os}1MPض};~FXh1Vmמѯڵذ_~aԹ cƌ&iVeܹԯ[U`Uc`wVH<3%իTN_Rj(Q+W,FTTFc}mZ컥hP.۶n5EGG3udjVFj՘:e2&iElK,EMף&"ZKx6#c`&n| ++KרΒK W_I4W/G}A&m[Bū[鴬^-[иa&7 ٘YWnwSgR@Af!AzGGGڵ7:MժU/os]-]b;|>b$WodOx!lg37odْWi_vɓޝdc.EJ6VKhD4ki{} FբQ|,Z̃>I11t֝_wnn,ZwKޞ3g>}{{J[M7qyV^þh4,_,m6b`ܚ5ԤܻvȠ߾Ky>rt!pýS5kd}k\x9GJqx /^j 1,:ndۗl3tϏ ɓ ⸻9Æ :uȝwx~ڱi)^8|7yʫzccc=cǏc^cAl޼ V_ة!| @|7Ń=v,,-y)*\Ysd ,H2u{6I$ʹCǎ(P f;V@>f U_m*4 Y3h56&2q7<{u6jԬy6|8'Oz(z1w g.=B booǨQ8rFQo֔Rg.ZM( &$$GQbd7kl}sqq!$$9GZ30qAv-}ܽwPO ={aÆqs\\JBa???J(dؕ+W9{_˗1OִxAxŊjժ| ̩'x ?/^'O>Yŋh|dߴ)O>MD !L# dͳcg37|z:I)M2:93o7< ˋL`ܼq%Ks-Bb jz-Zl( N ڥKrtc LZi֠QNyP*);I3 č1Mޅ4{lz_֖0zmOj}R\]A~7dWP!߿O$D8bPF򕫰'$$*&!L z||Pt 0UTkע( =د܅ϟ?A'H+0֮|1jb/1jTqt:a7-i+3S^u˖8'|>㇙3#447GQҠaC؏(4l;;[EOXd  LPFF+Ftlzѣܜ8 /y8vA8ܘ0yi,2oRa1al\JZyoc`FFF'OlllxK.KoZn͒%KErf͞CFdd Lݘ<[|||x%S=ñ#O<#Xv3gəN;oJ.3vaaaK:Ik׮-*gӧO)\}1KJxD8ݻt&<<_2͞;iS=6dn>xsyw~KzoаmZDЮ 1QҥY"_|O]mזG4UӅ90[{jrr#f *cz4Zm2;vĪU+q:TVɓ'L8E1q7sqWQCx5 wSVQݰK.T*7ǏSX1΢%sǎ}vqf#&Y8sUjiRG<=)[թZٙUtr}4q~ >HhH'O6:,k^%jyFv1*h).S-xF3|]8?2j  2i`!Lc4nI򲰰 :& H2t N24ikǚ eo۰ޓGSF 7G47 M OO\ʅѣ 5kC#h:kJl ??_sf1.GDQ}B\*U2I[5%nXg9y@vڵkغ}"H# ɈozEЛml ~M._ATtF8aaah4"i9m*#~uXcdI- ˴jGROpX1G_r ODvThj5Ӧ"[!r S'H1̘ޥ3bH>{3gw(>zPp"9]H1O8NG{=n)6}´e[-g IDAT {Sӯ,Idվ.de|$j Z' LRpT :$a9xAem׷1j qʼn)mBO:S܍VtO^~4kerŝqAvoVQBwVR~풞r&ؒVQqrʋVd>o:ZV)oq_Θ~8d m_r<vBXygjRds*V Mo^իWwH6kӯb Y7Qc?,9Bd/^|8{4ϟ0wur';PXdH1Q ߅$W="G+QF~~▖ɜB!rw!B!i 30B!9B!rB!DE V !BdgqC$B'.$ I!9@ܘ%Cx)"B&TZŔB!0B!D{ `BF!9 GGGҟ:yM7ru]Æ٨ :K.֎os˖-ʕ2h;m۶Mw7?~ pr*U0jh .dTP_7*Ν;3F_QV,_{QTt؁C_v$HS'=qcmՋ `iF߲e3ztχض}; bi/?NKs:x _ƎKVػo/׮s.3F2wKfמڳwJc/ZV[شyCF߷oϝ˓9{,0:=$Lf`Db)}\pg}>%RK$ܽG6mdtz֬^ÂE գkRKڿү]>}zG`ggd)i|7mfΝ;_@##"駟Vzү\]Ph$ۑZ6ZEBh׾:wFVSHa>nFCb('NPdI\\\nzزy =ztGmJzݽgtrʖ+O\/_v'k`fwYh1OsF +Nw ޽Ǘ_}2>Fݻ,^???FiT/^u5*Yh{Ғ]:hts! âٗ/^'O4˼/]"D%$XD*8˖/gƌ)S\'OnvʶmM! ߤ);!f-N)0E߸q6xm`!II!kט:ðWϞtD}{Qz5ӗ(Q7N-J(D/Sl.K0m۵7looOreg*T(T"AǷ")? [b;wdO7oŊK2NJzE… b۶mTZDM >7kڌ5:iݧ7EѣG,]otZlr %˨Wo@{ULsz[n[nl߶6` rٳgٲe+s1:G`u֮/_..$261 ;gv+2C:Eiִyp#b)ʊ1}/C?$wܩ_ӦNgg'ԩ7N7IK/5닫+͚5O>FߪUK>yB~ԭW7voܰ='RKгGOޫ_3Uʰ bL>Em6<{`kז֭[^8,dooONؽ{i'Ǐ@ƍ߯VVV rQpa^qvvÇxLƚի|2?߇ɛ7/ݻwEar]d#G,^?6RTq&4n$: >>i)_?>/nN D…at׿eVlŮi?P{ʗ/.0!!!۷%J}|||X{ر޽{Qf ^J…9s,VVV={-[pUjլ XJt???y5 C.][[[-URhQ(UN(?7-f,ic "^6PzӋd]H񹺺RB'M7fՌ V^CƯ&ըQ͛7ӣ{ÖUӻ!9sѣbߩm:wj*,kN܇Kw{жCGI/%}M_RtOKӜ&nbٵl^3{==5K ְnN5k`5TVjUY!N:u SHƤ8:UB˒KHÌTVjժ0ݝnSPK,Z~7qFF-B)nĒew!7G[Rթe-97oܠoT([:5kc,< EF/c'n `D%>>'}ҤQcv¡}c@~t҅Sgϱg~Nu"+C!қܾiԪU <{ҺMsWMd3t0:tYK\+a,e~R( Il{zz٠A4j *Ą[;NNT^ϟi&ƍZHrC.s .7mfw>m:}?K…Qdnֽ>t4&Mlj #/cK S?%w;>e"Ruq|>I1Ra])ϟ>}pPqcXlS=L8~!zjhc_Sꈘ:vDR1Qhoߠ>MORx1&N|ڎK~#g>q^2Rxx8|ED 4l}{LWou]Nq=b9x:v[6^JE \H޴iS6mbBY2Rz9d PlIZ!"ſ L )I!w !xčY.$}6. 5c+}OuR1%::ڄ !ijyF\(euҔTZ%xf,!ѺH]df&/{zF3Jb'6H5nJۋ.jlP殂LvztڲqQcn[ìy$z4"%ן_6Nmc_Lx!⧖ytoܭ߮;3=^K>ʒ50TsuDR錪KPǜ/]D*S}VL]B!D=eɃE-f`:=Pꌪh׾=^*Udh4̝3+ KjY)\B!L&]H[^30|yˋ㏏amaVj5U*t>:RVV䶶[>p@<ֈDGGouzvWcamm 5kyp>vDQƄg-ӕ3 !qYjծd+V5* B2 ̗GSvBJBͳ'U*>, ڒ\ ˜ y;ʗ-Ee˕c1A/\ cǎ{nL9?iP>ާN.T:y+W׿c( !`ԯ߀rrF\3o昁j KkKl,peZE. 5X)VGs+./#"pD yp~ڴikצM[8@3 *l/\Ƅg?krOoVZS0B7ظi3vv >֙VY)ރ2(3܅48=5 Z`e‚ckmIXY{;Kr C=8}4ކK?쌛RdI|}}bGjYIQLw0%.)i4/[Α0l0ѭ;ΡXbөCGۋ <`ql۱<===l 5j@B0qhXcƎeƍQti5! 9z(tу˗s7>Z .Q&Ǐ1)U!ҴY3VZg(šUhڬej{kSwRVn*@_ӾOx1ZZ`cBW9E78i!/?B-9ulU6/ hyxO>cy³r3%qyyyzXn-k׭;xyz( uP'Q Mz͛ԫtXje̙,YC?Lzu3{!sz=k֭ϟOоoHΝؽwvŅ+V$[7eBd/Mয়vRBy*Wݻw1cb0G*n 7^FA>?:H6m^ߪu+:_? .L=oj׮g0_nn|1z> @zut"'ҵ+'x"uM2Uf1cR`AlrУgO!ÿˆ/F&HEɕ+vv Ι3g9Bc:p \:QVQ_Bې>[Z,%JVr6lx-N*UB뱴`̘13ޫW/C³b߱NI3@@@\ a VCJY0o>!\~o'MW^r f|y˗\]]WJeqt7| **9q>ߺuU+WqBBBPIU!2sXzM50W7sR^B+J6s$|٠NY1dž>EQH"ٽbkkK2eؽkŋ*<˕+SԑR5|.xUǏ'2-Zy&|I&mB{r fWf ^1˜oS^+Թ(Pf:emMT^m?m͛5gɒ<{ϳg,Yf͛kש[Y&5kb-Ԯ]'zÏ? o#x1f6̤_fYl9lᑑΓ\66}{jj MߧOކkf钥ԬYPQ:+WvZTw7~,k׬cO>Tӷ7K,c@XXXбc.^h;n ˗`T޽ǏOBJ,M殆`2Qb [̈́w$íϓL[paCZEw)srj׮Cu32=ZYYY3ьr4_5'UveB!oofurʋV bBVprku+{1ϔY B*_hogWX"kz^/Æhߠ> 0wBwSm)^pi?ʼn$89ށŊ$hmۖm&&W!r*UK3ʐZE(OS‹.SjL0~/]&444k$̭P殂Lviyoٸ!c;,?0kBoݺ " ڱ3C#%+4i殂BB!D#f~}Vm5{ÖG*P ,>^sono{ 5*d'(Onc}NI%nZ?-$n1I|ҷ/M5k.:x9+piN:Mr5rDVo5s7mԙ.  ? s Iruu֎"E gJm=gӦ͙RVFy:iy߹}Ӧ1UAAAxu6Vܼq6'xu\~d"cD N?G5 &UqaZhɓ')^/\0mX'Nz'Ha4W?z=7lҸqcF9ܹ[hXp!GҒ=zbܳ{6n$((ҥK3yw,ӓ QF*T 'h4,_#@>`aXYY6faB IDATdK>Z .Q&Ǐ1c^M5cU|(Y͚P"*`cn1[ 3[_^Թ7nBף( H]M.O >a߱};.\`ђl߹V˚5k|'zx_'xm?=s4K.?S^]̞l7oޤ^/QyyzXn-k׭;xyz]^jۉt܉{k.\]\XbE\Bn?JS ޽SMr|ԙ]7Gf""[62^)Tooo(^x=_~ ޞcRLӨA׶v7>9\\\3 bۆ={/0 ''d0_nn|1z>ltyˋի+W.l4؝3g$[h>Ё+op >ЁFʔ.g.&'Je:;u`UT0h CqK-ɓ''^V'α?xmM&YN@@\ 󻹾VGG{g+K -?_|dx ȏV[nj*n߾CHH"ϔ+Ο;ǪkUI3w|s{ov,3lիMTT45jxr5ρ U*k.ؼeGΑGQ=bKH\cǏ'72E\>u:|.xUy>Rǔhт͛cl}zTXbbrޫXdǘHB >bl&}*{gz@ZX2eض};<~Ǽ;::ry=sh4Z޽Ti $Wy,[@YlyqS+CQw>zN&<4 (͝ϖ[prrgPqN;Vd(Z7ܧoo.Yƀc\x1ɸƔQ;?k1ŃӧoZ!~ӧV߱ư| zLٙݻq$J,M&Womova dc%fBvpU^x͛0aނQ6%W?\I:^%Jdڷ7w҅.]$_CǎtEdƔ?[YY3ьr4gÚT nuj[mEZk`ZGr/{TVm8ZmUnTD"$$1{&s=ܹs54l؈ щPBCC U_^; 00xdQ+90*xxhԨT̙=۶=+߿; u3{-5usi9|HwÇL=[F떯1q<|?PUcjoſg xy?ͷkQo3\r3fd\oqYSBafZcO?ۥ+;=K׳G%K[o1~X {>tid^:l0~ >@Yv- 4`t ʔ?=zd,}l-^!05m*$Ss/) 4CѠT =5pQni( y4 .]bܘ}o|}|2]2`dĬFTZX1l=zSS\y*r5j mڴezT7nDɸgZ1*3ݻo,al %FmfSW!6S#G( '9s(+_cǏw^4h___"3xs{ŋ TZ ѨquuYlټ FC-puuAQCAi4eԵo5}`l %֪0Eܽ;w7xCufS_?D`N||2Sʗ/O|b.dX^NxML̗_`ɼ曺tL4aGCA~Wt%B"y5`L{La<G9c.DP0r0T (PL>`zT֭[~^z둖^ܹs1uby!M+Ԟ{ѠA,\@Nܩ^'ܱX1† 66k׭RUE1ƄB2祵M7a}f+_xƎšhа!ǎRJE_XO˨;Mc{!5m!YtLNkg-[1(4[|i{}<{{~yY>Tdeg2DQ*z`FQ$Kg")YqcDZ`)lSXt݄Ο_det(|o&e3$fM?zI'Vo%K6@whkۏϨ%JХkWΟ;W_pڷ};§#r/x*i؞F-[bܽ{;w0{,ZjUdetX΄# 90vͤw~㘅 r ,ovӳ+W`ĉ̘93x߿uygup9͟fQ"cT}ykL3NDO| C%A ]IJyRBa^;P(HW(U,qfͳm9e/~<///4l|0|(^8QyM/Z0]ڶ>> /۶]_^S>~2':Eǀ ; ˒϶i@}'v8(-7ÞjN6ADD|˒dt}ykL>tśhE_XO rJ]ܼyl*剛;+U4IyB*UF @5iNNNoy뻔H*x"^^^FחWƔ/j1kL Y3Uv%mN{1*ɓ9}Wgݯ}ܺUkOa>}FSGִeQR%>b8QѴjט2-1YFԫ_)‹,,yErx<ӷ&DGMqpp 00XWjq35j`az͞=|k-_#(q kSjU-Yj²{:d4`oȇ wl7ېuǎN dC>XܹsͫmZn1:::Jhh+޼BaZi/#;fΘIwƌ3h֬UxH(Be}2046kJ޽-Rl-^!xe؉ˣG iNBEۘ娦ǎRcIII)∄tB 4[˗,w[C%vt[Pl %*c1$t/35kX4 ͛LRț*=!![E|6m̔6B!S!coߜDtЁǡh4\>}{ $55U~%{ރoΝ;zz?aө3e`d4MnM56Y–e.>>>ZBA/i4[?W(Cʖ-+}zf޽H^xNNNgp0G͵>ҁopmؖrY?>}֟Nl1K%Y>uwwwp)Ke4[lzZ0,mȣG;o>-׮]cP2~e:s,111w^2W_~Xbnnnߏ" &G-(W4fL_30d ۵'ORJ$%%N@ ~؈.\`İ\ Kr T*>#j%eRRRxW(a0fUղU+̞Mh4̝=ZY:,zf /˨h۶-HۛR`&޻2r\\\wuK74VZ5"=|,Y/em>}A96 p9͟fQ"Cƍ9z(+Vd]8::g:t#GhܤC2,^+^G+™;wߟH0”FK"§PBoQ4[?'>zm~b }o6QQQ$$$N\&LKOM}Hɒ%)^8׮]#:z^$$$8i T*@#s`Lzr2J1}m  o Ս4رXC.]سg7Gciܸaax{{g ֟6o'C燛!!ofxBd!t _8):0tH2oi~l=~"B6^aauiP(z*˗#((H>A̛7'LTҼȞ,sdtħÆs=PFoD tPF{JO=.S ד6xlrr2e}uy|˒*=fڔܽ_ŗ_}As/%SN1|Y-+ʕ+~^4J^9= :9sqqu``H ^~Q4[?͒y/$^לBAoo0~ԯ__o_cKJ#rugaޕ*CD*W ŋBD ذ~< ...ԬYQr%uue-#R &Noq0kb̙0ٳfRvm Ge<[lzZJQho=X`!w\Ȅ u[&**kגv-hZnKoب!˖-~h4P~-[NÆtDGO'))d;tIS@ZZ:wqc7X66ݔi8qfѬq#OL tXF-ϟǯw7j!Zjca̛;cRlYt`9|8C^kAA=t 6$:*YfѰQz^2GRѲUKzuץR`\|+AXZ*\`kl=~Kgke4`p!;aUްa#6ldGG'BCC 5^|yخU{wp L߾cB!lvڋ|9$B!,/B!(b D_7~I{삦:-ڳo/{eTRq[:$= K5stv P`;ȩau,ז8Fe}ApϞ?}* N'ھنo=zIyM[ڷgeze_>6my7lgܺy`On9e߬IB->mT&Msڷ6j|&EѰt¾KIJٲyMkkr2u-F}WѣDDEjjә;w.}$$xc}ze~vz7n:9s0͟[|`מڳ s5`##ᇦx|t¾w<4S:׿}]c#--9s{n `aL^c䧟~buܺuUʠAT\lj{_zèESNmK]M\-$4:(۶n`0h3'8(8߱T^ mN^CK>_؟6ړxFjj]czt#sh,}-lظg0qe&ƐQ=9s{eՠVkP*$x?0{lΜ9ݻwP*z1<O^jK_{e|y/l|.2"Ͽ2YX[~aݽUe)FB~1GQti!zDŽ R2N;Ybڂ'rfa ǵyHH*=^.]K;fߓ1c½{tQ)Pȶ/yŧP(EwBPPAKb,}-]O]"B:w>.quuUn"F͍7([oZFd sBsk >CL4A/_x-]W뭉Wfjj*%JĹxq\Yՙ[9*^yxxwÏ>tv 1!$3@LIIm;|ҥKsU*TXxիVQ¦z'0BQ|2+V :z:}znݺr]2cLƍGҥ֭+u)41(t)))ع=zl,]t>ݻ{kbxQs0kyW7o><y[E$$$PbESJl߱=   Կ6ObKڭ.aF4lH/o@`.=sJ˺stY5 !(!*uʜsJ19qҹν{ln2:C!ukӮ=YBጜɉАBC2&˯Z^Ne܀ !BQs9!yQϝ7Ν:yiҸUk힖B!l*϶14QU}#_c祺/y܉ҭ{|j2^S;_yrifo@zZ78;;[m{{x*\BBA|bYW"B*ӡC{)u!"nB۲, IDATq߆[mڢ-[^Z-B;bW!>|Eݺu֭-B!H3tyG0(4ur-VZ% "$Q !Ysuuӧ-BAUWԣ;3%,l.=--11.^yꅣc 'e߾AA=ذaxo؀3Jڵtdž (ǻZ?~ p"t֕6oiT6`5iʞ}{^g&MsL3WY,( q =jhQwQۙ Zx§M%|TXzMy& '88I'suϛK1oڻO/_z1} ]ڔSڭ+V`8&{g^f9B̚9}Z: c{!j|ɍ7s5oΨQ_oѣ{b Aɒ%ikDFFѣ{w3gݧJn\۷݂s7괴4fLZ:CȻ]1q$*UDRRᇍxyyqF ի!z7mFX|N >ϳbr(Ψѣ[n_B6j|___Kb7t|jTdJ*۷u 'ݸqC~~~\5nrss}!f}wlnw/XrW͍Q^eI4`p9͟fQ"Cƍ9z(+Vd]8::g:t#GhܤI mznh%''v:vɘѣi׮׮aΝDED2oAHLf0쌍!ըYÇ^ti;C_|2eJ<ɉ߼yt>Zj|,_~}i>> /۶иIc`=t҅={v{4V7hڴiCjj*=?w^s'TQҡ%%UHݺvee?pT._Bxœ9sHNN&999s+,zj߰T^Jf{I'$R^hð;6ͭSjU̢K x{{nnnݺ0&!ТEsrlH@Yf-tԉ%ƍ7r-)*Сf(3Tƫ \%*/Fɉ *ay\\\Y&׭rJ8::=[=k ! !ڽk \T"̫uYԯ_Lsrrb@ `z˦+Wɓ~-tv@ۼUVzwNPpfϞÇ>ൖCaÆDGES~=@C/3k,6jbȫC\ZgyJڄbun=}G/t %44`j4U{;ɫz 6!˓ B!,.B!Bȇ !EI; hs@3/U[-q^9b{{8)))Er~~Aa!f+{nK\p(Mġ˙W!jua]tZzMmٸAK~oLJOtB!\$^#B[w7jA˨6nu-̫J vQ-M#zo>f͚Ʌ ^ݮ]n֤){uN?/9VK$QY{ c]S_9vY?Aܸq1z [% 1k fϝg;K{R^Hru0Uc2kFLL }EU+WϿݠҘ1}֯8::pafDO'..ҥK~^Z͒ŋٲy )))+ dKЕ_Xb{bu߼i3vS ̞5GRW>#FӃM0@6j|___Y{mJ"4n;}4M6ۗuzΟ?Ǽ7=ˢEcm+3ןVZѣGd՚դ3w<]EIH'f"͟}ŚS\9/l/N~֭_3gDѰknvͮ=s6kɀ?흥ϿoI2FdJ*eԱ۶nc¤x0xH>}@rr27oޤlٲl.M\P-$4:(4|?q޺k<-5ߋgEt7?ASmN^]o,}~KQJ.*c31Uzq2ek8v|rr2e}u|˒{7_xb_;>QF\rA%jP5( ]ޤle?~}g}R/k̖/g̙ܽ{Ri|Q0|ŗv[-GB2-"c-2//^ܤEgVxgؿo?1KڭGP ,d=ܿK0a.=[&**kגv-hZnK?k.B~gu؁ɓwtƎ\뭉NRR2IIDGMk- ?55%K\8W\e)z]ȱk٬UdD8~o,}~kclFiHQFùs00///3TR>bg옱-[ c{0{>1쵖C޴YSF}5WRr%s];( F˗XqA=N}ppp[9r8r~9/xa?e;ҥKӭ[W]{cP RRRرs{.CV]g;K{ߒ4dTǽuF#FQ\  fP޽KRUV 6aFپc1B!,C `zOlȨĨP|15T(f=c^rʦo!m)>ʜ7Fi!tFdž6e;J*GL!"?mchF2;n-=Φ),hԙsSnJ eR(8zp?΀i޳cIII)\\@Pa>/Y6B4/kȜBmN|< >L5^LS.&/SXuؖ$6hd!;ʭc4NgiJ7_BaSHok׸~U0E!J0UO\{`f6.B1ݎ4jl2e3ݨA/^">>,7a}oiگ\@a3х y4`˭i&zϟ;GwСCr4˴i&4m܄͚=_~%E1zmm3$A<޷̳ |ބ_LYs>..ts,b'N0bKׯϞ}{RϞ}{NϜA͚5?m\Z>uwwwp)K% !0q8;;ĝMPɮ?v|7{{94 ͚49sy' 6oɊ }o:tdU888P|y bႅc5i+ @ͲŒc.o޿=EyM[5ҽ%EӲU+̞ݻwsg΢eVf c�~k!W!V?FWMSbEJt=y&V,_pҵ.YcLjݝ w^[FA-r|rk-[b ̞;///Ene%''v:vɘѣi׮׮aΝDED2o|ը1c@D4W?X8*QTo-dh񒞞ΥK9H'Ldg#e~OP|yz׭gĉL<-Z~//l ;qڴiCjj*=?w\z}:pS:$,`�~kq/$}ځ\05J1ݜ_Tizχ~ )ի=ڵk͖Wkiۆ5xLN_z777^eJg;PY,*= "󴴴<ʩC=g.. /[8*QToq_Shy,bg& ρi׮}aH_4c.^p~+V<;vRNls6DTׯcuw~1fj1kLܹÝ;w9cj6LX/{[ %:vfK[h xi4f6Ͽ4hӶ Q$&^ΝDGO+˛p~Yt^KOWqR"˖.gUg;&VfMVZŃ$&^fzr+3؞͐)9q87YFLnOvxEkx^ZĮY/~ue'[9Y+U4 .VO@*U׾C1<7B4` #!$fm s_d/ !^x"Q1L_))tP 1!¢2;P43Mݿ3>4ިaC #/BE6&/71q^ɎI 88f߯QJc^~ʧ#F +VGرxb϶hxeB!? le/_8mx'ᇯJLh4JohԠJxtP[m@DT4nDLBFL[-73{º#>> !VCn%`/hN*TQp"> !Xt1S!2J,[0zjw3/^d-rI8)*B'B!(6K淯̥d'4Rh/q˫M܀Ѩپc'zMə\&\ԣ;쌟B!,Q5HFRC#P3ŠWU(@g#GмY3]RJt !Bz`VFdV2#(pP*:i"5WdB$+E1'ZKԏB 3(S\B-®h}Y4 [RdP:JCr~L ƍH!(rҀ1FcwνQB:F!|/[=U(XɒB!" 0#_Q-B!Ba#BS ?{츙kB!=d6Z~Ku_4wB!3 YɅ5B!6Y2UHB!m+B9$]0B!~i/#B# !B؜!$AB! !B؜B-d'+'y폼Bkq+ ! Iw!mB!l4`Bas^HB!z UB!B!lUeB*BQXU9Tu`Z!BTa:C2dB!li!dY2BB!l+Bd'B맷B!m2F!–d !d%;!B"И`!;{"#))ҡ ŕ z|^KI;EmpՍUX8! 'c3p'))ɬ7..ἐ@f"LXAKT3#w/hXj'OxmJ(RÇ$&&믿aΞ=˻ݺ jޫ"j$h4v˹<{+4oT1BXPFBU*V=KhӧN7p!:l]ﺲ̚9w߽{ӧGI{nMRhGݳOOݛW_}jğZ1ǘZNu|َׄ,Ő}Kjx7 jUƍrJ4iXW k{zzR1r$?:ޫYk"IDAT3g>9fs-,^ǹwիW' zйS'֮[W$T:DL")WIÆ u;ѿ_?ʖ-KB6m=|cƌeM'k}9rsquu~|A/܀1[Q(ն-={!uK^s90GyE/JZ..b ^tܙ}M޵@u5j5׭r%2Nr%֬Y;Θa&jj׮СFgQtiVY eʕc'NYlPa6CuZ"ڌY)-))ŋӦMʕ+;vdɒ鉗]tDO$%%N؉lܴUϬ2Ր[nܽˁSWWW\\\r<NBQxxx0y/Y{֭[?Hzߓ˖ҫDDFq9lĖ͛=k&+Vdiz?oʓC֭/PLںrqF dDFFiyV;NdD88˶_~)P,‚laiԩ|4p xxx]4;1 0Jco>ˉر-[zcǘ2u*%Kz/ru?G~HpϞ4mÇ8&FV:?dH͟76BV1r$%J0*_/d\qgyQGSzu^zEuY`[g^t4(n"88eRD 9s 'ou2"((֭⁌W}֭>pQ>tt5jWGT*ؾ=~AכΛ)]t^kF ."OgϞΝ;ztѢEܻw[nq=T*L4 x|NϞ=/Ͱ)^8תj/YĤtɘ٬Y3qttMPT4oт^zQt^4lЀ{k0rĈlǻӵKzKoڵ?h5:L 8yc?|ŋӻ|_ozXj5m|1k^.*$+TwiXe֩!aܹSKju/ʴ420_~5{y""p!`61e$=J#--ɓ&ɧ8{ #8{Lo钥>tYs-1ctÜyٱ75kǣVkr3<ִ[6ߐc>s|^.舧'899T*uqqqL0p޽%Jggg.dܨnܸɼs3Ӈ ]mV}|Ս6m۲vݱVxz2anW\vNҸqW^ҥK$$$^rbjXlW\Vv:au֑0q".\`L'gL6KX`(p@F8sܹ5k_ժz۵cu+VбC{c 'Qy||<5sc-[@` ?ltءH?/OnqqqT*W^%))+W?ʑ#GP*899QLbR]Tw,cǍ3Xz䈋KIw45{`ڵ=BQcv~mxrsȵkHNN$&&rusxO%]bW_38pnܸkݻ}PLʔ)C>}tZtҔ.]z70͛xxxw}|2d^zٲe-}8x nTPs9ΝGh@ݾP+<0{,JMM;4kJּE n߽MjjCB*Q$_M2e3v,onUQXvmy Bڣ<{*͈1bgܼqEg3k8ZnhR< 2z^Oset%]\cT:@RuϝyauZۗSw...7X) JFRq1.\[TeʔAѠP(tǩT*>b0'>uHfj? ~~U6 oنÇ6l:7 $&&re(W@sI߿?of 3n\enܸ5fK7ҥJqmtn߾qLmߞ B=w2o^N$\wNpvvՕSdI3cΩ_knGPOwҥzG˔5իͥf͚8xvo۷|UѣGH~vh4|~OΜ9CjܹTRE'S'k>)˗'>1 2oJ֛e3Tg^yѰL'UP،/O??j5xxxd,30t(xZMrr2nݢbŊyeMv;;9sR"ӣҟ{1ctzɭ*9U[RѣG899~g=/}QWw~KǎQ&æMTVMŋO7o΂ `4o\/ 襷hl".]:ըx{{SV-+VdL5sw0I/ƍafkT[dɒTL[d)oV<}zyYiC⏨*0ժ}tyꚱc e]F8e]˥xu+T*_F.P]_;v$9zvk;Na/j߿ϯ;w(Q.Syٳgq꯿pqqK/1zl͙ÀP(2Cɴp{_>ܹܽ3 ÇHJ?`ܼҵ:':cˌ)^֭[ٰa5jԠx(J~mu_14f͚uXϿۻ𨪻{'dH E $% T- ^ "eyY@ѶBUh &$@’%Y r'~ggfΝ3'73gߙP@NǏeKgv{:cs8-4;;ݭk/f`Z>#YfǔS#FDVf&*++yGƇ|fjnYj$ IIi\hqqq2y26oڌ.@e>oŤXg=tv ^hO>9AK1e40_A~RϪ;alJq/Z7[γH Y .ٶ,~}Xos29[0t0VZ -0yrF۶YMֳo9"^OIp)!Cn-`iXrEFv8_ݻ[11vXt:sXC⨮֭[{nݻ#%qZeElقW5Դ= gΜUݦ]:w6ϣ/"ϘeKT}_?ڧ;,:́k..ΡavvUHT0} e$`J|2_ g"ˈAlLaBr`E_z{s?>Z-!"JKKqu`t(KM5@jJ DQibYMڃ > ƞ\moyq/K$N[((8YR aO_8ӪU+G*L,E55Bj-9/QOѿ?dΝv + Dc|#0A2j-RSSѥK<9bԷ/zVB e8<3_wĹ]ZĄtxѐچgڵ+Z7i{'Q4 .XI >>qb<$IN4rh+.ƿ˭%]9%]qΏtr8SP`Gn]Q1_^,#??Ab;ZTt:,#ug$4ZBbU%^BH^6.bbq\1= ˯:Bz}0z ۩ivbqqzN V~AgUHLjk* V(ٓ`<y S&v`CDDD!$"""T Q0vY .B"""""LdGDDDb391Tݞ """RBru-Ta";"""Pa<D0DDDLv}v_J.CQ?(]$ϟGee%ʮ9f-U(Z"22ǚ&!""ϑ[O Gt&*;1JJЬy ~=pkD5:0LKD=Y]]2K ]m Hcڨor2v~ BLI$"zU(e~7FQ/+RF)R_,vŨѳc6۷mk4b !yYQ?:7e ѫWo|wgeb ةi㱣G1,,zOxk7]l8btee7/իW~: ]>EitȎȋȊˆD$YHJM' ǘꙛo+G]Z(Ƒ{\ggcIh ゅgb藜>SZGnxV ޽lF *4ܫA"o_|yLv~Ԥ$uTUV^C̑""щ|$Zܗ' ͷ`b-5.n]V9QPdfSO=/v%Zn+VXe8Ǟ\$%%ᭅ 7lwlct钹/~Çamz|sݻ{ (v{eeeCpp0ʮ\oX wi}usMEbJYYV[|1q$NO8~nf&BBBc}6n4gXl"" f̜i.۾S,[mۆMq=iӧ[W{hg0DD=# WuXW!$Efgf9s.U5T|AcRIHh(]֭[[?`8unݼ Ezܹc}eDDF[RNOx_uJc#0DD^D99>r1"}9oQ!ÆCcɊUԹ+ @ =.8o?QoyVf&^ze,^QQQ'~=뫋龰0+F;M6Xj5}n )\6b p""o.>;m% PHDߵz\P`;ݺBldXȲ|im~{֊Rmćg}q6?Ո "118{םX;ϥ#(H=YXĄܼ^j/$^y_SD ĄۦCc1;"""r?\],DDDDp`}@c\.ȜDDD&j !,` !201QiᑡlDDDBFZ!$ 3DDDD.c-lT7=ԄB"""r.5a!{A6.Tr"""r5a!*I^8ܚ MO' "W{R|~Z_m;)Z\ZMDDDu*9%|w%OoK9CDDDuI?CwgIENDB`kmetronome-1.3.0/doc/old/PaxHeaders.13848/manpage.xml0000644000000000000000000000013214155347442017125 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.357062938 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/old/manpage.xml0000644000175000001440000001351014155347442017711 0ustar00pedrousers00000000000000 ]> Drumstick Metronome User's Manual Pedro Lopez-Cabanillas plcl@users.sourceforge.net 2009-2014 Pedro Lopez-Cabanillas 2009-06-27 Drumstick Metronome kmetronome 1 kmetronome MIDI metronome using ALSA sequencer and &Qt; user interface kmetronome Standard options... Description Drumstick Metronome is a MIDI metronome with &Qt; interface based on the ALSA sequencer. It is a tool for musicians and music students to keep the rhythm while playing musical instruments. It uses MIDI for sound generation instead of digital audio, allowing low CPU usage, and very accurate timing thanks to the ALSA sequencer. Options displayname Use the X-server display displayname. sessionId Restore the application for the given sessionId. Causes the application to install a private color map on an 8-bit display. count Limits the number of colors allocated in the color cube on an 8-bit display, if the application is using the QApplication::ManyColor color specification. Tells &Qt; to never grab the mouse or the keyboard. Running under a debugger can cause an implicit , use to override. Switches to synchronous mode for debugging. , fontname Defines the application font. , color Sets the default background color and an application palette (light and dark shades are calculated). , color Sets the default foreground color , color Sets the default button color. name Sets the application name. title Sets the application title (caption). TrueColor Forces the application to use a TrueColor visual on an 8-bit display. inputstyle Sets XIM (X Input Method) input style. Possible values are onthespot, overthespot, offthespot and root. XIM server Set XIM server. Disable XIM mirrors the whole layout of widgets file.qss applies the &Qt; stylesheet to the application widgets License This manual page was written by Pedro Lopez-Cabanillas plcl@users.sourceforge.net Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation; considering as source code all the file that enable the production of this manpage. kmetronome-1.3.0/doc/old/PaxHeaders.13848/kmetronome_1.png0000644000000000000000000000013214155347442020101 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.357062938 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/old/kmetronome_1.png0000644000175000001440000014171314155347442020674 0ustar00pedrousers00000000000000PNG  IHDRSsBIT|d pHYs+$tEXtDescriptionWindow Class: kmetronomed>tEXtTitleDrumstick MetronomexD IDATxwxTUNO$&HPPi*X]AE`]ZU{vU`P@@zR$g2z0RfIy;3{rΑujN@ $R{YNKNN!-9Y'cDmy @fpbe%| =ilcQPZWZ@  $.&g,YC$=@rR X$VP44MC$$Ij@ %ǃ 1 dɟRUaPQvͮ]Q{&t:Q40ĢhPit:QU2 ӜxSMmCK{+S>_\ ZF෕+0-Laa7`rpB^kI4Maef`A0cǍmm1@sAOE MA/CKC0Ku 3dռ+k9aC_W^f<,.W qݔUx I\.N'.ƚɧ ;Nʫ&h׵1##뮿o0dP/_ݺ?٫W11o|MU^t+om0{\&OSex{g>ǠSN>n]kS4{y6DUUJKKбg֯騢CǎIMz<0b0vڵga_]w͋/DOpw{r󭷲zZ>c,Yŗ_{^C~ZʣYnO>4?$LSKWZM\͟ĉCoصk7}!?.^`>kPޚo:t_|ɂ/$///Xlٺ>Vso>ԖM߿"D߷/"]RZ+LG~ئTmmxٹc=,N_z~ǟ|264 0ǃlbpR~'`61 x:Uш垻ۍ|ٳgGKS7&9|ISb6ټڽ)zj>Ąng^ͪտi@h./XH=}Ƞ_߾vmo\veGt:_/XQl$PFRO6UUqW=T7pBο~!qqq̘q#vZX(,,$b[))* qe>%B ^W wޅw ?&GjeQϯx/b($U ~\Nbp7M-Mm瞻'^fV$Kj;ݻ9\u%^vin)jkMLlz_/s$Tӆ: :Y(>lnP Uv^/x.xQ+^/n/'hyVZCޫ1L!먪~RyW<#} Vر#99uB/}UzsNlٶwmN ꒷kʁssrHMM,} -QS*ʘ{$$Z6uWO>aXԼ6}Dzd )1O?`hzf.9իVߒ=y_J::=ޫWO2239u n1}͞{U#^l6Qx8TM ل^kPAQCY +nz?,Z5N}{?֭e^lGckRu;n_ygl󩬬dܹ!U{|3 ~Ѡ,NG_-ZWt=ĉyudɲ-喛f-1c0{(**bϋP.Us6l|r(Hv+']M紎qSGB|,0MGq&>d>7YY;aP^vcۉ KPÁ8dDlȳFp7\`2[غe]vAnqeʠAxHO`BV+70_Ө_p̜9ÇӵkWf͜7m4A*++kwn硇t2uڴP{ϴiP^yrwi3g|ӹ[Ö5W_f{= 0i$*mu#iS[.]qٷw~g6{wmT .Y{:PޑNA[SaСu}8:P5) Kqn45!:juÏ?㏅%S<]!{\EE;wl23plzlٲ E}IHHKAktR^Z 9f`4Ү}&⥼jSqX}!@o?5)Yk$IXO@eJ t:;cQVZRs+_s_BD7e%ŁIC$v`QZ\#vNvGr~CצDsAOlCbRNGEcۑh6lץ ^pIn~ǎ;ylg׮]$&$@n^EQ:z-[RYYI߾}IرM&AМxSnpz]zS[IUw6t}rt:&^u5O?Ngpp]w E$ ٌd0;wAoW"b݆t:zEuF%ǃv u l+yӆvvφy*^x^Lz|zsa z zbci׾=Xԇ!ͩK=6luu78$Iwipt:QN|h9AќxShpKzzce? I0  HBI {4.9T4ڠU[1pDrG@ K#-@ :]I ?a-TzmU.AK h[jAj1ݷ7ܢM]J%\卦쥥lܴJzCD,W%꒯-?ΣIk᷆2h=KW^'{t_#66ݻwŗ_m8E(_@D}||]=IMӘ`K/^UùX$)x^̙ˊ_EqYJ]5{.MU;wG o 0 Q,uWc[XŗqBqt -<{\~7߳R7o'V+W^y^pAC8D;n<7\=-BQUFT/9o[1s̝3Eɧ,XHdZ-LcԩZ)S`Y~Y 3f %%vqӌYUxGx饗))9Cs=nfveddf-[ӧLrr278=\YQR\Byy9۷;h9KءCܳ!V+z z e|ŗŗ@=kɄzd:=c|3cƍ~iM丟HE;v腘Aby鐚R %%v@~~~6DzS=v{Cϣ6Y*_rr2WOR_PgϞ<#h^>l=!FYP@JJrs'j U/7x\^/YYټGfΜS\\9s<6!!:G<ömpTTT0zM7z(}JJJ;ݐxErrsQh>CZH9s9{-"@gǯZ7n,$Yйs'&Ok5+`vu:.elڴ&Nv{_t1){!&&s߽7l83Bׄ'>~7r wu7^EaԨ\qS hpqKVV><έ kkACב٪,̙;R>̜2bI cQS2:v{0lpLNP ypi?~Ǐkm1S XI paa #IjjԿI%6KÁy Cv51q "B<%W18@&!qdv@ 8 q "s-PUVp`-$ѹS;t@=ŋI8l3F Ƿ<<&x=Ę-$'ZU>@يO;Nnln7jȽm6$!2;wh4ң{7? Uy9xPANwsz)~ytzczt}rEɔR^QNII1ddf2g<4 <$ h Gox 8Eaܽۃrp(ȲNh4?ݹk7ѯO?)j{p\@'4T$Opڮ)َXsrp8O>FױC"?d8^/& դp_7n&MCWp5k}<+,ִZ5߫؞=Q;vC ht.,BQN'vYIKK#==xbccl68CPUXf37o!A={tԼMYY,!I56!{vN#ά㉏,-q_y9'Pd0`xM=LTݎWUp{< =%%d=wIZZG C ۍyzÆ;7r-׈"2K `2E14{fvSUUdȐ!ӇDf3'(n `ͬ[LLL %jm02D|m,Bu= Vvu,n[m|x^dvM82KJFUUz ֭k.vso펎uJ{K !">MLnbp:TTT_L׮]ZL>r-( ^J>}KII rKX,$rxׁku$Y*~;š 5N:OG޲hwCM5R@ܜ\z:MZZYhis=a{B-l6>V.4Am]fK+KRVVMz 2;bXt:t:]@IePUUUx< , SLaժU[.`X~\_蜇vRѨXH>(!R6ìۥ㙏ͨBqq1uqy2]<*v{ݺveժ iqѹS'4MfS\Ro>@QQb8J\.LjWrXtY()*YVrZq\.:t(Æ sΘL& ChȲ(סa,Nѣ$UV!I߸hYCRiyN ƈ6o8r͏b0q-Ao4bMd%6]eΝz꩘IrBb4P Gg`_fkxxNbaͯRy3 ՝F$4MCVV!dxlߵ^ׇMv$''3dӱX,L&F#FbD & Ʉb!66FEJJ vͦ[WU5qe87H.*{4QTr%Y7$ěX?'FJBbb"֤dzqQ^/ݻ`!Lf FGa__R}t#vYHDLL gO@^RcjnV+gO@LL $1lH,#FQ={ ֣A1lZ_Ǻ?p:qVowfFc'|ž={G̀qp:Y?6Gb3>S*++C^Rf3;ws Tkm߹ 0U#2 DgJX*;=t`2nvX}`$Nsl,IIu8Xv)t҅-@S5t:q̛?5gq4M >*382 3{>x]1\{fЅ+MӨڷ~qAy0@в{ &wͰCU8Nn7~\=ED$I>ᠪիWa&M駟f1 (aXۍ,{奚& ȠxrQs^‚<.a )0\KɄAob6$E~Q!;UFI'e$0+p]]< sG̡ԩO8!03^礿 xYt!IU|=Ԡ΀pP}@ h,Ǎ4T73EQp\t=Pr_O 餬W^yÇsדPS^>bbbѣ ffFl8z FRaSg&d qxROOQQq4 ݎ`1~nwvQU_~-[0c V,wۗ۷cX(**!F~CS83'.6M2s9^EQbƟC2webb1L$&&6~Tv#p8drjV,_5JvxϛGIQ{.ݻu%)) ܤjR=mL dv:n [!2 iHEQ9R'I( oC hM3uwM|uyf뺰l{ v npp8(,,䥗^7 L|7~]vmkš!z̗1'q󫩬D4ƜZ´KTL)l Sȉ$%%\`Z$#k?.dѢE(Nsw3wlF -73FNlll4M @ˉv"{HJ2z-k0T{s}\ ~OpU"y:tҮNj/v4QU% 9:Ñ*l2 j6ߏ E\.SXL[ɲLrrr`Ċm!䡠NU\Ųfs'L&رcVTT{_,d5UL>-YOk.|TM(ٱllDo4_DrA{: [HD?kBB }5Cl ,(Ze 2.Inn.唕Q^^i$&&6,jN |ȓڑ3nbUهm$'Yyx26'VXth ܣ9%l۽y/`붭ȲɷwzKzO(UrspVVIXb&Xę01 #[>`Y>^\՛ OLd4y@ @'Tsמ@x*u]zPG^ۏ=`0B3gN o zr.CF"=zlVYT:d YqPJ ]0xg:c.pT &zfЃ^W]}BsUСCj}]111QVV=*4Js隦 k׎~#G<*eNk%0iaVlA:!㩗50t(3ZMfuFJJʑ6>x 6l`_( !!*:}zG4CUd Y)yfЁި%30!?KNSna^OҗT{Z^qh-Td z`*T"%9Nx<^?Al<bcc1vX>ZFv#jUx2ەW~ ^+2Ν;өz#=5MC^_i'C9TyƈɱhI_:/; dY&%wl UU 6Dgw]Y@Кc1 vE# U MӉ\@Um?U\\t֍^{YfaF_ot:4MO^?B8?++K9Pș.hyGs88Fis0]O &&4FAuǃƆTĥGyZo-!SИL&Nz  t!הt/9.ZC-ߩi![׮F^/[;/0 %'uYu]G lzznVXAUUqqqFuqxp^C$\(60 z*5y/FoAU}cVbcc;cVذXb4¢b*UlX$kӁh=Ol6HYCC%$!uh7˨h4ݻ b}tw===0 N6M_}ɭ K $TwOZ)Gق*laTUzNПd2tR @LLL`*[ebbbZp qTxp_b2eo져$I8+KpV8_NmKD䦱UhXE_(coy7߉lѐ$ _q4d}\7^OʽS!og2g=Q=P8k8T{/֣^ga=̛7X 51_~Vl0^ٳ!1^gE 3pW|?.[6sEM(ntޝSN9SO=V{ F UUel߳^-X#K2ޗ؋.&55m&A!\(v7lO-;۬)=VF4ti zK:Z_VUḡSHKKb( p ׮aI'Eh۰{D+NUٹ}9lwbSK~Mq ?$̒so%X&k< EUVǴ pTRAk2r$*VV M}UZux|JIMD_$_U6"RSiT>yn-Zŋ۷/'55$IBo۩ &e.靹+b4j2":^בͺ3_@R.@Q: N;u0e`o{n,GƏ5)1kw21S AdAlh*H**WϘ(:$,H"/7cuײlů}MbFQ6oS@M!71|gՅ+~ꛘIBd$*'iEUXD+WqFB||Xz]~9[?xW0Ѿw܁ԈAhez={Æ/e֭8NzQ ֜l6s3z$QVݻu4XN;u0f)RAzά]& AQi1yYyL&MM$Y&~FV^6~CJL@JH@j"@CmƐnU[o~vCaQ1J6[%qӾ] }=Ztնi޳~ ׋*g%о}V)^4Mc܁4<>DzxbX@$C>}Z[@ Q_>@ "·(AM8@Sq@Pq1ԸnظAG 1gsn #OEYiJ@ A8@p " (AHsF(@ 8#@(|CL-[ q "|C$9@&ZV/v -qK툋#=slܴ%!Cvn.8λ`LD7o+V{ .H?@@ h tX%)xʑBUUUUwhp8E-@ 4  Pź:&PEJKKٱc9x :u"cGN:$z@e8Qq5C4֭[?Lee%, Mؠ,_s=!Cؕ\ q@SըMӘ7>[nl63fRSSX,Ȳ,]EUW^$ndY1l85իgƍٓ?c2tHҳgOk6nH]1bx'xmZ4x0>;\A>ՓF=h6m+,,?l /SN$$$믿Cll,Vv1qD,  شe+loG>YQPXXHii)| 7n;dРAFRRR i)'<n6&N\}5tLZz=??.z "R%W޳(h`@@ԦMΦ]iH8NQc}2|sxuvލpiu,Y .?֭{ ,@ 8iΝ;w^<jPy` &&I7nO<B%??=zQ-o<̴әGee%/L_~;2p@FC=Q+}m8OOOgƍ瓖t: *EEEѥKZ=w8b2;țoI7:mzs Xժ,-ZDee%EQ⋙?~PohdРSjG7Źm Su\Mށ <(TJ /T{P&ώ>%qc/a̟?ɓ'0cƌ@٨8ϟOff&W^1))\^Y>Çp!r U3hb@ 8 V=BTM #Gd׮ݬYnf[oEff&N9#G6J͛ko,DY@ 8h\9E7>}TXw'|ҐeCQVVlf=jT 0jHdY殻]GM4IL9"]Q*x~FE~'~zrrrk.yvio mڎe+V^7G#r\@p ` UGMڥ$s׹Xqxh@ HJUV,U-@ 4 @ G|\<[7oadUUٺu+ -@ 4r֭+Y9];e$GRuڢAЂq#_н[ $Ԇ$;6VO4P<@F4[n_%Kl([1ͼ;:%e;FC|JX@S}J5$ dp% GxK4HQ$>.r㌆kQKWwsD rL 1۶`խ,P4z؅(\ټE| 6 ŇwTU|0{&\g+V ϵn˨Jhl0޹Vcn7M=~$W^¢/p#O&үo_} 'EiY7L;wPmGKpJ hs*x>P{q:t-kh7K #qtIOgoINJj!ϨgѾ};sr)lڼݻGv!U6mP)j6oo>gPP'f ͟$VQU^|gUUIHH_AA Ui+iZшl |^,Aȹ򊉼İa&&MBnݻX%絕CXvAQGۋYKhڢ; =HrOQ[?!YP.>K/+bUoZ(?0Σ?Ǎj2gq<̳FY${ヒi7\?-r t>?|Ys۾c~'EEE{T+ǍWQi#&6ӆ llؾ[I2jq*t-+v4JJK펻ؼeK!ml3RE9b4j-_YdeeSZVC>7}S?F.]6t(|o3wEi^hdsrј xxB濓$n7~r{N~Y{!G!M UMaĿ:G_59֯_D>CfdEy`ڷoGJJ {+~&^FV϶9f秪*/J%$''7FMX)kb;@yY9e%$YI&ҩs:I^@TE@}ʟTV5sgF=^uA4'Agչo=\=:n6Yӻw6"nzm{Ƒ GlkԚsI4ȅ(Mؿo;wlv`2ɆصkN@N8-}C{Y-syy~osRk"ӏ OzʎºVx'v?,]Բ~^Mo@"nj7MXw8__ƺn***ص{77|~lcY?9G!paԐ~eoFFDc в_TWZSBU51ᓙANN۵o>$$$e* IDAT9޸j]vlٲ,RRR٫W6~ 9}裏3$gtã0QWQTur0Lѓ'<&tr6@VVh$ơkkjYJm݂`䤓aZTU*zSOϿ,c-v 6ΗXp!;v[ol6s@.+{ FIrۑMΏa҄Po!a"YD`Qb-qdee71 :w?~p /̫HCmǑ*BBBF+Wrp8\.4UEe8CNgٲddѯI0i$F_^[nt MSyxGxgz,Y[0p@?zߣxǹ Xr%r'3fEtMhaVoeGXGؓF|a^/=~=/1zznha_׮]B:c$8[n$Eˋ| fz=z`WQYY ɲhj)*,BwZZ',Y°aÏ*1{gx'xg2,_̘q3}9sfddrM׋X|9g}N{a9¢(!=fjf{euf:t-߈X&r,#!gjjj#ǨM$8c2 R*++rUU>!e^O\\%%ŁL8E1kLr!!Q{oٲ1cG||c\Ė-[B !7onrh[GAA8VL֜[׮DOӻ\LYFK~Gھz/רPUS=џ ϧr***HHH њ8\p~b墋.ᢋ.njJ Yl$&Z[Il!OLX5cb,5qSZzk)))">>>! a(|(.]х;fMѬi30Vˋ/ȋ/h1͛dۊC\ɼUBXb cDull,iiiB45XeX{T}. ʛd;VQ؛sZj2an2O8xx*UD53oaաq \Mc=s0~Sjk|3usp&1SmXÑ%.='[?'7DRSSquuqԬY=bGD@=>7lR`xy5Lg4_/OڏzgJX ߏgic1N0nhxGeirߏ>ӡ'7c\tĂysVieW@PS$ $ԬYE/`V:ul2+W :לU)j4gP{ 9K#(x*6d0Yx-Y|<== r# Z-ϛK߷…Jsgͤ},@`7\i,[PիW&$%0* ;}h=#5lv=sF) ]n?lZчr.jnތ%8(pFWhʆ '))u0w,J;N5Z4Y!acL=bM5Ff;:{ xmƍm؃Ԙ; ¤|e /OO7o0֬ur_7 Y2e1* GͅQ%\\\xg8̛=>Fiwnk=9sMuG!*>Vv4iܨpNt.>۞ȲaD`N3, aMVZZãJF hPyة)gMsYϧǢl㈈"%9YVR%PHȣd(<^xv4ZEih] Bk?ɾߡye1k Z dGxd$=x!OЁDFESY(2 ٓK wQgU)0eㄽcwhɥвeKLqZjERr; 0^ 󩩩lU&1ٰ>acGSY||g vÝ? qq+[ls.0&// &gv #QRIO<6t/gYנPdB?Α[l=\6y/ɹ2d9so5ג| '%%oH*Uy,x\ŲRN6R9fLa&(I%7B$/eixzzMTPP6|Y{p.\^쬓Y\*7تe׹Z~6pMnܸIbb"C޽{HօL833pOR ZuFwߟ#GVYFR_[ yofX S?@@p$IfZTTSN\r겊%.$j։Gg%o8$1~_`Gf ?=ޝv3p03j؇;:Ld2|۶0}xb/՛g\c$>9-6+?l0޻MFk{'OGi1ӡw36oő?( OY0ihͨ}Ljj*#ͷ[X?=w,#˒+##HHOO׷,͛7ã4`^N||'3mxIcߏ}~W]K8,rٳ4GdTdfXIejcSPn۷_UY⫯QύcǏ,Mo4m>?gcOZ6+IRwݾ} A?~P!/ƽIy6tʖews >~.@Uة3a˴%GnxTوUq ǎFU=M굫q9jSxf U3iw\kzqqԬYei&(iO:!C([WWX|gjthߎ6Z,K4n8>N㆏f -yK4o֔~}pҿJi̜ϴn =˗_5?ګ4o֔۽y, 8k4bTe/{xL㣰iġ$I7w>ɓ\2ҿ)֭Dz%K Xަ8~8Z͎]+$'Op)N1<ޠ~CsУGw%ys`Pi݊SUmI'QB0^=fyK={)Dža̸/_1v8:8n߾E``O8AKUMCXz5:qv?gf|s~ #.8nGDƮgør:i= 22s!TS'#efrA6nD'1fhJ)|2ivnlrL߸qW{yӦ4oڔڶ%669a~~eJx+ThE_ѻ7ݻuСCba ֨~\4 fddo:G8(̔Bx沍+ y\{'F gϞeM̝;_~KC\r+ϗҡ}{%MPPK-#888rgY\]\8q"'N޽[x,ʓ>]8ً {`eddz$$Vp_P8;x GwU̫ .`5K$BzF&O>՜1txed(&eKҧO32Xt)[i)M1Gm\c_DD4LYc˶.ޯ%RSSSasT׮]7MaLwjC6Ux!6>V[^qt V["g $d233iժ!!!6ݗ\9#Ŷ7ؿ u yZl!Z.GQuuuԜlD뉊7C8E|QZuuZwO:2Kn=zGϞfa68$4g G3=Y;4"GoGݻ;wMW FWT =u`;﮷VY8Ok8<>t{Ѕ0nR2ZzvܣJE#VjuIv¾*LθFxFšƽ ;}7p#Iaaax{( 'wssS,W+/V9p jͭ Sqhl\9^jG?s*CUuzl Uʕl۷¬j$ԯfSe'ܞۍ;)U>jqXGBx={)S&4v;.V@iL2YL2Z'I*^vo{T Wp^x9ڷ{)4Ve9TUR%9<4F%ŕ R /ut: @cUTfE A@K F-jW׹  JLT6(c|=~dVqe2{ZM7q$""" #kz].c̻xak~V">>|A5f,kV~NRXzKL̍ԏ8FiN5@3ͱ'r,la24∈"%9!?yc?nEg0dѨR׍hիUcԈEi2{~e+>%""R|c`G̚ʕMOʳzai<Ơt"zAQ^lV/ /ԾD*:pȨh*?Ccjl n-3zH#"u^%*3 H&);<<46k?0YF`rWy~ݻw9ݸBC΄X/cDiyzuu[U8nYLa^Zq'%G4z_m"88ɓ&~1SFu05q<Rw\ɂ8v8:u7>#']F>wwEb6G[@Ӫc|bjժ.FJÄFkh|L^V)IvUWɢ|劺̲lrrt.i'=j$->鰪 Vò$ՂΝȲDㆆ 7| 5L%LVѦUK>x=RR gk"M5T¾۲۽DfM׷.9~U7k^bxb;.z9.,Uy.y&O$Gfp [)e߾}5WXH̄qy^˯X$IS8y'O&I26n|j5;v&##OW0߸T>̪5k}lْ3f(yNHd_rȉF?@`+6)=,#Ч@)\fs*oEjpssIchҘݺre,oy9rJ^a۶ɓP!oo/F_<&L|rfaSBC ݽ}JN#>.۷o#@P);޳ѓJμ|sþn^T4:QfE*W_G(/ $Is,[/raBN՚W3q ^3K*annxXf5VħLƍOĈC qX26}2G-'ټ'ty7*^z<9,ʧNa@Hsˋ$ھްy^KaAAA,Y<͹NŒ\ڵcȲ̑Ç1}:{~Bzg|dsU#17vӽU*T]pT贺RSS[)c=sY2\z,¬3zs%)C~aBrU3s=Zc@ #LM8rMF!)YCTg_e\/-f̘AٲeIJJbŧ+xwo#ЩSYd SCP|yӇMI߯ }ga={D0ybbbR 67хmZ3yDn޸Ajp#@PѴ_wTѬ"56;x0{@7QzNLUϮ~)\]=)؁rzIrr2-K=9-:m[Һ8y4M7rTQƚv窮<ˏE۾Wcwܸΐ! ^ݻwIJJbE(yW L 9IF,:vDj4Z}t :w@```rqbC rC.;.9G6=t$G={#70`;.[ ZZgQi(<.J VK^ShZ2z|Z@ MU^ބ>C( G$)jQ@Up=<ɝ;w K/>TRE0Mk49^j #⃰5 *UhA(5(4@ q@ aX9n#"*d+xyzQRŢE l8##)ŋ/H%CMe<A1jő‹m={NHVعc[iN: i6C*!>$'@!Nmݫʐ>gK$m3 0i/OP>lkPPep$VB,Nar4NwߑZ7idljqy EGDT6@@yx[(9jw\g^2\\&%Af&7$ӓ ,Kyx edp˵$Pʷ F9Ξ=1cdj6n`fI'N&9qTylGh@,Z,c͢v;]]#E˽\ʔ;NI$T)Ùz= 94 OH?q/ȐL~ǛY9x{_κ^@)))ж$nՊ],J6|Z?4ⰲA׈#S#i$YeIM+xɝ۷u+s$@R;Vd(WX#8{LYCFK*GS)}4lHIFjj ܺux/9GF AvYܮcgҼ|[![6yUIh5{_ /rЭF# .񙷎v hᨠo1jHiܤ Nb,ZXISn]6moΝ;|hA 2\zjժvbݐW@kč4rjw\q]@5i{|ʗGFn4kp-WϿンxCpSj1%4˗$I[:u(i&NȜ9sXne˖ogS`lRE-xa6HX6 >ʗ#7q=?ܽ@A7Ń($q+f2jْV-[:e ׮\Q^:V2{nJQ>Ջ޽z)j/d'_9njݻmXh1-b샌ds)t N:IFm4iLGSaaE.vqrJw\Y.ʠuw%3=ct#^-4OFR&$x A҉ՙ WLKF[^ GdЁrXN{)&^{Ulذ3aaz5jQF*w-[^SRhѢCR:uBHo[صs:wa|ܽ{ի3rVj=ɒls:w,ܾo5iԐϘ75idHqzCt|_~v1)  q+U{+W.azJ.ͬsOβK8~z|I|}}s?zή];INJbAUMPv¤+l3UI]z>&)-FZHt &)45*CP` v6>{؄)hZ|WY3ݹ 'w5[cƌ`J777ǰ#._~eڴʼɀwafcРfJ`{tw}ouݖ:u@:uؿw^l,riϏ,^D)s„ ;C+iGi^~efL͙oW{T6i|p!+w7PAIOfAt%ߊmus/Tc9ai4 '7KYnW^%)) m.E\\Æ L.rѮ|&PT)9;FwcǎJxǎٵkϿY>KeO *gIpqqzzs,[/r=?kXll,+UGwBɢ$'SOO/ `߀IX=%SF @Ւ[ԢXywo&O'ɼF%ޒRX??N`@@uaW۷?9|0鸕pe\c,G7'*2F3_Dxf  aΜxyyD_ȳf͚j̛;Gl7bVGO-Xw7a K:V\*/Y8s4miiݝ8/_aCddda:t`ٲeDFF̛@eu# Y\?vѣf:?!ɒaϦ$$Ŝٳ2rUr۾ ~؛܌ɢ?55Jr#:&ٳf[:DFEx/EWɽ&LĄIMg9Up=<ɝ;w狷UT.jQQ#Yf-sϯ,=w#J=_a$''+#Ka;wB0kb{n㏌3&Ǩ/ż֫&Ndnֵ?qA%O~8`III|-V,_of%KJrxO~<Ϛ7 %%aC#3lkگ;*lLum;$8[E p*t:۷mu'ʲ 69@ xIMAqCH (I6xG9  ق;@𨣵Ȳr\ (r@Aբqa^ޜ9}7i@P$0tqJ<…\ IArJ6ժV)j+@hbZ0( @ *@ AW@ T!LU@ -p@ 9dYXC018 1(a޵ݻvqz6jETyf&^_ba:'}s#&u#&۬d1Y)p Jҥڥ 7oQdYf-u/))hт!@tt46lLXzF1rp|||тiqiK"WhKJǎ7/Mu `ܺunD,\1}.eY2(ݺӵ[|iBq #Jjj*vVZJ؎; ;ٳXzz}&Z3w;vd//(W,o* ӈExkl͝ DGGS^}UUagYcEid5ʼsxQf˲'tk.9Fyys(˯L6@cǍ'd;,_TIF~6|Di:nߺMbb"5R;~87EJ>54eɓ\pfۭL{a:a8 i4Ξ={Xf-sŸ8 V,M^tuqU=iS|7x{{3h@>:F%-g+M/tʳB|J4nnnoߞ 7)aLh:_0{fIxzzoQ-yԬYiSCeOdR6nXOfSO3tyr/s }/ʕ*1~8۬*?QC2qtڕ[ܼy,>((;)4qM*)jY%A0iDj֨QԢpa VbXŪ>s׮fa˖.%%)/OFeؾu+[tGi:I /V~J8};#Fsѡs1bt0U N1c猞a8IP[\$VKfrDG]AӓViU_,q)|}Zl#T%&9%J*Ͷ+V:{ʗǻ *DGNJS"D (ĐC yc~@ PUh7@ ä+ĈC V!@ ¸r (RO(jQ߿<^^T2[X!(GFRË_j_ԢNšV9E(A'%%۶ h٪;wl:POB|,+ HOڵcg J:lغm=w@AcY}1AIG*eYX%[ T%pj:uo^dI*#.mEoYԹݝڏ=Ɛ!\ϯ!Wcm-Y,Ȳ,λ~>YpTѣygmW% 4ٳZbR>#'xs..Z'TY:Q/+4/^ihDSN8ɩ IDAT+WQNV-&xjmĔ.]]y%Le6o_B-2xDGGaF΄iԨ#G G͘ZۻϯN0|P޽K9rUV ##Up!t:ݻuuؽkgO^v]zCM6nӚCfj/X@F8yYa,[ǎɓO>{|vlڸ8ָJ9$voFRR=<&Ot)۞XcI('&55?HZ;vvٳgUׄ x9s1h@ƍKFF&7md 9Bim5W7O2glmvVyX|?YKT{?T#g2zXm< ,e 0n<'L`Yddd,d ߸I9K&9qY96n|j5,?OW`q#϶?p6̲ɲaFtBm߻%qNЩs^}7oaJϿСC ˋÑ#G˖Ұ㸹A~8v+J`@ޝW(q'$de˖lٲ ޼Tia˅t o6Q~o6MOO Α#Ҏ0Y涭?0i$*TۋѣG7rUnݻdFdҵK8.wBL=t5k;g6qqq 60Mfؗ.]fݺu\z$Ze_~~~RJm|΋T;zrĈ\ܺe~n[s,[/r=e߸qW{/*GPy'$O-"99OOO {Fٰq`1ywo&O'ɼF%?Yȯ([,TT f-?UU^=O, hب͍e^֭[F SC0 $9sERRm_x![kR4MXl淒G9cF3os^]Y۪;1^*Z:l2"##p_ħ=wwwX|Y>>>DFF$O~u3mڰfZn߾۷Yfme꾜&*.UWܿXz5Wԩ[M7BTT4sfFT<<<)VfϜe*իº fkTbY?T%x$VJQ {L+Ÿ] VaTbC ab!0$8@Fq*;@P̈"%9EPӓJ*ZW({i/ڶk_ԢJ 2*V*«J ($'bȒxgUؾU}q@PHO; JB|ԮmU^UA1Khle3AqAWjŋ9>  8b,8:og#&1!KdY8N==w?¤ɓqss˒Oy ;v_|7sgfe0NLL [miru1eU+WreݲSz* nG!3a5nL=,X99n+,!Ioujש?L %88///ƌ޽{=?ȸ)W<ʗWJֲ&NH啰wfĉ,'Oݻs,.^=zBPPpEPP0]uVq!UAqaΝtY ܥ ;wŶmeCnݔpIjJ|\|<*TPXbbŊJXJ,"I[q]qܺu?L Uu: +WNɗ `)*TQ3ZDFE(+DFEQF #"0q=k9nwRMU:w)jYij/: ^U=?:pfWΝiaJsW{2ct^Bz./'MT۷o?&..X~ ײY0o7o,?H'»2%4TUZ+}@!(#F*gff7+a/#FwՅƝ;wXh1I0i:vL/n?¼ys;o?[XPԹrFf̜IlllQeYͮݻvT;v]5_{mڴaqi՚{?`@U:5bYYT^o}Q&3 G:q9e  iC\$0 N< i۶-ΟORbEٱcaag={kVBdW_+e͙;;{U6)I&J(kTHvU7pT]EWQwUtA@ $fLy~ {nys9)97,fEdffo6o/=ΌU7{ƛorœGkVWxa/^;  M,_^`C66lJܥ ӦަG0 9~9ŗ_믿2i}/sϘ1c:$%%q7as}3<^ObNemf޼x/f!*kbba5/PYYin###1m4ijW̚9ܜ0~<{u[ ##nl-BJJ Çck]֮#0eu ~w9455qݵ׺~!7IcOAqQ18(V[O8UW'z8T:""F7d}'##}mVfΘ@yy93gg:mݗݳ7,Y}%˲g#WqyҧOH@ZZf`T{s~]YYI\\<**< Pzz︸8L&n?+_qGQF rm6]&".`C&k@,cSldd1)))z),Z3ΰy,\N;Uhdg7@e5HCC㚧描~8 ƌ /Ga~ƙgЃ;v,si,[uMSS3xYxq♧#bڸT' 8餓hjj⃕+ݻBII /ƌ믿_Ϙcc,X2/X00~XW\AMM ϟ _`9I{ɑ PUUEyy9,dСI `E9s}Xf ԩ'p3.Lr`A'(q*@Jh@u9."G\ p*#v*W%@8l}CIX@ 9y냺 %~ Iؽ7/wp){EnH!#:Q99pa:嵑D"  G8:u4P<|صw{C':kql[^׹Sg{͡åtYulظ1h[ώ/6"=6s"JNLJe+81:>B8HMm ͦfl (U9,1cHWK r T2:6RAMIl8`7IA]Ñja=Ëlܴ?K ɐEJj*Gپ}+?#G,/GKU=~BXOڄMJ|{!3LJ ̿́ڵ 歛2s I$>]͌le}_ӻ,PZVyIuT9Fr`dI,)جO K6) ȡRL&~)ߟ~B~|nzqx~H`ճߨk.*(@$$4ba5|~=}O|ec/EmTBEQPȒ,adʏaoQ__O^ΜzꩠT;v%G7uPN-7[nn: #3JHm #++ !&cIIh$^d䭥ollѣILLJ~-QcӱJ$vZrs0$&`$.NE_Vlm0 phz_qc#?8dnNb6Re U,]6F 7' rrs(/;BaQflf4 C gh4j :/\*jBOraVY͈&=-,ٿw/}8 Gc 囪ʅF_o=M7\Ocs3𬍢(H@z∋CqꩧpH9F#$ !B]}=;NmmMMM^exZaϣZZBB駟ݫ:V^GqR>9Bɵt['DVm䤑<‹/Dž}ddsṿh/ؽqXmTԐVEբjd=$ !Q_Wϩ}2K`Շ|?ӥsgew/IINAѡiuheDeUR ms#'<.Uj:d6n~WϞt:l݂@cѣKšjt4 0Irtu;M&uFaƍtV{n>ZםVZc14$˞H?h9r&#iin]Iv1dl6k'jZWU58ں1as7 Bĭ?YCo,a$]vQ057yp9Hgɿ"ldggjbVs/V];nXүdfQS[b%3+,aZ;~$k0[,78pIɉ8CmA 4M yp\@66v'ݻ11 Sum{?o&79 HNNl6,Tgc#W")1@ll:6٢0rZ8^n:Uѫ9Wz:Q/1)֬EYE5i~$a4X*tZ Fc#={0{3/dáŤ0Lz677sQU]Fn;fa6;!9緔9{ѽ;4LG˚gfh00q$:?yyy :#Fx :لغcFV5=efeQSNa 8rVn 5l6&N#GһO?BhnblV^n4)(PZ4 O%F#ݺvaBLf]~aϞ=))9 (cA٣5S~/$$ $>@.;\XW^dS {EKM݃zQ|JrWpgad199a˿6o+|ҮTxo7c$33N9T{_xS]) εR Jյ9_u[mNQl ƦfFNii,難ѣTTT|gX?pf dY8#Gblo 6PY[boiXm64._~%Ax}ȟ>K/_B=ٱI'g%ss3K;GL&7>Y)Ϝ﬘?!. ?WTTP~zY'̔-3~2g&lZ{t$JccuXm6t#'33S@?cCC租~bSNu4׵{k^Iw8 bkd=F#> Ƌݻ@~کxJ{ZKJm^p#{pwLwY&';{~#//ͭi^kQ)$L,~"..N~ uӗO>U06vk<-ֆo+EQ[񧟼p-aag/[t5ղzG;XQ!lܨ%'7Ͼz[τ2%xfL<3.JfF[0nWI׏ 6al2ߪLt$$ п:}N5Vl+j蔛ǰ#jtՑq㨮".N߮-Z(;,.5o(.)9//MIHHHQygHjb-k93bPHHHPEԯN?t B~~>%Edeet:zEK? u1]%1.R[Ɂq|;mUY9X-~_:w:%Cqu_~a붝|r_z= hLUis(uuN~l8"ƛLFFsQ P!$䍜iӷ|.rsrg*~ȴ:RQYEK8wcoh`0`0TK'k7V"WcgxPKy߀zTAj_@ZZ*{~9yy3"m^2q5<*+?sՄ :~@L,Whocy*5p>1~G|-&Od pjzzt'>.Ï֍{^ ϷO3IW%充~BhRAXՈ@8_%d%}?Y)G*zZ-L^l?LSSٸ->|%YS\233ӵ|׌{+S&'%a0HHH`Ƞlܸ"z~^2:u}$Ql#B$ڵ466v)hWTVo]rE\9 t)7x6j@x&A9Y}/ߙgy kjnvK 0o0RЀ1#eFYHJI&9)6}-\Cr}eٕ)y=:S'km߱yŅ9~/q~8eV(k7t MnEcF ރLBKe,X:)M[׮e{{書F#?oa9綔; G6yZUbF#[w젰p?bwFCC#lb`StZ ZŦٲe+mJFz:@c0H4TzS'=(wZYQ~(¤WG\p;;v.}^=y_ojV+g ߢeGxU1rm &WZ%_{P\R"FFJR ddd*8rUU|kzA~n^Negqqdeg?JA}}=\ɥ\"~grn#]¢"f3}z~K?Gͽ^' o >jk#[u/`@k?sD&]5,(XVV+6۱)I,hh4^.<|CrK[A+Яkr[du@V=d2ȟ] 8=F_aQ995B/(IIrLR>#3bsxm),}fq'#G ';++GYm6|j,[ƥcҷOdY͛՗Ah?uxi w~[K];CNÑ1ÑNJ99Q)t뗖Z B *kFipvcb*Kʋ/dbݺHJL QFo %%bQ 8unſ K$&&sev͇ x??4Cή6A[Ow/dpNW5QL&O]˙y]@9rwO?:βу)]_ .Z![Nf'Ζ_ˀ6YyX&khuV4\V+7v;۶o?._~'駞zt.=.2pFruƫտRjcu\U)IldwO(*.Zh9FKV^AMMTBj@ [(ۭDES~5?XQ@֘#g8eY&??rtH4W#CE#}\xEOwΝta릊Pp !{;Hpۥ>n5 >m[ @މb7III!#==!2<*6CDXfϙm1';m1'7PQQ3\]"ONє_;}J]]k>:z Ԍp5i^Pg ׹ hYVVC /bܸK*KHDtB#(WBg<:Vm渢(,[?Fۧ؍̔)ױrz5b>X8>N?4׵7x#+Wj1fhnZfK0z(nF 7oa܍޸.gx}ճ'wyA- oh4/x^By?`Z9묳Y[UTTT8kYz;wdѢŔ8@ZZ&M /gtwlKg<#g51f87ơF7?x:u UQMMUV=)[o/ŋ2u{y**+X`>^; z\}v^ye}| Wز)..^^WB z̙3oŀxvZڣ0 &ݟ‹/2qD<=_կ!{#P̝g>ٿo_Pi3b7Pd2qk/ukauhሶm? 3f̘Nnn.IIIrlذ)S`0sΡ뮽iӦIff&n/W6mYYYdeeqi|+דWY3gC||<Ə緽{}^W_s?}3<^ObNemLvGך7ϑe Ԑ]w!{#P,'))VGU^$It{l~ouWhպ˙9s`oMt#99եl\S]NtoIRRu~NwsYd2ž=dG}[I9yߟwwHNNfڴ싯_:~o]JC0S i[՘_TWnnG77/3ڮpт:ӇryU۠n\gffddx>|#%=z~cȖMU^Oss3qqqTUUy?ܳL~!ihh`y\Ӳ &[WPP}EQزe+*z KpVJpsϞ٫¶((?rzjFtQ_g;sRRRbg}.͟ ***?96fh^u=ѣGy= ]a̘1>Gx>X&ʘkMM )//gF ٱc+|̝֬;+#--Ms}ם,Xy &а]}Օ444tÉC2ٔ9B]^/Ns5 gEE7n▛ons}&={7/"]dlrm\>D"1?d;!>GU뤽i Skxjzk w~g;k"pl)ue<9j {(vNN"dlq r0ڸ(kj攓O湧p=bق*nF ڵ:5}蠟6555̘u'/RSSVa#'[!9$e-Q ~ߝ} `0jd6-tsP2&h-jK$ڱY_XDAEEn}:g֭'_cE-n8@+kl6G---\A5ѝijb7V6FNQ|C^>_}En]wlwSq ɀگ%/< -m;9|NAuUŴFtUMMMrcZ^?r(9M[S(ʱ>vH~h6]puMMTUTa6N*05 !=VWݟklhV[KcwŦ$IL&6nDRR,!$ zv'Ͼ1ATiWջ?ג7<ɢM5pc6kІN#-55 ڈ}8[AcIRB2 M1H4d IDAT^6 %w@D^G\> ڎږV h,Gv"99 3U;(Fj*ptSD p\wZ*K:uW|<4qjڂ3N͛cz-@ 23{ڲTUWk׏ج  h4Bm}Ct7ExRRXH~,HIM%A E.pIKIa- vsfmJV'ڎD%??b>s|^Izzݺt@`U%=??bq8@ hO!Pp\지5qsA{A8@25@a+lRN&~~bS[n^پc'g;+ NTB*0Զ*긨2 P 8ZWة$AhZ :'hmmlGL4C  nJbC@ Ȑ4p @ BȡA eB/q( @ sF^Һ2O2+' d C ǣ>h!Eg2FhfHщ@p"SkV(nTJ l7~)M!ȉxO^ +IENDB`kmetronome-1.3.0/doc/PaxHeaders.13848/CMakeLists.txt0000644000000000000000000000013214155347442016755 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.357062938 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/CMakeLists.txt0000644000175000001440000000262314155347442017544 0ustar00pedrousers00000000000000# KMetronome - ALSA Sequencer based MIDI metronome # Copyright (C) 2005-2021 Pedro Lopez-Cabanillas # # 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, see . set(MANPAGE ${PROJECT_NAME}.1) include(PandocMacros) if (BUILD_DOCS) if (UNIX AND NOT APPLE) add_manpage(${MANPAGE}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${MANPAGE} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) endif() update_helpfiles(cs de en es fr tr) else() if (UNIX AND NOT APPLE) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${MANPAGE} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) endif() foreach(_lang IN ITEMS cs de en es fr tr) install( FILES "${_lang}/index.html" DESTINATION ${CMAKE_INSTALL_DOCDIR}/${PROJECT_NAME}/${_lang} ) endforeach() endif() kmetronome-1.3.0/doc/PaxHeaders.13848/kmetronome.10000644000000000000000000000013214155347442016457 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/kmetronome.10000644000175000001440000000672714155347442017257 0ustar00pedrousers00000000000000.\" Automatically generated by Pandoc 1.19.2.1 .\" .TH "KMETRONOME" "1" "December 12, 2021" "kmetronome 1.3.0" "Drumstick MIDI Metronome" .hy .SH NAME .PP \f[B]kmetronome\f[] \- Drumstick MIDI metronome using ALSA sequencer and QT user interface .SH SYNOPSIS .PP \f[B]kmetronome\f[] [options] .SH DESCRIPTION .PP Drumstick Metronome is a MIDI metronome with QT interface based on the ALSA sequencer. It is a tool for musicians and music students to keep the rhythm while playing musical instruments. It uses MIDI for sound generation instead of digital audio, allowing low CPU usage, and very accurate timing thanks to the ALSA sequencer. .SS Options .TP .B \f[C]\-\-help\f[] Show help about options .RS .RE .TP .B \f[C]\-\-help\-all\f[] Show all options .RS .RE .TP .B \f[C]\-v\f[],\f[C]\-\-version\f[] Show version information .RS .RE .SS Standard Options .PP The following options apply to all Qt5 applications. .TP .B \f[C]\-style=\f[] style / \f[C]\-style\f[] style Set the application GUI style. Possible values depend on the system configuration. If Qt is compiled with additional styles or has additional styles as plugins these will be available to the \f[C]\-style\f[] command line option. .RS .RE .TP .B \f[C]\-stylesheet=\f[] stylesheet / \f[C]\-stylesheet\f[] stylesheet Set the application styleSheet. The value must be a path to a file that contains the Style Sheet. .RS .RE .TP .B \f[C]\-widgetcount\f[] Print debug message at the end about number of widgets left undestroyed and maximum number of widgets existed at the same time. .RS .RE .TP .B \f[C]\-reverse\f[] Set the application\[aq]s layout direction to Qt::RightToLeft. This option is intended to aid debugging and should not be used in production. The default value is automatically detected from the user\[aq]s locale (see also QLocale::textDirection()). .RS .RE .TP .B \f[C]\-platform\f[] platformName[:options] Specify the Qt Platform Abstraction (QPA) plugin. .RS .RE .TP .B \f[C]\-platformpluginpath\f[] path Specify the path to platform plugins. .RS .RE .TP .B \f[C]\-platformtheme\f[] platformTheme Specify the platform theme. .RS .RE .TP .B \f[C]\-plugin\f[] plugin Specify additional plugins to load. The argument may appear multiple times. .RS .RE .TP .B \f[C]\-qwindowgeometry\f[] geometry Specify the window geometry for the main window using the X11\-syntax. For example: \-qwindowgeometry 100x100+50+50 .RS .RE .TP .B \f[C]\-qwindowicon\f[] icon Set the default window icon. .RS .RE .TP .B \f[C]\-qwindowtitle\f[] title Set the title of the first window. .RS .RE .TP .B \f[C]\-session\f[] session Restore the application from an earlier session. .RS .RE .TP .B \f[C]\-display\f[] hostname:screen_number Switch displays on X11. Overrides the DISPLAY environment variable. .RS .RE .TP .B \f[C]\-geometry\f[] geometry Specify the window geometry for the main window on X11. For example: \-geometry 100x100+50+50 .RS .RE .TP .B \f[C]\-fontengine=\f[] freetype Use the FreeType font engine. .RS .RE .SH BUGS .PP See Tickets at Sourceforge .SH SEE ALSO .PP \f[B]qt5options (7)\f[] .SH LICENSE .PP This manual page was written by Pedro Lopez\-Cabanillas Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation; considering as source code all the file that enable the production of this manpage. .SH AUTHORS Pedro López\-Cabanillas . kmetronome-1.3.0/doc/PaxHeaders.13848/es0000644000000000000000000000013214155347442014547 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/es/0000755000175000001440000000000014155347442015410 5ustar00pedrousers00000000000000kmetronome-1.3.0/doc/es/PaxHeaders.13848/index.md0000644000000000000000000000013214155347442016255 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/es/index.md0000644000175000001440000003203414155347442017043 0ustar00pedrousers00000000000000% Índice de Ayuda # Introducción Drumstick Metronome es un metrónomo basado en MIDI que utiliza el secuenciador ALSA. La audiencia destinataria son músicos y estudiantes de música. Como cualquier metrónomo fisico es una herramienta para mantener el ritmo mientras se tocan instrumentos musicales. Utiliza MIDI en lugar de audio digital, lo que permite un uso bajo de la CPU y temporización muy precisa gracias al secuenciador ALSA. Esto significa que también necesita un sintetizador MIDI para la generación de sonido, porque el programa no produce ningún sonido por sí mismo. Los mejores resultados provienen del uso de un sintetizador hardware, pero puede utilizar también un sintetizador software en su lugar. Solicite soporte, informe de problemas, errores y nuevas funciones en el sistema de seguimiento: [Sitio del proyecto SourceForge](https://sourceforge.net/p/kmetronome/support-requests/) # Uso de Drumstick Metronome ## Características Solo necesita ajustar algunos controles, como el control deslizante del tempo, el valor del número de pulsos del compás y el selector de duración del pulso. Presione el botón de reproducción para comenzar. Utilice el botón de parada a su conveniencia. El tempo se puede configurar de 25 a 250 NPM usando el control deslizante. Las unidades son negras por minuto (unidades de metrónomo Mälzel). También puede hacer doble clic sobre la ventana principal para abrir un cuadro de diálogo donde puede ingresar un nuevo tempo directamente con el teclado. También hay un cuadro combinado para elegir y mostrar el tempo con nombres musicales italianos. Partes/Compás se puede configurar de 1 a 32 beats. Estos son el número de pulsos en cada compás, y es el numerador en el tipo de compás como sería anotado. La figura rítmica es el denominador de la especificación del tipo de compás, y representa la duración de cada pulso. Cambiar este valor no cambia el significado de las unidades de tempo. Patrón es una lista desplegable para elegir una definición de patrón. El valor por defecto "Automático" significa que el programa genera patrones utilizando los sonidos establecidos en el cuadro de diálogo de configuración (Fuerte / Débil) y el ritmo definido por "Partes/Compas" y "Figura rítmica". También contiene los nombres de los patrones definidos por el usuario. ## Para Empezar Este programa utiliza el protocolo MIDI, por lo que es una buena idea tener algunas nociones básicas sobre MIDI para comprender completamente los conceptos Detrás de eso. Aquí puede encontrar una buena introducción: [Qué es MIDI](https://www.midi.org/midi-articles/categories/MIDI%201.0). Drumstick Metronome produce eventos MIDI. Si quieres escuchar los eventos traducido a sonidos, necesita conectar el puerto MIDI OUT desde este programa al puerto MIDI IN de un sintetizador MIDI. Puede ser un sintetizador MIDI hardware o software. Si es un sintetizador hardware externo, también se necesita una interfaz MIDI compatible con ALSA instalado en su computadora, y un cable MIDI conectado tanto a la interfaz MIDI del ordenador como a la toma MIDI IN del sintetizador. Si no tiene un sintetizador MIDI externo, aún puede usar el programa con un sintetizador software compatible MIDI con el secuenciador ALSA, como [QSynth](https://qsynth.sourceforge.io). Inicia tu sintetizador software antes de Drumstick Metronome, y luego haz la conexión entre los dos programas, ya sea en el cuadro de diálogo de configuración de Drumstick Metronome o usando un administrador de conexión externo como [QJackCtl](https://qjackctl.sourceforge.io). No olvide instalar una buena [Fuente de sonido](https://en.wikipedia.org/wiki/SoundFont) en el cuadro de diálogo "Configuración ..." de QSynth. ## Configuración Drumstick Metronome tiene capacidades limitadas de gestión de sesiones. Puede recordar una conexión para el puerto de salida ALSA, y una conexión para su puerto de entrada. Las conexiones se almacenan cuando el programa termina y se recuerdan al inicio. No necesita esta función si prefiere hacer tales conexiones a mano, utilizando un conector o cualquier otra utilidad equivalente, o si usa un administrador de sesiones externo como el patchbay incluido en el programa [QJackCtl](https://qjackctl.sourceforge.io). Drumstick Metronome utiliza un archivo de definición de instrumento en formato .INS, el mismo formato que Qtractor, TSE3, Cakewalk y Sonar. En el **instrumento receptor**, la lista desplegable permite elegir uno entre General MIDI, Roland GS y Yamaha XG. Puede agregar más definiciones creando un archivo llamado `drums.ins` en `$HOME/.local/share/kmetronome.sourceforge.net`. Los contenidos de las listas desplegables **Banco**, **Programa**, **Nota Débil** y **Nota fuerte** también dependen de esta definición. **Canal** suele ser 10, es decir, el canal de percusión de un sintetizador General MIDI. Debe ser un número entre 1 y 16. **Resolución** es el número de tics (unidades de tiempo) para cada negra. El valor varía de 48 a 960. El valor predeterminado es 120. **Duración de la nota** es la duración (en número de tics) del lapso de tiempo entre un evento NOTE ON y su correspondiente evento NOTE OFF. Este control está habilitado solo cuando **Emitir eventos NOTE OFF** también está habilitado. Valores muy bajos puede causar clics silenciados en algunos sintetizadores. Los sonidos de percusión generalmente no necesitan que se envíen eventos NOTE OFF cada NOTE ON. Seleccione la casilla de verificación **Emitir eventos NOTE OFF** solo si su sintetizador o instrumento admite o requiere esta configuración. **Banco** y **Programa** se utiliza para cambiar la batería de los instrumentos que soportan varios ajustes. Muchos sintetizadores no entienden el cambio de programa para el canal de percusión. En el modo de patrón **Automático**, el sonido de **Nota fuerte** se reproduce como primer tiempo en cada compás, mientras que cualquier otro tiempo en el mismo compás se reproduce usando el sonido de **Nota débil**. Los valores numéricos 33 y 34 son los sonidos GM2 y XG para el clic del metrónomo y la campana del metrónomo respectivamente. ## Editor de patrones Con este cuadro de diálogo puede editar, probar y seleccionar patrones. Para crear nuevos patrones simplemente guarde la definición actual con un nuevo nombre. Los patrones están representados por una tabla. Las filas de la tabla corresponden a sonidos de percusión. Puede eliminar y agregar filas de una lista de sonidos definido por los ajustes del instrumento en el cuadro de diálogo de configuración. El número de columnas de la tabla determina la longitud del patrón, entre 1 y 99 elementos de cualquier duración de tiempo. Cada celda de la tabla acepta valores entre N = 1 y 9, correspondientes a la velocidad MIDI (N*127/9) de las notas, o 0 para cancelar el sonido. Los valores válidos también son "f" (= fuerte) y ""p" (= piano) correspondientes a las velocidades variables definidas por los botones giratorios (Fuerte / Débil) en la ventana principal. Los valores de las celdas se pueden seleccionar y modificar usando el teclado o el ratón. No es necesario detener la reproducción antes de modificar los valores. # Referencia de comandos ## La ventana principal ### El menú Archivo **Archivo → Importar patrones** : Importa definiciones de patrones en Drumstick Metronome **Archivo → Exportar patrones** : Exporta definiciones de patrones de Drumstick Metronome **Archivo → Comenzar / Parar** : Controla la reproducción del patrón **Archivo → Salir** : Cierra Drumstick Metronome ### El menú Editar **Editar → Editar patrones** : Abre el editor de patrones ### El menú de configuración **Configuración → Mostrar botones de acción** : Muestra u oculta los botones de acción. Hay elementos de menú equivalentes para cada botón. **Configuración → Mostrar barra de herramientas** : Muestra u oculta la barra de herramientas. Hay elementos de menú equivalentes para cada botón. **Ajustes → Configuración** : Configura Drumstick Metronome ### El menú de ayuda **Ayuda → Contenido de la ayuda** : Abre la ventana de ayuda **Ayuda → Idioma** : Abre un submenú que muestra las traducciones disponibles **Ayuda → acerca de** : Abre un cuadro acerca de este programa **Ayuda → acerca de Qt** : Abre un cuadro acerca de los marcos Qt # Control externo Drumstick Metronome se puede controlar mediante su interfaz D-Bus, MIDI System Realtime y mensajes MIDI exclusivos del sistema. ## Interfaz D-Bus Drumstick Metronome proporciona algunas funciones a través de su interfaz D-Bus. Usted puede use un programa habilitado para D-Bus para controlar Drumstick Metronome como `qdbusviewer` o el utilidad de línea de comandos `qdbus`. Por ejemplo, estos comandos se pueden usar desde un intérprete de comandos: $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150 $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8 ## Mensajes exclusivos del sistema universal Drumstick Metronome comprende algunos mensajes exclusivos del sistema universal. Porque la ID del dispositivo aún no está implementada, todos los mensajes reconocidos deben estar marcado como difusión (0x7F). Mensaje de tiempo real: mensaje de cambio de medida del compás Formato: 0xF0 0x7F 0x7F 0x03 Comando Longitud Numerador Denominador ... 0xF7 0x02: cambio de medida del compás 0x42: cambio de medida del compás diferida Notas: ambos comandos afectan solo a los siguientes patrones programados después recibiendo el comando. La longitud es al menos 2. Bytes adicionales siguientes Se ignoran el numerador y el denominador. Mensajes MMC Formato: 0xF0 0x7F 0x7F 0x06 Comando 0xF7 0x01: Detener 0x02: Reproducir 0x03: Reproducción diferida ## Interfaz en tiempo real del sistema MIDI Puede utilizar un dispositivo MIDI que genere mensajes MIDI System Realtime para controlar Drumstick Metronome. Los mensajes del sistema en tiempo real aceptados son: Inicio (0xFA), Deténgase (0xFC) y continúe (0xFB). Muchos teclados MIDI maestros y dispositivos de botones MIDI proporcionan esos tres Controles de transporte MIDI. Necesita conectar sus dispositivos MIDI externos al ordenador mediante cables MIDI (o USB) y conecte el correspondiente puerto ALSA al puerto de entrada de Drumstick Metronome. Esta conexión debe hacerse a mano o con un software de gestión de sesiones como QJackCtl. # Créditos y Licencia Programa Copyright © 2005-2021 Pedro Lopez-Cabanillas Documentación Copyright © 2005-2021 Pedro Lopez-Cabanillas Este programa es software gratuito; puedes redistribuirlo y / o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la Free Software Foundation; ya sea la versión 2 de la licencia, o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea de utilidad, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO EN PARTICULAR. Ver el Licencia pública general GNU para más detalles. Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa. De lo contrario, consulte [https://www.gnu.org/licenses](https://www.gnu.org/licenses) # Instalación ## Cómo obtener Drumstick Metronome Aquí puede encontrar la última versión: [Archivos del proyecto](https://sourceforge.net/projects/kmetronome/files/kmetronome/) ## Requisitos Para compilar y utilizar con éxito Drumstick Metronome, necesita Qt 5 o posterior, Drumstick 2, drivers ALSA y librería ALSA. También necesita un sintetizador MIDI para producir sonido. El sistema de compilación requiere [CMake](https://cmake.org) 3.14 o más reciente. La biblioteca, los controladores y las utilidades de ALSA se pueden encontrar en la [Página de inicio de ALSA](https://www.alsa-project.org). Drumstick::ALSA es un envoltorio C++ alrededor de la interfaz del secuenciador de ALSA usando objetos, modismos y estilo Qt. Lo puedes encontrar en la [Página de inicio de Drumstick](https://drumstick.sourceforge.io). Consulte también la [página de inicio de Drumstick Metronome](https://kmetronome.sourceforge.io/kmetronome.shtml). ## Compilación e instalación Para compilar e instalar Drumstick Metronome en su sistema, escriba lo siguiente en el directorio base de la distribución Drumstick Metronome: % cmake. % make % sudo make install Dado que Drumstick Metronome usa `cmake` y `make`, no debería tener problemas compilándolo. Si tiene algún problema, infórmelo al autor del proyecto en [sistema de seguimiento de errores](https://sourceforge.net/p/kmetronome/bugs/). kmetronome-1.3.0/doc/es/PaxHeaders.13848/index.html0000644000000000000000000000013214155347442016621 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/es/index.html0000644000175000001440000004137614155347442017420 0ustar00pedrousers00000000000000 Índice de Ayuda

Introducción

Drumstick Metronome es un metrónomo basado en MIDI que utiliza el secuenciador ALSA.

La audiencia destinataria son músicos y estudiantes de música. Como cualquier metrónomo fisico es una herramienta para mantener el ritmo mientras se tocan instrumentos musicales.

Utiliza MIDI en lugar de audio digital, lo que permite un uso bajo de la CPU y temporización muy precisa gracias al secuenciador ALSA. Esto significa que también necesita un sintetizador MIDI para la generación de sonido, porque el programa no produce ningún sonido por sí mismo. Los mejores resultados provienen del uso de un sintetizador hardware, pero puede utilizar también un sintetizador software en su lugar.

Solicite soporte, informe de problemas, errores y nuevas funciones en el sistema de seguimiento: Sitio del proyecto SourceForge

Uso de Drumstick Metronome

Características

Solo necesita ajustar algunos controles, como el control deslizante del tempo, el valor del número de pulsos del compás y el selector de duración del pulso. Presione el botón de reproducción para comenzar. Utilice el botón de parada a su conveniencia.

El tempo se puede configurar de 25 a 250 NPM usando el control deslizante. Las unidades son negras por minuto (unidades de metrónomo Mälzel). También puede hacer doble clic sobre la ventana principal para abrir un cuadro de diálogo donde puede ingresar un nuevo tempo directamente con el teclado. También hay un cuadro combinado para elegir y mostrar el tempo con nombres musicales italianos.

Partes/Compás se puede configurar de 1 a 32 beats. Estos son el número de pulsos en cada compás, y es el numerador en el tipo de compás como sería anotado.

La figura rítmica es el denominador de la especificación del tipo de compás, y representa la duración de cada pulso. Cambiar este valor no cambia el significado de las unidades de tempo.

Patrón es una lista desplegable para elegir una definición de patrón. El valor por defecto "Automático" significa que el programa genera patrones utilizando los sonidos establecidos en el cuadro de diálogo de configuración (Fuerte / Débil) y el ritmo definido por "Partes/Compas" y "Figura rítmica". También contiene los nombres de los patrones definidos por el usuario.

Para Empezar

Este programa utiliza el protocolo MIDI, por lo que es una buena idea tener algunas nociones básicas sobre MIDI para comprender completamente los conceptos Detrás de eso. Aquí puede encontrar una buena introducción: Qué es MIDI.

Drumstick Metronome produce eventos MIDI. Si quieres escuchar los eventos traducido a sonidos, necesita conectar el puerto MIDI OUT desde este programa al puerto MIDI IN de un sintetizador MIDI. Puede ser un sintetizador MIDI hardware o software. Si es un sintetizador hardware externo, también se necesita una interfaz MIDI compatible con ALSA instalado en su computadora, y un cable MIDI conectado tanto a la interfaz MIDI del ordenador como a la toma MIDI IN del sintetizador.

Si no tiene un sintetizador MIDI externo, aún puede usar el programa con un sintetizador software compatible MIDI con el secuenciador ALSA, como QSynth. Inicia tu sintetizador software antes de Drumstick Metronome, y luego haz la conexión entre los dos programas, ya sea en el cuadro de diálogo de configuración de Drumstick Metronome o usando un administrador de conexión externo como QJackCtl.

No olvide instalar una buena Fuente de sonido en el cuadro de diálogo "Configuración ..." de QSynth.

Configuración

Drumstick Metronome tiene capacidades limitadas de gestión de sesiones. Puede recordar una conexión para el puerto de salida ALSA, y una conexión para su puerto de entrada. Las conexiones se almacenan cuando el programa termina y se recuerdan al inicio. No necesita esta función si prefiere hacer tales conexiones a mano, utilizando un conector o cualquier otra utilidad equivalente, o si usa un administrador de sesiones externo como el patchbay incluido en el programa QJackCtl.

Drumstick Metronome utiliza un archivo de definición de instrumento en formato .INS, el mismo formato que Qtractor, TSE3, Cakewalk y Sonar. En el instrumento receptor, la lista desplegable permite elegir uno entre General MIDI, Roland GS y Yamaha XG. Puede agregar más definiciones creando un archivo llamado drums.ins en $HOME/.local/share/kmetronome.sourceforge.net. Los contenidos de las listas desplegables Banco, Programa, Nota Débil y Nota fuerte también dependen de esta definición.

Canal suele ser 10, es decir, el canal de percusión de un sintetizador General MIDI. Debe ser un número entre 1 y 16.

Resolución es el número de tics (unidades de tiempo) para cada negra. El valor varía de 48 a 960. El valor predeterminado es 120.

Duración de la nota es la duración (en número de tics) del lapso de tiempo entre un evento NOTE ON y su correspondiente evento NOTE OFF. Este control está habilitado solo cuando Emitir eventos NOTE OFF también está habilitado. Valores muy bajos puede causar clics silenciados en algunos sintetizadores.

Los sonidos de percusión generalmente no necesitan que se envíen eventos NOTE OFF cada NOTE ON. Seleccione la casilla de verificación Emitir eventos NOTE OFF solo si su sintetizador o instrumento admite o requiere esta configuración.

Banco y Programa se utiliza para cambiar la batería de los instrumentos que soportan varios ajustes. Muchos sintetizadores no entienden el cambio de programa para el canal de percusión.

En el modo de patrón Automático, el sonido de Nota fuerte se reproduce como primer tiempo en cada compás, mientras que cualquier otro tiempo en el mismo compás se reproduce usando el sonido de Nota débil. Los valores numéricos 33 y 34 son los sonidos GM2 y XG para el clic del metrónomo y la campana del metrónomo respectivamente.

Editor de patrones

Con este cuadro de diálogo puede editar, probar y seleccionar patrones. Para crear nuevos patrones simplemente guarde la definición actual con un nuevo nombre. Los patrones están representados por una tabla. Las filas de la tabla corresponden a sonidos de percusión. Puede eliminar y agregar filas de una lista de sonidos definido por los ajustes del instrumento en el cuadro de diálogo de configuración. El número de columnas de la tabla determina la longitud del patrón, entre 1 y 99 elementos de cualquier duración de tiempo.

Cada celda de la tabla acepta valores entre N = 1 y 9, correspondientes a la velocidad MIDI (N*127/9) de las notas, o 0 para cancelar el sonido. Los valores válidos también son "f" (= fuerte) y ""p" (= piano) correspondientes a las velocidades variables definidas por los botones giratorios (Fuerte / Débil) en la ventana principal. Los valores de las celdas se pueden seleccionar y modificar usando el teclado o el ratón. No es necesario detener la reproducción antes de modificar los valores.

Referencia de comandos

La ventana principal

El menú Archivo

Archivo → Importar patrones

Importa definiciones de patrones en Drumstick Metronome

Archivo → Exportar patrones

Exporta definiciones de patrones de Drumstick Metronome

Archivo → Comenzar / Parar

Controla la reproducción del patrón

Archivo → Salir

Cierra Drumstick Metronome

El menú Editar

Editar → Editar patrones

Abre el editor de patrones

El menú de configuración

Configuración → Mostrar botones de acción

Muestra u oculta los botones de acción. Hay elementos de menú equivalentes para cada botón.

Configuración → Mostrar barra de herramientas

Muestra u oculta la barra de herramientas. Hay elementos de menú equivalentes para cada botón.

Ajustes → Configuración

Configura Drumstick Metronome

El menú de ayuda

Ayuda → Contenido de la ayuda

Abre la ventana de ayuda

Ayuda → Idioma

Abre un submenú que muestra las traducciones disponibles

Ayuda → acerca de

Abre un cuadro acerca de este programa

Ayuda → acerca de Qt

Abre un cuadro acerca de los marcos Qt

Control externo

Drumstick Metronome se puede controlar mediante su interfaz D-Bus, MIDI System Realtime y mensajes MIDI exclusivos del sistema.

Interfaz D-Bus

Drumstick Metronome proporciona algunas funciones a través de su interfaz D-Bus. Usted puede use un programa habilitado para D-Bus para controlar Drumstick Metronome como qdbusviewer o el utilidad de línea de comandos qdbus.

Por ejemplo, estos comandos se pueden usar desde un intérprete de comandos:

$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8

Mensajes exclusivos del sistema universal

Drumstick Metronome comprende algunos mensajes exclusivos del sistema universal. Porque la ID del dispositivo aún no está implementada, todos los mensajes reconocidos deben estar marcado como difusión (0x7F).

Mensaje de tiempo real: mensaje de cambio de medida del compás

Formato: 0xF0 0x7F 0x7F 0x03 Comando Longitud Numerador Denominador ... 0xF7
                             0x02: cambio de medida del compás 
                             0x42: cambio de medida del compás diferida

Notas: ambos comandos afectan solo a los siguientes patrones programados después recibiendo el comando. La longitud es al menos 2. Bytes adicionales siguientes Se ignoran el numerador y el denominador.

Mensajes MMC

Formato: 0xF0 0x7F 0x7F 0x06 Comando 0xF7
                             0x01: Detener
                             0x02: Reproducir
                             0x03: Reproducción diferida

Interfaz en tiempo real del sistema MIDI

Puede utilizar un dispositivo MIDI que genere mensajes MIDI System Realtime para controlar Drumstick Metronome. Los mensajes del sistema en tiempo real aceptados son: Inicio (0xFA), Deténgase (0xFC) y continúe (0xFB).

Muchos teclados MIDI maestros y dispositivos de botones MIDI proporcionan esos tres Controles de transporte MIDI. Necesita conectar sus dispositivos MIDI externos al ordenador mediante cables MIDI (o USB) y conecte el correspondiente puerto ALSA al puerto de entrada de Drumstick Metronome. Esta conexión debe hacerse a mano o con un software de gestión de sesiones como QJackCtl.

Créditos y Licencia

Programa Copyright © 2005-2021 Pedro Lopez-Cabanillas

Documentación Copyright © 2005-2021 Pedro Lopez-Cabanillas

Este programa es software gratuito; puedes redistribuirlo y / o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la Free Software Foundation; ya sea la versión 2 de la licencia, o (a su elección) cualquier versión posterior.

Este programa se distribuye con la esperanza de que sea de utilidad, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO EN PARTICULAR. Ver el Licencia pública general GNU para más detalles.

Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa. De lo contrario, consulte https://www.gnu.org/licenses

Instalación

Cómo obtener Drumstick Metronome

Aquí puede encontrar la última versión: Archivos del proyecto

Requisitos

Para compilar y utilizar con éxito Drumstick Metronome, necesita Qt 5 o posterior, Drumstick 2, drivers ALSA y librería ALSA.

También necesita un sintetizador MIDI para producir sonido.

El sistema de compilación requiere CMake 3.14 o más reciente.

La biblioteca, los controladores y las utilidades de ALSA se pueden encontrar en la Página de inicio de ALSA.

Drumstick::ALSA es un envoltorio C++ alrededor de la interfaz del secuenciador de ALSA usando objetos, modismos y estilo Qt. Lo puedes encontrar en la Página de inicio de Drumstick.

Consulte también la página de inicio de Drumstick Metronome.

Compilación e instalación

Para compilar e instalar Drumstick Metronome en su sistema, escriba lo siguiente en el directorio base de la distribución Drumstick Metronome:

% cmake.
% make
% sudo make install

Dado que Drumstick Metronome usa cmake y make, no debería tener problemas compilándolo. Si tiene algún problema, infórmelo al autor del proyecto en sistema de seguimiento de errores.

kmetronome-1.3.0/doc/PaxHeaders.13848/fr0000644000000000000000000000013214155347442014547 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/fr/0000755000175000001440000000000014155347442015410 5ustar00pedrousers00000000000000kmetronome-1.3.0/doc/fr/PaxHeaders.13848/index.md0000644000000000000000000000013214155347442016255 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/fr/index.md0000644000175000001440000003327614155347442017054 0ustar00pedrousers00000000000000% Index de l'aide # Introduction Drumstick Metronome est un métronome basé sur MIDI utilisant le séquenceur ALSA. Le public visé sont les musiciens et les étudiants en musique. Comme tout physique métronome c'est un outil pour garder le rythme tout en jouant de la musique instruments. Il utilise le MIDI au lieu de l'audio numérique, permettant une faible utilisation du processeur et très précis timing grâce au séquenceur ALSA. Cela signifie que vous avez également besoin d'un MIDI synthétiseur pour la génération sonore, car le programme ne produit aucun son par lui-même. Les meilleurs résultats proviennent de l'utilisation d'un synthétiseur matériel, mais vous pouvez utilisez également des synthétiseurs logiciels à la place. Demandez de l'aide, signalez les problèmes, les bogues et les demandes de fonctionnalités au système de suivi à l'adresse [Site du projet SourceForge](https://sourceforge.net/p/kmetronome/support-requests/) # Utilisation du métronome Drumstick ## Caractéristiques Vous n'avez qu'à ajuster certaines commandes, comme le curseur de tempo, le la boîte de sélection des battements/mesure et le sélecteur de longueur de battement. Appuyez sur le bouton de lecture commencer. Utilisez le bouton d'arrêt à votre convenance. Le tempo peut être réglé de 25 à 250 QPM à l'aide du curseur. Les unités sont quarts par minute (unités de métronome Mälzel). Vous pouvez également double-cliquer sur la fenêtre principale pour ouvrir une boîte de dialogue où vous pouvez entrer un nouveau tempo directement avec le clavier. Il y a aussi une zone de liste déroulante à choisir et afficher le tempo en utilisant des noms musicaux italiens. Beats/Bar peut être réglé de 1 à 32 temps. Ce sont le nombre de battements sur chaque mesure ou mesure, et c'est le numérateur sur la signature de temps comme ce serait noté. La longueur du battement est le dénominateur sur la spécification de la signature rythmique, et représente la durée de chaque battement. La modification de cette valeur ne changer la signification des unités de tempo. Motif est une liste déroulante permettant de choisir une définition de motif. Le défaut La valeur « automatique » signifie que le programme génère des modèles en utilisant le notes définies dans la boîte de dialogue de configuration (Fort/Faible) et le rythme définition fournie par "Beats/Bar" et "Beat length". Il contient également les noms des modèles définis par l'utilisateur. ## Commencer Ce programme utilise le protocole MIDI, c'est donc une bonne idée d'avoir quelques notions de base sur le MIDI afin de bien comprendre les concepts derrière. Vous pouvez trouver ici une bonne introduction: [Qu'est-ce que le MIDI](https://www.midi.org/midi-articles/categories/MIDI%201.0). Drumstick Metronome produit des événements MIDI. Si vous voulez entendre les événements traduit en sons dont vous avez besoin pour connecter le port MIDI OUT de ce programme au port MIDI IN d'un synthétiseur MIDI. Il peut s'agir soit d'un synthétiseur MIDI matériel ou logiciel. S'il s'agit d'un externe synthétiseur matériel, vous avez également besoin d'une interface MIDI prise en charge par ALSA installé sur votre ordinateur et un câble MIDI connecté à la fois au l'interface MIDI de l'ordinateur et la prise MIDI IN du synthétiseur. Si vous n'avez pas de synthétiseur MIDI externe, vous pouvez toujours utiliser le programme avec un synthétiseur logiciel MIDI prenant en charge le séquenceur ALSA connexions, comme [QSynth](https://qsynth.sourceforge.io). Commencez votre synthétiseur logiciel avant Drumstick Metronome, puis effectuez la connexion entre les deux programmes, soit dans la boîte de dialogue de configuration de Drumstick Metronome ou en utilisant un gestionnaire de connexion externe comme [QJackCtl](https://qjackctl.sourceforge.io). N'oubliez pas d'installer une bonne [Sound Font](https://en.wikipedia.org/wiki/SoundFont) dans la boîte de dialogue "Configuration..." de QSynth. ## Configuration Drumstick Metronome a des capacités de gestion de session limitées. il peut se souvenir une connexion pour le port de sortie ALSA, et une connexion pour son port d'entrée. Les connexions sont stockées à la sortie du programme et mémorisées au démarrage. Vous n'avez pas besoin de cette fonctionnalité si vous préférez faire de tels les connexions à la main, en utilisant aconnect ou tout autre utilitaire équivalent, ou si vous utilisez un gestionnaire de session externe comme le patchbay inclus dans le programme [QJackCtl](https://qjackctl.sourceforge.io). Drumstick Metronome utilise un fichier de définition d'instrument au format .INS, le même format comme Qtractor, TSE3, Cakewalk et Sonar. L'**instrument de sortie** la liste déroulante permet d'en choisir un parmi les standards General MIDI, Cartes de batterie Roland GS et Yamaha XG. Vous pouvez ajouter plus de définitions en créant un fichier nommé `drums.ins` dans `$HOME/.local/share/kmetronome.sourceforge.net`. Les contenu des listes déroulantes **Banque**, **Programme**, **Faible** et **Note forte** dépendent aussi de cette définition. **Canal** est généralement 10, ce qui signifie le canal de percussion d'un General MIDI synthétiseur. Il doit s'agir d'un nombre entre 1 et 16. **Résolution** est le nombre de ticks (unités de temps) pour chaque noire. Plage de valeurs de 48 à 960. La valeur par défaut est 120. **La durée de la note** est la longueur (en nombre de ticks) de la période entre une NOTE ON et son événement NOTE OFF correspondant. Ce contrôle est activé uniquement lorsque **Envoyer les événements NOTE OFF** est également activé. Valeurs très faibles peut provoquer des clics assourdis sur certains synthétiseurs. Les sons de percussion n'ont généralement pas besoin d'événements NOTE OFF pour être envoyés après chaque NOTE ON. Cochez la case **Envoyer les événements NOTE OFF** uniquement si votre synthétiseur ou instrument prend en charge ou nécessite ce réglage. **Bank** et **Program** sont utilisés pour changer la batterie des instruments prenant en charge plusieurs paramètres. De nombreux synthétiseurs ne comprennent pas le programme changements pour le canal de percussion. En mode motif **Automatique**, le son **Note forte** est joué comme premier temps dans chaque mesure, tandis que tout autre temps dans la même mesure est joué en utilisant le son **Note faible**. Les valeurs numériques 33 et 34 sont les sons GM2 et XG pour le clic du métronome et la cloche du métronome respectivement. ## Éditeur de motifs En utilisant cette boîte de dialogue, vous pouvez éditer, tester et sélectionner des modèles. Créer nouveaux modèles, vous enregistrez simplement la définition actuelle sous un nouveau nom. Les motifs sont représentés par un tableau. Les lignes du tableau correspondent à les sons de percussions. Vous pouvez supprimer et ajouter des lignes à partir d'une liste de sons défini par les paramètres de l'instrument dans la boîte de dialogue de configuration. Les le nombre de colonnes du tableau détermine la longueur du motif, entre 1 et 99 éléments de n'importe quelle longueur de battement. Chaque cellule du tableau accepte des valeurs comprises entre N=1 et 9, correspondant au Vélocité MIDI (N*127/9) des notes, ou 0 pour annuler le son. Valide les valeurs sont aussi f (=forte) et p (=piano) correspondant à la variable vitesses définies par les boutons rotatifs (Fort/Faible) dans la fenêtre principale. Les valeurs des cellules peuvent être sélectionnées et modifiées à l'aide du clavier ou la souris. Il n'est pas nécessaire d'arrêter la lecture avant de modifier le cellules. # Référence de commande ## La fenêtre principale ### Le menu Fichier **Fichier → Importer des modèles** : Importe les définitions de motifs dans Drumstick Metronome **Fichier → Exporter les modèles** : exporte les définitions de motifs depuis Drumstick Metronome **Fichier → Lecture/Arrêt** : Contrôle la lecture du motif **Fichier → Quitter** : Quitte Drumstick Metronome ### Le menu Édition **Modifier → Modifier les modèles** : Ouvre l'éditeur de modèle ### Le menu Paramètres **Paramètres → Afficher les boutons d'action** : affiche ou masque les boutons d'action. Il existe des éléments de menu équivalents pour chaque bouton. **Paramètres → Afficher la barre d'outils** : affiche ou masque la barre d'outils. Il existe des éléments de menu équivalents pour chaque bouton. **Paramètres → Configuration** : Configure le métronome de la baguette ### Le menu d'aide **Aide → Contenu de l'aide** : Ouvre la fenêtre d'aide **Aide → Langue** : Ouvre un sous-menu affichant les traductions disponibles **Aide → à propos** : Ouvre une boîte à propos de ce programme **Aide → à propos de Qt** : Ouvre une boîte à propos des frameworks Qt # Contrôle externe Drumstick Metronome peut être contrôlé à l'aide de son interface D-Bus, System Realtime et messages MIDI exclusifs au système. ## Interface D-Bus Drumstick Metronome fournit certaines fonctions via son interface D-Bus. Vous pouvez utiliser un programme compatible D-Bus pour contrôler le métronome de baguette comme `qdbusviewer` ou le utilitaire de ligne de commande `qdbus`. Par exemple, ces commandes peuvent être utilisées à partir d'une invite shell : $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150 $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8 ## Messages universels exclusifs au système Drumstick Metronome comprend certains messages Universal System Exclusive. Parce que l'ID de l'appareil n'est pas encore implémenté, tous les messages reconnus doivent être marqué comme diffusé (0x7F). Message en temps réel : Message de modification de la signature horaire Format : 0xF0 0x7F 0x7F 0x03 Longueur de commande Numérateur Dénominateur ... 0xF7 0x02 : Modification de la signature temporelle 0x42 : changement de signature de temps retardé Remarques : les deux commandes n'affectent que les prochains modèles programmés après réception de la commande. La longueur est d'au moins 2. Octets supplémentaires suivant Le numérateur et le dénominateur sont ignorés. Messages MMC Format : 0xF0 0x7F 0x7F 0x06 Commande 0xF7 0x01 : Arrêter 0x02 : jouer 0x03 : jeu différé ## Interface en temps réel du système MIDI Vous pouvez utiliser un appareil MIDI générant des messages MIDI System Realtime pour contrôle Drumstick Métronome. Les messages système en temps réel acceptés sont : Démarrer (0xFA), Arrêter (0xFC) et continuer (0xFB). De nombreux claviers maîtres MIDI et appareils à boutons MIDI fournissent ces trois Contrôles de transport MIDI. Vous devez connecter vos appareils MIDI externes à l'ordinateur à l'aide de câbles MIDI (ou USB) et connectez le port ALSA correspondant au port d'entrée de Drumstick Metronome. Cette connexion doit être fait à la main, ou à l'aide d'un logiciel de gestion de session comme QJackCtl. # Crédits et licence Programme Copyright © 2005-2021 Pedro Lopez-Cabanillas Documentation Copyright © 2005-2021 Pedro Lopez-Cabanillas Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou modifier sous les termes de la licence publique générale GNU telle que publiée par la Fondation du logiciel libre ; soit la version 2 de la Licence, ou (à votre choix) toute version ultérieure. Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ MARCHANDE ou ADAPTATION À UN USAGE PARTICULIER. Voir le Licence publique générale GNU pour plus de détails. Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme. Sinon, voir [https://www.gnu.org/licenses](https://www.gnu.org/licenses) #Installation ## Comment obtenir le métronome Drumstick Ici vous pouvez trouver la dernière version: [Fichiers du projet](https://sourceforge.net/projects/kmetronome/files/kmetronome/) ## Conditions Pour compiler et utiliser avec succès Drumstick Metronome, vous avez besoin de Qt 5 ou plus tard, Drumstick 2, les pilotes ALSA et la bibliothèque ALSA. Vous avez également besoin d'un synthétiseur MIDI pour produire du son. Le système de construction nécessite [CMake](https://cmake.org) 3.14 ou plus récent. La bibliothèque ALSA, les pilotes et les utilitaires peuvent être trouvés sur [Page d'accueil ALSA](https://www.alsa-project.org). Drumstick::ALSA est un wrapper C++ autour de l'interface du séquenceur ALSA utilisant Qt objets, idiomes et style. Vous pouvez le trouver au [Page d'accueil de Drumstick](https://drumstick.sourceforge.io). Voir aussi la [page d'accueil de Drumstick Metronome](https://kmetronome.sourceforge.io/kmetronome.shtml). ## Compilation et installation Pour compiler et installer Drumstick Metronome sur votre système, tapez le suivant dans le répertoire de base de la distribution Drumstick Metronome : % cmake . % Fabriquer % sudo faire l'installation Étant donné que Drumstick Metronome utilise `cmake` et `make` vous ne devriez avoir aucun problème le compiler. Si vous rencontrez des problèmes, veuillez les signaler au l'auteur ou le projet [système de suivi des bogues](https://sourceforge.net/p/kmetronome/bugs/). kmetronome-1.3.0/doc/fr/PaxHeaders.13848/index.html0000644000000000000000000000013214155347442016621 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/fr/index.html0000644000175000001440000004264714155347442017422 0ustar00pedrousers00000000000000 Index de l'aide

Introduction

Drumstick Metronome est un métronome basé sur MIDI utilisant le séquenceur ALSA.

Le public visé sont les musiciens et les étudiants en musique. Comme tout physique métronome c'est un outil pour garder le rythme tout en jouant de la musique instruments.

Il utilise le MIDI au lieu de l'audio numérique, permettant une faible utilisation du processeur et très précis timing grâce au séquenceur ALSA. Cela signifie que vous avez également besoin d'un MIDI synthétiseur pour la génération sonore, car le programme ne produit aucun son par lui-même. Les meilleurs résultats proviennent de l'utilisation d'un synthétiseur matériel, mais vous pouvez utilisez également des synthétiseurs logiciels à la place.

Demandez de l'aide, signalez les problèmes, les bogues et les demandes de fonctionnalités au système de suivi à l'adresse Site du projet SourceForge

Utilisation du métronome Drumstick

Caractéristiques

Vous n'avez qu'à ajuster certaines commandes, comme le curseur de tempo, le la boîte de sélection des battements/mesure et le sélecteur de longueur de battement. Appuyez sur le bouton de lecture commencer. Utilisez le bouton d'arrêt à votre convenance.

Le tempo peut être réglé de 25 à 250 QPM à l'aide du curseur. Les unités sont quarts par minute (unités de métronome Mälzel). Vous pouvez également double-cliquer sur la fenêtre principale pour ouvrir une boîte de dialogue où vous pouvez entrer un nouveau tempo directement avec le clavier. Il y a aussi une zone de liste déroulante à choisir et afficher le tempo en utilisant des noms musicaux italiens.

Beats/Bar peut être réglé de 1 à 32 temps. Ce sont le nombre de battements sur chaque mesure ou mesure, et c'est le numérateur sur la signature de temps comme ce serait noté.

La longueur du battement est le dénominateur sur la spécification de la signature rythmique, et représente la durée de chaque battement. La modification de cette valeur ne changer la signification des unités de tempo.

Motif est une liste déroulante permettant de choisir une définition de motif. Le défaut La valeur « automatique » signifie que le programme génère des modèles en utilisant le notes définies dans la boîte de dialogue de configuration (Fort/Faible) et le rythme définition fournie par "Beats/Bar" et "Beat length". Il contient également les noms des modèles définis par l'utilisateur.

Commencer

Ce programme utilise le protocole MIDI, c'est donc une bonne idée d'avoir quelques notions de base sur le MIDI afin de bien comprendre les concepts derrière. Vous pouvez trouver ici une bonne introduction: Qu'est-ce que le MIDI.

Drumstick Metronome produit des événements MIDI. Si vous voulez entendre les événements traduit en sons dont vous avez besoin pour connecter le port MIDI OUT de ce programme au port MIDI IN d'un synthétiseur MIDI. Il peut s'agir soit d'un synthétiseur MIDI matériel ou logiciel. S'il s'agit d'un externe synthétiseur matériel, vous avez également besoin d'une interface MIDI prise en charge par ALSA installé sur votre ordinateur et un câble MIDI connecté à la fois au l'interface MIDI de l'ordinateur et la prise MIDI IN du synthétiseur.

Si vous n'avez pas de synthétiseur MIDI externe, vous pouvez toujours utiliser le programme avec un synthétiseur logiciel MIDI prenant en charge le séquenceur ALSA connexions, comme QSynth. Commencez votre synthétiseur logiciel avant Drumstick Metronome, puis effectuez la connexion entre les deux programmes, soit dans la boîte de dialogue de configuration de Drumstick Metronome ou en utilisant un gestionnaire de connexion externe comme QJackCtl.

N'oubliez pas d'installer une bonne Sound Font dans la boîte de dialogue "Configuration..." de QSynth.

Configuration

Drumstick Metronome a des capacités de gestion de session limitées. il peut se souvenir une connexion pour le port de sortie ALSA, et une connexion pour son port d'entrée. Les connexions sont stockées à la sortie du programme et mémorisées au démarrage. Vous n'avez pas besoin de cette fonctionnalité si vous préférez faire de tels les connexions à la main, en utilisant aconnect ou tout autre utilitaire équivalent, ou si vous utilisez un gestionnaire de session externe comme le patchbay inclus dans le programme QJackCtl.

Drumstick Metronome utilise un fichier de définition d'instrument au format .INS, le même format comme Qtractor, TSE3, Cakewalk et Sonar. L'instrument de sortie la liste déroulante permet d'en choisir un parmi les standards General MIDI, Cartes de batterie Roland GS et Yamaha XG. Vous pouvez ajouter plus de définitions en créant un fichier nommé drums.ins dans $HOME/.local/share/kmetronome.sourceforge.net. Les contenu des listes déroulantes Banque, Programme, Faible et Note forte dépendent aussi de cette définition.

Canal est généralement 10, ce qui signifie le canal de percussion d'un General MIDI synthétiseur. Il doit s'agir d'un nombre entre 1 et 16.

Résolution est le nombre de ticks (unités de temps) pour chaque noire. Plage de valeurs de 48 à 960. La valeur par défaut est 120.

La durée de la note est la longueur (en nombre de ticks) de la période entre une NOTE ON et son événement NOTE OFF correspondant. Ce contrôle est activé uniquement lorsque Envoyer les événements NOTE OFF est également activé. Valeurs très faibles peut provoquer des clics assourdis sur certains synthétiseurs.

Les sons de percussion n'ont généralement pas besoin d'événements NOTE OFF pour être envoyés après chaque NOTE ON. Cochez la case Envoyer les événements NOTE OFF uniquement si votre synthétiseur ou instrument prend en charge ou nécessite ce réglage.

Bank et Program sont utilisés pour changer la batterie des instruments prenant en charge plusieurs paramètres. De nombreux synthétiseurs ne comprennent pas le programme changements pour le canal de percussion.

En mode motif Automatique, le son Note forte est joué comme premier temps dans chaque mesure, tandis que tout autre temps dans la même mesure est joué en utilisant le son Note faible. Les valeurs numériques 33 et 34 sont les sons GM2 et XG pour le clic du métronome et la cloche du métronome respectivement.

Éditeur de motifs

En utilisant cette boîte de dialogue, vous pouvez éditer, tester et sélectionner des modèles. Créer nouveaux modèles, vous enregistrez simplement la définition actuelle sous un nouveau nom. Les motifs sont représentés par un tableau. Les lignes du tableau correspondent à les sons de percussions. Vous pouvez supprimer et ajouter des lignes à partir d'une liste de sons défini par les paramètres de l'instrument dans la boîte de dialogue de configuration. Les le nombre de colonnes du tableau détermine la longueur du motif, entre 1 et 99 éléments de n'importe quelle longueur de battement.

Chaque cellule du tableau accepte des valeurs comprises entre N=1 et 9, correspondant au Vélocité MIDI (N*127/9) des notes, ou 0 pour annuler le son. Valide les valeurs sont aussi f (=forte) et p (=piano) correspondant à la variable vitesses définies par les boutons rotatifs (Fort/Faible) dans la fenêtre principale. Les valeurs des cellules peuvent être sélectionnées et modifiées à l'aide du clavier ou la souris. Il n'est pas nécessaire d'arrêter la lecture avant de modifier le cellules.

Référence de commande

La fenêtre principale

Le menu Fichier

Fichier → Importer des modèles

Importe les définitions de motifs dans Drumstick Metronome

Fichier → Exporter les modèles

exporte les définitions de motifs depuis Drumstick Metronome

Fichier → Lecture/Arrêt

Contrôle la lecture du motif

Fichier → Quitter

Quitte Drumstick Metronome

Le menu Édition

Modifier → Modifier les modèles

Ouvre l'éditeur de modèle

Le menu Paramètres

Paramètres → Afficher les boutons d'action

affiche ou masque les boutons d'action. Il existe des éléments de menu équivalents pour chaque bouton.

Paramètres → Afficher la barre d'outils

affiche ou masque la barre d'outils. Il existe des éléments de menu équivalents pour chaque bouton.

Paramètres → Configuration

Configure le métronome de la baguette

Le menu d'aide

Aide → Contenu de l'aide

Ouvre la fenêtre d'aide

Aide → Langue

Ouvre un sous-menu affichant les traductions disponibles

Aide → à propos

Ouvre une boîte à propos de ce programme

Aide → à propos de Qt

Ouvre une boîte à propos des frameworks Qt

Contrôle externe

Drumstick Metronome peut être contrôlé à l'aide de son interface D-Bus, System Realtime et messages MIDI exclusifs au système.

Interface D-Bus

Drumstick Metronome fournit certaines fonctions via son interface D-Bus. Vous pouvez utiliser un programme compatible D-Bus pour contrôler le métronome de baguette comme qdbusviewer ou le utilitaire de ligne de commande qdbus.

Par exemple, ces commandes peuvent être utilisées à partir d'une invite shell :

$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8

Messages universels exclusifs au système

Drumstick Metronome comprend certains messages Universal System Exclusive. Parce que l'ID de l'appareil n'est pas encore implémenté, tous les messages reconnus doivent être marqué comme diffusé (0x7F).

Message en temps réel : Message de modification de la signature horaire

Format : 0xF0 0x7F 0x7F 0x03 Longueur de commande Numérateur Dénominateur ... 0xF7
                            0x02 : Modification de la signature temporelle 
                            0x42 : changement de signature de temps retardé

Remarques : les deux commandes n'affectent que les prochains modèles programmés après réception de la commande. La longueur est d'au moins 2. Octets supplémentaires suivant Le numérateur et le dénominateur sont ignorés.

Messages MMC

Format : 0xF0 0x7F 0x7F 0x06 Commande 0xF7
                            0x01 : Arrêter
                            0x02 : jouer
                            0x03 : jeu différé

Interface en temps réel du système MIDI

Vous pouvez utiliser un appareil MIDI générant des messages MIDI System Realtime pour contrôle Drumstick Métronome. Les messages système en temps réel acceptés sont : Démarrer (0xFA), Arrêter (0xFC) et continuer (0xFB).

De nombreux claviers maîtres MIDI et appareils à boutons MIDI fournissent ces trois Contrôles de transport MIDI. Vous devez connecter vos appareils MIDI externes à l'ordinateur à l'aide de câbles MIDI (ou USB) et connectez le port ALSA correspondant au port d'entrée de Drumstick Metronome. Cette connexion doit être fait à la main, ou à l'aide d'un logiciel de gestion de session comme QJackCtl.

Crédits et licence

Programme Copyright © 2005-2021 Pedro Lopez-Cabanillas

Documentation Copyright © 2005-2021 Pedro Lopez-Cabanillas

Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou modifier sous les termes de la licence publique générale GNU telle que publiée par la Fondation du logiciel libre ; soit la version 2 de la Licence, ou (à votre choix) toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ MARCHANDE ou ADAPTATION À UN USAGE PARTICULIER. Voir le Licence publique générale GNU pour plus de détails.

Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme. Sinon, voir https://www.gnu.org/licenses

Installation

Comment obtenir le métronome Drumstick

Ici vous pouvez trouver la dernière version: Fichiers du projet

Conditions

Pour compiler et utiliser avec succès Drumstick Metronome, vous avez besoin de Qt 5 ou plus tard, Drumstick 2, les pilotes ALSA et la bibliothèque ALSA.

Vous avez également besoin d'un synthétiseur MIDI pour produire du son.

Le système de construction nécessite CMake 3.14 ou plus récent.

La bibliothèque ALSA, les pilotes et les utilitaires peuvent être trouvés sur Page d'accueil ALSA.

Drumstick::ALSA est un wrapper C++ autour de l'interface du séquenceur ALSA utilisant Qt objets, idiomes et style. Vous pouvez le trouver au Page d'accueil de Drumstick.

Voir aussi la page d'accueil de Drumstick Metronome.

Compilation et installation

Pour compiler et installer Drumstick Metronome sur votre système, tapez le suivant dans le répertoire de base de la distribution Drumstick Metronome :

% cmake .
% Fabriquer
% sudo faire l'installation

Étant donné que Drumstick Metronome utilise cmake et make vous ne devriez avoir aucun problème le compiler. Si vous rencontrez des problèmes, veuillez les signaler au l'auteur ou le projet système de suivi des bogues.

kmetronome-1.3.0/doc/PaxHeaders.13848/kmetronome.1.md0000644000000000000000000000013214155347442017056 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/kmetronome.1.md0000644000175000001440000000603614155347442017647 0ustar00pedrousers00000000000000% KMETRONOME(1) kmetronome 0.0.0 | Drumstick MIDI Metronome % Pedro López-Cabanillas # NAME **kmetronome** - Drumstick MIDI metronome using ALSA sequencer and QT user interface # SYNOPSIS | **kmetronome** \[options] # DESCRIPTION Drumstick Metronome is a MIDI metronome with QT interface based on the ALSA sequencer. It is a tool for musicians and music students to keep the rhythm while playing musical instruments. It uses MIDI for sound generation instead of digital audio, allowing low CPU usage, and very accurate timing thanks to the ALSA sequencer. ## Options `--help` : Show help about options `--help-all` : Show all options `-v`,`--version` : Show version information ## Standard Options The following options apply to all Qt5 applications. `-style=` style / `-style` style : Set the application GUI style. Possible values depend on the system configuration. If Qt is compiled with additional styles or has additional styles as plugins these will be available to the `-style` command line option. `-stylesheet=` stylesheet / `-stylesheet` stylesheet : Set the application styleSheet. The value must be a path to a file that contains the Style Sheet. `-widgetcount` : Print debug message at the end about number of widgets left undestroyed and maximum number of widgets existed at the same time. `-reverse` : Set the application's layout direction to Qt::RightToLeft. This option is intended to aid debugging and should not be used in production. The default value is automatically detected from the user's locale (see also QLocale::textDirection()). `-platform` platformName\[:options\] : Specify the Qt Platform Abstraction (QPA) plugin. `-platformpluginpath` path : Specify the path to platform plugins. `-platformtheme` platformTheme : Specify the platform theme. `-plugin` plugin : Specify additional plugins to load. The argument may appear multiple times. `-qwindowgeometry` geometry : Specify the window geometry for the main window using the X11-syntax. For example: -qwindowgeometry 100x100+50+50 `-qwindowicon` icon : Set the default window icon. `-qwindowtitle` title : Set the title of the first window. `-session` session : Restore the application from an earlier session. `-display` hostname:screen\_number : Switch displays on X11. Overrides the DISPLAY environment variable. `-geometry` geometry : Specify the window geometry for the main window on X11. For example: -geometry 100x100+50+50 `-fontengine=` freetype : Use the FreeType font engine. # BUGS See Tickets at Sourceforge # SEE ALSO **qt5options (7)** # LICENSE This manual page was written by Pedro Lopez-Cabanillas Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation; considering as source code all the file that enable the production of this manpage. kmetronome-1.3.0/doc/PaxHeaders.13848/en0000644000000000000000000000013214155347442014542 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/en/0000755000175000001440000000000014155347442015403 5ustar00pedrousers00000000000000kmetronome-1.3.0/doc/en/PaxHeaders.13848/index.md0000644000000000000000000000013214155347442016250 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/en/index.md0000644000175000001440000002723314155347442017043 0ustar00pedrousers00000000000000% Help Index # Introduction Drumstick Metronome is a MIDI based metronome using the ALSA sequencer. The intended audience are musicians and music students. Like any physical metronome it is a tool to keep the rhythm while playing musical instruments. It uses MIDI instead of digital audio, allowing low CPU usage and very accurate timing thanks to the ALSA sequencer. This means that you also need a MIDI synthesizer for sound generation, because the program does not produce any sound by itself. The best results come from using a hardware synthesizer, but you may also use software synthesizers instead. Ask for support, report problems, bugs and feature requests to the tracking system at [SourceForge project site](https://sourceforge.net/p/kmetronome/support-requests/) # Using Drumstick Metronome ## Features You only need to adjust some controls, like the tempo slider, the beats/bar spin box and the beat length selector. Press the play button to start. Use the stop button at your convenience. Tempo can be set from 25 to 250 QPM using the slider. The units are quarters per minute (Mälzel Metronome units). You can also double click over the main window to open a dialog box where you can enter a new tempo directly with the keyboard. There is also a combo box to choose and display the tempo using Italian musical names. Beats/Bar can be set from 1 to 32 beats. These are the number of beats on each measure or bar, and it is the numerator on the time signature as it would be notated. The beat length is the denominator on the time signature specification, and represents the duration of each beat. Changing this value doesn't change the meaning of the tempo units. Pattern is a drop-down list to choose a pattern definition. The default "Automatic" value means that the program generates patterns using the notes set in the configuration dialog (Strong/Weak) and the rhythm definition provided by "Beats/Bar" and "Beat length". It also contains the names of user-defined patterns. ## Getting Started This program uses the MIDI protocol, so it is a good idea to to have some basic notions about MIDI in order to fully understand the concepts behind it. You can find here a good introduction: [What is MIDI](https://www.midi.org/midi-articles/categories/MIDI%201.0). Drumstick Metronome produces MIDI events. If you want to hear the events translated into sounds you need to connect the MIDI OUT port from this program to the MIDI IN port of a MIDI synthesizer. It can be either a hardware MIDI synthesizer or a software one. If it is an external hardware synthesizer, you also need an ALSA supported MIDI interface installed in your computer, and a MIDI cable attached to both the computer's MIDI interface, and the synthesizer MIDI IN socket. If you don't have an external MIDI synthesizer, you can still use the program with a MIDI software synthesizer supporting ALSA sequencer connections, like [QSynth](https://qsynth.sourceforge.io). Start your software synthesizer before Drumstick Metronome, and then make the connection between the two programs, either on Drumstick Metronome's configuration dialog or using an external connection manager like [QJackCtl](https://qjackctl.sourceforge.io). Don't forget to install a good [Sound Font](https://en.wikipedia.org/wiki/SoundFont) into QSynth's "Setup..." dialog. ## Configuration Drumstick Metronome has limited session management capabilities. It can remember one connection for the ALSA output port, and one connection for its input port. Connections are stored when the program exits and remembered at startup. You don't need this feature if you prefer to make such connections by hand, using aconnect or any other equivalent utility, or if you use an external session manager like the patchbay included in the program [QJackCtl](https://qjackctl.sourceforge.io). Drumstick Metronome uses an instrument definition file in .INS format, the same format as Qtractor, TSE3, Cakewalk and Sonar. The **Output instrument** drop-down list allows to choose one among the standard General MIDI, Roland GS and Yamaha XG drum maps. You can add more definitions creating a file named `drums.ins` at `$HOME/.local/share/kmetronome.sourceforge.net`. The contents of **Bank**, **Program**, **Weak** and **Strong note** drop-down lists also depend on this definition. **Channel** is usually 10, meaning the percussion channel of a General MIDI synthesizer. It must be a number beween 1 and 16. **Resolution** is the number of ticks (time units) for each quarter note. Value range from 48 to 960. Defaults to 120. **Note duration** is the length (in number of ticks) of the time span between a NOTE ON and its corresponding NOTE OFF event. This control is enabled only when **Send NOTE OFF events** is also enabled. Very low values can cause muted clicks on some synthesizers. Percussion sounds usually don't need NOTE OFF events to be sent after every NOTE ON. Select the **Send NOTE OFF events** checkbox only if your synthesizer or instrument supports or requires this setting. **Bank** and **Program** is used to change the drum set for instruments supporting several settings. Many synthesizers don't understand program changes for the percussion channel. In **Automatic** pattern mode, **Strong note** sound is played as the first beat in every measure, while any other beat in the same measure is played using the **Weak note** sound. The numeric values 33 and 34 are the GM2 and XG sounds for metronome click and metronome bell respectively. ## Pattern Editor Using this dialog box you may edit, test and select patterns. To create new patterns, you simply save the current definition under a new name. Patterns are represented by a table. The rows in the table correspond to the percussion sounds. You can remove and add rows from a list of sounds defined by the instrument settings in the configuration dialog. The number of columns in the table determine the length of the pattern, between 1 and 99 elements of any beat length. Each table cell accepts values between N=1 and 9, corresponding to the MIDI velocity (N*127/9) of the notes, or 0 to cancel the sound. Valid values are also f (=forte) and p (=piano) corresponding to variable velocities defined by the rotary knobs (Strong/Weak) in the main window. The cell values can be selected and modified using either the keyboard or the mouse. There is no need to stop the playback before modifying the cells. # Command Reference ## The main window ### The File Menu **File → Import Patterns** : Imports pattern definitions into Drumstick Metronome **File → Export Patterns** : Exports pattern definitions from Drumstick Metronome **File → Play/Stop** : Controls pattern playback **File → Quit** : Quits Drumstick Metronome ### The Edit Menu **Edit → Edit Patterns** : Opens the pattern editor ### The Settings Menu **Settings → Show Action Buttons** : Shows or hides the action buttons. There are equivalent menu items for every button. **Settings → Show Toolbar** : Shows or hides the toolbar. There are equivalent menu items for every button. **Settings → Configuration** : Configures Drumstick Metronome ### The Help Menu **Help → Help Contents** : Opens the help window **Help → Language** : Opens a sub-menu showing the available translations **Help → about** : Opens an about box of this program **Help → about Qt** : Opens an about box of the Qt frameworks # External Control Drumstick Metronome can be controlled using its D-Bus interface, System Realtime and System Exclusive MIDI messages. ## D-Bus Interface Drumstick Metronome provides some functions through its D-Bus interface. You can use a D-Bus enabled program to control Drumstick Metronome like `qdbusviewer` or the commandline utility `qdbus`. For instance, these commands can be used from a shell prompt: $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150 $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8 ## Universal System Exclusive messages Drumstick Metronome understands some Universal System Exclusive messages. Because the device ID is not yet implemented, all the recogniced messages must be marked as broadcast (0x7F). Realtime Message: Time Signature Change Message Format: 0xF0 0x7F 0x7F 0x03 Command Length Numerator Denominator ... 0xF7 0x02: Time Signature Change 0x42: Time Signature Change Delayed Notes: both commands affect only the next scheduled patterns after receiving the command. Length is at least 2. Extra bytes following Numerator and Denominator are ignored. MMC Messages Format: 0xF0 0x7F 0x7F 0x06 Command 0xF7 0x01: Stop 0x02: Play 0x03: Deferred Play ## MIDI System Realtime Interface You can use a MIDI device generating MIDI System Realtime messages to control Drumstick Metronome. System Realtime messages accepted are: Start (0xFA), Stop (0xFC) and Continue (0xFB). Many master MIDI keyboards and MIDI buttons devices provide those three MIDI transport controls. You need to connect your external MIDI devices to the computer using MIDI (or USB) cables, and connect the corresponding ALSA port to the input port of Drumstick Metronome. This connection must be done by hand, or using a session management software like QJackCtl. # Credits and License Program Copyright © 2005-2021 Pedro Lopez-Cabanillas Documentation Copyright © 2005-2021 Pedro Lopez-Cabanillas 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, see [https://www.gnu.org/licenses](https://www.gnu.org/licenses) # Installation ## How to obtain Drumstick Metronome Here you can find the latest version: [Project's files](https://sourceforge.net/projects/kmetronome/files/kmetronome/) ## Requirements In order to successfully compile and use Drumstick Metronome, you need Qt 5 or later, Drumstick 2, ALSA drivers and ALSA library. You also need a MIDI synthesizer to produce sound. The build system requires [CMake](https://cmake.org) 3.14 or newer. ALSA library, drivers and utilities can be found at [ALSA home page](https://www.alsa-project.org). Drumstick::ALSA is a C++ wrapper around the ALSA sequencer interface using Qt objects, idioms and style. You can find it at the [Drumstick home page](https://drumstick.sourceforge.io). See also the [Drumstick Metronome home page](https://kmetronome.sourceforge.io/kmetronome.shtml). ## Compilation and Installation In order to compile and install Drumstick Metronome on your system, type the following in the base directory of the Drumstick Metronome distribution: % cmake . % make % sudo make install Since Drumstick Metronome uses `cmake` and `make` you should have no trouble compiling it. Should you run into problems please report them to the author or the project's [bug tracking system](https://sourceforge.net/p/kmetronome/bugs/). kmetronome-1.3.0/doc/en/PaxHeaders.13848/index.html0000644000000000000000000000013214155347442016614 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/en/index.html0000644000175000001440000003627114155347442017411 0ustar00pedrousers00000000000000 Help Index

Introduction

Drumstick Metronome is a MIDI based metronome using the ALSA sequencer.

The intended audience are musicians and music students. Like any physical metronome it is a tool to keep the rhythm while playing musical instruments.

It uses MIDI instead of digital audio, allowing low CPU usage and very accurate timing thanks to the ALSA sequencer. This means that you also need a MIDI synthesizer for sound generation, because the program does not produce any sound by itself. The best results come from using a hardware synthesizer, but you may also use software synthesizers instead.

Ask for support, report problems, bugs and feature requests to the tracking system at SourceForge project site

Using Drumstick Metronome

Features

You only need to adjust some controls, like the tempo slider, the beats/bar spin box and the beat length selector. Press the play button to start. Use the stop button at your convenience.

Tempo can be set from 25 to 250 QPM using the slider. The units are quarters per minute (Mälzel Metronome units). You can also double click over the main window to open a dialog box where you can enter a new tempo directly with the keyboard. There is also a combo box to choose and display the tempo using Italian musical names.

Beats/Bar can be set from 1 to 32 beats. These are the number of beats on each measure or bar, and it is the numerator on the time signature as it would be notated.

The beat length is the denominator on the time signature specification, and represents the duration of each beat. Changing this value doesn't change the meaning of the tempo units.

Pattern is a drop-down list to choose a pattern definition. The default "Automatic" value means that the program generates patterns using the notes set in the configuration dialog (Strong/Weak) and the rhythm definition provided by "Beats/Bar" and "Beat length". It also contains the names of user-defined patterns.

Getting Started

This program uses the MIDI protocol, so it is a good idea to to have some basic notions about MIDI in order to fully understand the concepts behind it. You can find here a good introduction: What is MIDI.

Drumstick Metronome produces MIDI events. If you want to hear the events translated into sounds you need to connect the MIDI OUT port from this program to the MIDI IN port of a MIDI synthesizer. It can be either a hardware MIDI synthesizer or a software one. If it is an external hardware synthesizer, you also need an ALSA supported MIDI interface installed in your computer, and a MIDI cable attached to both the computer's MIDI interface, and the synthesizer MIDI IN socket.

If you don't have an external MIDI synthesizer, you can still use the program with a MIDI software synthesizer supporting ALSA sequencer connections, like QSynth. Start your software synthesizer before Drumstick Metronome, and then make the connection between the two programs, either on Drumstick Metronome's configuration dialog or using an external connection manager like QJackCtl.

Don't forget to install a good Sound Font into QSynth's "Setup..." dialog.

Configuration

Drumstick Metronome has limited session management capabilities. It can remember one connection for the ALSA output port, and one connection for its input port. Connections are stored when the program exits and remembered at startup. You don't need this feature if you prefer to make such connections by hand, using aconnect or any other equivalent utility, or if you use an external session manager like the patchbay included in the program QJackCtl.

Drumstick Metronome uses an instrument definition file in .INS format, the same format as Qtractor, TSE3, Cakewalk and Sonar. The Output instrument drop-down list allows to choose one among the standard General MIDI, Roland GS and Yamaha XG drum maps. You can add more definitions creating a file named drums.ins at $HOME/.local/share/kmetronome.sourceforge.net. The contents of Bank, Program, Weak and Strong note drop-down lists also depend on this definition.

Channel is usually 10, meaning the percussion channel of a General MIDI synthesizer. It must be a number beween 1 and 16.

Resolution is the number of ticks (time units) for each quarter note. Value range from 48 to 960. Defaults to 120.

Note duration is the length (in number of ticks) of the time span between a NOTE ON and its corresponding NOTE OFF event. This control is enabled only when Send NOTE OFF events is also enabled. Very low values can cause muted clicks on some synthesizers.

Percussion sounds usually don't need NOTE OFF events to be sent after every NOTE ON. Select the Send NOTE OFF events checkbox only if your synthesizer or instrument supports or requires this setting.

Bank and Program is used to change the drum set for instruments supporting several settings. Many synthesizers don't understand program changes for the percussion channel.

In Automatic pattern mode, Strong note sound is played as the first beat in every measure, while any other beat in the same measure is played using the Weak note sound. The numeric values 33 and 34 are the GM2 and XG sounds for metronome click and metronome bell respectively.

Pattern Editor

Using this dialog box you may edit, test and select patterns. To create new patterns, you simply save the current definition under a new name. Patterns are represented by a table. The rows in the table correspond to the percussion sounds. You can remove and add rows from a list of sounds defined by the instrument settings in the configuration dialog. The number of columns in the table determine the length of the pattern, between 1 and 99 elements of any beat length.

Each table cell accepts values between N=1 and 9, corresponding to the MIDI velocity (N*127/9) of the notes, or 0 to cancel the sound. Valid values are also f (=forte) and p (=piano) corresponding to variable velocities defined by the rotary knobs (Strong/Weak) in the main window. The cell values can be selected and modified using either the keyboard or the mouse. There is no need to stop the playback before modifying the cells.

Command Reference

The main window

The File Menu

File → Import Patterns

Imports pattern definitions into Drumstick Metronome

File → Export Patterns

Exports pattern definitions from Drumstick Metronome

File → Play/Stop

Controls pattern playback

File → Quit

Quits Drumstick Metronome

The Edit Menu

Edit → Edit Patterns

Opens the pattern editor

The Settings Menu

Settings → Show Action Buttons

Shows or hides the action buttons. There are equivalent menu items for every button.

Settings → Show Toolbar

Shows or hides the toolbar. There are equivalent menu items for every button.

Settings → Configuration

Configures Drumstick Metronome

The Help Menu

Help → Help Contents

Opens the help window

Help → Language

Opens a sub-menu showing the available translations

Help → about

Opens an about box of this program

Help → about Qt

Opens an about box of the Qt frameworks

External Control

Drumstick Metronome can be controlled using its D-Bus interface, System Realtime and System Exclusive MIDI messages.

D-Bus Interface

Drumstick Metronome provides some functions through its D-Bus interface. You can use a D-Bus enabled program to control Drumstick Metronome like qdbusviewer or the commandline utility qdbus.

For instance, these commands can be used from a shell prompt:

$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8

Universal System Exclusive messages

Drumstick Metronome understands some Universal System Exclusive messages. Because the device ID is not yet implemented, all the recogniced messages must be marked as broadcast (0x7F).

Realtime Message: Time Signature Change Message

Format: 0xF0 0x7F 0x7F 0x03 Command Length Numerator Denominator ... 0xF7
                            0x02: Time Signature Change 
                            0x42: Time Signature Change Delayed

Notes: both commands affect only the next scheduled patterns after receiving the command. Length is at least 2. Extra bytes following Numerator and Denominator are ignored.

MMC Messages

Format: 0xF0 0x7F 0x7F 0x06 Command 0xF7
                            0x01: Stop
                            0x02: Play
                            0x03: Deferred Play

MIDI System Realtime Interface

You can use a MIDI device generating MIDI System Realtime messages to control Drumstick Metronome. System Realtime messages accepted are: Start (0xFA), Stop (0xFC) and Continue (0xFB).

Many master MIDI keyboards and MIDI buttons devices provide those three MIDI transport controls. You need to connect your external MIDI devices to the computer using MIDI (or USB) cables, and connect the corresponding ALSA port to the input port of Drumstick Metronome. This connection must be done by hand, or using a session management software like QJackCtl.

Credits and License

Program Copyright © 2005-2021 Pedro Lopez-Cabanillas

Documentation Copyright © 2005-2021 Pedro Lopez-Cabanillas

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, see https://www.gnu.org/licenses

Installation

How to obtain Drumstick Metronome

Here you can find the latest version: Project's files

Requirements

In order to successfully compile and use Drumstick Metronome, you need Qt 5 or later, Drumstick 2, ALSA drivers and ALSA library.

You also need a MIDI synthesizer to produce sound.

The build system requires CMake 3.14 or newer.

ALSA library, drivers and utilities can be found at ALSA home page.

Drumstick::ALSA is a C++ wrapper around the ALSA sequencer interface using Qt objects, idioms and style. You can find it at the Drumstick home page.

See also the Drumstick Metronome home page.

Compilation and Installation

In order to compile and install Drumstick Metronome on your system, type the following in the base directory of the Drumstick Metronome distribution:

% cmake .
% make
% sudo make install

Since Drumstick Metronome uses cmake and make you should have no trouble compiling it. Should you run into problems please report them to the author or the project's bug tracking system.

kmetronome-1.3.0/doc/PaxHeaders.13848/de0000644000000000000000000000013214155347442014530 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/de/0000755000175000001440000000000014155347442015371 5ustar00pedrousers00000000000000kmetronome-1.3.0/doc/de/PaxHeaders.13848/index.md0000644000000000000000000000013214155347442016236 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/de/index.md0000644000175000001440000003151514155347442017027 0ustar00pedrousers00000000000000% Hilfeindex # Einführung Drumstick Metronome ist ein MIDI-basiertes Metronom, das den ALSA-Sequenzer verwendet. Zielgruppe sind Musiker und Musikstudenten. Wie jedes körperliche Metronom ist ein Werkzeug, um den Rhythmus beim Musizieren zu halten Instrumente. Es verwendet MIDI anstelle von digitalem Audio, was eine geringe CPU-Auslastung ermöglicht und sehr genau ist Timing dank ALSA-Sequenzer. Das bedeutet, dass Sie auch einen MIDI . benötigen Synthesizer zur Tonerzeugung, da das Programm keinen Ton erzeugt von selbst. Die besten Ergebnisse erzielen Sie mit einem Hardware-Synthesizer, aber Sie können Verwenden Sie stattdessen auch Software-Synthesizer. Fragen Sie nach Support, melden Sie Probleme, Fehler und Funktionsanfragen an das Tracking-System unter [SourceForge-Projektseite](https://sourceforge.net/p/kmetronome/support-requests/) # Verwenden des Drumstick-Metronoms ## Merkmale Sie müssen nur einige Steuerelemente anpassen, wie den Tempo-Schieberegler, die Beats/Bar-Spin-Box und den Beat-Längen-Selektor. Drücken Sie die Play-Taste anfangen. Verwenden Sie nach Belieben die Stopptaste. Das Tempo kann mit dem Schieberegler von 25 bis 250 QPM eingestellt werden. Die Einheiten sind Viertel pro Minute (Mälzel Metronom-Einheiten). Sie können auch doppelklicken über dem Hauptfenster, um ein Dialogfeld zu öffnen, in dem Sie ein neues eingeben können Tempo direkt mit der Tastatur. Es gibt auch eine Combobox zur Auswahl und zeigen Sie das Tempo mit italienischen Musiknamen an. Beats/Bar kann von 1 bis 32 Beats eingestellt werden. Das sind die Beats auf jedem Takt oder Takt, und es ist der Zähler auf der Taktart als es würde notiert werden. Die Beatlänge ist der Nenner der Taktartangabe, und repräsentiert die Dauer jedes Schlags. Ändern dieses Wertes nicht ändern Sie die Bedeutung der Tempoeinheiten. Muster ist eine Dropdown-Liste zur Auswahl einer Musterdefinition. Der Standard Der Wert "Automatisch" bedeutet, dass das Programm Muster unter Verwendung der im Konfigurationsdialog eingestellte Noten (stark/schwach) und den Rhythmus Definition durch "Beats/Bar" und "Beat-Länge". Es enthält auch die Namen von benutzerdefinierten Mustern. ## Einstieg Dieses Programm verwendet das MIDI-Protokoll, daher ist es eine gute Idee, einige grundlegende Begriffe zu MIDI, um die Konzepte vollständig zu verstehen dahinter. Eine gute Einführung findest du hier: [Was ist MIDI](https://www.midi.org/midi-articles/categories/MIDI%201.0). Drumstick Metronome erzeugt MIDI-Events. Wenn Sie die Ereignisse hören möchten in Klänge übersetzt, die Sie benötigen, um den MIDI OUT-Port davon zu verbinden Programm an den MIDI IN-Port eines MIDI-Synthesizers. Es kann entweder ein Hardware-MIDI-Synthesizer oder ein Software-Synthesizer. Wenn es ein externes ist Hardware-Synthesizer benötigen Sie außerdem ein von ALSA unterstütztes MIDI-Interface in Ihrem Computer installiert ist, und ein MIDI-Kabel, das an beide MIDI-Schnittstelle des Computers und die MIDI IN-Buchse des Synthesizers. Wenn Sie keinen externen MIDI-Synthesizer haben, können Sie trotzdem den Programm mit einem MIDI-Software-Synthesizer, der den ALSA-Sequenzer unterstützt Verbindungen, wie [QSynth](https://qsynth.sourceforge.io). Starte dein Software-Synthesizer vor Drumstick Metronome, und stellen Sie dann die Verbindung her zwischen den beiden Programmen, entweder im Konfigurationsdialog von Drumstick Metronome oder mit einem externen Verbindungsmanager wie [QJackCtl](https://qjackctl.sourceforge.io). Vergessen Sie nicht, eine gute [Soundfont] zu installieren (https://en.wikipedia.org/wiki/SoundFont) in das Dialogfeld "Setup..." von QSynth. ## Aufbau Drumstick Metronome verfügt über eingeschränkte Session-Management-Funktionen. Es kann sich erinnern ein Anschluss für den ALSA-Ausgangsport und ein Anschluss für seinen Eingangsport. Verbindungen werden beim Beenden des Programms gespeichert und gespeichert am Anfang. Sie brauchen diese Funktion nicht, wenn Sie dies vorziehen Verbindungen von Hand, mit aconnect oder einem anderen gleichwertigen Dienstprogramm, oder wenn Sie einen externen Session-Manager wie die im Lieferumfang enthaltene Patchbay verwenden Programm [QJackCtl](https://qjackctl.sourceforge.io). Drumstick Metronome verwendet eine Instrumentendefinitionsdatei im .INS-Format Format als Qtractor, TSE3, Cakewalk und Sonar. Das **Ausgabeinstrument** Dropdown-Liste ermöglicht die Auswahl eines der Standard General MIDI, Roland GS und Yamaha XG Drummaps. Sie können weitere Definitionen hinzufügen, indem Sie eine Datei namens `drums.ins` unter `$HOME/.local/share/kmetronome.sourceforge.net`. Die Inhalt der Dropdown-Listen **Bank**, **Programm**, **Schwach** und **Starke Note** hängen auch von dieser Definition ab. **Kanal** ist normalerweise 10, d. h. der Percussion-Kanal eines General MIDI Synthesizer. Es muss eine Zahl zwischen 1 und 16 sein. **Auflösung** ist die Anzahl der Ticks (Zeiteinheiten) für jede Viertelnote. Wertebereich von 48 bis 960. Standardeinstellung bis 120. **Notendauer** ist die Länge (in Anzahl von Ticks) der Zeitspanne zwischen einem NOTE ON und dem entsprechenden NOTE OFF-Ereignis. Diese Kontrolle ist nur aktiviert, wenn **Sende NOTE OFF-Ereignisse** ebenfalls aktiviert ist. Sehr niedrige Werte kann bei einigen Synthesizern gedämpfte Klicks verursachen. Percussion-Sounds brauchen normalerweise keine NOTE OFF-Events, um danach gesendet zu werden jede ANMERKUNG AN. Aktivieren Sie das Kontrollkästchen **ANMERKUNG AUS-Ereignisse senden** nur, wenn Sie Synthesizer oder Instrument unterstützt oder erfordert diese Einstellung. **Bank** und **Programm** wird verwendet, um das Schlagzeug für Instrumente zu ändern unterstützt mehrere Einstellungen. Viele Synthesizer verstehen kein Programm Änderungen für den Percussion-Kanal. Im **Automatic**-Pattern-Modus wird der **Starke Note**-Sound als erster Beat gespielt in jedem Takt, während jeder andere Beat im gleichen Takt mit . gespielt wird der **schwache Ton**. Die Zahlenwerte 33 und 34 sind die GM2- und XG-Sounds für Metronomklick bzw. Metronomglocke. ##Muster-Editor In diesem Dialogfeld können Sie Muster bearbeiten, testen und auswählen. Erschaffen neue Muster speichern Sie einfach die aktuelle Definition unter einem neuen Namen. Muster werden durch eine Tabelle dargestellt. Die Zeilen in der Tabelle entsprechen die Percussion-Klänge. Sie können Zeilen aus einer Liste von Sounds entfernen und hinzufügen durch die Geräteeinstellungen im Konfigurationsdialog definiert. Die Anzahl der Spalten in der Tabelle bestimmen die Länge des Musters, zwischen 1 und 99 Elementen einer beliebigen Beatlänge. Jede Tabellenzelle akzeptiert Werte zwischen N=1 und 9, entsprechend der MIDI-Velocity (N*127/9) der Noten oder 0, um den Klang zu löschen. Gültig Werte sind auch f (=forte) und p (=piano) entsprechend Variable Geschwindigkeiten, die durch die Drehknöpfe (Strong/Weak) im Hauptfenster definiert werden. Die Zellenwerte können entweder über die Tastatur ausgewählt und geändert werden oder die Maus. Es ist nicht erforderlich, die Wiedergabe zu stoppen, bevor Sie die Zellen. # Befehlsreferenz ## Das Hauptfenster ### Das Dateimenü **Datei → Muster importieren** : Importiert Pattern-Definitionen in Drumstick Metronome **Datei → Muster exportieren** : Exportiert Pattern-Definitionen von Drumstick Metronome **Datei → Wiedergabe/Stopp** : Steuert die Pattern-Wiedergabe **Datei → Beenden** : Beendet Drumstick Metronom ### Das Bearbeiten-Menü **Bearbeiten → Muster bearbeiten** : Öffnet den Mustereditor ### Das Einstellungsmenü **Einstellungen → Aktionsschaltflächen anzeigen** : Zeigt die Aktionsschaltflächen an oder blendet sie aus. Für jede Schaltfläche gibt es äquivalente Menüpunkte. **Einstellungen → Symbolleiste anzeigen** : Blendet die Symbolleiste ein oder aus. Für jede Schaltfläche gibt es äquivalente Menüpunkte. **Einstellungen → Konfiguration** : Konfiguriert das Drumstick-Metronom ### Das Hilfemenü **Hilfe → Hilfeinhalt** : Öffnet das Hilfefenster **Hilfe → Sprache** : Öffnet ein Untermenü mit den verfügbaren Übersetzungen **Hilfe → Über** : Öffnet eine Infobox dieses Programms **Hilfe → über Qt** : Öffnet eine Infobox der Qt-Frameworks # Externe Steuerung Drumstick Metronom kann über seine D-Bus-Schnittstelle, System Realtime . gesteuert werden und systemexklusive MIDI-Meldungen. ## D-Bus-Schnittstelle Drumstick Metronome bietet einige Funktionen über seine D-Bus-Schnittstelle. Du kannst Verwenden Sie ein D-Bus-fähiges Programm, um das Drumstick-Metronom wie `qdbusviewer` oder das . zu steuern Kommandozeilen-Dienstprogramm `qdbus`. Diese Befehle können beispielsweise von einer Shell-Eingabeaufforderung verwendet werden: $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150 $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8 ## Universelle systemexklusive Nachrichten Drumstick Metronome versteht einige Universal System Exclusive-Meldungen. Weil die Geräte-ID ist noch nicht implementiert, alle erkannten Nachrichten müssen als Broadcast markiert werden (0x7F). Echtzeitnachricht: Nachricht zur Änderung der Taktart Format: 0xF0 0x7F 0x7F 0x03 Befehlslänge Zähler Nenner ... 0xF7 0x02: Taktartänderung 0x42: Taktartwechsel verzögert Hinweise: Beide Befehle wirken sich nur auf die nächsten geplanten Muster nach . aus den Befehl erhalten. Die Länge beträgt mindestens 2. Zusätzliche Bytes folgen Zähler und Nenner werden ignoriert. MMC-Nachrichten Format: 0xF0 0x7F 0x7F 0x06 Befehl 0xF7 0x01: Stopp 0x02: Abspielen 0x03: Aufgeschobenes Spiel ## MIDI-System-Echtzeitschnittstelle Sie können ein MIDI-Gerät verwenden, das MIDI-System-Echtzeit-Meldungen erzeugt, um Drumstick Metronom steuern. Akzeptierte System-Echtzeitnachrichten sind: Start (0xFA), Stopp (0xFC) und Weiter (0xFB). Viele Master-MIDI-Keyboards und MIDI-Tastengeräte bieten diese drei MIDI-Transportsteuerung. Sie müssen Ihre externen MIDI-Geräte anschließen über MIDI- (oder USB-)Kabel mit dem Computer und schließen Sie das entsprechenden ALSA-Port mit dem Eingangsport des Drumstick-Metronoms. Diese Verbindung muss von Hand erfolgen oder mit einer Sitzungsverwaltungssoftware wie QJackCtl. # Credits und Lizenz Programm Copyright © 2005-2021 Pedro Lopez-Cabanillas Dokumentation Copyright © 2005-2021 Pedro Lopez-Cabanillas Dieses Programm ist freie Software; Sie können es weitergeben und/oder ändern es unter den Bedingungen der GNU General Public License, wie veröffentlicht von die Free Software Foundation; entweder Version 2 der Lizenz oder (nach Ihrer Wahl) jede spätere Version. Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, aber OHNE JEGLICHE GARANTIE; auch ohne die stillschweigende garantie von MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die GNU General Public License für weitere Details. Sie sollten eine Kopie der GNU General Public License erhalten haben zusammen mit diesem Programm. Falls nicht, siehe [https://www.gnu.org/licenses](https://www.gnu.org/licenses) # Installation ## So erhalten Sie ein Drumstick-Metronom Hier finden Sie die neueste Version: [Projektdateien](https://sourceforge.net/projects/kmetronome/files/kmetronome/) ## Anforderungen Um Drumstick Metronom erfolgreich zu kompilieren und zu verwenden, benötigen Sie Qt 5 oder später Drumstick 2, ALSA-Treiber und ALSA-Bibliothek. Sie benötigen auch einen MIDI-Synthesizer, um Sound zu erzeugen. Das Build-System erfordert [CMake](https://cmake.org) 3.14 oder neuer. ALSA-Bibliothek, Treiber und Dienstprogramme finden Sie unter [ALSA-Homepage](https://www.alsa-project.org). Drumstick::ALSA ist ein C++-Wrapper um die ALSA-Sequenzer-Schnittstelle mit Qt Objekte, Idiome und Stile. Sie finden es bei der [Drumstick-Startseite](https://drumstick.sourceforge.io). Siehe auch die [Drumstick Metronome Homepage](https://kmetronome.sourceforge.io/kmetronome.shtml). ## Kompilierung und Installation Um Drumstick Metronome auf Ihrem System zu kompilieren und zu installieren, geben Sie Folgendes ein: im Basisverzeichnis der Drumstick Metronome Distribution: % cmake . % machen % sudo machen installieren Da Drumstick Metronome `cmake` und `make` verwendet, sollten Sie keine Probleme haben es kompilieren. Sollten Probleme auftreten, melden Sie diese bitte dem Autor oder des Projekts [Fehlerverfolgungssystem](https://sourceforge.net/p/kmetronome/bugs/). kmetronome-1.3.0/doc/de/PaxHeaders.13848/index.html0000644000000000000000000000013214155347442016602 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/de/index.html0000644000175000001440000004067714155347442017404 0ustar00pedrousers00000000000000 Hilfeindex

Einführung

Drumstick Metronome ist ein MIDI-basiertes Metronom, das den ALSA-Sequenzer verwendet.

Zielgruppe sind Musiker und Musikstudenten. Wie jedes körperliche Metronom ist ein Werkzeug, um den Rhythmus beim Musizieren zu halten Instrumente.

Es verwendet MIDI anstelle von digitalem Audio, was eine geringe CPU-Auslastung ermöglicht und sehr genau ist Timing dank ALSA-Sequenzer. Das bedeutet, dass Sie auch einen MIDI . benötigen Synthesizer zur Tonerzeugung, da das Programm keinen Ton erzeugt von selbst. Die besten Ergebnisse erzielen Sie mit einem Hardware-Synthesizer, aber Sie können Verwenden Sie stattdessen auch Software-Synthesizer.

Fragen Sie nach Support, melden Sie Probleme, Fehler und Funktionsanfragen an das Tracking-System unter SourceForge-Projektseite

Verwenden des Drumstick-Metronoms

Merkmale

Sie müssen nur einige Steuerelemente anpassen, wie den Tempo-Schieberegler, die Beats/Bar-Spin-Box und den Beat-Längen-Selektor. Drücken Sie die Play-Taste anfangen. Verwenden Sie nach Belieben die Stopptaste.

Das Tempo kann mit dem Schieberegler von 25 bis 250 QPM eingestellt werden. Die Einheiten sind Viertel pro Minute (Mälzel Metronom-Einheiten). Sie können auch doppelklicken über dem Hauptfenster, um ein Dialogfeld zu öffnen, in dem Sie ein neues eingeben können Tempo direkt mit der Tastatur. Es gibt auch eine Combobox zur Auswahl und zeigen Sie das Tempo mit italienischen Musiknamen an.

Beats/Bar kann von 1 bis 32 Beats eingestellt werden. Das sind die Beats auf jedem Takt oder Takt, und es ist der Zähler auf der Taktart als es würde notiert werden.

Die Beatlänge ist der Nenner der Taktartangabe, und repräsentiert die Dauer jedes Schlags. Ändern dieses Wertes nicht ändern Sie die Bedeutung der Tempoeinheiten.

Muster ist eine Dropdown-Liste zur Auswahl einer Musterdefinition. Der Standard Der Wert "Automatisch" bedeutet, dass das Programm Muster unter Verwendung der im Konfigurationsdialog eingestellte Noten (stark/schwach) und den Rhythmus Definition durch "Beats/Bar" und "Beat-Länge". Es enthält auch die Namen von benutzerdefinierten Mustern.

Einstieg

Dieses Programm verwendet das MIDI-Protokoll, daher ist es eine gute Idee, einige grundlegende Begriffe zu MIDI, um die Konzepte vollständig zu verstehen dahinter. Eine gute Einführung findest du hier: Was ist MIDI.

Drumstick Metronome erzeugt MIDI-Events. Wenn Sie die Ereignisse hören möchten in Klänge übersetzt, die Sie benötigen, um den MIDI OUT-Port davon zu verbinden Programm an den MIDI IN-Port eines MIDI-Synthesizers. Es kann entweder ein Hardware-MIDI-Synthesizer oder ein Software-Synthesizer. Wenn es ein externes ist Hardware-Synthesizer benötigen Sie außerdem ein von ALSA unterstütztes MIDI-Interface in Ihrem Computer installiert ist, und ein MIDI-Kabel, das an beide MIDI-Schnittstelle des Computers und die MIDI IN-Buchse des Synthesizers.

Wenn Sie keinen externen MIDI-Synthesizer haben, können Sie trotzdem den Programm mit einem MIDI-Software-Synthesizer, der den ALSA-Sequenzer unterstützt Verbindungen, wie QSynth. Starte dein Software-Synthesizer vor Drumstick Metronome, und stellen Sie dann die Verbindung her zwischen den beiden Programmen, entweder im Konfigurationsdialog von Drumstick Metronome oder mit einem externen Verbindungsmanager wie QJackCtl.

Vergessen Sie nicht, eine gute [Soundfont] zu installieren (https://en.wikipedia.org/wiki/SoundFont) in das Dialogfeld "Setup..." von QSynth.

Aufbau

Drumstick Metronome verfügt über eingeschränkte Session-Management-Funktionen. Es kann sich erinnern ein Anschluss für den ALSA-Ausgangsport und ein Anschluss für seinen Eingangsport. Verbindungen werden beim Beenden des Programms gespeichert und gespeichert am Anfang. Sie brauchen diese Funktion nicht, wenn Sie dies vorziehen Verbindungen von Hand, mit aconnect oder einem anderen gleichwertigen Dienstprogramm, oder wenn Sie einen externen Session-Manager wie die im Lieferumfang enthaltene Patchbay verwenden Programm QJackCtl.

Drumstick Metronome verwendet eine Instrumentendefinitionsdatei im .INS-Format Format als Qtractor, TSE3, Cakewalk und Sonar. Das Ausgabeinstrument Dropdown-Liste ermöglicht die Auswahl eines der Standard General MIDI, Roland GS und Yamaha XG Drummaps. Sie können weitere Definitionen hinzufügen, indem Sie eine Datei namens drums.ins unter $HOME/.local/share/kmetronome.sourceforge.net. Die Inhalt der Dropdown-Listen Bank, Programm, Schwach und Starke Note hängen auch von dieser Definition ab.

Kanal ist normalerweise 10, d. h. der Percussion-Kanal eines General MIDI Synthesizer. Es muss eine Zahl zwischen 1 und 16 sein.

Auflösung ist die Anzahl der Ticks (Zeiteinheiten) für jede Viertelnote. Wertebereich von 48 bis 960. Standardeinstellung bis 120.

Notendauer ist die Länge (in Anzahl von Ticks) der Zeitspanne zwischen einem NOTE ON und dem entsprechenden NOTE OFF-Ereignis. Diese Kontrolle ist nur aktiviert, wenn Sende NOTE OFF-Ereignisse ebenfalls aktiviert ist. Sehr niedrige Werte kann bei einigen Synthesizern gedämpfte Klicks verursachen.

Percussion-Sounds brauchen normalerweise keine NOTE OFF-Events, um danach gesendet zu werden jede ANMERKUNG AN. Aktivieren Sie das Kontrollkästchen ANMERKUNG AUS-Ereignisse senden nur, wenn Sie Synthesizer oder Instrument unterstützt oder erfordert diese Einstellung.

Bank und Programm wird verwendet, um das Schlagzeug für Instrumente zu ändern unterstützt mehrere Einstellungen. Viele Synthesizer verstehen kein Programm Änderungen für den Percussion-Kanal.

Im Automatic-Pattern-Modus wird der Starke Note-Sound als erster Beat gespielt in jedem Takt, während jeder andere Beat im gleichen Takt mit . gespielt wird der schwache Ton. Die Zahlenwerte 33 und 34 sind die GM2- und XG-Sounds für Metronomklick bzw. Metronomglocke.

Muster-Editor

In diesem Dialogfeld können Sie Muster bearbeiten, testen und auswählen. Erschaffen neue Muster speichern Sie einfach die aktuelle Definition unter einem neuen Namen. Muster werden durch eine Tabelle dargestellt. Die Zeilen in der Tabelle entsprechen die Percussion-Klänge. Sie können Zeilen aus einer Liste von Sounds entfernen und hinzufügen durch die Geräteeinstellungen im Konfigurationsdialog definiert. Die Anzahl der Spalten in der Tabelle bestimmen die Länge des Musters, zwischen 1 und 99 Elementen einer beliebigen Beatlänge.

Jede Tabellenzelle akzeptiert Werte zwischen N=1 und 9, entsprechend der MIDI-Velocity (N*127/9) der Noten oder 0, um den Klang zu löschen. Gültig Werte sind auch f (=forte) und p (=piano) entsprechend Variable Geschwindigkeiten, die durch die Drehknöpfe (Strong/Weak) im Hauptfenster definiert werden. Die Zellenwerte können entweder über die Tastatur ausgewählt und geändert werden oder die Maus. Es ist nicht erforderlich, die Wiedergabe zu stoppen, bevor Sie die Zellen.

Befehlsreferenz

Das Hauptfenster

Das Dateimenü

Datei → Muster importieren

Importiert Pattern-Definitionen in Drumstick Metronome

Datei → Muster exportieren

Exportiert Pattern-Definitionen von Drumstick Metronome

Datei → Wiedergabe/Stopp

Steuert die Pattern-Wiedergabe

Datei → Beenden

Beendet Drumstick Metronom

Das Bearbeiten-Menü

Bearbeiten → Muster bearbeiten

Öffnet den Mustereditor

Das Einstellungsmenü

Einstellungen → Aktionsschaltflächen anzeigen

Zeigt die Aktionsschaltflächen an oder blendet sie aus. Für jede Schaltfläche gibt es äquivalente Menüpunkte.

Einstellungen → Symbolleiste anzeigen

Blendet die Symbolleiste ein oder aus. Für jede Schaltfläche gibt es äquivalente Menüpunkte.

Einstellungen → Konfiguration

Konfiguriert das Drumstick-Metronom

Das Hilfemenü

Hilfe → Hilfeinhalt

Öffnet das Hilfefenster

Hilfe → Sprache

Öffnet ein Untermenü mit den verfügbaren Übersetzungen

Hilfe → Über

Öffnet eine Infobox dieses Programms

Hilfe → über Qt

Öffnet eine Infobox der Qt-Frameworks

Externe Steuerung

Drumstick Metronom kann über seine D-Bus-Schnittstelle, System Realtime . gesteuert werden und systemexklusive MIDI-Meldungen.

D-Bus-Schnittstelle

Drumstick Metronome bietet einige Funktionen über seine D-Bus-Schnittstelle. Du kannst Verwenden Sie ein D-Bus-fähiges Programm, um das Drumstick-Metronom wie qdbusviewer oder das . zu steuern Kommandozeilen-Dienstprogramm qdbus.

Diese Befehle können beispielsweise von einer Shell-Eingabeaufforderung verwendet werden:

$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8

Universelle systemexklusive Nachrichten

Drumstick Metronome versteht einige Universal System Exclusive-Meldungen. Weil die Geräte-ID ist noch nicht implementiert, alle erkannten Nachrichten müssen als Broadcast markiert werden (0x7F).

Echtzeitnachricht: Nachricht zur Änderung der Taktart

Format: 0xF0 0x7F 0x7F 0x03 Befehlslänge Zähler Nenner ... 0xF7
                            0x02: Taktartänderung 
                            0x42: Taktartwechsel verzögert

Hinweise: Beide Befehle wirken sich nur auf die nächsten geplanten Muster nach . aus den Befehl erhalten. Die Länge beträgt mindestens 2. Zusätzliche Bytes folgen Zähler und Nenner werden ignoriert.

MMC-Nachrichten

Format: 0xF0 0x7F 0x7F 0x06 Befehl 0xF7
                            0x01: Stopp
                            0x02: Abspielen
                            0x03: Aufgeschobenes Spiel

MIDI-System-Echtzeitschnittstelle

Sie können ein MIDI-Gerät verwenden, das MIDI-System-Echtzeit-Meldungen erzeugt, um Drumstick Metronom steuern. Akzeptierte System-Echtzeitnachrichten sind: Start (0xFA), Stopp (0xFC) und Weiter (0xFB).

Viele Master-MIDI-Keyboards und MIDI-Tastengeräte bieten diese drei MIDI-Transportsteuerung. Sie müssen Ihre externen MIDI-Geräte anschließen über MIDI- (oder USB-)Kabel mit dem Computer und schließen Sie das entsprechenden ALSA-Port mit dem Eingangsport des Drumstick-Metronoms. Diese Verbindung muss von Hand erfolgen oder mit einer Sitzungsverwaltungssoftware wie QJackCtl.

Credits und Lizenz

Programm Copyright © 2005-2021 Pedro Lopez-Cabanillas

Dokumentation Copyright © 2005-2021 Pedro Lopez-Cabanillas

Dieses Programm ist freie Software; Sie können es weitergeben und/oder ändern es unter den Bedingungen der GNU General Public License, wie veröffentlicht von die Free Software Foundation; entweder Version 2 der Lizenz oder (nach Ihrer Wahl) jede spätere Version.

Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, aber OHNE JEGLICHE GARANTIE; auch ohne die stillschweigende garantie von MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die GNU General Public License für weitere Details.

Sie sollten eine Kopie der GNU General Public License erhalten haben zusammen mit diesem Programm. Falls nicht, siehe https://www.gnu.org/licenses

Installation

So erhalten Sie ein Drumstick-Metronom

Hier finden Sie die neueste Version: Projektdateien

Anforderungen

Um Drumstick Metronom erfolgreich zu kompilieren und zu verwenden, benötigen Sie Qt 5 oder später Drumstick 2, ALSA-Treiber und ALSA-Bibliothek.

Sie benötigen auch einen MIDI-Synthesizer, um Sound zu erzeugen.

Das Build-System erfordert CMake 3.14 oder neuer.

ALSA-Bibliothek, Treiber und Dienstprogramme finden Sie unter ALSA-Homepage.

Drumstick::ALSA ist ein C++-Wrapper um die ALSA-Sequenzer-Schnittstelle mit Qt Objekte, Idiome und Stile. Sie finden es bei der Drumstick-Startseite.

Siehe auch die Drumstick Metronome Homepage.

Kompilierung und Installation

Um Drumstick Metronome auf Ihrem System zu kompilieren und zu installieren, geben Sie Folgendes ein: im Basisverzeichnis der Drumstick Metronome Distribution:

% cmake .
% machen
% sudo machen installieren

Da Drumstick Metronome cmake und make verwendet, sollten Sie keine Probleme haben es kompilieren. Sollten Probleme auftreten, melden Sie diese bitte dem Autor oder des Projekts Fehlerverfolgungssystem.

kmetronome-1.3.0/doc/PaxHeaders.13848/tr0000644000000000000000000000013214155347442014565 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/tr/0000755000175000001440000000000014155347442015426 5ustar00pedrousers00000000000000kmetronome-1.3.0/doc/tr/PaxHeaders.13848/index.md0000644000000000000000000000013214155347442016273 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/tr/index.md0000644000175000001440000003132114155347442017057 0ustar00pedrousers00000000000000% Yardım Dizini # Tanıtım Drumstick Metronom, ALSA sıralayıcıyı kullanan MIDI tabanlı bir metronomdur. Hedef kitle, müzisyenler ve müzik öğrencileridir. Herhangi bir fiziksel gibi metronom müzik çalarken ritmi korumak için bir araçtır enstrümanlar. Dijital ses yerine MIDI kullanır, düşük CPU kullanımına izin verir ve çok hassastır ALSA sıralayıcı sayesinde zamanlama. Bu, bir MIDI'ye de ihtiyacınız olduğu anlamına gelir. ses üretimi için sentezleyici, çünkü program herhangi bir ses üretmez kendi kendine. En iyi sonuçlar bir donanım sentezleyici kullanmaktan gelir, ancak bunun yerine yazılım sentezleyicileri de kullanın. Destek isteyin, sorunları, hataları ve özellik isteklerini adresindeki izleme sistemine bildirin. [SourceForge proje sitesi](https://sourceforge.net/p/kmetronome/support-requests/) # Drumstick Metronomunu Kullanma ## Özellikleri Tempo kaydırıcı gibi bazı kontrolleri ayarlamanız yeterlidir. vuruş/bar döndürme kutusu ve vuruş uzunluğu seçicisi. Oynat düğmesine basın başlamak. Rahatınız için durdurma düğmesini kullanın. Tempo, kaydırıcı kullanılarak 25 ila 250 QPM arasında ayarlanabilir. birimler dakikada çeyrek (Mälzel Metronom birimleri). Ayrıca çift tıklayabilirsiniz yeni bir giriş yapabileceğiniz bir iletişim kutusu açmak için ana pencerenin üzerine doğrudan klavye ile tempo. Ayrıca seçebileceğiniz bir birleşik giriş kutusu var. ve İtalyan müzik adlarını kullanarak tempoyu görüntüleyin. Vuruş/Çubuk 1 ila 32 vuruş arasında ayarlanabilir. Bunlar vuruş sayısı her ölçü veya çubukta ve zaman imzasındaki paydır. not edilecekti. Vuruş uzunluğu, zaman işareti belirtimindeki paydadır, ve her vuruşun süresini temsil eder. Bu değeri değiştirmek, tempo birimlerinin anlamını değiştirin. Kalıp, bir kalıp tanımı seçmek için açılan bir listedir. Varsayılan "Otomatik" değer, programın aşağıdakileri kullanarak kalıplar oluşturduğu anlamına gelir. yapılandırma iletişim kutusunda (Güçlü/Zayıf) ayarlanan notlar ve ritim "Vuruş/Çubuk" ve "Vuruş uzunluğu" tarafından sağlanan tanım. Ayrıca içerir kullanıcı tanımlı kalıpların adları. ## Başlarken Bu program MIDI protokolünü kullanır, bu nedenle kavramları tam olarak anlamak için MIDI hakkında bazı temel kavramlar arkasında. Burada iyi bir giriş bulabilirsiniz: [MIDI nedir](https://www.midi.org/midi-articles/categories/MIDI%201.0). Drumstick Metronom MIDI olayları üretir. Olayları duymak istiyorsanız MIDI OUT bağlantı noktasını bundan bağlamanız gereken seslere çevrilmiş MIDI sentezleyicinin MIDI IN bağlantı noktasına programlayın. ya bir olabilir donanım MIDI sentezleyici veya bir yazılım. Eğer bu bir dış donanım sentezleyici, ayrıca ALSA destekli bir MIDI arayüzüne ihtiyacınız var bilgisayarınıza takılı ve her iki bilgisayara da bağlı bir MIDI kablosu bilgisayarın MIDI arayüzü ve sentezleyici MIDI IN soketi. Harici bir MIDI sentezleyiciniz yoksa, yine de ALSA sıralayıcıyı destekleyen bir MIDI yazılım sentezleyicisine sahip program [QSynth](https://qsynth.sourceforge.io) gibi bağlantılar. Başlangıç ​​senin Drumstick Metronom'dan önce yazılım sentezleyici ve ardından bağlantıyı yapın iki program arasında, ya Drumstick Metronome'un yapılandırma iletişim kutusunda veya gibi bir harici bağlantı yöneticisi kullanarak [QJackCtl](https://qjackctl.sourceforge.io). İyi bir [Sound Font](https://en.wikipedia.org/wiki/SoundFont) yüklemeyi unutmayın QSynth'in "Kurulum..." iletişim kutusuna girin. ## Yapılandırma Drumstick Metronom'un sınırlı oturum yönetimi yetenekleri vardır. Hatırlayabilir ALSA çıkış portu için bir bağlantı ve onun için bir bağlantı giriş portu. Program çıktığında ve hatırlandığında bağlantılar saklanır başlangıçta. Böyle yapmayı tercih ederseniz, bu özelliğe ihtiyacınız yoktur. aconnect veya başka bir eşdeğer yardımcı program kullanarak elle bağlantılar veya içinde bulunan patchbay gibi harici bir oturum yöneticisi kullanıyorsanız programı [QJackCtl](https://qjackctl.sourceforge.io). Drumstick Metronom, .INS formatında bir enstrüman tanım dosyası kullanır, aynı Qtractor, TSE3, Cakewalk ve Sonar olarak formatlayın. **Çıkış aracı** açılır liste, standart General MIDI'den birini seçmenize izin verir, Roland GS ve Yamaha XG davul haritaları. Oluşturarak daha fazla tanım ekleyebilirsiniz. '$HOME/.local/share/kmetronome.sourceforge.net' konumunda 'drums.ins' adlı bir dosya. NS **Banka**, **Program**, **Zayıf** ve **Güçlü not** açılır listelerinin içeriği da bu tanıma bağlıdır. **Kanal** genellikle 10'dur, yani Genel MIDI'nin perküsyon kanalı sentezleyici. 1 ile 16 arasında bir sayı olmalıdır. **Çözünürlük**, her bir çeyrek nota için tik sayısıdır (zaman birimleri). Değer aralığı 48 ile 960 arasındadır. Varsayılan değer 120'dir. **Not süresi**, zaman aralığının uzunluğudur (tik sayısı olarak). Bir NOTE ON ve buna karşılık gelen NOTE OFF olayı arasında. Bu kontrol yalnızca **NOT KAPALI olayları gönder** de etkinleştirildiğinde etkinleştirilir. Çok düşük değerler bazı sentezleyicilerde sessiz tıklamalara neden olabilir. Perküsyon seslerinin genellikle daha sonra gönderilmek üzere NOTE OFF olaylarına ihtiyacı yoktur. her NOT AÇIK. **NOT KAPALI olayları gönder** onay kutusunu seçin, yalnızca sentezleyici veya enstrüman bu ayarı destekler veya gerektirir. **Bank** ve **Program** enstrümanlar için davul setini değiştirmek için kullanılır birkaç ayarı destekler. Birçok sentezleyici programı anlamıyor perküsyon kanalı için değişiklikler. **Otomatik** kalıp modunda, ilk vuruş olarak **Güçlü nota** sesi çalınır her ölçüde, aynı ölçüdeki diğer herhangi bir vuruş kullanılarak çalınır. **Zayıf nota** sesi. 33 ve 34 sayısal değerleri GM2 ve XG sesleridir sırasıyla metronom tıklaması ve metronom zili için. ## Kalıp Düzenleyici Bu iletişim kutusunu kullanarak kalıpları düzenleyebilir, test edebilir ve seçebilirsiniz. Yaratmak yeni desenler, mevcut tanımı yeni bir adla kaydetmeniz yeterlidir. Desenler bir tablo ile temsil edilir. Tablodaki satırlar karşılık gelir perküsyon sesleri. Bir ses listesinden satırları kaldırabilir ve ekleyebilirsiniz. konfigürasyon iletişim kutusundaki cihaz ayarları tarafından tanımlanır. NS tablodaki sütun sayısı desenin uzunluğunu belirler, herhangi bir vuruş uzunluğunda 1 ile 99 arasında eleman. Her tablo hücresi, N=1 ile 9 arasındaki değerleri kabul eder; Notaların MIDI hızı (N*127/9) veya sesi iptal etmek için 0. Geçerli değerler de değişkene karşılık gelen f (=forte) ve p (=piyano) şeklindedir. ana penceredeki döner düğmeler (Güçlü/Zayıf) tarafından tanımlanan hızlar. Hücre değerleri, klavye kullanılarak seçilebilir ve değiştirilebilir. veya fare. değiştirmeden önce oynatmayı durdurmaya gerek yoktur. hücreler. # Komut Referansı ## Ana pencere ### Dosya Menüsü **Dosya → Kalıpları İçe Aktar** : Kalıp tanımlarını Drumstick Metronom'a aktarır **Dosya → Kalıpları Dışa Aktar** : Drumstick Metronom'dan kalıp tanımlarını dışa aktarır **Dosya → Oynat/Durdur** : Desen oynatmayı kontrol eder **Dosya → Çık** : Drumstick Metronom'dan Çıkılır ### Düzenleme Menüsü **Düzenle → Kalıpları Düzenle** : Kalıp düzenleyiciyi açar ### Ayarlar Menüsü **Ayarlar → Eylem Düğmelerini Göster** : Eylem düğmelerini gösterir veya gizler. Her düğme için eşdeğer menü öğeleri vardır. **Ayarlar → Araç Çubuğunu Göster** : Araç çubuğunu gösterir veya gizler. Her düğme için eşdeğer menü öğeleri vardır. **Ayarlar → Yapılandırma** : Drumstick Metronom'u yapılandırır ### Yardım Menüsü **Yardım → Yardım İçeriği** : Yardım penceresini açar **Yardım → Dil** : Mevcut çevirileri gösteren bir alt menüyü açar **Yardım → hakkında** : Bu programın yaklaşık kutusunu açar **Yardım → Qt hakkında** : Qt çerçevelerinin yaklaşık kutusunu açar # Harici kontrol Drumstick Metronom, D-Bus arayüzü, System Realtime kullanılarak kontrol edilebilir ve Sisteme Özel MIDI mesajları. ## D-Bus Arayüzü Drumstick Metronom, D-Bus arayüzü aracılığıyla bazı işlevler sağlar. Yapabilirsiniz Drumstick Metronom'u "qdbusviewer" gibi kontrol etmek için D-Bus etkinleştirilmiş bir program veya komut satırı yardımcı programı "qdbus". Örneğin, bu komutlar bir kabuk isteminden kullanılabilir: $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150 $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8 ## Evrensel Sistem Özel mesajları Drumstick Metronom, bazı Universal System Exclusive mesajlarını anlar. Çünkü cihaz kimliği henüz uygulanmadı, tanınan tüm mesajların yayın olarak işaretlenir (0x7F). Gerçek Zamanlı Mesaj: Zaman İmza Değişikliği Mesajı Biçim: 0xF0 0x7F 0x7F 0x03 Komut Uzunluğu Pay Payda ... 0xF7 0x02: Zaman İmzası Değişikliği 0x42: Zaman İmzası Değişikliği Gecikmeli Notlar: her iki komut da yalnızca sonraki zamanlanmış desenleri etkiler. komutu alıyor. Uzunluk en az 2'dir. Aşağıdaki ekstra baytlar Pay ve Payda dikkate alınmaz. MMC Mesajları Biçim: 0xF0 0x7F 0x7F 0x06 Komut 0xF7 0x01: Dur 0x02: Oynat 0x03: Ertelenmiş Oynatma ## MIDI Sistemi Gerçek Zamanlı Arayüzü için MIDI Sistem Gerçek Zamanlı mesajları üreten bir MIDI cihazı kullanabilirsiniz. Drumstick Metronom'u kontrol edin. Kabul edilen Sistem Gerçek Zamanlı mesajları şunlardır: Başlat (0xFA), Durdur (0xFC) ve Devam Et (0xFB). Birçok ana MIDI klavyesi ve MIDI düğmesi aygıtı bu üçünü sağlar. MIDI taşıma kontrolleri. Harici MIDI cihazlarınızı bağlamanız gerekiyor MIDI (veya USB) kablolarını kullanarak bilgisayara bağlayın ve Drumstick Metronom'un giriş portuna karşılık gelen ALSA portu. Bu bağlantı elle veya gibi bir oturum yönetim yazılımı kullanılarak yapılmalıdır. QJackCtl. # Kredi ve Lisans Program Telif Hakkı © 2005-2021 Pedro Lopez-Cabanillas Belgeleme Telif Hakkı © 2005-2021 Pedro Lopez-Cabanillas Bu program ücretsiz bir yazılımdır; yeniden dağıtabilir ve/veya değiştirebilirsiniz tarafından yayınlanan GNU Genel Kamu Lisansı koşulları altında Özgür Yazılım Vakfı; Lisansın 2. sürümü veya (isteğe bağlı olarak) herhangi bir sonraki sürüm. Bu program faydalı olacağı ümidiyle dağıtılmıştır, ancak HİÇBİR GARANTİ OLMADAN; zımni garanti bile olmadan SATILABİLİRLİK veya BELİRLİ BİR AMACA UYGUNLUK. Bkz. Daha fazla ayrıntı için GNU Genel Kamu Lisansı. GNU Genel Kamu Lisansının bir kopyasını almış olmalısınız Bu programla birlikte. Değilse, bkz. [https://www.gnu.org/licenses](https://www.gnu.org/licenses) # Kurulum ## Drumstick Metronom nasıl edinilir Burada en son sürümü bulabilirsiniz: [Projenin dosyaları](https://sourceforge.net/projects/kmetronome/files/kmetronome/) ## Gereksinimler Drumstick Metronom'u başarılı bir şekilde derlemek ve kullanmak için Qt 5 veya daha sonra, Drumstick 2, ALSA sürücüleri ve ALSA kitaplığı. Ayrıca ses üretmek için bir MIDI sentezleyiciye ihtiyacınız var. Derleme sistemi [CMake](https://cmake.org) 3.14 veya daha yenisini gerektirir. ALSA kitaplığı, sürücüler ve yardımcı programlar şu adreste bulunabilir: [ALSA ana sayfası](https://www.alsa-project.org). Drumstick::ALSA, Qt kullanan ALSA sıralayıcı arabirimi etrafındaki bir C++ sarmalayıcıdır nesneler, deyimler ve stil. adresinde bulabilirsiniz. [Drumstick ana sayfası](https://drumstick.sourceforge.io). Ayrıca [Drumstick Metronom ana sayfasına](https://kmetronome.sourceforge.io/kmetronome.shtml) bakın. ## Derleme ve Kurulum Drumstick Metronom'u sisteminize derlemek ve kurmak için, Drumstick Metronom dağıtımının temel dizininde aşağıdakiler bulunur: % cmake . % Yapmak % sudo kurulum yap Drumstick Metronom 'cmake' ve 'make' kullandığından, sorun yaşamamanız gerekir onu derlemek. Herhangi bir sorunla karşılaşırsanız, lütfen bunları yazar veya projenin [hata izleme sistemi](https://sourceforge.net/p/kmetronome/bugs/). kmetronome-1.3.0/doc/tr/PaxHeaders.13848/index.html0000644000000000000000000000013214155347442016637 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/tr/index.html0000644000175000001440000004033314155347442017426 0ustar00pedrousers00000000000000 Yardım Dizini

Tanıtım

Drumstick Metronom, ALSA sıralayıcıyı kullanan MIDI tabanlı bir metronomdur.

Hedef kitle, müzisyenler ve müzik öğrencileridir. Herhangi bir fiziksel gibi metronom müzik çalarken ritmi korumak için bir araçtır enstrümanlar.

Dijital ses yerine MIDI kullanır, düşük CPU kullanımına izin verir ve çok hassastır ALSA sıralayıcı sayesinde zamanlama. Bu, bir MIDI'ye de ihtiyacınız olduğu anlamına gelir. ses üretimi için sentezleyici, çünkü program herhangi bir ses üretmez kendi kendine. En iyi sonuçlar bir donanım sentezleyici kullanmaktan gelir, ancak bunun yerine yazılım sentezleyicileri de kullanın.

Destek isteyin, sorunları, hataları ve özellik isteklerini adresindeki izleme sistemine bildirin. SourceForge proje sitesi

Drumstick Metronomunu Kullanma

Özellikleri

Tempo kaydırıcı gibi bazı kontrolleri ayarlamanız yeterlidir. vuruş/bar döndürme kutusu ve vuruş uzunluğu seçicisi. Oynat düğmesine basın başlamak. Rahatınız için durdurma düğmesini kullanın.

Tempo, kaydırıcı kullanılarak 25 ila 250 QPM arasında ayarlanabilir. birimler dakikada çeyrek (Mälzel Metronom birimleri). Ayrıca çift tıklayabilirsiniz yeni bir giriş yapabileceğiniz bir iletişim kutusu açmak için ana pencerenin üzerine doğrudan klavye ile tempo. Ayrıca seçebileceğiniz bir birleşik giriş kutusu var. ve İtalyan müzik adlarını kullanarak tempoyu görüntüleyin.

Vuruş/Çubuk 1 ila 32 vuruş arasında ayarlanabilir. Bunlar vuruş sayısı her ölçü veya çubukta ve zaman imzasındaki paydır. not edilecekti.

Vuruş uzunluğu, zaman işareti belirtimindeki paydadır, ve her vuruşun süresini temsil eder. Bu değeri değiştirmek, tempo birimlerinin anlamını değiştirin.

Kalıp, bir kalıp tanımı seçmek için açılan bir listedir. Varsayılan "Otomatik" değer, programın aşağıdakileri kullanarak kalıplar oluşturduğu anlamına gelir. yapılandırma iletişim kutusunda (Güçlü/Zayıf) ayarlanan notlar ve ritim "Vuruş/Çubuk" ve "Vuruş uzunluğu" tarafından sağlanan tanım. Ayrıca içerir kullanıcı tanımlı kalıpların adları.

Başlarken

Bu program MIDI protokolünü kullanır, bu nedenle kavramları tam olarak anlamak için MIDI hakkında bazı temel kavramlar arkasında. Burada iyi bir giriş bulabilirsiniz: MIDI nedir.

Drumstick Metronom MIDI olayları üretir. Olayları duymak istiyorsanız MIDI OUT bağlantı noktasını bundan bağlamanız gereken seslere çevrilmiş MIDI sentezleyicinin MIDI IN bağlantı noktasına programlayın. ya bir olabilir donanım MIDI sentezleyici veya bir yazılım. Eğer bu bir dış donanım sentezleyici, ayrıca ALSA destekli bir MIDI arayüzüne ihtiyacınız var bilgisayarınıza takılı ve her iki bilgisayara da bağlı bir MIDI kablosu bilgisayarın MIDI arayüzü ve sentezleyici MIDI IN soketi.

Harici bir MIDI sentezleyiciniz yoksa, yine de ALSA sıralayıcıyı destekleyen bir MIDI yazılım sentezleyicisine sahip program QSynth gibi bağlantılar. Başlangıç ​​senin Drumstick Metronom'dan önce yazılım sentezleyici ve ardından bağlantıyı yapın iki program arasında, ya Drumstick Metronome'un yapılandırma iletişim kutusunda veya gibi bir harici bağlantı yöneticisi kullanarak QJackCtl.

İyi bir Sound Font yüklemeyi unutmayın QSynth'in "Kurulum..." iletişim kutusuna girin.

Yapılandırma

Drumstick Metronom'un sınırlı oturum yönetimi yetenekleri vardır. Hatırlayabilir ALSA çıkış portu için bir bağlantı ve onun için bir bağlantı giriş portu. Program çıktığında ve hatırlandığında bağlantılar saklanır başlangıçta. Böyle yapmayı tercih ederseniz, bu özelliğe ihtiyacınız yoktur. aconnect veya başka bir eşdeğer yardımcı program kullanarak elle bağlantılar veya içinde bulunan patchbay gibi harici bir oturum yöneticisi kullanıyorsanız programı QJackCtl.

Drumstick Metronom, .INS formatında bir enstrüman tanım dosyası kullanır, aynı Qtractor, TSE3, Cakewalk ve Sonar olarak formatlayın. Çıkış aracı açılır liste, standart General MIDI'den birini seçmenize izin verir, Roland GS ve Yamaha XG davul haritaları. Oluşturarak daha fazla tanım ekleyebilirsiniz. '$HOME/.local/share/kmetronome.sourceforge.net' konumunda 'drums.ins' adlı bir dosya. NS Banka, Program, Zayıf ve Güçlü not açılır listelerinin içeriği da bu tanıma bağlıdır.

Kanal genellikle 10'dur, yani Genel MIDI'nin perküsyon kanalı sentezleyici. 1 ile 16 arasında bir sayı olmalıdır.

Çözünürlük, her bir çeyrek nota için tik sayısıdır (zaman birimleri). Değer aralığı 48 ile 960 arasındadır. Varsayılan değer 120'dir.

Not süresi, zaman aralığının uzunluğudur (tik sayısı olarak). Bir NOTE ON ve buna karşılık gelen NOTE OFF olayı arasında. Bu kontrol yalnızca NOT KAPALI olayları gönder de etkinleştirildiğinde etkinleştirilir. Çok düşük değerler bazı sentezleyicilerde sessiz tıklamalara neden olabilir.

Perküsyon seslerinin genellikle daha sonra gönderilmek üzere NOTE OFF olaylarına ihtiyacı yoktur. her NOT AÇIK. NOT KAPALI olayları gönder onay kutusunu seçin, yalnızca sentezleyici veya enstrüman bu ayarı destekler veya gerektirir.

Bank ve Program enstrümanlar için davul setini değiştirmek için kullanılır birkaç ayarı destekler. Birçok sentezleyici programı anlamıyor perküsyon kanalı için değişiklikler.

Otomatik kalıp modunda, ilk vuruş olarak Güçlü nota sesi çalınır her ölçüde, aynı ölçüdeki diğer herhangi bir vuruş kullanılarak çalınır. Zayıf nota sesi. 33 ve 34 sayısal değerleri GM2 ve XG sesleridir sırasıyla metronom tıklaması ve metronom zili için.

Kalıp Düzenleyici

Bu iletişim kutusunu kullanarak kalıpları düzenleyebilir, test edebilir ve seçebilirsiniz. Yaratmak yeni desenler, mevcut tanımı yeni bir adla kaydetmeniz yeterlidir. Desenler bir tablo ile temsil edilir. Tablodaki satırlar karşılık gelir perküsyon sesleri. Bir ses listesinden satırları kaldırabilir ve ekleyebilirsiniz. konfigürasyon iletişim kutusundaki cihaz ayarları tarafından tanımlanır. NS tablodaki sütun sayısı desenin uzunluğunu belirler, herhangi bir vuruş uzunluğunda 1 ile 99 arasında eleman.

Her tablo hücresi, N=1 ile 9 arasındaki değerleri kabul eder; Notaların MIDI hızı (N*127/9) veya sesi iptal etmek için 0. Geçerli değerler de değişkene karşılık gelen f (=forte) ve p (=piyano) şeklindedir. ana penceredeki döner düğmeler (Güçlü/Zayıf) tarafından tanımlanan hızlar. Hücre değerleri, klavye kullanılarak seçilebilir ve değiştirilebilir. veya fare. değiştirmeden önce oynatmayı durdurmaya gerek yoktur. hücreler.

Komut Referansı

Ana pencere

Dosya Menüsü

Dosya → Kalıpları İçe Aktar

Kalıp tanımlarını Drumstick Metronom'a aktarır

Dosya → Kalıpları Dışa Aktar

Drumstick Metronom'dan kalıp tanımlarını dışa aktarır

Dosya → Oynat/Durdur

Desen oynatmayı kontrol eder

Dosya → Çık

Drumstick Metronom'dan Çıkılır

Düzenleme Menüsü

Düzenle → Kalıpları Düzenle

Kalıp düzenleyiciyi açar

Ayarlar Menüsü

Ayarlar → Eylem Düğmelerini Göster

Eylem düğmelerini gösterir veya gizler. Her düğme için eşdeğer menü öğeleri vardır.

Ayarlar → Araç Çubuğunu Göster

Araç çubuğunu gösterir veya gizler. Her düğme için eşdeğer menü öğeleri vardır.

Ayarlar → Yapılandırma

Drumstick Metronom'u yapılandırır

Yardım Menüsü

Yardım → Yardım İçeriği

Yardım penceresini açar

Yardım → Dil

Mevcut çevirileri gösteren bir alt menüyü açar

Yardım → hakkında

Bu programın yaklaşık kutusunu açar

Yardım → Qt hakkında

Qt çerçevelerinin yaklaşık kutusunu açar

Harici kontrol

Drumstick Metronom, D-Bus arayüzü, System Realtime kullanılarak kontrol edilebilir ve Sisteme Özel MIDI mesajları.

D-Bus Arayüzü

Drumstick Metronom, D-Bus arayüzü aracılığıyla bazı işlevler sağlar. Yapabilirsiniz Drumstick Metronom'u "qdbusviewer" gibi kontrol etmek için D-Bus etkinleştirilmiş bir program veya komut satırı yardımcı programı "qdbus".

Örneğin, bu komutlar bir kabuk isteminden kullanılabilir:

$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8

Evrensel Sistem Özel mesajları

Drumstick Metronom, bazı Universal System Exclusive mesajlarını anlar. Çünkü cihaz kimliği henüz uygulanmadı, tanınan tüm mesajların yayın olarak işaretlenir (0x7F).

Gerçek Zamanlı Mesaj: Zaman İmza Değişikliği Mesajı

Biçim: 0xF0 0x7F 0x7F 0x03 Komut Uzunluğu Pay Payda ... 0xF7
                            0x02: Zaman İmzası Değişikliği 
                            0x42: Zaman İmzası Değişikliği Gecikmeli

Notlar: her iki komut da yalnızca sonraki zamanlanmış desenleri etkiler. komutu alıyor. Uzunluk en az 2'dir. Aşağıdaki ekstra baytlar Pay ve Payda dikkate alınmaz.

MMC Mesajları

Biçim: 0xF0 0x7F 0x7F 0x06 Komut 0xF7
                            0x01: Dur
                            0x02: Oynat
                            0x03: Ertelenmiş Oynatma

MIDI Sistemi Gerçek Zamanlı Arayüzü

için MIDI Sistem Gerçek Zamanlı mesajları üreten bir MIDI cihazı kullanabilirsiniz. Drumstick Metronom'u kontrol edin. Kabul edilen Sistem Gerçek Zamanlı mesajları şunlardır: Başlat (0xFA), Durdur (0xFC) ve Devam Et (0xFB).

Birçok ana MIDI klavyesi ve MIDI düğmesi aygıtı bu üçünü sağlar. MIDI taşıma kontrolleri. Harici MIDI cihazlarınızı bağlamanız gerekiyor MIDI (veya USB) kablolarını kullanarak bilgisayara bağlayın ve Drumstick Metronom'un giriş portuna karşılık gelen ALSA portu. Bu bağlantı elle veya gibi bir oturum yönetim yazılımı kullanılarak yapılmalıdır. QJackCtl.

Kredi ve Lisans

Program Telif Hakkı © 2005-2021 Pedro Lopez-Cabanillas

Belgeleme Telif Hakkı © 2005-2021 Pedro Lopez-Cabanillas

Bu program ücretsiz bir yazılımdır; yeniden dağıtabilir ve/veya değiştirebilirsiniz tarafından yayınlanan GNU Genel Kamu Lisansı koşulları altında Özgür Yazılım Vakfı; Lisansın 2. sürümü veya (isteğe bağlı olarak) herhangi bir sonraki sürüm.

Bu program faydalı olacağı ümidiyle dağıtılmıştır, ancak HİÇBİR GARANTİ OLMADAN; zımni garanti bile olmadan SATILABİLİRLİK veya BELİRLİ BİR AMACA UYGUNLUK. Bkz. Daha fazla ayrıntı için GNU Genel Kamu Lisansı.

GNU Genel Kamu Lisansının bir kopyasını almış olmalısınız Bu programla birlikte. Değilse, bkz. https://www.gnu.org/licenses

Kurulum

Drumstick Metronom nasıl edinilir

Burada en son sürümü bulabilirsiniz: Projenin dosyaları

Gereksinimler

Drumstick Metronom'u başarılı bir şekilde derlemek ve kullanmak için Qt 5 veya daha sonra, Drumstick 2, ALSA sürücüleri ve ALSA kitaplığı.

Ayrıca ses üretmek için bir MIDI sentezleyiciye ihtiyacınız var.

Derleme sistemi CMake 3.14 veya daha yenisini gerektirir.

ALSA kitaplığı, sürücüler ve yardımcı programlar şu adreste bulunabilir: ALSA ana sayfası.

Drumstick::ALSA, Qt kullanan ALSA sıralayıcı arabirimi etrafındaki bir C++ sarmalayıcıdır nesneler, deyimler ve stil. adresinde bulabilirsiniz. Drumstick ana sayfası.

Ayrıca Drumstick Metronom ana sayfasına bakın.

Derleme ve Kurulum

Drumstick Metronom'u sisteminize derlemek ve kurmak için, Drumstick Metronom dağıtımının temel dizininde aşağıdakiler bulunur:

% cmake .
% Yapmak
% sudo kurulum yap

Drumstick Metronom 'cmake' ve 'make' kullandığından, sorun yaşamamanız gerekir onu derlemek. Herhangi bir sorunla karşılaşırsanız, lütfen bunları yazar veya projenin hata izleme sistemi.

kmetronome-1.3.0/doc/PaxHeaders.13848/docs.qrc0000644000000000000000000000013214155347442015654 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/doc/docs.qrc0000644000175000001440000000041714155347442016442 0ustar00pedrousers00000000000000 cs/index.html de/index.html en/index.html es/index.html fr/index.html tr/index.html kmetronome-1.3.0/doc/PaxHeaders.13848/cs0000644000000000000000000000013214155347442014545 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/cs/0000755000175000001440000000000014155347442015406 5ustar00pedrousers00000000000000kmetronome-1.3.0/doc/cs/PaxHeaders.13848/index.md0000644000000000000000000000013214155347442016253 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/cs/index.md0000644000175000001440000003034214155347442017041 0ustar00pedrousers00000000000000% Index nápovědy # Úvod Drumstick Metronome je metronom založený na MIDI využívající sekvencer ALSA. Zamýšleným publikem jsou hudebníci a studenti hudby. Jako každá fyzická metronom je nástroj k udržení rytmu při hraní muzikálu nástroje. Místo digitálního zvuku používá MIDI, což umožňuje nízké využití procesoru a velmi přesné časování díky sekvenceru ALSA. To znamená, že potřebujete také MIDI syntezátor pro generování zvuku, protože program neprodukuje žádný zvuk sama o sobě. Nejlepších výsledků dosáhnete při použití hardwarového syntezátoru, ale můžete místo toho také použijte softwarové syntezátory. Požádejte o podporu, nahlaste problémy, chyby a požadavky na funkce sledovacímu systému na adrese [Stránka projektu SourceForge](https://sourceforge.net/p/kmetronome/support-requests/) # Použití Drumstick Metronome ## Funkce Potřebujete pouze upravit některé ovládací prvky, jako je posuvník tempa otáčecí pole beatů/taktů a volič délky taktu. Stiskněte tlačítko přehrávání začít. Podle potřeby použijte tlačítko stop. Tempo lze nastavit od 25 do 250 QPM pomocí posuvníku. Jednotky jsou čtvrt za minutu (jednotky Mälzel Metronome). Můžete také dvakrát kliknout přes hlavní okno otevřete dialogové okno, kde můžete zadat nový tempo přímo pomocí klávesnice. Na výběr je také combo box a zobrazit tempo pomocí italských hudebních jmen. Beats/Bar lze nastavit od 1 do 32 taktů. Toto jsou počty úderů na každém taktu nebo taktu a je to čitatel na taktu jako bylo by to notováno. Délka taktu je jmenovatelem specifikace taktu, a představuje dobu trvání každé doby. Změna této hodnoty ne změnit význam jednotek tempa. Vzor je rozevírací seznam pro výběr definice vzoru. Výchozí Hodnota "Automatic" znamená, že program generuje vzory pomocí noty nastavené v konfiguračním dialogu (Strong/Weak) a rytmus definice poskytnutá "údery/takty" a "délka taktu". Obsahuje také názvy uživatelsky definovaných vzorů. ## Začínáme Tento program používá protokol MIDI, takže je dobré mít některé základní pojmy o MIDI, abyste plně porozuměli konceptům za tím. Zde najdete dobrý úvod: [Co je MIDI](https://www.midi.org/midi-articles/categories/MIDI%201.0). Drumstick Metronome produkuje MIDI události. Pokud chcete slyšet události přeloženo do zvuků, z tohoto musíte připojit port MIDI OUT program do MIDI IN portu MIDI syntezátoru. Může to být buď a hardwarový MIDI syntezátor nebo softwarový. Pokud se jedná o externí hardwarový syntezátor, potřebujete také MIDI rozhraní s podporou ALSA nainstalovaný ve vašem počítači a MIDI kabel připojený k oběma MIDI rozhraní počítače a konektor MIDI IN syntezátoru. Pokud nemáte externí MIDI syntezátor, můžete jej stále používat program se softwarovým MIDI syntezátorem podporujícím sekvencer ALSA připojení, jako je [QSynth](https://qsynth.sourceforge.io). Začněte svůj softwarový syntezátor před Drumstick Metronome a poté proveďte připojení mezi těmito dvěma programy, buď v konfiguračním dialogu Drumstick Metronome nebo pomocí externího správce připojení jako [QJackCtl](https://qjackctl.sourceforge.io). Nezapomeňte si nainstalovat dobrý [Sound Font](https://en.wikipedia.org/wiki/SoundFont) do dialogu "Nastavení..." QSynth. ## Konfigurace Drumstick Metronome má omezené možnosti správy relací. Může si to pamatovat jedno připojení pro výstupní port ALSA a jedno připojení pro jeho vstupní port. Připojení jsou uložena při ukončení programu a zapamatována při spuštění. Tuto funkci nepotřebujete, pokud ji chcete vytvořit připojení ručně, pomocí aconnect nebo jiného ekvivalentního nástroje, popř pokud používáte externího správce relací, jako je patchbay obsažený v program [QJackCtl](https://qjackctl.sourceforge.io). Drumstick Metronome používá soubor definice nástroje ve formátu .INS, stejný formát jako Qtractor, TSE3, Cakewalk a Sonar. **Výstupní nástroj** rozevírací seznam umožňuje vybrat jeden ze standardních General MIDI, Bubnové mapy Roland GS a Yamaha XG. Můžete přidat další vytváření definic soubor s názvem `drums.ins` na `$HOME/.local/share/kmetronome.sourceforge.net`. The obsah rozbalovacích seznamů **Banka**, **Program**, **Slabá** a **Silná poznámka** závisí také na této definici. **Kanál** je obvykle 10, což znamená kanál perkusí obecného MIDI syntetizér. Musí to být číslo mezi 1 a 16. **Rozlišení** je počet tiků (časových jednotek) pro každou čtvrtletní notu. Rozsah hodnot od 48 do 960. Výchozí hodnota je 120. **Trvání poznámky** je délka (v počtu zaškrtnutí) časového rozpětí mezi událostí NOTE ON a odpovídající událostí NOTE OFF. Tato kontrola je povoleno pouze v případě, že je také povoleno **Odeslat události VYPNUTO POZNÁMKA**. Velmi nízké hodnoty může u některých syntezátorů způsobit ztlumená kliknutí. Zvuky perkusí obvykle nevyžadují odeslání událostí NOTE OFF každá POZNÁMKA ZAPNUTA. Zaškrtněte políčko **Posílat události NOTE OFF** pouze v případě, že jste syntetizér nebo nástroj toto nastavení podporuje nebo vyžaduje. **Banka** a **Program** slouží k výměně bicí sady pro nástroje podpora několika nastavení. Mnoho syntezátorů nerozumí programu změny pro kanál perkusí. V režimu **Automatic** pattern se jako první doba přehraje zvuk **Silná nota** v každém taktu, zatímco jakýkoli jiný takt ve stejném taktu se hraje pomocí zvuk **Slabá nota**. Číselné hodnoty 33 a 34 jsou zvuky GM2 a XG pro kliknutí metronomu a zvonek metronomu. ## Editor vzorů Pomocí tohoto dialogového okna můžete upravovat, testovat a vybírat vzory. Vytvořit nové vzory, jednoduše uložíte aktuální definici pod novým názvem. Vzory jsou reprezentovány tabulkou. Řádky v tabulce odpovídají zazní perkuse. Ze seznamu zvuků můžete odstranit a přidat řádky definované nastavením přístroje v konfiguračním dialogu. The počet sloupců v tabulce určuje délku vzoru, mezi 1 a 99 prvky libovolné délky taktu. Každá buňka tabulky přijímá hodnoty mezi N=1 a 9, což odpovídá MIDI dynamika (N*127/9) not, nebo 0 pro zrušení zvuku. Platný hodnoty jsou také f (=forte) a p (=piano) odpovídající proměnné rychlosti definované otočnými knoflíky (Strong/Weak) v hlavním okně. Hodnoty buněk lze vybrat a upravit pomocí klávesnice nebo myš. Před úpravou není třeba zastavovat přehrávání buňky. # Reference příkazů ## Hlavní okno ### Nabídka Soubor **Soubor → Importovat vzory** : Importuje definice vzoru do Drumstick Metronome **Soubor → Exportovat vzory** : Exportuje definice vzoru z Drumstick Metronome **Soubor → Přehrát/Zastavit** : Ovládá přehrávání vzoru **Soubor → Konec** : Ukončí Drumstick Metronome ### Nabídka Úpravy **Upravit → Upravit vzory** : Otevře editor vzorů ### Nabídka Nastavení **Nastavení → Zobrazit tlačítka akcí** : Zobrazí nebo skryje tlačítka akcí. Pro každé tlačítko existují ekvivalentní položky nabídky. **Nastavení → Zobrazit lištu** : Zobrazí nebo skryje panel nástrojů. Pro každé tlačítko existují ekvivalentní položky nabídky. **Nastavení → Konfigurace** : Konfiguruje metronom bicí paličky ### Nabídka Nápověda **Nápověda → Obsah nápovědy** : Otevře okno nápovědy **Nápověda → Jazyk** : Otevře podnabídku s dostupnými překlady **Nápověda → o** : Otevře okno o tomto programu **Nápověda → o Qt** : Otevře okno o rámcích Qt # Externí kontrola Drumstick Metronome lze ovládat pomocí rozhraní D-Bus, System Realtime a MIDI zprávy System Exclusive. ## Rozhraní D-Bus Drumstick Metronome poskytuje některé funkce prostřednictvím rozhraní D-Bus. Můžeš použijte program podporující D-Bus k ovládání Drumstick Metronome, jako je `qdbusviewer` nebo další nástroj příkazového řádku `qdbus`. Tyto příkazy lze například použít z příkazového řádku: $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150 $ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8 ## Zprávy Universal System Exclusive Drumstick Metronome rozumí některým zprávám Universal System Exclusive. Protože ID zařízení ještě není implementováno, musí být všechny rozpoznané zprávy být označen jako vysílání (0x7F). Zpráva v reálném čase: Zpráva o změně časového podpisu Formát: 0xF0 0x7F 0x7F 0x03 Délka příkazu Čitatel Jmenovatel ... 0xF7 0x02: Změna časového podpisu 0x42: Změna časového podpisu zpožděna Poznámky: oba příkazy ovlivňují pouze následující naplánované vzory po přijímání příkazu. Délka je alespoň 2. Následují další bajty Čitatel a jmenovatel jsou ignorovány. Zprávy MMC Formát: 0xF0 0x7F 0x7F 0x06 Příkaz 0xF7 0x01: Stop 0x02: Hrajte 0x03: Odložená hra ## Rozhraní systému MIDI v reálném čase Můžete použít MIDI zařízení generující zprávy MIDI System Realtime ovládání Drumstick Metronome. Systémové zprávy v reálném čase jsou přijímány: Start (0xFA), Zastavit (0xFC) a pokračovat (0xFB). Mnoho hlavních MIDI klávesnic a zařízení s MIDI tlačítky poskytuje tyto tři Ovládací prvky přenosu MIDI. Musíte připojit vaše externí MIDI zařízení k počítači pomocí MIDI (nebo USB) kabelů a připojte odpovídající port ALSA ke vstupnímu portu Drumstick Metronome. Toto spojení musí být provedeno ručně nebo pomocí softwaru pro správu relací, jako je QJackCtl. # Kredity a licence Copyright © 2005-2021 Pedro Lopez-Cabanillas Dokumentace Copyright © 2005-2021 Pedro Lopez-Cabanillas Tento program je svobodný software; můžete jej dále distribuovat a/nebo upravovat to za podmínek GNU General Public License, jak byla zveřejněna nadace pro svobodný software; buď verze 2 licence, nebo (podle vašeho uvážení) jakékoli pozdější verze. Tento program je distribuován v naději, že bude užitečný, ale BEZ JAKÉKOLI ZÁRUKY; dokonce bez předpokládané záruky OBCHODOVATELNOST nebo VHODNOST PRO KONKRÉTNÍ ÚČEL. Viz Další podrobnosti naleznete v GNU General Public License. Měli byste obdržet kopii GNU General Public License spolu s tímto programem. Pokud ne, přejděte na [https://www.gnu.org/licenses](https://www.gnu.org/licenses) # Instalace ## Jak získat Drumstick Metronome Zde najdete nejnovější verzi: [Soubory projektu](https://sourceforge.net/projects/kmetronome/files/kmetronome/) ## Požadavky Abyste mohli úspěšně zkompilovat a používat Drumstick Metronome, potřebujete Qt 5 resp později Drumstick 2, ovladače ALSA a knihovna ALSA. K produkci zvuku potřebujete také MIDI syntezátor. Systém sestavení vyžaduje [CMake](https://cmake.org) 3.14 nebo novější. Knihovnu ALSA, ovladače a nástroje naleznete na [Domovská stránka ALSA](https://www.alsa-project.org). Drumstick::ALSA je obal C++ kolem rozhraní sekvenceru ALSA využívající Qt předměty, idiomy a styl. Najdete ho na [Domovská stránka paličky](https://drumstick.sourceforge.io). Podívejte se také na [domovskou stránku Drumstick Metronome] (https://kmetronome.sourceforge.io/kmetronome.shtml). ## Kompilace a instalace Chcete-li zkompilovat a nainstalovat Drumstick Metronome na váš systém, zadejte následující v základním adresáři distribuce Drumstick Metronome: % cmake . % udělat % sudo make install Protože Drumstick Metronome používá `cmake` a `make`, neměli byste mít žádné potíže jeho sestavování. Pokud narazíte na problémy, nahlaste je na autora nebo projektu [systém sledování chyb](https://sourceforge.net/p/kmetronome/bugs/). kmetronome-1.3.0/doc/cs/PaxHeaders.13848/index.html0000644000000000000000000000013214155347442016617 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.361062943 30 ctime=1639304994.345062924 kmetronome-1.3.0/doc/cs/index.html0000644000175000001440000003741314155347442017413 0ustar00pedrousers00000000000000 Index nápovědy

Úvod

Drumstick Metronome je metronom založený na MIDI využívající sekvencer ALSA.

Zamýšleným publikem jsou hudebníci a studenti hudby. Jako každá fyzická metronom je nástroj k udržení rytmu při hraní muzikálu nástroje.

Místo digitálního zvuku používá MIDI, což umožňuje nízké využití procesoru a velmi přesné časování díky sekvenceru ALSA. To znamená, že potřebujete také MIDI syntezátor pro generování zvuku, protože program neprodukuje žádný zvuk sama o sobě. Nejlepších výsledků dosáhnete při použití hardwarového syntezátoru, ale můžete místo toho také použijte softwarové syntezátory.

Požádejte o podporu, nahlaste problémy, chyby a požadavky na funkce sledovacímu systému na adrese Stránka projektu SourceForge

Použití Drumstick Metronome

Funkce

Potřebujete pouze upravit některé ovládací prvky, jako je posuvník tempa otáčecí pole beatů/taktů a volič délky taktu. Stiskněte tlačítko přehrávání začít. Podle potřeby použijte tlačítko stop.

Tempo lze nastavit od 25 do 250 QPM pomocí posuvníku. Jednotky jsou čtvrt za minutu (jednotky Mälzel Metronome). Můžete také dvakrát kliknout přes hlavní okno otevřete dialogové okno, kde můžete zadat nový tempo přímo pomocí klávesnice. Na výběr je také combo box a zobrazit tempo pomocí italských hudebních jmen.

Beats/Bar lze nastavit od 1 do 32 taktů. Toto jsou počty úderů na každém taktu nebo taktu a je to čitatel na taktu jako bylo by to notováno.

Délka taktu je jmenovatelem specifikace taktu, a představuje dobu trvání každé doby. Změna této hodnoty ne změnit význam jednotek tempa.

Vzor je rozevírací seznam pro výběr definice vzoru. Výchozí Hodnota "Automatic" znamená, že program generuje vzory pomocí noty nastavené v konfiguračním dialogu (Strong/Weak) a rytmus definice poskytnutá "údery/takty" a "délka taktu". Obsahuje také názvy uživatelsky definovaných vzorů.

Začínáme

Tento program používá protokol MIDI, takže je dobré mít některé základní pojmy o MIDI, abyste plně porozuměli konceptům za tím. Zde najdete dobrý úvod: Co je MIDI.

Drumstick Metronome produkuje MIDI události. Pokud chcete slyšet události přeloženo do zvuků, z tohoto musíte připojit port MIDI OUT program do MIDI IN portu MIDI syntezátoru. Může to být buď a hardwarový MIDI syntezátor nebo softwarový. Pokud se jedná o externí hardwarový syntezátor, potřebujete také MIDI rozhraní s podporou ALSA nainstalovaný ve vašem počítači a MIDI kabel připojený k oběma MIDI rozhraní počítače a konektor MIDI IN syntezátoru.

Pokud nemáte externí MIDI syntezátor, můžete jej stále používat program se softwarovým MIDI syntezátorem podporujícím sekvencer ALSA připojení, jako je QSynth. Začněte svůj softwarový syntezátor před Drumstick Metronome a poté proveďte připojení mezi těmito dvěma programy, buď v konfiguračním dialogu Drumstick Metronome nebo pomocí externího správce připojení jako QJackCtl.

Nezapomeňte si nainstalovat dobrý Sound Font do dialogu "Nastavení..." QSynth.

Konfigurace

Drumstick Metronome má omezené možnosti správy relací. Může si to pamatovat jedno připojení pro výstupní port ALSA a jedno připojení pro jeho vstupní port. Připojení jsou uložena při ukončení programu a zapamatována při spuštění. Tuto funkci nepotřebujete, pokud ji chcete vytvořit připojení ručně, pomocí aconnect nebo jiného ekvivalentního nástroje, popř pokud používáte externího správce relací, jako je patchbay obsažený v program QJackCtl.

Drumstick Metronome používá soubor definice nástroje ve formátu .INS, stejný formát jako Qtractor, TSE3, Cakewalk a Sonar. Výstupní nástroj rozevírací seznam umožňuje vybrat jeden ze standardních General MIDI, Bubnové mapy Roland GS a Yamaha XG. Můžete přidat další vytváření definic soubor s názvem drums.ins na $HOME/.local/share/kmetronome.sourceforge.net. The obsah rozbalovacích seznamů Banka, Program, Slabá a Silná poznámka závisí také na této definici.

Kanál je obvykle 10, což znamená kanál perkusí obecného MIDI syntetizér. Musí to být číslo mezi 1 a 16.

Rozlišení je počet tiků (časových jednotek) pro každou čtvrtletní notu. Rozsah hodnot od 48 do 960. Výchozí hodnota je 120.

Trvání poznámky je délka (v počtu zaškrtnutí) časového rozpětí mezi událostí NOTE ON a odpovídající událostí NOTE OFF. Tato kontrola je povoleno pouze v případě, že je také povoleno Odeslat události VYPNUTO POZNÁMKA. Velmi nízké hodnoty může u některých syntezátorů způsobit ztlumená kliknutí.

Zvuky perkusí obvykle nevyžadují odeslání událostí NOTE OFF každá POZNÁMKA ZAPNUTA. Zaškrtněte políčko Posílat události NOTE OFF pouze v případě, že jste syntetizér nebo nástroj toto nastavení podporuje nebo vyžaduje.

Banka a Program slouží k výměně bicí sady pro nástroje podpora několika nastavení. Mnoho syntezátorů nerozumí programu změny pro kanál perkusí.

V režimu Automatic pattern se jako první doba přehraje zvuk Silná nota v každém taktu, zatímco jakýkoli jiný takt ve stejném taktu se hraje pomocí zvuk Slabá nota. Číselné hodnoty 33 a 34 jsou zvuky GM2 a XG pro kliknutí metronomu a zvonek metronomu.

Editor vzorů

Pomocí tohoto dialogového okna můžete upravovat, testovat a vybírat vzory. Vytvořit nové vzory, jednoduše uložíte aktuální definici pod novým názvem. Vzory jsou reprezentovány tabulkou. Řádky v tabulce odpovídají zazní perkuse. Ze seznamu zvuků můžete odstranit a přidat řádky definované nastavením přístroje v konfiguračním dialogu. The počet sloupců v tabulce určuje délku vzoru, mezi 1 a 99 prvky libovolné délky taktu.

Každá buňka tabulky přijímá hodnoty mezi N=1 a 9, což odpovídá MIDI dynamika (N*127/9) not, nebo 0 pro zrušení zvuku. Platný hodnoty jsou také f (=forte) a p (=piano) odpovídající proměnné rychlosti definované otočnými knoflíky (Strong/Weak) v hlavním okně. Hodnoty buněk lze vybrat a upravit pomocí klávesnice nebo myš. Před úpravou není třeba zastavovat přehrávání buňky.

Reference příkazů

Hlavní okno

Nabídka Soubor

Soubor → Importovat vzory

Importuje definice vzoru do Drumstick Metronome

Soubor → Exportovat vzory

Exportuje definice vzoru z Drumstick Metronome

Soubor → Přehrát/Zastavit

Ovládá přehrávání vzoru

Soubor → Konec

Ukončí Drumstick Metronome

Nabídka Úpravy

Upravit → Upravit vzory

Otevře editor vzorů

Nabídka Nastavení

Nastavení → Zobrazit tlačítka akcí

Zobrazí nebo skryje tlačítka akcí. Pro každé tlačítko existují ekvivalentní položky nabídky.

Nastavení → Zobrazit lištu

Zobrazí nebo skryje panel nástrojů. Pro každé tlačítko existují ekvivalentní položky nabídky.

Nastavení → Konfigurace

Konfiguruje metronom bicí paličky

Nabídka Nápověda

Nápověda → Obsah nápovědy

Otevře okno nápovědy

Nápověda → Jazyk

Otevře podnabídku s dostupnými překlady

Nápověda → o

Otevře okno o tomto programu

Nápověda → o Qt

Otevře okno o rámcích Qt

Externí kontrola

Drumstick Metronome lze ovládat pomocí rozhraní D-Bus, System Realtime a MIDI zprávy System Exclusive.

Rozhraní D-Bus

Drumstick Metronome poskytuje některé funkce prostřednictvím rozhraní D-Bus. Můžeš použijte program podporující D-Bus k ovládání Drumstick Metronome, jako je qdbusviewer nebo další nástroj příkazového řádku qdbus.

Tyto příkazy lze například použít z příkazového řádku:

$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.play
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.stop
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.cont
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTempo 150
$ qdbus net.sourceforge.kmetronome-23324 / net.sourceforge.kmetronome.setTimeSignature 3 8

Zprávy Universal System Exclusive

Drumstick Metronome rozumí některým zprávám Universal System Exclusive. Protože ID zařízení ještě není implementováno, musí být všechny rozpoznané zprávy být označen jako vysílání (0x7F).

Zpráva v reálném čase: Zpráva o změně časového podpisu

Formát: 0xF0 0x7F 0x7F 0x03 Délka příkazu Čitatel Jmenovatel ... 0xF7
                            0x02: Změna časového podpisu 
                            0x42: Změna časového podpisu zpožděna

Poznámky: oba příkazy ovlivňují pouze následující naplánované vzory po přijímání příkazu. Délka je alespoň 2. Následují další bajty Čitatel a jmenovatel jsou ignorovány.

Zprávy MMC

Formát: 0xF0 0x7F 0x7F 0x06 Příkaz 0xF7
                            0x01: Stop
                            0x02: Hrajte
                            0x03: Odložená hra

Rozhraní systému MIDI v reálném čase

Můžete použít MIDI zařízení generující zprávy MIDI System Realtime ovládání Drumstick Metronome. Systémové zprávy v reálném čase jsou přijímány: Start (0xFA), Zastavit (0xFC) a pokračovat (0xFB).

Mnoho hlavních MIDI klávesnic a zařízení s MIDI tlačítky poskytuje tyto tři Ovládací prvky přenosu MIDI. Musíte připojit vaše externí MIDI zařízení k počítači pomocí MIDI (nebo USB) kabelů a připojte odpovídající port ALSA ke vstupnímu portu Drumstick Metronome. Toto spojení musí být provedeno ručně nebo pomocí softwaru pro správu relací, jako je QJackCtl.

Kredity a licence

Copyright © 2005-2021 Pedro Lopez-Cabanillas

Dokumentace Copyright © 2005-2021 Pedro Lopez-Cabanillas

Tento program je svobodný software; můžete jej dále distribuovat a/nebo upravovat to za podmínek GNU General Public License, jak byla zveřejněna nadace pro svobodný software; buď verze 2 licence, nebo (podle vašeho uvážení) jakékoli pozdější verze.

Tento program je distribuován v naději, že bude užitečný, ale BEZ JAKÉKOLI ZÁRUKY; dokonce bez předpokládané záruky OBCHODOVATELNOST nebo VHODNOST PRO KONKRÉTNÍ ÚČEL. Viz Další podrobnosti naleznete v GNU General Public License.

Měli byste obdržet kopii GNU General Public License spolu s tímto programem. Pokud ne, přejděte na https://www.gnu.org/licenses

Instalace

Jak získat Drumstick Metronome

Zde najdete nejnovější verzi: Soubory projektu

Požadavky

Abyste mohli úspěšně zkompilovat a používat Drumstick Metronome, potřebujete Qt 5 resp později Drumstick 2, ovladače ALSA a knihovna ALSA.

K produkci zvuku potřebujete také MIDI syntezátor.

Systém sestavení vyžaduje CMake 3.14 nebo novější.

Knihovnu ALSA, ovladače a nástroje naleznete na Domovská stránka ALSA.

Drumstick::ALSA je obal C++ kolem rozhraní sekvenceru ALSA využívající Qt předměty, idiomy a styl. Najdete ho na Domovská stránka paličky.

Podívejte se také na [domovskou stránku Drumstick Metronome] (https://kmetronome.sourceforge.io/kmetronome.shtml).

Kompilace a instalace

Chcete-li zkompilovat a nainstalovat Drumstick Metronome na váš systém, zadejte následující v základním adresáři distribuce Drumstick Metronome:

% cmake .
% udělat
% sudo make install

Protože Drumstick Metronome používá cmake a make, neměli byste mít žádné potíže jeho sestavování. Pokud narazíte na problémy, nahlaste je na autora nebo projektu systém sledování chyb.

kmetronome-1.3.0/PaxHeaders.13848/data0000644000000000000000000000013214155347442014304 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/data/0000755000175000001440000000000014155347442015145 5ustar00pedrousers00000000000000kmetronome-1.3.0/data/PaxHeaders.13848/CMakeLists.txt0000644000000000000000000000013214155347442017121 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/data/CMakeLists.txt0000644000175000001440000000014414155347442017704 0ustar00pedrousers00000000000000install( FILES drums.ins samples.pat DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/kmetronome ) kmetronome-1.3.0/data/PaxHeaders.13848/datafiles.qrc0000644000000000000000000000013214155347442017024 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/data/datafiles.qrc0000644000175000001440000000017514155347442017613 0ustar00pedrousers00000000000000 drums.ins samples.pat kmetronome-1.3.0/data/PaxHeaders.13848/samples.pat0000644000000000000000000000013214155347442016533 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/data/samples.pat0000644000175000001440000000410614155347442017320 0ustar00pedrousers00000000000000[bossa1] 36=8,,,5,8,,,6,8,,,6,8,,,8 37=6,,7,,,6,,,,7,,,,6,, 42=7,6,6,6,6,6,5,6,5,6,5,6,5,6,6,6 67=,,,5,5,,,,,,,5,6,,, 68=6,,,,,,5,5,,,,,,,4,4 Beats=16 Figure=16 [bossa2] 36=,,,6,8,,,6,8,,,6,8,,,6 37=,,7,,,6,,,,6,,7,,7,, 42=6,5,6,6,5,5,6,6,6,6,5,6,5,6,5,5 67=,,6,,,,,,,5,,5,,,, 68=5,,,,,5,,5,,,,,5,,5, Beats=16 Figure=16 [calypso] 36=8,,,,,,,,8,,,,8,,, 42=,,7,,7,,,,,,7,,7,,7, 43=,,,,,,,,,,,,7,,, 44=7,,,,,,7,,7,,,,,,, 56=,,,,8,,,8,,,,,8,,,8 60=,,,8,8,,,,,,,8,,,, 62=8,,,,,,8,,8,,,,8,,, 64=,,,,,,,,,,,,,,8, 75=6,,,,,,,6,,,,,6,,, Beats=16 Figure=16 [salsa1] 35=7,,,5,7,,,5,7,,,5,7,,,5 38=,,,,,,,,,,,,,,6, 42=7,4,5,6,7,4,5,6,7,4,5,6,7,7,5,6 70=8,5,5,6,8,5,5,6,8,5,5,6,8,5,5,6 Beats=16 Figure=16 [salsa2] 35=7,,,5,7,,,5,7,,,5,7,,,5 38=,,,,,,,,,,,,,,6, 41=,,,,,,3,,,,,,,,3, 42=7,7,5,6,7,4,5,6,7,4,5,6,7,4,5,6 45=3,,,,2,,,,3,,,,2,,, 48=,,,4,,,,,,,,4,,,, 56=3,,5,,3,,5,,,3,,5,4,,5, 62=7,3,,,7,,,,,8,,6,7,,, 63=,,,6,,,8,,,,,,,,8, 69=3,6,7,2,3,6,7,2,3,6,7,2,3,6,7,2 70=8,5,5,6,8,5,5,6,8,5,5,6,8,5,5,6 Beats=16 Figure=16 [jamaican] Beats=16 Figure=16 36=,,,,,,,,9,,,,,,, 37=,,,5,,,,,9,,,,,,, 42=6,,,,6,,,6,9,,,6,8,,, 46=,,,,,,,,,,,,,,,5 62=,,,,,,,,,,,6,,,, 64=,,,,,,,,,,,,5,,,5 69=,,,,2,,,2,,,,,2,,,2 [waltz 3/4] 36=f,, 38=,p,p 59=f,, Beats=3 Figure=4 [7/4 2-2-3] 34=f,,p,,p,, 33=,p,,p,,p,p Beats=7 Figure=4 [7/4 3-2-2] 34=f,,,p,,p, 33=,p,p,,p,,p Beats=7 Figure=4 [rock1] 36=f,,p,,,,p,,f,,p,,,,p, 38=,,,,f,,,,,,,,f,,, 42=f,,,,f,,p,,f,,,,f,,p, 46=,,p,,,,,,,,p,,,p,, Beats=16 Figure=16 [rock2] 36=f,,p,,,,p,,f,,p,,,,p, 38=,,,,f,,,,,,,,f,,, 42=f,p,p,p,f,p,p,p,f,p,p,p,f,p,p,p Beats=16 Figure=16 [rock3] 36=f,,p,,,,p,,f,,p,,,,p, 38=,,,,f,,,,,,,,f,,, 42=f,p,p,p,f,p,p,p,f,p,p,p,f,p,p,p 51=f,,p,,f,,p,,f,,p,,f,,p, Beats=16 Figure=16 [rock4] 36=f,,,,,,f,,,,p,,,,p, 37=,,,,f,,,,,,,,f,,, 42=f,,p,,f,,p,,f,,p,,f,,p, Beats=16 Figure=16 [ballad] 36=p,,,,,,,p,p,,,,,,, 38=,,,,p,,,,,,,,p,,, 42=p,,p,,p,,p,,p,,p,,p,,p, Beats=16 Figure=16 [pop1] 36=p,,,,,,,,p,,,,,,p, 38=,,,,f,,p,,,,,,f,,, 42=p,,p,,f,,p,,p,,p,,f,,p, Beats=16 Figure=16 [pop2] 36=f,,,,,,,,f,,f,,,,, 38=,,,,f,,,f,,,,,f,,, 42=f,,,,f,,,,f,,,,f,,, Beats=16 Figure=16 kmetronome-1.3.0/data/PaxHeaders.13848/drums.ins0000644000000000000000000000013214155347442016226 xustar0030 mtime=1639304994.341062919 30 atime=1639304994.361062943 30 ctime=1639304994.341062919 kmetronome-1.3.0/data/drums.ins0000644000175000001440000005110314155347442017012 0ustar00pedrousers00000000000000; ---------------------------------------------------------------------- .Patch Names [General MIDI Drums] 0=General MIDI Drums [Roland GS Drumsets] 0=Standard 8=Room 16=Power 24=Electronic 25=TR-808 32=Jazz 40=Brush 48=Orchestra 56=SFX [XG Drum Kits] 0=1 Standard Kit 1=2 Standard Kit2 8=9 Room Kit 16=17 Rock Kit 24=25 Electro Kit 25=26 Analog Kit 32=33 Jazz Kit 40=41 Brush Kit 48=49 Classic Kit [XG SFX Kits] 0=1 SFX 1 1=2 SFX 2 [XG Set channel to rhythm part] 0=XG ; ---------------------------------------------------------------------- .Note Names [General MIDI Drums] 35=Acoustic Bass Drum 36=Bass Drum 1 37=Side Stick 38=Acoustic Snare 39=Hand Clap 40=Electric Snare 41=Low Floor Tom 42=Close Hi-Hat 43=High Floor Tom 44=Pedal Hi-Hat 45=Low Tom 46=Open Hi-Hat 47=Low-Mid Tom 48=Hi-Mid Tom 49=Crash Cymbal 1 50=High Tom 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Bell 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibraslap 59=Ride Cymbal 2 60=Hi Bongo 61=Low Bongo 62=Mute Hi Conga 63=Open Hi Conga 64=Low Conga 65=High Timbale 66=Low Timbale 67=High Agogo 68=Low Agogo 69=Cabasa 70=Maracas 71=Short Whistle 72=Long Whistle 73=Short Guiro 74=Long Guiro 75=Claves 76=Hi Wood Block 77=Low Wood Block 78=Mute Cuica 79=Open Cuica 80=Mute Triangle 81=Open Triangle [Roland GS Brush Set] BasedOn=Roland GS Standard Set 27=High Q 28=Slap 29=Scratch Push 30=Scratch Pull 31=Sticks 32=Square Click 33=Metronome Click 34=Metronome Bell 35=Jazz BD 2 36=Jazz BD 1 37=Side Stick 38=Brush Tap 39=Brush Slap 40=Brush Swirl 41=Low Tom 2 42=Closed Hi-Hat 43=Low Tom 1 44=Pedal Hi-Hat 45=Mid Tom 2 46=Open Hi-Hat 47=Mid Tom 1 48=High Tom 2 49=Crash Cymbal 1 50=High Tom 1 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Bell 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibra-slap 59=Ride Cymbal 2 60=High Bongo 61=Low Bongo 62=Mute High Conga 63=Open High Conga 64=Low Conga 65=High Timbale 66=Low Timbale 67=High Agogo 68=Low Agogo 69=Cabasa 70=Maracas 71=Short Hi Whistle 72=Long Low Whistle 73=Short Guiro 74=Long Guiro 75=Claves 76=High Wood Block 77=Low Wood Block 78=Mute Cuica 79=Open Cuica 80=Mute Triangle 81=Open Triangle 82=Shaker 83=Jingle Bell 84=Belltree 85=Castanets 86=Mute Surdo 87=Open Surdo [Roland GS Electronic Set] BasedOn=Roland GS Standard Set 27=High Q 28=Slap 29=Scratch Push 30=Scratch Pull 31=Sticks 32=Square Click 33=Metronome Click 34=Metronome Bell 35=Kick Drum 2 36=Elec BD 37=Side Stick 38=Elec SD 39=Hand Clap 40=Gated SD 41=Elec Low Tom 2 42=Closed Hi-Hat 43=Elec Low Tom 1 44=Pedal Hi-Hat 45=Elec Mid Tom 2 46=Open Hi-Hat 47=Elec Mid Tom 1 48=Elec Hi Tom 2 49=Crash Cymbal 1 50=Elec Hi Tom 1 51=Ride Cymbal 1 52=Reverse Cymbal 53=Ride Bell 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibra-slap 59=Ride Cymbal 2 60=High Bongo 61=Low Bongo 62=Mute High Conga 63=Open High Conga 64=Low Conga 65=High Timbale 66=Low Timbale 67=High Agogo 68=Low Agogo 69=Cabasa 70=Maracas 71=Short Hi Whistle 72=Long Low Whistle 73=Short Guiro 74=Long Guiro 75=Claves 76=High Wood Block 77=Low Wood Block 78=Mute Cuica 79=Open Cuica 80=Mute Triangle 81=Open Triangle 82=Shaker 83=Jingle Bell 84=Belltree 85=Castanets 86=Mute Surdo 87=Open Surdo [Roland GS Jazz Set] BasedOn=Roland GS Standard Set 27=High Q 28=Slap 29=Scratch Push 30=Scratch Pull 31=Sticks 32=Square Click 33=Metronome Click 34=Metronome Bell 35=Jazz BD 2 36=Jazz BD 1 37=Side Stick 38=Snare Drum 1 39=Hand Clap 40=Snare Drum 2 41=Low Tom 2 42=Closed Hi-Hat 43=Low Tom 1 44=Pedal Hi-Hat 45=Mid Tom 2 46=Open Hi-Hat 47=Mid Tom 1 48=High Tom 2 49=Crash Cymbal 1 50=High Tom 1 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Bell 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibra-slap 59=Ride Cymbal 2 60=High Bongo 61=Low Bongo 62=Mute High Conga 63=Open High Conga 64=Low Conga 65=High Timbale 66=Low Timbale 67=High Agogo 68=Low Agogo 69=Cabasa 70=Maracas 71=Short Hi Whistle 72=Long Low Whistle 73=Short Guiro 74=Long Guiro 75=Claves 76=High Wood Block 77=Low Wood Block 78=Mute Cuica 79=Open Cuica 80=Mute Triangle 81=Open Triangle 82=Shaker 83=Jingle Bell 84=Belltree 85=Castanets 86=Mute Surdo 87=Open Surdo [Roland GS Orchestra Set] BasedOn=Roland GS Standard Set 27=Closed Hi-Hat 28=Pedal Hi-Hat 29=Open Hi-Hat 30=Ride Cymbal 31=Sticks 32=Square Click 33=Metronome Click 34=Metronome Bell 35=Concert BD 2 36=Concert BD 1 37=Side Stick 38=Concert SD 39=Castanets 40=Concert SD 41=Timpani F 42=Timpani F# 43=Timpani G 44=Timpani G# 45=Timpani A 46=Timpani A# 47=Timpani B 48=Timpani c 49=Timpani c# 50=Timpani d 51=Timpani d# 52=Timpani e 53=Timpani f 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Concert Cymbal 2 58=Vibra-slap 59=Concert Cymbal 1 60=High Bongo 61=Low Bongo 62=Mute High Conga 63=Open High Conga 64=Low Conga 65=High Timbale 66=Low Timbale 67=High Agogo 68=Low Agogo 69=Cabasa 70=Maracas 71=Short Hi Whistle 72=Long Low Whistle 73=Short Guiro 74=Long Guiro 75=Claves 76=High Wood Block 77=Low Wood Block 78=Mute Cuica 79=Open Cuica 80=Mute Triangle 81=Open Triangle 82=Shaker 83=Jingle Bell 84=Belltree 85=Castanets 86=Mute Surdo 87=Open Surdo 88=Applause [Roland GS Power Set] BasedOn=Roland GS Standard Set 27=High Q 28=Slap 29=Scratch Push 30=Scratch Pull 31=Sticks 32=Square Click 33=Metronome Click 34=Metronome Bell 35=Kick Drum 2 36=MONDO Kick 37=Side Stick 38=Gated SD 39=Hand Clap 40=Snare Drum 2 41=Room Low Tom 2 42=Closed Hi-Hat 43=Room Low Tom 1 44=Pedal Hi-Hat 45=Room Mid Tom 2 46=Open Hi-Hat 47=Room Mid Tom 1 48=Room Hi Tom 2 49=Crash Cymbal 1 50=Room Hi Tom 1 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Bell 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibra-slap 59=Ride Cymbal 2 60=High Bongo 61=Low Bongo 62=Mute High Conga 63=Open High Conga 64=Low Conga 65=High Timbale 66=Low Timbale 67=High Agogo 68=Low Agogo 69=Cabasa 70=Maracas 71=Short Hi Whistle 72=Long Low Whistle 73=Short Guiro 74=Long Guiro 75=Claves 76=High Wood Block 77=Low Wood Block 78=Mute Cuica 79=Open Cuica 80=Mute Triangle 81=Open Triangle 82=Shaker 83=Jingle Bell 84=Belltree 85=Castanets 86=Mute Surdo 87=Open Surdo [Roland GS Room Set] BasedOn=Roland GS Standard Set 27=High Q 28=Slap 29=Scratch Push 30=Scratch Pull 31=Sticks 32=Square Click 33=Metronome Click 34=Metronome Bell 35=Kick Drum 2 36=Kick Drum 1 37=Side Stick 38=Snare Drum 1 39=Hand Clap 40=Snare Drum 2 41=Room Low Tom 2 42=Closed Hi-Hat 43=Room Low Tom 1 44=Pedal Hi-Hat 45=Room Mid Tom 2 46=Open Hi-Hat 47=Room Mid Tom 1 48=Room Hi Tom 2 49=Crash Cymbal 1 50=Room Hi Tom 1 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Bell 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibra-slap 59=Ride Cymbal 2 60=High Bongo 61=Low Bongo 62=Mute High Conga 63=Open High Conga 64=Low Conga 65=High Timbale 66=Low Timbale 67=High Agogo 68=Low Agogo 69=Cabasa 70=Maracas 71=Short Hi Whistle 72=Long Low Whistle 73=Short Guiro 74=Long Guiro 75=Claves 76=High Wood Block 77=Low Wood Block 78=Mute Cuica 79=Open Cuica 80=Mute Triangle 81=Open Triangle 82=Shaker 83=Jingle Bell 84=Belltree 85=Castanets 86=Mute Surdo 87=Open Surdo [Roland GS SFX Set] 39=High Q 40=Slap 41=Scratch Push 42=Scratch Pull 43=Sticks 44=Square Click 45=Metronome Click 46=Metronome Bell 47=Guitar Sliding Finger 48=Guitar Cutting Noise (Down) 49=Guitar Cutting Noise (Up) 50=String Slap of Double Bass 51=Flute Key click 52=Laughing 53=Screaming 54=Punch 55=Heart Beat 56=Footsteps 1 57=Footsteps 2 58=Applause 59=Door Creaking 60=Door 61=Scratch 62=Windchime 63=Car-Engine 64=Car-Stop 65=Car-Pass 66=Car-Crash 67=Siren 68=Train 69=Jetplane 70=Helicopter 71=Starship 72=Gunshot 73=Machine Gun 74=Lasergun 75=Explosion 76=Dog 77=Horse-Gallop 78=Birds 79=Rain 80=Thunder 81=Wind 82=Seashore 83=Stream 84=Bubble [Roland GS Standard Set] 27=High Q 28=Slap 29=Scratch Push 30=Scratch Pull 31=Sticks 32=Square Click 33=Metronome Click 34=Metronome Bell 35=Kick Drum 2 36=Kick Drum 1 37=Side Stick 38=Snare Drum 1 39=Hand Clap 40=Snare Drum 2 41=Low Tom 2 42=Closed Hi-Hat 43=Low Tom 1 44=Pedal Hi-Hat 45=Mid Tom 2 46=Open Hi-Hat 47=Mid Tom 1 48=High Tom 2 49=Crash Cymbal 1 50=High Tom 1 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Bell 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibra-slap 59=Ride Cymbal 2 60=High Bongo 61=Low Bongo 62=Mute High Conga 63=Open High Conga 64=Low Conga 65=High Timbale 66=Low Timbale 67=High Agogo 68=Low Agogo 69=Cabasa 70=Maracas 71=Short Hi Whistle 72=Long Low Whistle 73=Short Guiro 74=Long Guiro 75=Claves 76=High Wood Block 77=Low Wood Block 78=Mute Cuica 79=Open Cuica 80=Mute Triangle 81=Open Triangle 82=Shaker 83=Jingle Bell 84=Belltree 85=Castanets 86=Mute Surdo 87=Open Surdo [Roland GS TR-808 Set] BasedOn=Roland GS Standard Set 27=High Q 28=Slap 29=Scratch Push 30=Scratch Pull 31=Sticks 32=Square Click 33=Metronome Click 34=Metronome Bell 35=Kick Drum 2 36=808 Bass Drum 37=808 Rim Shot 38=808 Snare Drum 39=Hand Clap 40=Snare Drum 2 41=808 Low Tom 2 42=808 CHH 43=808 Low Tom 1 44=808 CHH 45=808 Mid Tom 2 46=808 OHH 47=808 Mid Tom 1 48=808 Hi Tom 2 49=808 Cymbal 50=808 Hi Tom 1 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Bell 54=Tambourine 55=Splash Cymbal 56=808 Cowbell 57=Crash Cymbal 2 58=Vibra-slap 59=Ride Cymbal 2 60=High Bongo 61=Low Bongo 62=808 High Conga 63=808 Mid Conga 64=808 Low Conga 65=High Timbale 66=Low Timbale 67=High Agogo 68=Low Agogo 69=Cabasa 70=808 Maracas 71=Short Hi Whistle 72=Long Low Whistle 73=Short Guiro 74=Long Guiro 75=808 Claves 76=High Wood Block 77=Low Wood Block 78=Mute Cuica 79=Open Cuica 80=Mute Triangle 81=Open Triangle 82=Shaker 83=Jingle Bell 84=Belltree 85=Castanets 86=Mute Surdo 87=Open Surdo [XG Analog Kit] BasedOn=XG Standard Kit 13=Surdo Mute 14=Surdo Open 15=Hi Q 16=Whip Slap 17=Scratch Push 18=Scratch Pull 19=Finger Snap 20=Click Noise 21=Metronome Click 22=Metronome Bell 23=Seq Click L 24=Seq Click H 25=Brush Tap 26=Brush Swirl L 27=Brush Slap 28=Reverse Cymbal 29=Snare Roll 30=Hi Q 31=SD Rock H 32=Sticks 33=Bass Drum M 34=Open Rim Shot 35=BD Analog L 36=BD Analog H 37=Analog Side Stick 38=Analog Snare L 39=Hand Clap 40=Analog Snare H 41=Analog Tom 1 42=Analog HH Closed 1 43=Analog Tom 2 44=Analog HH Closed 2 45=Analog Tom 3 46=Analog HH Open 47=Analog Tom 4 48=Analog Tom 5 49=Analog Cymbal 50=Analog Tom 6 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Cymbal Cup 54=Tambourine 55=Splash Cymbal 56=Analog Cowbell 57=Crash Cymbal 2 58=Vibraslap 59=Ride Cymbal 2 60=Bongo H 61=Bongo L 62=Analog Conga H 63=Analog Conga M 64=Analog Conga L 65=Timbale H 66=Timbale L 67=Agogo H 68=Agogo L 69=Cabasa 70=Analog Maracas 71=Samba Whistle H 72=Samba Whistle L 73=Guiro Short 74=Guiro Long 75=Analog Claves 76=Wood Block H 77=Wood Block L 78=Scratch Push 79=Scratch Pull 80=Triangle Mute 81=Triangle Open 82=Shaker 83=Jingle Bell 84=Bell Tree [XG Brush Kit] BasedOn=XG Standard Kit 13=Surdo Mute 14=Surdo Open 15=Hi Q 16=Whip Slap 17=Scratch Push 18=Scratch Pull 19=Finger Snap 20=Click Noise 21=Metronome Click 22=Metronome Bell 23=Seq Click L 24=Seq Click H 25=Brush Tap 26=Brush Swirl L 27=Brush Slap 28=Brush Swirl H 29=Snare Roll 30=Castanet 31=Brush Slap L 32=Sticks 33=Bass Drum L 34=Open Rim Shot 35=Bass Drum M 36=BD Soft 37=Side Stick 38=Brush Slap 39=Hand Clap 40=Brush Tap 41=Brush Tom 1 42=Hi-Hat Closed 43=Brush Tom 2 44=Hi-Hat Pedal 45=Brush Tom 3 46=Hi-Hat Open 47=Brush Tom 4 48=Brush Tom 5 49=Crash Cymbal 1 50=Brush Tom 6 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Cymbal Cup 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibraslap 59=Ride Cymbal 2 60=Bongo H 61=Bongo L 62=Conga H Mute 63=Conga H Open 64=Conga L 65=Timbale H 66=Timbale L 67=Agogo H 68=Agogo L 69=Cabasa 70=Maracas 71=Samba Whistle H 72=Samba Whistle L 73=Guiro Short 74=Guiro Long 75=Claves 76=Wood Block H 77=Wood Block L 78=Cuica Mute 79=Cuica Open 80=Triangle Mute 81=Triangle Open 82=Shaker 83=Jingle Bell 84=Bell Tree [XG Classic Kit] BasedOn=XG Standard Kit 13=Surdo Mute 14=Surdo Open 15=Hi Q 16=Whip Slap 17=Scratch Push 18=Scratch Pull 19=Finger Snap 20=Click Noise 21=Metronome Click 22=Metronome Bell 23=Seq Click L 24=Seq Click H 25=Brush Tap 26=Brush Swirl L 27=Brush Slap 28=Brush Swirl H 29=Snare Roll 30=Castanet 31=Snare L 32=Sticks 33=Bass Drum L 34=Open Rim Shot 35=Bass Drum M 36=Gran Casa 37=Side Stick 38=Snare M 39=Hand Clap 40=Snare H 41=Jazz Tom 1 42=Hi-Hat Closed 43=Jazz Tom 2 44=Hi-Hat Pedal 45=Jazz Tom 3 46=Hi-Hat Open 47=Jazz Tom 4 48=Jazz Tom 5 49=Hand Cym.Open L 50=Jazz Tom 6 51=Hand Cym.Closed L 52=Chinese Cymbal 53=Ride Cymbal Cup 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Hand Cym.Open H 58=Vibraslap 59=Hand Cym.Closed H 60=Bongo H 61=Bongo L 62=Conga H Mute 63=Conga H Open 64=Conga L 65=Timbale H 66=Timbale L 67=Agogo H 68=Agogo L 69=Cabasa 70=Maracas 71=Samba Whistle H 72=Samba Whistle L 73=Guiro Short 74=Guiro Long 75=Claves 76=Wood Block H 77=Wood Block L 78=Cuica Mute 79=Cuica Open 80=Triangle Mute 81=Triangle Open 82=Shaker 83=Jingle Bell 84=Bell Tree [XG Electro Kit] BasedOn=XG Standard Kit 13=Surdo Mute 14=Surdo Open 15=Hi Q 16=Whip Slap 17=Scratch Push 18=Scratch Pull 19=Finger Snap 20=Click Noise 21=Metronome Click 22=Metronome Bell 23=Seq Click L 24=Seq Click H 25=Brush Tap 26=Brush Swirl L 27=Brush Slap 28=Reverse Cymbal 29=Snare Roll 30=Hi Q 31=Snare M 32=Sticks 33=Bass Drum H 4 34=Open Rim Shot 35=BD Rock 36=BD Gate 37=Side Stick 38=SD Rock L 39=Hand Clap 40=SD Rock H 41=E Tom 1 42=Hi-Hat Closed 43=E Tom 2 44=Hi-Hat Pedal 45=E Tom 3 46=Hi-Hat Open 47=E Tom 4 48=E Tom 5 49=Crash Cymbal 1 50=E Tom 6 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Cymbal Cup 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibraslap 59=Ride Cymbal 2 60=Bongo H 61=Bongo L 62=Conga H Mute 63=Conga H Open 64=Conga L 65=Timbale H 66=Timbale L 67=Agogo H 68=Agogo L 69=Cabasa 70=Maracas 71=Samba Whistle H 72=Samba Whistle L 73=Guiro Short 74=Guiro Long 75=Claves 76=Wood Block H 77=Wood Block L 78=Scratch Push 79=Scratch Pull 80=Triangle Mute 81=Triangle Open 82=Shaker 83=Jingle Bell 84=Bell Tree [XG Jazz Kit] BasedOn=XG Standard Kit 13=Surdo Mute 14=Surdo Open 15=Hi Q 16=Whip Slap 17=Scratch Push 18=Scratch Pull 19=Finger Snap 20=Click Noise 21=Metronome Click 22=Metronome Bell 23=Seq Click L 24=Seq Click H 25=Brush Tap 26=Brush Swirl L 27=Brush Slap 28=Brush Swirl H 29=Snare Roll 30=Castanet 31=Snare L 32=Sticks 33=Bass Drum L 34=Open Rim Shot 35=Bass Drum M 36=BD Jazz 37=Side Stick 38=Snare M 39=Hand Clap 40=Snare H 41=Jazz Tom 1 42=Hi-Hat Closed 43=Jazz Tom 2 44=Hi-Hat Pedal 45=Jazz Tom 3 46=Hi-Hat Open 47=Jazz Tom 4 48=Jazz Tom 5 49=Crash Cymbal 1 50=Jazz Tom 6 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Cymbal Cup 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibraslap 59=Ride Cymbal 2 60=Bongo H 61=Bongo L 62=Conga H Mute 63=Conga H Open 64=Conga L 65=Timbale H 66=Timbale L 67=Agogo H 68=Agogo L 69=Cabasa 70=Maracas 71=Samba Whistle H 72=Samba Whistle L 73=Guiro Short 74=Guiro Long 75=Claves 76=Wood Block H 77=Wood Block L 78=Cuica Mute 79=Cuica Open 80=Triangle Mute 81=Triangle Open 82=Shaker 83=Jingle Bell 84=Bell Tree [XG Rock Kit] BasedOn=XG Standard Kit 13=Surdo Mute 14=Surdo Open 15=Hi Q 16=Whip Slap 17=Scratch Push 18=Scratch Pull 19=Finger Snap 20=Click Noise 21=Metronome Click 22=Metronome Bell 23=Seq Click L 24=Seq Click H 25=Brush Tap 26=Brush Swirl L 27=Brush Slap 28=Brush Swirl H 29=Snare Roll 30=Castanet 31=SD Rock M 32=Sticks 33=Bass Drum M 34=Open Rim Shot 35=Bass Drum H 3 36=BD Rock 37=Side Stick 38=SD Rock 39=Hand Clap 40=SD Rock Rim 41=Rock Tom 1 42=Hi-Hat Closed 43=Rock Tom 2 44=Hi-Hat Pedal 45=Rock Tom 3 46=Hi-Hat Open 47=Rock Tom 4 48=Rock Tom 5 49=Crash Cymbal 1 50=Rock Tom 6 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Cymbal Cup 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibraslap 59=Ride Cymbal 2 60=Bongo H 61=Bongo L 62=Conga H Mute 63=Conga H Open 64=Conga L 65=Timbale H 66=Timbale L 67=Agogo H 68=Agogo L 69=Cabasa 70=Maracas 71=Samba Whistle H 72=Samba Whistle L 73=Guiro Short 74=Guiro Long 75=Claves 76=Wood Block H 77=Wood Block L 78=Cuica Mute 79=Cuica Open 80=Triangle Mute 81=Triangle Open 82=Shaker 83=Jingle Bell 84=Bell Tree [XG Room Kit] BasedOn=XG Standard Kit 13=Surdo Mute 14=Surdo Open 15=Hi Q 16=Whip Slap 17=Scratch Push 18=Scratch Pull 19=Finger Snap 20=Click Noise 21=Metronome Click 22=Metronome Bell 23=Seq Click L 24=Seq Click H 25=Brush Tap 26=Brush Swirl L 27=Brush Slap 28=Brush Swirl H 29=Snare Roll 30=Castanet 31=Snare L 32=Sticks 33=Bass Drum L 34=Open Rim Shot 35=Bass Drum M 36=BD Room 37=Side Stick 38=Snare M 39=Hand Clap 40=Snare H 41=Room Tom 1 42=Hi-Hat Closed 43=Room Tom 2 44=Hi-Hat Pedal 45=Room Tom 3 46=Hi-Hat Open 47=Room Tom 4 48=Room Tom 5 49=Crash Cymbal 1 50=Room Tom 6 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Cymbal Cup 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibraslap 59=Ride Cymbal 2 60=Bongo H 61=Bongo L 62=Conga H Mute 63=Conga H Open 64=Conga L 65=Timbale H 66=Timbale L 67=Agogo H 68=Agogo L 69=Cabasa 70=Maracas 71=Samba Whistle H 72=Samba Whistle L 73=Guiro Short 74=Guiro Long 75=Claves 76=Wood Block H 77=Wood Block L 78=Cuica Mute 79=Cuica Open 80=Triangle Mute 81=Triangle Open 82=Shaker 83=Jingle Bell 84=Bell Tree [XG SFX 1] 36=Guitar Cutting Noise 37=Guitar Cutting Noise 2 38=Dist. Cut Noise 39=String Slap 40=Bass Slide 41=Pick Scrape 52=FL.Key Click 68=Rain 69=Thunder 70=Wind 71=Stream 72=Bubble 73=Feed 84=Dog 85=Horse Gallop 86=Bird 2 87=Kitty 88=Growl 89=Haunted 90=Ghost 91=Maou [XG SFX 2] 36=Dial Tone 37=Door Creaking 38=Door Slam 39=Scratch 40=Scratch 2 41=Windchime 42=Telephone Ring2 52=Engine Start 53=Tire Screech 54=Car Passing 55=Crash 56=Siren 57=Train 58=Jetplane 59=Starship 60=Burst Noise 61=Coaster 62=SbMarine [XG Standard Kit] 13=Surdo Mute 14=Surdo Open 15=Hi Q 16=Whip Slap 17=Scratch Push 18=Scratch Pull 19=Finger Snap 20=Click Noise 21=Metronome Click 22=Metronome Bell 23=Seq Click L 24=Seq Click H 25=Brush Tap 26=Brush Swirl L 27=Brush Slap 28=Brush Swirl H 29=Snare Roll 30=Castanet 31=Snare L 32=Sticks 33=Bass Drum L 34=Open Rim Shot 35=Bass Drum M 36=Bass Drum H 37=Side Stick 38=Snare M 39=Hand Clap 40=Snare H 41=Floor Tom L 42=Hi-Hat Closed 43=Floor Tom H 44=Hi-Hat Pedal 45=Low Tom 46=Hi-Hat Open 47=Mid Tom L 48=Mid Tom H 49=Crash Cymbal 1 50=High Tom 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Cymbal Cup 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibraslap 59=Ride Cymbal 2 60=Bongo H 61=Bongo L 62=Conga H Mute 63=Conga H Open 64=Conga L 65=Timbale H 66=Timbale L 67=Agogo H 68=Agogo L 69=Cabasa 70=Maracas 71=Samba Whistle H 72=Samba Whistle L 73=Guiro Short 74=Guiro Long 75=Claves 76=Wood Block H 77=Wood Block L 78=Cuica Mute 79=Cuica Open 80=Triangle Mute 81=Triangle Open 82=Shaker 83=Jingle Bell 84=Bell Tree [XG Standard2 Kit] BasedOn=XG Standard Kit 13=Surdo Mute 14=Surdo Open 15=Hi Q 16=Whip Slap 17=Scratch Push 18=Scratch Pull 19=Finger Snap 20=Click Noise 21=Metronome Click 22=Metronome Bell 23=Seq Click L 24=Seq Click H 25=Brush Tap 26=Brush Swirl L 27=Brush Slap 28=Brush Swirl H 29=Snare Roll 30=Castanet 31=Snare L 32=Sticks 33=Bass Drum L 34=Open Rim Shot 2 35=Bass Drum M 2 36=Bass Drum H 2 37=Side Stick 38=Snare M 2 39=Hand Clap 40=Snare H 2 41=Floor Tom L 42=Hi-Hat Closed 43=Floor Tom H 44=Hi-Hat Pedal 45=Low Tom 46=Hi-Hat Open 47=Mid Tom L 48=Mid Tom H 49=Crash Cymbal 1 50=High Tom 51=Ride Cymbal 1 52=Chinese Cymbal 53=Ride Cymbal Cup 54=Tambourine 55=Splash Cymbal 56=Cowbell 57=Crash Cymbal 2 58=Vibraslap 59=Ride Cymbal 2 60=Bongo H 61=Bongo L 62=Conga H Mute 63=Conga H Open 64=Conga L 65=Timbale H 66=Timbale L 67=Agogo H 68=Agogo L 69=Cabasa 70=Maracas 71=Samba Whistle H 72=Samba Whistle L 73=Guiro Short 74=Guiro Long 75=Claves 76=Wood Block H 77=Wood Block L 78=Cuica Mute 79=Cuica Open 80=Triangle Mute 81=Triangle Open 82=Shaker 83=Jingle Bell 84=Bell Tree .Instrument Definitions [General MIDI] Patch[*]=General MIDI Drums Key[*,*]=General MIDI Drums Drum[*,*]=1 [Roland GS] BankSelMethod=1 NRPN=Roland GS NRPN Patch[0]=Roland GS Drumsets Key[*,*]=0..127 Key[0,0]=Roland GS Standard Set Key[0,8]=Roland GS Room Set Key[0,16]=Roland GS Power Set Key[0,24]=Roland GS Electronic Set Key[0,25]=Roland GS TR-808 Set Key[0,32]=Roland GS Jazz Set Key[0,40]=Roland GS Brush Set Key[0,48]=Roland GS Orchestra Set Key[0,56]=Roland GS SFX Set Drum[*,*]=1 [Yamaha XG] Patch[896]=XG Set channel to rhythm part Patch[16128]=XG SFX Kits Patch[16256]=XG Drum Kits Patch[*]=No Drums Key[16128,0]=XG SFX 1 Key[16256,0]=XG Standard Kit Key[*,0]=XG Standard Kit Key[16128,1]=XG SFX 2 Key[16256,1]=XG Standard2 Kit Key[*,1]=XG Standard2 Kit Key[16256,8]=XG Room Kit Key[*,8]=XG Room Kit Key[16256,16]=XG Rock Kit Key[*,16]=XG Rock Kit Key[16256,24]=XG Electro Kit Key[*,24]=XG Electro Kit Key[16256,25]=XG Analog Kit Key[*,25]=XG Analog Kit Key[16256,32]=XG Jazz Kit Key[*,32]=XG Jazz Kit Key[16256,40]=XG Brush Kit Key[*,40]=XG Brush Kit Key[16256,48]=XG Classic Kit Key[*,48]=XG Classic Kit Drum[*,*]=1 Drum[*,0]=1 Drum[*,1]=1 Drum[*,8]=1 kmetronome-1.3.0/PaxHeaders.13848/NEWS0000644000000000000000000000013214155347442014147 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.361062943 30 ctime=1639304994.353062933 kmetronome-1.3.0/NEWS0000644000175000001440000000016414155347442014734 0ustar00pedrousers00000000000000There are news feeds available for the project at: http://sourceforge.net/export/rss2_keepsake.php?group_id=134956 kmetronome-1.3.0/PaxHeaders.13848/translations0000644000000000000000000000013214155347442016114 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.361062943 30 ctime=1639304994.349062928 kmetronome-1.3.0/translations/0000755000175000001440000000000014155347442016755 5ustar00pedrousers00000000000000kmetronome-1.3.0/translations/PaxHeaders.13848/CMakeLists.txt0000644000000000000000000000013214155347442020731 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.361062943 30 ctime=1639304994.349062928 kmetronome-1.3.0/translations/CMakeLists.txt0000644000175000001440000000070014155347442021512 0ustar00pedrousers00000000000000set( TRANSLATIONS kmetronome_cs.ts kmetronome_de.ts kmetronome_es.ts kmetronome_fr.ts kmetronome_tr.ts ) if (QT_VERSION VERSION_LESS 5.15.0) qt5_add_translation(QM_FILES ${TRANSLATIONS}) else() qt_add_translation(QM_FILES ${TRANSLATIONS}) endif() add_custom_target(translations ALL DEPENDS ${QM_FILES}) install( FILES ${QM_FILES} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/kmetronome/translations/ ) kmetronome-1.3.0/translations/PaxHeaders.13848/kmetronome_es.ts0000644000000000000000000000013214155347442021410 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.361062943 30 ctime=1639304994.349062928 kmetronome-1.3.0/translations/kmetronome_es.ts0000644000175000001440000021316214155347442022201 0ustar00pedrousers00000000000000 About <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version: %1<br/>Build date: %2<br/>Build time: %3<br/>Compiler: %4</p></body></html> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Versión: %1<br/>Fecha de compilación: %2<br/>Hora de compilación: %3<br/>Compilador: %4</p></body></html> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version: %1<br/>Qt version: %5<br/>Drumstick version: %6<br/>Build date: %2<br/>Build time: %3<br/>Compiler: %4</p></body></html> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Versión: %1<br/>Versión de Qt:%5<br/>Versión de Drumstick:%6<br/>Fecha de compilación: %2<br/>Hora de compilación: %3<br/>Compilador: %4</p></body></html> AboutClass About Acerca de <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Drumstick Metronome</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Metrónomo Drumstick </span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kmetronome.sourceforge.net"><span style=" text-decoration: underline; color:#0057ae;">http://kmetronome.sourceforge.net</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kmetronome.sourceforge.net"><span style=" text-decoration: underline; color:#0057ae;">http://kmetronome.sourceforge.net</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">This program is free software; you can redistribute 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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">You should have received a copy of the GNU General Public License <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">along with this program. If not, see <http://www.gnu.org/licenses/>.</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">Este programa es software libre; usted puede redistribuirlo bajo las condiciones de la Licencia Pública General GNU publicada por la Free Software Foundation; ya sea la versión 2 de la licencia o (a su elección) cualquier versión posterior.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">Este programa se distribuye SIN NINGUNA GARANTIA, incluso sin la garantía implícita MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. Vea la Licencia Pública General GNU para mas detalles.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">Usted debería haber recibido una copia de la Licencia Pública General GNU junto con este programa. En caso contrario escriba a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://kmetronome.sourceforge.io"><span style=" text-decoration: underline; color:#007af4;">https://kmetronome.sourceforge.io</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://kmetronome.sourceforge.io"><span style=" text-decoration: underline; color:#007af4;">https://kmetronome.sourceforge.io</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" font-family:'Sans Serif'; text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This program is free software; you can redistribute 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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">You should have received a copy of the GNU General Public License along with this program; if not, see </span><a href="https://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#007af4;">https://www.gnu.org/licenses/</span></a><span style=" font-family:'DejaVu Sans';">.</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" font-family:'Sans Serif'; text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This program is free software; you can redistribute 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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">You should have received a copy of the GNU General Public License along with this program; if not, see </span><a href="https://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#007af4;">https://www.gnu.org/licenses/</span></a><span style=" font-family:'DejaVu Sans';">.</span></p></body></html> DrumGrid Rows: Filas: Use this button to add new rows (sounds) to the current pattern definition Utilice este botón para añadir nuevas filas (sonidos) a la definición de patrón actual Add Añadir Use this button to remove the selected row (sound) from the pattern definition Utilize este botón para eliminar la fila seleccionada (sonido) de la definición de patrón Remove Eliminar Beats: Partes: Highligh the grid columns while playing Destacar las columnas de la tabla durante la reproducción Highlight Columns Destacar Columnas This is the current beat number Este es el número de parte actual Pattern: Patrón: Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Escriba un nuevo nombre y pulse el botón "Guardar" para crear un nuevo patrón, o elija un patrón existente en la lista desplegable. This button stores the current pattern definition with the name given Este botón almacena la definición del patrón actual con el nombre proporcionado Save Guardar This button deletes the current pattern definition Este botón borra la definición del patrón actual Delete Eliminar Number of beats per measure (bar) Número de partes rítmicas por compás This is the beat length for the pattern column. Esta es la duración de cada columna del patrón. Whole Redonda Half Blanca Quarter Negra Eighth Corchea Sixteenth Semicorchea Thirty-Second Fusa Sixty-Fourth Semifusa This button starts playing the current pattern Este botón inicia la reproducción del patrón rítmico Play Reproducir This button stops the playback Este botón termina la reproducción Stop Parar QPM: quarters per minute NPM: negras por minuto QPM: Quarters per Minute NPM: This is the current tempo in quarters per minute Este es el tempo actual (en negras por minuto) Drag the slider handle to change the tempo, in quarters per minute Arrastre el deslizador para cambiar el tempo, en negras por minuto This is the pattern table, beats as columns and sounds as rows Esta es la tabla de patrones, partes como columnas y sonidos como filas Pattern Editor Editor de patrones Cut Cortar Copy Copiar Paste Pegar Remove Pattern Eliminar patrón Do you want to remove the current pattern? ¿Desea eliminar el patrón actual? Sample Pattern name of an automatically created pattern Patrón de ejemplo Insert Pattern Row Insertar fila en el patrón Drum Key: Sonido de percusión: Sorry Please select one, and only one row Por favor seleccione una fila, y sólamente una Remove Row Eliminar fila Do you want to remove the selected pattern row? ¿Desea eliminar la fila seleccionada del patrón? HelpWindow &Home &Inicio &Back &Atrás Close Cerrar Zoom In Ampliar Zoom Out Reducir KMetroPreferences Preferences Preferencias KMetroPreferencesBase If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Si esta casilla está marcada, el programa recordará las conexiones para los puertos de entrada y de salida, e intentará su reconexión al inicio del programa. Automatic ports connection on startup Conexión automática de los puertos al iniciar Optional input port conn: Conexión de la entrada: This is the optional connection for the MIDI IN port. Esta es la conexión opcional del puerto MIDI IN. Output port connection: Conexión de la salida: This is the mandatory connection for the MIDI OUT port Esta es la conexión obligatoria del puerto MIDI OUT Output instrument: Instrumento receptor: This is the definition of the instrument connected to the MIDI OUT port Esta es la definición del instrumento conectado al puerto MIDI OUT Bank: Banco: This is the Bank of the selected MIDI program Este es el banco del programa MIDI seleccionado Channel: Canal: This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Este es el canal MIDI, entre 1 y 16. General MIDI utiliza el canal 10 para sonidos de percusión. Program: Programa: This is the MIDI program Este es el programa MIDI Resolution: Resolución: This is the MIDI time resolution (number of ticks in a quarter note) Esta es la resolución de tiempo MIDI (número de tics por negra) Weak note: Nota débil: This is the sound of the weak notes for the automatic patterns Este es sonido de las notas débiles en el patrón rítmico automático Note duration: Duración: This is the note duration in ticks, when using NOTE OFF events Esta es la duración de las notas en tics, cuando se utilizan eventos NOTE OFF Strong note: Nota fuerte: This is the sound of the strong notes for the automatic patterns Este es el sonido de las notas fuertes en el patrón rítmico automático Optional setting to send NOTE OFF events Opción para emitir eventos NOTE OFF Send NOTE OFF events Emitir eventos NOTE OFF Forced Dark Mode Modo oscuro forzado Internal Icon Theme Tema de iconos interno Qt Style: Estilo de Qt: KMetronome Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 Error fatal del secuenciador ALSA. Esto ocurre normalmente cuando el núcleo no tiene soporte ALSA, o el nodo de dispositivo (/dev/snd/seq) no existe, o bien el módulo del núcleo (snd_seq) no ha sido cargado. Por favor, compruebe la configuración de ALSA y MIDI.El error devuelto ha sido: %1 Error Error Import Patterns Importar patrones Pattern Files (*.pat) Archivos de patrones (*.pat) Export Patterns Exportar patrones Tempo Tempo Enter new Tempo: Introducir nuevo tempo: Automatic the pattern is created automatically Automático Language Changed Idioma cambiado The language for this application is going to change to %1. Do you want to continue? El idioma para esta aplicación va a cambiar a %1. ¿Quiere continuar? KMetronomeWindow Drumstick Metronome Metrónomo Drumstick This button starts playing the rhythm pattern Este botón inicia la reproducción del patrón rítmico Play Reproducir This button stops playing the rhythm pattern Este botón detiene la reproducción del patrón rítmico Stop Parar This button opens the configuration window Este botón abre la ventana de configuración Settings Preferencias This button opens the pattern editor Este botón abre el editor de patrones Patterns Patrones This button exits the program Este botón termina el programa Quit Salir Number of measures (bars) and beats played from beginning Número de compases y partes ejecutadas desde el principio Pattern: Patrón: This is the pattern definition to play, either "Automatic" or a custom defined one. Esta es la definición de patrón que se reproducirá, bien "Automático" o bién una definición personalizada. Beats/Bar: Partes/Compás: This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Este es el número de partes de cada compás. Valores admisibles entre 1 y 32. Este es el numerador de la especificación de ritmo. Beat Length: Figura rítmica: This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Esta es la duración de una parte rítmica. Los valores significan 1, 2, 4, 8, 16, 32 y 64. Es el denominador de la especificación de ritmo. Whole Redonda Half Blanca Quarter Negra Eighth Corchea Sixteenth Semicorchea Thirty-Second Fusa Sixty-Fourth Semifusa Weak weak notes MIDI velocity Débil Strong strong notes MIDI velocity Fuerte Volume audio volume level Volumen Pan audio panning Balance This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Esta es la velocidad de las notas débiles en el patrón rítmico automático (todas ellas excepto la primera) This is the velocity of the strong note in the automatic rhythm pattern (the first one) Esta es la velocidad de las notas fuertes en el patrón rítmico automático (la primera) This is the MIDI volume control (CC7) Este es el control de volumen (CC7) This is the MIDI pan control (CC10) Este es el control de balance (CC10) This is the musical name of the tempo value Esta es la denominación musical del valor del tempo The current <i>tempo</i> value El valor actual del <i>tempo</i> Tempo (in quarters per minute) Tempo (en negras por minuto) This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Este deslizador cambia el <i>tempo</i>, o velocidad del ritmo. Los valores van desde 25 hasta 250 negras por minuto. (<i>unidades del Metrónomo de Mälzel</i>). File Archivo Edit Edición Help Ayuda language idioma toolBar barra de herramientas Import Patterns Importar patrones Export Patterns Exportar patrones Play/Stop Comenzar/Parar Edit Patterns Editar patrones Configuration Configuración about acerca de Ctrl+Q Ctrl+Q Show Action Buttons Mostrar botones de acción Show Toolbar Mostrar barra de herramientas about Qt acerca de Qt Help Contents Contenidos de ayuda QApplication Whole Redonda Half Blanca Quarter Negra Eight Corchea Sixteenth Semicorchea Thirty-Second Fusa Sixty-Fourth Semifusa QObject Cakewalk Instrument Definition File Archivo de definición de instrumentos de Cakewalk File Archivo Date Fecha SequencerAdapter No connection Sin conexión po/rc.cpp:101 Drag the slider handle to change the tempo, in quarters per minute Arrastre el deslizador para cambiar el tempo, en negras por minuto po/rc.cpp:104 MIDI Metronome Metrónomo MIDI po/rc.cpp:107 This button starts playing the rhythm pattern Este botón inicia la reproducción del patrón rítmico po/rc.cpp:110 Play Reproducir po/rc.cpp:113 This button stops playing the rhythm pattern Este botón detiene la reproducción del patrón rítmico po/rc.cpp:116 Stop Parar po/rc.cpp:119 This button opens the configuration window Este botón abre la ventana de configuración po/rc.cpp:12 Save Guardar po/rc.cpp:122 Settings Preferencias po/rc.cpp:125 This button opens the pattern editor Este botón abre el editor de patrones po/rc.cpp:128 Patterns Patrones po/rc.cpp:131 This button exits the program Este botón termina el programa po/rc.cpp:134 Quit Salir po/rc.cpp:137 Number of measures (bars) and beats played from beginning Número de compases y partes ejecutadas desde el principio po/rc.cpp:140 Pattern: Patrón: po/rc.cpp:143 This is the pattern definition to play, either "Automatic" or a custom defined one. Esta es la definición de patrón que se reproducirá, bien "Automático" o bién una definición personalizada. po/rc.cpp:146 Beats/Bar: Partes/Compás: po/rc.cpp:149 This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Este es el número de partes de cada compás. Valores admisibles entre 1 y 32. Este es el numerador de la especificación de ritmo. po/rc.cpp:15 This button deletes the current pattern definition Este botón borra la definición del patrón actual po/rc.cpp:154 Beat Length: Figura rítmica: po/rc.cpp:157 This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Esta es la duración de una parte rítmica. Los valores significan 1, 2, 4, 8, 16, 32 y 64. Es el denominador de la especificación de ritmo. po/rc.cpp:162 Whole Redonda po/rc.cpp:165 Half Blanca po/rc.cpp:168 Quarter Negra po/rc.cpp:171 Eighth Corchea po/rc.cpp:174 Sixteenth Semicorchea po/rc.cpp:177 Thirty-Second Fusa po/rc.cpp:18 Delete Eliminar po/rc.cpp:180 Sixty-Fourth Semifusa po/rc.cpp:183 Weak Débil po/rc.cpp:186 Strong Fuerte po/rc.cpp:189 Volume Volumen po/rc.cpp:192 Pan Balance po/rc.cpp:195 This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Esta es la velocidad de las notas débiles en el patrón rítmico automático (todas ellas excepto la primera) po/rc.cpp:198 This is the velocity of the strong note in the automatic rhythm pattern (the first one) Esta es la velocidad de las notas fuertes en el patrón rítmico automático (la primera) po/rc.cpp:201 This is the MIDI volume control (CC7) Este es el control de volumen (CC7) po/rc.cpp:204 This is the MIDI pan control (CC10) Este es el control de balance (CC10) po/rc.cpp:207 This is the musical name of the tempo value Esta es la denominación musical del valor del tempo po/rc.cpp:21 Rows: Filas: po/rc.cpp:210 The current <i>tempo</i> value El valor actual del <i>tempo</i> po/rc.cpp:213 Tempo (in quarters per minute) Tempo (en negras por minuto) po/rc.cpp:216 This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Este deslizador cambia el <i>tempo</i>, o velocidad del ritmo. Los valores van desde 25 hasta 250 negras por minuto. (<i>unidades del Metrónomo de Mälzel</i>). po/rc.cpp:220 If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Si esta casilla está marcada, el programa recordará las conexiones para los puertos de entrada y de salida, e intentará su reconexión al inicio del programa. po/rc.cpp:223 Automatic ports connection on startup Conexión automática de los puertos al iniciar po/rc.cpp:226 Optional input port conn: Conexión de la entrada: po/rc.cpp:229 This is the optional connection for the MIDI IN port. Esta es la conexión opcional del puerto MIDI IN. po/rc.cpp:232 Output port connection: Conexión de la salida: po/rc.cpp:235 This is the mandatory connection for the MIDI OUT port Esta es la conexión obligatoria del puerto MIDI OUT po/rc.cpp:238 Output instrument: Instrumento receptor: po/rc.cpp:24 Use this button to add new rows (sounds) to the current pattern definition Utilice este botón para añadir nuevas filas (sonidos) a la definición de patrón actual po/rc.cpp:241 This is the definition of the instrument connected to the MIDI OUT port Esta es la definición del instrumento conectado al puerto MIDI OUT po/rc.cpp:244 Bank: Banco: po/rc.cpp:247 This is the Bank of the selected MIDI program Este es el banco del programa MIDI seleccionado po/rc.cpp:250 Channel: Canal: po/rc.cpp:253 This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Este es el canal MIDI, entre 1 y 16. General MIDI utiliza el canal 10 para sonidos de percusión. po/rc.cpp:257 Program: Programa: po/rc.cpp:260 This is the MIDI program Este es el programa MIDI po/rc.cpp:263 Resolution: Resolución: po/rc.cpp:266 This is the MIDI time resolution (number of ticks in a quarter note) Esta es la resolución de tiempo MIDI (número de tics por negra) po/rc.cpp:269 Weak note: Nota débil: po/rc.cpp:27 Add Añadir po/rc.cpp:272 This is the sound of the weak notes for the automatic patterns Este es sonido de las notas débiles en el patrón rítmico automático po/rc.cpp:275 Note duration: Duración: po/rc.cpp:278 This is the note duration in ticks, when using NOTE OFF events Esta es la duración de las notas en tics, cuando se utilizan eventos NOTE OFF po/rc.cpp:281 Strong note: Nota fuerte: po/rc.cpp:284 This is the sound of the strong notes for the automatic patterns Este es el sonido de las notas fuertes en el patrón rítmico automático po/rc.cpp:287 Optional setting to send NOTE OFF events Opción para emitir eventos NOTE OFF po/rc.cpp:290 Send NOTE OFF events Emitir eventos NOTE OFF po/rc.cpp:293 If this option is activated, the knobs are drawn using a custom style Si esta opción está seleccionada, los botones rotatorios se dibujarán con un estilo personalizado po/rc.cpp:296 Styled Knobs Botones decorados po/rc.cpp:297 Your names Pedro López-Cabanillas po/rc.cpp:298 Your emails plcl@users.sf.net po/rc.cpp:3 Pattern: Patrón: po/rc.cpp:30 Use this button to remove the selected row (sound) from the pattern definition Utilize este botón para eliminar la fila seleccionada (sonido) de la definición de patrón po/rc.cpp:33 Remove Eliminar po/rc.cpp:36 Beats: Partes: po/rc.cpp:39 Highligh the grid columns while playing Destacar las columnas de la tabla durante la reproducción po/rc.cpp:42 Highlight Columns Destacar Columnas po/rc.cpp:46 This is the current beat number Este es el número de parte actual po/rc.cpp:49 This is the pattern table, beats as columns and sounds as rows Esta es la tabla de patrones, partes como columnas y sonidos como filas po/rc.cpp:52 Number of beats per measure (bar) Número de partes rítmicas por compás po/rc.cpp:55 This is the beat length for the pattern column. Esta es la duración de cada columna del patrón po/rc.cpp:58 Whole Redonda po/rc.cpp:6 Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Escriba un nuevo nombre y pulse el botón "Guardar" para crear un nuevo patrón, o elija un patrón existente en la lista desplegable. po/rc.cpp:61 Half Blanca po/rc.cpp:64 Quarter Negra po/rc.cpp:67 Eighth Corchea po/rc.cpp:70 Sixteenth Semicorchea po/rc.cpp:73 Thirty-Second Fusa po/rc.cpp:76 Sixty-Fourth Semifusa po/rc.cpp:79 This button starts playing the current pattern Este botón inicia la reproducción del patrón rítmico po/rc.cpp:82 Play Reproducir po/rc.cpp:85 This button stops the playback Este botón termina la reproducción po/rc.cpp:88 Stop Parar po/rc.cpp:9 This button stores the current pattern definition with the name given Este botón almacena la definición del patrón actual con el nombre proporcionado po/rc.cpp:91 QPM: quarters per minute NPM: negras por minuto po/rc.cpp:94 QPM: NPM: po/rc.cpp:97 This is the current tempo in quarters per minute Este es el tempo actual (en negras por minuto) src/drumgrid.cpp:278 Do you want to remove the current pattern? ¿Desea eliminar el patrón actual? src/drumgrid.cpp:279 Remove Pattern Eliminar patrón src/drumgrid.cpp:333 Sample Pattern Patrón de ejemplo src/drumgrid.cpp:364 Insert Pattern Row Insertar fila en el patrón src/drumgrid.cpp:365 Drum Key: Sonido de percusión: src/drumgrid.cpp:386 Please select one, and only one row Por favor seleccione una fila, y sólamente una src/drumgrid.cpp:388 Do you want to remove the selected pattern row? ¿Desea eliminar la fila seleccionada del patrón? src/drumgrid.cpp:389 Remove Row Eliminar fila src/drumgrid.cpp:51 Pattern Editor Editor de patrones src/drumgrid.cpp:67 Cut Cortar src/drumgrid.cpp:68 Copy Copiar src/drumgrid.cpp:69 Paste Pegar src/kmetronome.cpp:114 Play/Stop Comenzar/Parar src/kmetronome.cpp:118 Show Action Buttons Mostrar botones de acción src/kmetronome.cpp:125 Patterns Patrones src/kmetronome.cpp:130 Import Patterns Importar patrones src/kmetronome.cpp:135 Export Patterns Exportar patrones src/kmetronome.cpp:497 *.pat|Pattern Files (*.pat) *.pat|Archivos de patrones (*.pat) src/kmetronome.cpp:498 Import Patterns Importar patrones src/kmetronome.cpp:510 *.pat|Pattern Files (*.pat) *.pat|Archivos de patrones (*.pat) src/kmetronome.cpp:511 Export Patterns Exportar patrones src/kmetronome.cpp:527 Patterns Patrones src/kmetronome.cpp:87 Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 Error fatal del secuenciador ALSA. Esto ocurre normalmente cuando el núcleo no tiene soporte ALSA, o el nodo de dispositivo (/dev/snd/seq) no existe, o bien el módulo del núcleo (snd_seq) no ha sido cargado. Por favor, compruebe la configuración de ALSA y MIDI.El error devuelto ha sido: %1 src/kmetronome.cpp:93 Error Error src/kmetronomeview.cpp:145 Tempo Tempo Enter new Tempo: Introducir nuevo tempo: src/kmetronomeview.cpp:179 Automatic Automático src/kmetropreferences.cpp:29 Preferences Preferencias src/main.cpp:29 KDE MIDI metronome using ALSA sequencer Metrónomo MIDI de KDE utilizando el secuenciador de ALSA src/main.cpp:41 KMetronome KMetronome src/main.cpp:43 (C) 2005-2012 Pedro Lopez-Cabanillas (C) 2005-2012 Pedro Lopez-Cabanillas src/main.cpp:45 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas src/sequenceradapter.cpp:65 No connection Sin conexión kmetronome-1.3.0/translations/PaxHeaders.13848/kmetronome_de.ts0000644000000000000000000000013214155347442021371 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.361062943 30 ctime=1639304994.349062928 kmetronome-1.3.0/translations/kmetronome_de.ts0000644000175000001440000017061214155347442022164 0ustar00pedrousers00000000000000 About <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version: %1<br/>Qt version: %5<br/>Drumstick version: %6<br/>Build date: %2<br/>Build time: %3<br/>Compiler: %4</p></body></html> AboutClass About <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Drumstick Metronome</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://kmetronome.sourceforge.io"><span style=" text-decoration: underline; color:#007af4;">https://kmetronome.sourceforge.io</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" font-family:'Sans Serif'; text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This program is free software; you can redistribute 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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">You should have received a copy of the GNU General Public License along with this program; if not, see </span><a href="https://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#007af4;">https://www.gnu.org/licenses/</span></a><span style=" font-family:'DejaVu Sans';">.</span></p></body></html> DrumGrid Rows: Zeilen: Use this button to add new rows (sounds) to the current pattern definition Dieser Knopf fügt der aktuellen Definition des Rhythmusschemas neue Zeilen (Töne) hinzu Add Hinzufügen Use this button to remove the selected row (sound) from the pattern definition Dieser Knopf entfernt die ausgewählte Zeile (Töne) aus der Definition des Rhythmusschemas Remove Entfernen Beats: Taktzahl: Highligh the grid columns while playing Markiere die Gitterspalten während der Wiedergabe Highlight Columns Markiere Spalten This is the current beat number Dies ist die aktuelle Anzahl Grundschläge Pattern: Rhythmusschema: Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Geben Sie einen neuen Namen ein und drücken Sie den Knopf "Speichern", um ein neues Rhythmusschemas zu erstellen, oder wählen Sie ein vorhandenes Schema aus der Aufklappliste. This button stores the current pattern definition with the name given Dieser Knopf speichert die aktuelle Definition des Rhythmusschemas mit dem gegebenen Namen Save Speichern This button deletes the current pattern definition Dieser Knopf entfernt die aktuelle Definition des Rhythmusschemas Delete Entfernen Number of beats per measure (bar) Anzahl Grundschläge pro Takt This is the beat length for the pattern column. Dies ist die Dauer des Grundschlags für die Spalte des Rhythmusschemas. Whole Ganze Half Halbe Quarter Viertel Eighth Achtel Sixteenth Sechzehntel Thirty-Second Zweiundreissigstel Sixty-Fourth Vierundsechzigstel This button starts playing the current pattern Dieser Knopf startet die Wiedergabe des Rhythmusschemas Play Wiedergabe This button stops the playback Dieser Knopf beendet die Wiedergabe Stop Stopp QPM: quarters per minute QPM: Tempo (in Viertel pro Minute) QPM: Quarters per Minute QPM: This is the current tempo in quarters per minute Dies ist das aktuelle Tempo in Viertel pro Minute Drag the slider handle to change the tempo, in quarters per minute Ziehen Sie den Schieberegler um das Tempo zu ändern, in Viertel pro Minute This is the pattern table, beats as columns and sounds as rows Dies ist die Tabelle des Rhythmusschemas, Grundschläge als Spalten und Töne als Zeilen Pattern Editor Editor für Rhythmusschema Cut Copy Paste Rhythmusschema Remove Pattern Rhythmusschema entfernen Do you want to remove the current pattern? Möchten Sie das aktuelle Rhythmusschema entfernen? Sample Pattern name of an automatically created pattern Muster für Rhythmusschema Insert Pattern Row Zeile in Rhythmusschema einfügen Drum Key: Schlagzeug Taste: Sorry Please select one, and only one row Bitte wählen Sie eine, und nur eine Zeile aus Remove Row Zeile entfernen Do you want to remove the selected pattern row? Möchten Sie die ausgewählte Zeile des Rhythmusschemas entfernen? HelpWindow &Home &Back Close Zoom In Zoom Out KMetroPreferences Preferences Einstellungen KMetroPreferencesBase If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Aktivieren Sie dieses Ankreuzfeld, damit das Programm sich an den Eingangs- und Ausgangs-Port erinnert, und diese beim nächsten Programmstart wieder verbindet. Automatic ports connection on startup Automatische Verbindung der Ports beim Start Optional input port conn: Opt.Verbindung Eingangs-Port: This is the optional connection for the MIDI IN port. Dies ist die optionale Verbindung für den MIDI Eingangs-Port Output port connection: Verbindung für Ausgabe-Port: This is the mandatory connection for the MIDI OUT port Dies ist die notwendige Verbindung für den MIDI Ausgabe-Port Output instrument: Ausgabe Instrument: This is the definition of the instrument connected to the MIDI OUT port Dies ist die Definition des Instrumentes das mit dem MIDI Ausgabe-Port verbunden ist Bank: Bank: This is the Bank of the selected MIDI program Dies ist die Bank des ausgewählten MIDI Programms Channel: Kanal: This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Dies ist der MIDI Kanal, zwischen 1 und 16. Allgemeines MIDI braucht den Kanal 10 für das Schlagzeug. Program: Programm: This is the MIDI program Dies ist das MIDI Programm Resolution: Auflösung: This is the MIDI time resolution (number of ticks in a quarter note) Dies ist die MIDI Zeitauflösung (Anzahl Ticks in einer Viertel Note) Weak note: Schwache Note: This is the sound of the weak notes for the automatic patterns Dies ist die Lautstärke der schwachen Note im automatischen Rhythmusschema Note duration: Dauer der Note: This is the note duration in ticks, when using NOTE OFF events Dies ist die Dauer der Note in Anzahl Ticks, wenn NOTE OFF Ereignisse benutzt werden. Strong note: Starke Note: This is the sound of the strong notes for the automatic patterns Dies ist die Lautstärke der starken Note im automatischen Rhythmusschema Optional setting to send NOTE OFF events Optionale Einstellung zum Senden von NOTE OFF Ereignissen Send NOTE OFF events Sende NOTE OFF Ereignisse Forced Dark Mode Internal Icon Theme Qt Style: KMetronome Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 Schwerer Fehler im ALSA-Sequenzer. Dies geschieht meist, wenn der Kernel kein ALSA unterstützt, oder das Gerät (/dev/snd/seq) nicht existiert, oder das Kernel-Modul (snd_seq) nicht geladen ist. Bitte überprüfen Sie Ihre ALSA/MIDI Konfiguration. Zurückgegebener Fehler war: %1 Error Fehler Import Patterns Rhythmusschema importieren Pattern Files (*.pat) Export Patterns Rhythmusschema exportieren Tempo Tempo Enter new Tempo: Neues Tempo eingeben: Automatic the pattern is created automatically Automatisch Language Changed The language for this application is going to change to %1. Do you want to continue? KMetronomeWindow Drumstick Metronome This button starts playing the rhythm pattern Dieser Knopf startet die Wiedergabe des Rhythmusschemas Play Wiedergabe This button stops playing the rhythm pattern Dieser Knopf stoppt die Wiedergabe des Rhythmusschemas Stop Stopp This button opens the configuration window Dieser Knopf öffnet den Einrichtungsdialog Settings Einstellungen This button opens the pattern editor Dieser Knopf öffnet den Editor für das Rhythmusschema Patterns Rhythmusschema This button exits the program Dieser Knopf beendet das Programm Quit Beenden Number of measures (bars) and beats played from beginning Anzahl Noten (Takte) und Schläge seit Beginn der Wiedergabe Pattern: Rhythmusschema: This is the pattern definition to play, either "Automatic" or a custom defined one. Dies ist die Definition des Rhythmusschemas für die Wiedergabe, entweder "Automatisch" oder Benutzerdefiniert. Beats/Bar: Taktzahl: This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Dies ist die Anzahl Grundschläge für jeden Takt. Die Werte sind von 1 bis 32. Dies ist der Zähler der Taktart-Spezifikation. Beat Length: Länge Grundschlag. This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Dies ist die Dauer des Grundschlags. Die Werte sind 1, 2, 4, 8, 16, 32 und 64. Es ist der Nenner der Taktart-Spezifikation. Whole Ganze Half Halbe Quarter Viertel Eighth Achtel Sixteenth Sechzehntel Thirty-Second Zweiundreissigstel Sixty-Fourth Vierundsechzigstel Weak weak notes MIDI velocity Schwach Strong strong notes MIDI velocity Stark Volume audio volume level Volumen Pan audio panning Balance This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Dies ist die Lautstärke der schwachen Noten im Rhythmusschema (alle von ihnen, ausser der ersten) This is the velocity of the strong note in the automatic rhythm pattern (the first one) Dies ist die Lautstärke der starken Note im Rhythmusschema (die erste) This is the MIDI volume control (CC7) Dies ist die MIDI Lautstärkenregelung (CC7) This is the MIDI pan control (CC10) Dies ist die MIDI Balance Steuerung (CC10) This is the musical name of the tempo value Dies ist der musikalische Name des Tempos The current <i>tempo</i> value Der aktuelle Wert für das <i>Tempo</i> Tempo (in quarters per minute) Tempo (in Viertel pro Minute) This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Dieser Schieberegler ändert das <i>Tempo</i>, oder Geschwindigkeit des Rhythmus. Die Werte sind von 25 bis 250 Viertel pro Minute (<i>Maelzel Metronom Einheiten</i>). File Edit Help language toolBar Import Patterns Rhythmusschema importieren Export Patterns Rhythmusschema exportieren Play/Stop Wiedergabe/Stopp Edit Patterns Configuration about Ctrl+Q Show Action Buttons Aktionsknopf anzeigen Show Toolbar about Qt Help Contents QApplication Whole Ganze Half Halbe Quarter Viertel Eight Sixteenth Sechzehntel Thirty-Second Zweiundreissigstel Sixty-Fourth Vierundsechzigstel QObject Cakewalk Instrument Definition File File Date SequencerAdapter No connection Keine Verbindung po/rc.cpp:101 Drag the slider handle to change the tempo, in quarters per minute Ziehen Sie den Schieberegler um das Tempo zu ändern, in Viertel pro Minute po/rc.cpp:104 MIDI Metronome MIDI Metronom po/rc.cpp:107 This button starts playing the rhythm pattern Dieser Knopf startet die Wiedergabe des Rhythmusschemas po/rc.cpp:110 Play Wiedergabe po/rc.cpp:113 This button stops playing the rhythm pattern Dieser Knopf stoppt die Wiedergabe des Rhythmusschemas po/rc.cpp:116 Stop Stopp po/rc.cpp:119 This button opens the configuration window Dieser Knopf öffnet den Einrichtungsdialog po/rc.cpp:12 Save Speichern po/rc.cpp:122 Settings Einstellungen po/rc.cpp:125 This button opens the pattern editor Dieser Knopf öffnet den Editor für das Rhythmusschema po/rc.cpp:128 Patterns Rhythmusschema po/rc.cpp:131 This button exits the program Dieser Knopf beendet das Programm po/rc.cpp:134 Quit Beenden po/rc.cpp:137 Number of measures (bars) and beats played from beginning Anzahl Noten (Takte) und Schläge seit Beginn der Wiedergabe po/rc.cpp:140 Pattern: Rhythmusschema: po/rc.cpp:143 This is the pattern definition to play, either "Automatic" or a custom defined one. Dies ist die Definition des Rhythmusschemas für die Wiedergabe, entweder "Automatisch" oder Benutzerdefiniert. po/rc.cpp:146 Beats/Bar: Taktzahl: po/rc.cpp:149 This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Dies ist die Anzahl Grundschläge für jeden Takt. Die Werte sind von 1 bis 32. Dies ist der Zähler der Taktart-Spezifikation. po/rc.cpp:15 This button deletes the current pattern definition Dieser Knopf entfernt die aktuelle Definition des Rhythmusschemas po/rc.cpp:154 Beat Length: Länge Grundschlag. po/rc.cpp:157 This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Dies ist die Dauer des Grundschlags. Die Werte sind 1, 2, 4, 8, 16, 32 und 64. Es ist der Nenner der Taktart-Spezifikation. po/rc.cpp:162 Whole Ganze po/rc.cpp:165 Half Halbe po/rc.cpp:168 Quarter Viertel po/rc.cpp:171 Eighth Achtel po/rc.cpp:174 Sixteenth Sechzehntel po/rc.cpp:177 Thirty-Second Zweiundreissigstel po/rc.cpp:18 Delete Entfernen po/rc.cpp:180 Sixty-Fourth Vierundsechzigstel po/rc.cpp:183 Weak Schwach po/rc.cpp:186 Strong Stark po/rc.cpp:189 Volume Volumen po/rc.cpp:192 Pan Balance po/rc.cpp:195 This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Dies ist die Lautstärke der schwachen Noten im Rhythmusschema (alle von ihnen, ausser der ersten) po/rc.cpp:198 This is the velocity of the strong note in the automatic rhythm pattern (the first one) Dies ist die Lautstärke der starken Note im Rhythmusschema (die erste) po/rc.cpp:201 This is the MIDI volume control (CC7) Dies ist die MIDI Lautstärkenregelung (CC7) po/rc.cpp:204 This is the MIDI pan control (CC10) Dies ist die MIDI Balance Steuerung (CC10) po/rc.cpp:207 This is the musical name of the tempo value Dies ist der musikalische Name des Tempos po/rc.cpp:21 Rows: Zeilen: po/rc.cpp:210 The current <i>tempo</i> value Der aktuelle Wert für das <i>Tempo</i> po/rc.cpp:213 Tempo (in quarters per minute) Tempo (in Viertel pro Minute) po/rc.cpp:216 This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Dieser Schieberegler ändert das <i>Tempo</i>, oder Geschwindigkeit des Rhythmus. Die Werte sind von 25 bis 250 Viertel pro Minute (<i>Maelzel Metronom Einheiten</i>). po/rc.cpp:220 If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Aktivieren Sie dieses Ankreuzfeld, damit das Programm sich an den Eingangs- und Ausgangs-Port erinnert, und diese beim nächsten Programmstart wieder verbindet. po/rc.cpp:223 Automatic ports connection on startup Automatische Verbindung der Ports beim Start po/rc.cpp:226 Optional input port conn: Opt.Verbindung Eingangs-Port: po/rc.cpp:229 This is the optional connection for the MIDI IN port. Dies ist die optionale Verbindung für den MIDI Eingangs-Port po/rc.cpp:232 Output port connection: Verbindung für Ausgabe-Port: po/rc.cpp:235 This is the mandatory connection for the MIDI OUT port Dies ist die notwendige Verbindung für den MIDI Ausgabe-Port po/rc.cpp:238 Output instrument: Ausgabe Instrument: po/rc.cpp:24 Use this button to add new rows (sounds) to the current pattern definition Dieser Knopf fügt der aktuellen Definition des Rhythmusschemas neue Zeilen (Töne) hinzu po/rc.cpp:241 This is the definition of the instrument connected to the MIDI OUT port Dies ist die Definition des Instrumentes das mit dem MIDI Ausgabe-Port verbunden ist po/rc.cpp:244 Bank: Bank: po/rc.cpp:247 This is the Bank of the selected MIDI program Dies ist die Bank des ausgewählten MIDI Programms po/rc.cpp:250 Channel: Kanal: po/rc.cpp:253 This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Dies ist der MIDI Kanal, zwischen 1 und 16. Allgemeines MIDI braucht den Kanal 10 für das Schlagzeug. po/rc.cpp:257 Program: Programm: po/rc.cpp:260 This is the MIDI program Dies ist das MIDI Programm po/rc.cpp:263 Resolution: Auflösung: po/rc.cpp:266 This is the MIDI time resolution (number of ticks in a quarter note) Dies ist die MIDI Zeitauflösung (Anzahl Ticks in einer Viertel Note) po/rc.cpp:269 Weak note: Schwache Note: po/rc.cpp:27 Add Hinzufügen po/rc.cpp:272 This is the sound of the weak notes for the automatic patterns Dies ist die Lautstärke der schwachen Note im automatischen Rhythmusschema po/rc.cpp:275 Note duration: Dauer der Note: po/rc.cpp:278 This is the note duration in ticks, when using NOTE OFF events Dies ist die Dauer der Note in Anzahl Ticks, wenn NOTE OFF Ereignisse benutzt werden. po/rc.cpp:281 Strong note: Starke Note: po/rc.cpp:284 This is the sound of the strong notes for the automatic patterns Dies ist die Lautstärke der starken Note im automatischen Rhythmusschema po/rc.cpp:287 Optional setting to send NOTE OFF events Optionale Einstellung zum Senden von NOTE OFF Ereignissen po/rc.cpp:290 Send NOTE OFF events Sende NOTE OFF Ereignisse po/rc.cpp:293 If this option is activated, the knobs are drawn using a custom style Beim Aktivieren dieser Option werden die Knöpfe mit einem benutzerdefinierten Stil dargestellt po/rc.cpp:296 Styled Knobs Stilvolle Knöpfe po/rc.cpp:297 Your names Rene Landert po/rc.cpp:298 Your emails rene.landert@bluewin.ch po/rc.cpp:3 Pattern: Rhythmusschema: po/rc.cpp:30 Use this button to remove the selected row (sound) from the pattern definition Dieser Knopf entfernt die ausgewählte Zeile (Töne) aus der Definition des Rhythmusschemas po/rc.cpp:33 Remove Entfernen po/rc.cpp:36 Beats: Taktzahl: po/rc.cpp:39 Highligh the grid columns while playing Markiere die Gitterspalten während der Wiedergabe po/rc.cpp:42 Highlight Columns Markiere Spalten po/rc.cpp:46 This is the current beat number Dies ist die aktuelle Anzahl Grundschläge po/rc.cpp:49 This is the pattern table, beats as columns and sounds as rows Dies ist die Tabelle des Rhythmusschemas, Grundschläge als Spalten und Töne als Zeilen po/rc.cpp:52 Number of beats per measure (bar) Anzahl Grundschläge pro Takt po/rc.cpp:55 This is the beat length for the pattern column. Dies ist die Dauer des Grundschlags für die Spalte des Rhythmusschemas. po/rc.cpp:58 Whole Ganze po/rc.cpp:6 Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Geben Sie einen neuen Namen ein und drücken Sie den Knopf "Speichern", um ein neues Rhythmusschemas zu erstellen, oder wählen Sie ein vorhandenes Schema aus der Aufklappliste. po/rc.cpp:61 Half Halbe po/rc.cpp:64 Quarter Viertel po/rc.cpp:67 Eighth Achtel po/rc.cpp:70 Sixteenth Sechzehntel po/rc.cpp:73 Thirty-Second Zweiundreissigstel po/rc.cpp:76 Sixty-Fourth Vierundsechzigstel po/rc.cpp:79 This button starts playing the current pattern Dieser Knopf startet die Wiedergabe des Rhythmusschemas po/rc.cpp:82 Play Wiedergabe po/rc.cpp:85 This button stops the playback Dieser Knopf beendet die Wiedergabe po/rc.cpp:88 Stop Stopp po/rc.cpp:9 This button stores the current pattern definition with the name given Dieser Knopf speichert die aktuelle Definition des Rhythmusschemas mit dem gegebenen Namen po/rc.cpp:91 QPM: quarters per minute QPM: Tempo (in Viertel pro Minute) po/rc.cpp:94 QPM: QPM: po/rc.cpp:97 This is the current tempo in quarters per minute Dies ist das aktuelle Tempo in Viertel pro Minute src/drumgrid.cpp:278 Do you want to remove the current pattern? Möchten Sie das aktuelle Rhythmusschema entfernen? src/drumgrid.cpp:279 Remove Pattern Rhythmusschema entfernen src/drumgrid.cpp:333 Sample Pattern Muster für Rhythmusschema src/drumgrid.cpp:364 Insert Pattern Row Zeile in Rhythmusschema einfügen src/drumgrid.cpp:365 Drum Key: Schlagzeug Taste: src/drumgrid.cpp:386 Please select one, and only one row Bitte wählen Sie eine, und nur eine Zeile aus src/drumgrid.cpp:388 Do you want to remove the selected pattern row? Möchten Sie die ausgewählte Zeile des Rhythmusschemas entfernen? src/drumgrid.cpp:389 Remove Row Zeile entfernen src/drumgrid.cpp:51 Pattern Editor Editor für Rhythmusschema src/drumgrid.cpp:67 Cut src/drumgrid.cpp:68 Copy src/drumgrid.cpp:69 Paste Rhythmusschema src/kmetronome.cpp:114 Play/Stop Wiedergabe/Stopp src/kmetronome.cpp:118 Show Action Buttons Aktionsknopf anzeigen src/kmetronome.cpp:125 Patterns Rhythmusschema src/kmetronome.cpp:130 Import Patterns Rhythmusschema importieren src/kmetronome.cpp:135 Export Patterns Rhythmusschema exportieren src/kmetronome.cpp:497 *.pat|Pattern Files (*.pat) *.pat|Rhythmusschema Dateien (*.pat) src/kmetronome.cpp:498 Import Patterns Rhythmusschema importieren src/kmetronome.cpp:510 *.pat|Pattern Files (*.pat) *.pat|Rhythmusschema Dateien (*.pat) src/kmetronome.cpp:511 Export Patterns Rhythmusschema exportieren src/kmetronome.cpp:527 Patterns Rhythmusschema src/kmetronome.cpp:87 Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 Schwerer Fehler im ALSA-Sequenzer. Dies geschieht meist, wenn der Kernel kein ALSA unterstützt, oder das Gerät (/dev/snd/seq) nicht existiert, oder das Kernel-Modul (snd_seq) nicht geladen ist. Bitte überprüfen Sie Ihre ALSA/MIDI Konfiguration. Zurückgegebener Fehler war: %1 src/kmetronome.cpp:93 Error Fehler src/kmetronomeview.cpp:145 Tempo Tempo Enter new Tempo: Neues Tempo eingeben: src/kmetronomeview.cpp:179 Automatic Automatisch src/kmetropreferences.cpp:29 Preferences Einstellungen src/main.cpp:29 KDE MIDI metronome using ALSA sequencer KDE MIDI Metronom mit dem ALSA Sequenzer src/main.cpp:41 KMetronome KMetronome src/main.cpp:43 (C) 2005-2012 Pedro Lopez-Cabanillas (C) 2005-2012 Pedro Lopez-Cabanillas src/main.cpp:45 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas src/sequenceradapter.cpp:65 No connection Keine Verbindung kmetronome-1.3.0/translations/PaxHeaders.13848/kmetronome_cs.ts0000644000000000000000000000013214155347442021406 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.361062943 30 ctime=1639304994.349062928 kmetronome-1.3.0/translations/kmetronome_cs.ts0000644000175000001440000021271514155347442022202 0ustar00pedrousers00000000000000 About <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version: %1<br/>Build date: %2<br/>Build time: %3<br/>Compiler: %4</p></body></html> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Verze: %1<br/>Datum sestavení: %2<br/>Čas sestavení: %3<br/>Překladač: %4</p></body></html> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version: %1<br/>Qt version: %5<br/>Drumstick version: %6<br/>Build date: %2<br/>Build time: %3<br/>Compiler: %4</p></body></html> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Verze: %1<br/>Verze Qt: %5<br/>Verze Drumstick: %6<br/>Datum sestavení: %2<br/>Čas sestavení: %3<br/>Překladač: %4</p></body></html> AboutClass About O programu <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Drumstick Metronome</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Drumstick Metronome</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kmetronome.sourceforge.net"><span style=" text-decoration: underline; color:#0057ae;">http://kmetronome.sourceforge.net</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kmetronome.sourceforge.net"><span style=" text-decoration: underline; color:#0057ae;">http://kmetronome.sourceforge.net</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">This program is free software; you can redistribute 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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">You should have received a copy of the GNU General Public License <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">along with this program. If not, see <http://www.gnu.org/licenses/>.</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">Tento program je svobodným softwarem; můžete jej rozdávat a/nebo upravovat za podmínek GNU General Public License (GPL), jak jsou zveřejněny Free Software Foundation; buď ve verzi 2 licence, nebo (podle své volby) v kterékoli pozdější verzi.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">Tento program je šířen v naději, že bude užitečný, ale BEZ JAKÉKOLI ZÁRUKY; také bez předpokládané záruky PRODEJNOSTI nebo POUŽITELNOSTI PRO NĚJAKÝ URČITÝ ÚČEL: Více podrobností naleznete v GNU Library General Public License.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">Kopii GNU Library General Public License byste měl obdržet společně s tímto balíkem; a pokud ne, napište Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://kmetronome.sourceforge.io"><span style=" text-decoration: underline; color:#007af4;">https://kmetronome.sourceforge.io</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://kmetronome.sourceforge.io"><span style=" text-decoration: underline; color:#007af4;">https://kmetronome.sourceforge.io</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" font-family:'Sans Serif'; text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This program is free software; you can redistribute 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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">You should have received a copy of the GNU General Public License along with this program; if not, see </span><a href="https://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#007af4;">https://www.gnu.org/licenses/</span></a><span style=" font-family:'DejaVu Sans';">.</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">Tento program je svobodným softwarem; můžete jej rozdávat a/nebo upravovat za podmínek GNU General Public License (GPL), jak jsou zveřejněny Free Software Foundation; buď ve verzi 2 licence, nebo (podle své volby) v kterékoli pozdější verzi.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">Tento program je šířen v naději, že bude užitečný, ale BEZ JAKÉKOLI ZÁRUKY; také bez předpokládané záruky PRODEJNOSTI nebo POUŽITELNOSTI PRO NĚJAKÝ URČITÝ ÚČEL: Více podrobností naleznete v GNU Library General Public License.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:10pt;">Kopii GNU Library General Public License byste měl obdržet společně s tímto programem; a pokud ne, podívejte se na </span><a href="https://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#007af4;">https://www.gnu.org/licenses/</span></a><span style=" font-family:'DejaVu Sans';">.</span></p></body></html> DrumGrid Rows: Řádky: Use this button to add new rows (sounds) to the current pattern definition Použijte toto tlačítko pro přidání nových řádků (zvuků) do vymezení současného vzoru Add Přidat Use this button to remove the selected row (sound) from the pattern definition Toto tlačítko použijte pro odstranění vybraného řádku (zvuku) z vymezení současného vzoru Remove Odstranit Beats: Doby: Highligh the grid columns while playing Zvýraznit sloupce mřížky při přehrávání Highlight Columns Zvýraznit Sloupce This is the current beat number Toto je číslo nynější doby Pattern: Vzor: Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Napište nový název a stiskněte tlačítko "Uložit" pro vytvoření nového vzoru. nebo vyberte stávající vzor ze seznamu. This button stores the current pattern definition with the name given Tímto tlačítkem se ukládá vymezení současného vzoru se zadaným názvem Save Uložit This button deletes the current pattern definition Tímto tlačítkem se maže vymezení současného vzoru Delete Smazat Number of beats per measure (bar) Počet dob na takt This is the beat length for the pattern column. Toto je délka doby pro sloupec vzoru. Whole Celá Half Půlová Quarter Čtvrtina Eighth Osmina Sixteenth Šestnáctina Thirty-Second Dvaatřicetina Sixty-Fourth Čtyřiašedesátina This button starts playing the current pattern Tímto tlačítkem se spouští přehrávání současného vzoru Play Přehrát This button stops the playback Tímto tlačítkem se zastavuje přehrávání Stop Zastavit QPM: quarters per minute ČZM: čtvrtin za minutu QPM: Quarters per Minute ČZM: This is the current tempo in quarters per minute Toto je nynější tempo ve čtvrtinách za minutu Drag the slider handle to change the tempo, in quarters per minute Táhněte posuvníkem pro změnu tempa, ve čtvrtinách za minutu This is the pattern table, beats as columns and sounds as rows Toto je tabulka vzoru, doby jako sloupce a zvuky jako řádky Pattern Editor Editor vzorů Cut Vyjmout Copy Kopírovat Paste Vložit Remove Pattern Odstranit vzor Do you want to remove the current pattern? Chcete odstranit současný vzor? Sample Pattern name of an automatically created pattern Ukázkový vzor Insert Pattern Row Vložit řádek se vzorem Drum Key: Tónina bubnu: Sorry Promiňte Please select one, and only one row Vyberte, prosím, jeden, a pouze jeden řádek Remove Row Odstranit řádek Do you want to remove the selected pattern row? Chcete odstranit vybraný vzor nyní? HelpWindow &Home &Domovská složka &Back &Zpět Close Zavřít Zoom In Přiblížit Zoom Out Oddálit KMetroPreferences Preferences Nastavení KMetroPreferencesBase If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Pokud je zaškrtnuto toto políčko, bude si program pamatovat spojení vstupních a výstupních přípojek a pokusí se je při spuštění programu znovu spojit. Automatic ports connection on startup Automatické spojení přípojek při spuštění Optional input port conn: Volitelné spojení vstupní přípojky: This is the optional connection for the MIDI IN port. Toto je volitelné spojení pro vstupní přípojku MIDI. Output port connection: Spojení výstupní přípojky: This is the mandatory connection for the MIDI OUT port Toto je povinné spojení pro výstupní přípojku MIDI Output instrument: Výstupní nástroj: This is the definition of the instrument connected to the MIDI OUT port Toto je vymezení nástroje spojeného s výstupní přípojkou MIDI Bank: Banka: This is the Bank of the selected MIDI program Toto je banka vybraného programu MIDI Channel: Kanál: This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Toto je kanál MIDI, mezi 1 a 16. Obecné MIDI používá pro zvuky bicích nástrojů kanál 10. Program: Program: This is the MIDI program Toto je program MIDI Resolution: Rozlišení: This is the MIDI time resolution (number of ticks in a quarter note) Toto je rozlišení času MIDI (počet tiknutí ve čtvrťové notě) Weak note: Slabá nota: This is the sound of the weak notes for the automatic patterns Toto je zvuk slabých not pro automatické vzory Note duration: Doba trvání noty: This is the note duration in ticks, when using NOTE OFF events Toto je doba trvání noty v tiknutích, když se používají události NOTA VYPNUTA Strong note: Silná nota: This is the sound of the strong notes for the automatic patterns Toto je zvuk silných not pro automatické vzory Optional setting to send NOTE OFF events Volitelné nastavení pro poslání událostí NOTA VYPNUTA Send NOTE OFF events Poslat události NOTA VYPNUTA Forced Dark Mode Vynucen tmavý vzhled Internal Icon Theme Vzhled vlastních ikon Qt Style: Styl Qt: KMetronome Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 Vážná chyba v ALSA sekvenceru. Obyčejně se to stává, když v jádru není podpora pro ALSA, nebo neexistuje uzel zařízení (/dev/snd/seq), nebo když není nahrán modul jádra (snd_seq). Ověřte, prosím, své nastavení ALSA/MIDI. Vrácenou chybou bylo: %1 Error Chyba Import Patterns Zavést vzory Pattern Files (*.pat) Soubory se vzory (*.pat) Export Patterns Vyvést vzory Tempo Tempo Enter new Tempo: Zadat nové tempo: Automatic the pattern is created automatically Automaticky Language Changed Jazyk změněn The language for this application is going to change to %1. Do you want to continue? Jazyk tohoto programu bude změněn na %1. Chcete pokračovat? KMetronomeWindow Drumstick Metronome Drumstick Metronome This button starts playing the rhythm pattern Tímto tlačítkem se spouští přehrávání rytmického vzoru Play Přehrát This button stops playing the rhythm pattern Tímto tlačítkem se zastavuje přehrávání rytmického vzoru Stop Zastavit This button opens the configuration window Tímto tlačítkem se otevírá okno s nastavením Settings Nastavení This button opens the pattern editor Tímto tlačítkem se otevírá editor vzoru Patterns Vzory This button exits the program Tímto tlačítkem se program ukončuje Quit Ukončit Number of measures (bars) and beats played from beginning Počet taktů a dob přehrávaných od začátku Pattern: Vzor: This is the pattern definition to play, either "Automatic" or a custom defined one. Toto je vymezení vzoru pro hru, stanoveného buď "Automaticky", nebo uživatelsky. Beats/Bar: Doby/Takt: This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Toto je počet dob pro každý takt Hodnoty jsou od 1 do 32 Je to čitatel zadání taktového označení. Beat Length: Délka doby: This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Toto je délka doby. Hodnoty znamenají 1, 2, 4, 8, 16, 32 a 64. Je to jmenovatel zadání taktového označení. Whole Celá Half Půlová Quarter Čtvrtina Eighth Osmina Sixteenth Šestnáctina Thirty-Second Dvaatřicetina Sixty-Fourth Čtyřiašedesátina Weak weak notes MIDI velocity Slabá Strong strong notes MIDI velocity Silná Volume audio volume level Hlasitost Pan audio panning Vyvážení This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Toto je síla tónu slabých not v automatickém rytmickém vzoru (všechny kromě první) This is the velocity of the strong note in the automatic rhythm pattern (the first one) Toto je síla tónu silné noty v automatickém rytmickém vzoru (první) This is the MIDI volume control (CC7) Toto je ovládání hlasitosti MIDI (CC7) This is the MIDI pan control (CC10) Toto je ovládání vyvážení MIDI (CC10) This is the musical name of the tempo value Toto je hudební název pro hodnotu tempa The current <i>tempo</i> value Nynější hodnota pro <i>tempo</i> Tempo (in quarters per minute) Tempo (ve čtvrtinách za minutu) This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Posuvníkem se mění <i>tempo</i>, nebo rychlost rytmu. Hodnoty jsou 25 až 250 čtvrtin za minutu. (<i>jednotky metronomu Mälzel</i>). File Soubor Edit Úpravy Help Nápověda language Jazyk toolBar Nástrojový pruh Import Patterns Zavést vzory Export Patterns Vyvést vzory Play/Stop Přehrát/Zastavit Edit Patterns Upravit vzory Configuration Nastavení about O programu Ctrl+Q Ctrl+Q Show Action Buttons Ukázat tlačítka činností Show Toolbar Ukázat nástrojový pruh about Qt O Qt Help Contents Obsah nápovědy QApplication Whole Celá Half Půlová Quarter Čtvrtinová Eight Osminová Sixteenth Šestnáctinová Thirty-Second Dvaatřicetinová Sixty-Fourth Čtyřiašedesátinová QObject Cakewalk Instrument Definition File Soubor s definicí nástroje Cakewalk File Soubor Date Datum SequencerAdapter No connection Žádné spojení po/rc.cpp:101 Drag the slider handle to change the tempo, in quarters per minute Táhněte posuvníkem pro změnu tempa, ve čtvrtinách za minutu po/rc.cpp:104 MIDI Metronome MIDI metronom po/rc.cpp:107 This button starts playing the rhythm pattern Tímto tlačítkem se spouští přehrávání rytmického vzoru po/rc.cpp:110 Play Přehrát po/rc.cpp:113 This button stops playing the rhythm pattern Tímto tlačítkem se zastavuje přehrávání rytmického vzoru po/rc.cpp:116 Stop Zastavit po/rc.cpp:119 This button opens the configuration window Tímto tlačítkem se otevírá okno s nastavením po/rc.cpp:12 Save Uložit po/rc.cpp:122 Settings Nastavení po/rc.cpp:125 This button opens the pattern editor Tímto tlačítkem se otevírá editor vzoru po/rc.cpp:128 Patterns Vzory po/rc.cpp:131 This button exits the program Tímto tlačítkem se program ukončuje po/rc.cpp:134 Quit Ukončit po/rc.cpp:137 Number of measures (bars) and beats played from beginning Počet taktů a dob přehrávaných od začátku po/rc.cpp:140 Pattern: Vzor: po/rc.cpp:143 This is the pattern definition to play, either "Automatic" or a custom defined one. Toto je vymezení vzoru pro hru, stanoveného buď "Automaticky", nebo uživatelsky. po/rc.cpp:146 Beats/Bar: Doby/Takt: po/rc.cpp:149 This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Toto je počet dob pro každý takt Hodnoty jsou od 1 do 32 Je to čitatel zadání taktového označení. po/rc.cpp:15 This button deletes the current pattern definition Tímto tlačítkem se maže vymezení současného vzoru po/rc.cpp:154 Beat Length: Délka doby: po/rc.cpp:157 This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Toto je délka doby. Hodnoty znamenají 1, 2, 4, 8, 16, 32 a 64. Je to jmenovatel zadání taktového označení. po/rc.cpp:162 Whole Celá po/rc.cpp:165 Half Půlová po/rc.cpp:168 Quarter Čtvrtina po/rc.cpp:171 Eighth Osmina po/rc.cpp:174 Sixteenth Šestnáctina po/rc.cpp:177 Thirty-Second Dvaatřicetina po/rc.cpp:18 Delete Smazat po/rc.cpp:180 Sixty-Fourth Čtyřiašedesátina po/rc.cpp:183 Weak Slabý po/rc.cpp:186 Strong Silný po/rc.cpp:189 Volume Hlasitost po/rc.cpp:192 Pan Vyváženost po/rc.cpp:195 This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Toto je rychlost slabých not v automatickém rytmickém vzoru (všechny kromě první) po/rc.cpp:198 This is the velocity of the strong note in the automatic rhythm pattern (the first one) Toto je rychlost silné noty v automatickém rytmickém vzoru (první) po/rc.cpp:201 This is the MIDI volume control (CC7) Toto je ovládání hlasitosti MIDI (CC7) po/rc.cpp:204 This is the MIDI pan control (CC10) Toto je ovládání vyrovnání MIDI (CC10) po/rc.cpp:207 This is the musical name of the tempo value Toto je hudební název pro hodnotu tempa po/rc.cpp:21 Rows: Řádky: po/rc.cpp:210 The current <i>tempo</i> value Nynější hodnota pro <i>tempo</i> po/rc.cpp:213 Tempo (in quarters per minute) Tempo (ve čtvrtinách za minutu) po/rc.cpp:216 This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Posuvníkem se mění <i>tempo</i>, nebo rychlost rytmu. Hodnoty jsou 25 až 250 čtvrtin za minutu. (<i>jednotky metronomu Mälzel</i>). po/rc.cpp:220 If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Pokud je zaškrtnuto toto políčko, bude si program pamatovat spojení vstupních a výstupních přípojek a pokusí se je při spuštění programu znovu spojit. po/rc.cpp:223 Automatic ports connection on startup Automatické spojení přípojek při spuštění po/rc.cpp:226 Optional input port conn: Volitelné spojení vstupní přípojky: po/rc.cpp:229 This is the optional connection for the MIDI IN port. Toto je volitelné spojení pro vstupní přípojku MIDI. po/rc.cpp:232 Output port connection: Spojení výstupní přípojky: po/rc.cpp:235 This is the mandatory connection for the MIDI OUT port Toto je povinné spojení pro výstupní přípojku MIDI po/rc.cpp:238 Output instrument: Výstupní nástroj: po/rc.cpp:24 Use this button to add new rows (sounds) to the current pattern definition Použijte toto tlačítko pro přidání nových řádků (zvuků) do vymezení současného vzoru po/rc.cpp:241 This is the definition of the instrument connected to the MIDI OUT port Toto je vymezení nástroje spojeného s výstupní přípojkou MIDI po/rc.cpp:244 Bank: Banka: po/rc.cpp:247 This is the Bank of the selected MIDI program Toto je banka vybraného programu MIDI po/rc.cpp:250 Channel: Kanál: po/rc.cpp:253 This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Toto je kanál MIDI, mezi 1 a 16. Obecné MIDI používá pro zvuky bicích nástrojů kanál 10. po/rc.cpp:257 Program: Program: po/rc.cpp:260 This is the MIDI program Toto je program MIDI po/rc.cpp:263 Resolution: Rozlišení: po/rc.cpp:266 This is the MIDI time resolution (number of ticks in a quarter note) Toto je rozlišení času MIDI (počet tiknutí ve čtvrťové notě) po/rc.cpp:269 Weak note: Slabá nota: po/rc.cpp:27 Add Přidat po/rc.cpp:272 This is the sound of the weak notes for the automatic patterns Toto je zvuk slabých not pro automatické vzory po/rc.cpp:275 Note duration: Doba trvání noty: po/rc.cpp:278 This is the note duration in ticks, when using NOTE OFF events Toto je doba trvání noty v tiknutích, když se používají události NOTA VYPNUTA po/rc.cpp:281 Strong note: Silná nota: po/rc.cpp:284 This is the sound of the strong notes for the automatic patterns Toto je zvuk silných not pro automatické vzory po/rc.cpp:287 Optional setting to send NOTE OFF events Volitelné nastavení pro poslání událostí NOTA VYPNUTA po/rc.cpp:290 Send NOTE OFF events Poslat události NOTA VYPNUTA po/rc.cpp:293 If this option is activated, the knobs are drawn using a custom style Pokud je zapnuta tato volba, otočné knoflíky se vykreslují za použití vlastního stylu po/rc.cpp:296 Styled Knobs Stylizované knoflíky po/rc.cpp:297 Your names Pavel Fric po/rc.cpp:298 Your emails fripohled.blogspot.com po/rc.cpp:3 Pattern: Vzor: po/rc.cpp:30 Use this button to remove the selected row (sound) from the pattern definition Toto tlačítko použijte pro odstranění vybraného řádku (zvuku) z vymezení současného vzoru po/rc.cpp:33 Remove Odstranit po/rc.cpp:36 Beats: Doby: po/rc.cpp:39 Highligh the grid columns while playing Zvýraznit sloupce mřížky při přehrávání po/rc.cpp:42 Highlight Columns Zvýraznit Sloupce po/rc.cpp:46 This is the current beat number Toto je číslo nynější doby po/rc.cpp:49 This is the pattern table, beats as columns and sounds as rows Toto je tabulka vzoru, doby jako sloupce a zvuky jako řádky po/rc.cpp:52 Number of beats per measure (bar) Počet dob na takt po/rc.cpp:55 This is the beat length for the pattern column. Toto je délka doby pro sloupec vzoru. po/rc.cpp:58 Whole Celá po/rc.cpp:6 Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Napište nový název a stiskněte tlačítko "Uložit" pro vytvoření nového vzoru. nebo vyberte stávající vzor ze seznamu. po/rc.cpp:61 Half Půlová po/rc.cpp:64 Quarter Čtvrtina po/rc.cpp:67 Eighth Osmina po/rc.cpp:70 Sixteenth Šestnáctina po/rc.cpp:73 Thirty-Second Dvaatřicetina po/rc.cpp:76 Sixty-Fourth Čtyřiašedesátina po/rc.cpp:79 This button starts playing the current pattern Tímto tlačítkem se spouští přehrávání současného vzoru po/rc.cpp:82 Play Přehrát po/rc.cpp:85 This button stops the playback Tímto tlačítkem se zastavuje přehrávání po/rc.cpp:88 Stop Zastavit po/rc.cpp:9 This button stores the current pattern definition with the name given Tímto tlačítkem se ukládá vymezení současného vzoru se zadaným názvem po/rc.cpp:91 QPM: quarters per minute ČZM: čtvrtin za minutu po/rc.cpp:94 QPM: ČZM: po/rc.cpp:97 This is the current tempo in quarters per minute Toto je nynější tempo ve čtvrtinách za minutu) src/drumgrid.cpp:278 Do you want to remove the current pattern? Chcete odstranit současný vzor? src/drumgrid.cpp:279 Remove Pattern Odstranit vzor src/drumgrid.cpp:333 Sample Pattern Ukázkový vzor src/drumgrid.cpp:364 Insert Pattern Row Vložit vzor nyní src/drumgrid.cpp:365 Drum Key: Tónina bubnu: src/drumgrid.cpp:386 Please select one, and only one row Vyberte, prosím, jednu, a pouze jeden řádek src/drumgrid.cpp:388 Do you want to remove the selected pattern row? Chcete odstranit vybraný vzor nyní? src/drumgrid.cpp:389 Remove Row Odstranit řádek src/drumgrid.cpp:51 Pattern Editor Editor vzorů src/drumgrid.cpp:67 Cut src/drumgrid.cpp:68 Copy src/drumgrid.cpp:69 Paste Vzory src/kmetronome.cpp:114 Play/Stop Přehrát/Zastavit src/kmetronome.cpp:118 Show Action Buttons Ukázat tlačítka činností src/kmetronome.cpp:125 Patterns Vzory src/kmetronome.cpp:130 Import Patterns Zavést vzory src/kmetronome.cpp:135 Export Patterns Vyvést vzory src/kmetronome.cpp:497 *.pat|Pattern Files (*.pat) *.pat|Soubory se vzory (*.pat) src/kmetronome.cpp:498 Import Patterns Zavést vzory src/kmetronome.cpp:510 *.pat|Pattern Files (*.pat) *.pat|Soubory se vzory (*.pat) src/kmetronome.cpp:511 Export Patterns Vyvést vzory src/kmetronome.cpp:527 Patterns Vzory src/kmetronome.cpp:87 Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 Vážná chyba v ALSA sekvenceru. Obyčejně se to stává, když v jádru není podpora pro ALSA, nebo neexistuje uzel zařízení (/dev/snd/seq), nebo když není nahrán modul jádra (snd_seq). Ověřte, prosím, své nastavení ALSA/MIDI. Vrácenou chybou bylo: %1 src/kmetronome.cpp:93 Error Chyba src/kmetronomeview.cpp:145 Tempo Tempo Enter new Tempo: Zadat nové tempo: src/kmetronomeview.cpp:179 Automatic Automaticky src/kmetropreferences.cpp:29 Preferences Nastavení src/main.cpp:29 KDE MIDI metronome using ALSA sequencer Metronom MIDI pro prostředí KDE používající sekvencer ALSA src/main.cpp:41 KMetronome KMetronome src/main.cpp:43 (C) 2005-2012 Pedro Lopez-Cabanillas (C) 2005-2012 Pedro Lopez-Cabanillas src/main.cpp:45 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas src/sequenceradapter.cpp:65 No connection Žádné spojení kmetronome-1.3.0/translations/PaxHeaders.13848/kmetronome_tr.ts0000644000000000000000000000013214155347442021426 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.361062943 30 ctime=1639304994.349062928 kmetronome-1.3.0/translations/kmetronome_tr.ts0000644000175000001440000017005114155347442022216 0ustar00pedrousers00000000000000 About <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version: %1<br/>Qt version: %5<br/>Drumstick version: %6<br/>Build date: %2<br/>Build time: %3<br/>Compiler: %4</p></body></html> AboutClass About <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Drumstick Metronome</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://kmetronome.sourceforge.io"><span style=" text-decoration: underline; color:#007af4;">https://kmetronome.sourceforge.io</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" font-family:'Sans Serif'; text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This program is free software; you can redistribute 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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">You should have received a copy of the GNU General Public License along with this program; if not, see </span><a href="https://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#007af4;">https://www.gnu.org/licenses/</span></a><span style=" font-family:'DejaVu Sans';">.</span></p></body></html> DrumGrid Rows: Sıralar: Use this button to add new rows (sounds) to the current pattern definition Bu düğmeyi şu anki kalıp tanımına yeni sıralar (sesler) eklemek için kullanın Add Ekle Use this button to remove the selected row (sound) from the pattern definition Bu düğmeyi şu anki kalıp tanımından seçilmiş sırayı (sesleri) kaldırmak için kullanın Remove Kaldır Beats: Vuruşlar: Highligh the grid columns while playing Çalarken ızgara sütünlarını vurgula Highlight Columns Sütunları Vurgula This is the current beat number Şu anki vuruş sayısıdır Pattern: Kalıp: Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Yeni bir kalıp oluşturmak için yeni bir başlık yazınız veya listeden var olan bir kalıp seçiniz. This button stores the current pattern definition with the name given Bu düğme şu anki kalıp tanımını yükler ve verilen başlığı kullanır Save Kaydet This button deletes the current pattern definition Bu düğme şu anki kalıp tanımını siler Delete Sil Number of beats per measure (bar) Ölçü başına düşen vuruş sayısı This is the beat length for the pattern column. Bu, kalıp sütununda yer alan vuruş uzunluğudur. Whole Birlik süre Half İkilik süre Quarter Dörtlük süre Eighth Sekizlik süre Sixteenth Onaltılık süre Thirty-Second Otuz-ikilik süre Sixty-Fourth Atmış-dörtlük süre This button starts playing the current pattern Bu düğme bu kalıbın çalmasını başlatır Play Çal This button stops the playback Bu düğme çalmayı durdurur Stop Dur QPM: quarters per minute QPM: dakika başına düşen vuruş sayısı QPM: Quarters per Minute QPM: This is the current tempo in quarters per minute Bu, dakika başına düşen şu anki tempodur Drag the slider handle to change the tempo, in quarters per minute Tempoyu değiştirmek için dakika başına dörtlük olarak kaydırgaçı sürükleyiniz, This is the pattern table, beats as columns and sounds as rows Bu, vuruşların sütunlarla ve seslerin sıralar halinde gösterildiği kalıp tablosudur Pattern Editor Kalıp Düzenleyici Cut Copy Paste Kalıplar Remove Pattern Kalıbı Kaldır Do you want to remove the current pattern? Bu kalıbı kaldırmak istiyor musunuz? Sample Pattern name of an automatically created pattern Örnek Kalıp Insert Pattern Row Kalıp Sırası Ekle Drum Key: Davul Tuşu Sorry Please select one, and only one row Lütfen, sadece ve sadece bir sıra seçiniz Remove Row Sırayı Kaldır Do you want to remove the selected pattern row? Seçili kalıbı sırasını kaldırmak istiyor musunuz? HelpWindow &Home &Back Close Zoom In Zoom Out KMetroPreferences Preferences Tercihler KMetroPreferencesBase If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Eğer bu seçim kutusu etkinse, program giriş çıkış portlarındaki bağlantıları hatırlayacaktır, ve program yeniden başladığında yeniden bağlanmayı deneyecektir. Automatic ports connection on startup Yeniden başlarken otomatik port bağlantıları yapılsın Optional input port conn: Opsiyonel giriş portu conn değeri: This is the optional connection for the MIDI IN port. Bu MIDI IN portu için opsiyonel bağlantıdır. Output port connection: Çıkış portu bağlantısı: This is the mandatory connection for the MIDI OUT port MIDI OUT portu için zorunlu bağlantıdır Output instrument: Çıkış çalgısı: This is the definition of the instrument connected to the MIDI OUT port Bu, MIDI OUT portuna bağlı olan çalgının tanımıdır Bank: Ses Bankası: This is the Bank of the selected MIDI program Bu, seçili MIDI programının Ses Bankasıdır Channel: Kanal: This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Bu, 1 ile 16 arasındaki MIDI kanalıdır. General MIDI vurma çalgı sesleri için 10 numaralı kanalı kullanır. Program: Program: This is the MIDI program Bu MIDI programıdır Resolution: Çözünürlük: This is the MIDI time resolution (number of ticks in a quarter note) Bu, MIDI zaman çözünürlüğüdür (dörtlük notadaki tıkların sayısı) Weak note: Zayıf nota: This is the sound of the weak notes for the automatic patterns Bu, otomatik kalıplardaki zayıf notaların sesidir Note duration: Nota süresi: This is the note duration in ticks, when using NOTE OFF events BU, NOTE OFF seçeneği kullanıldığında, tıklardaki nota süresidir Strong note: Kuvvetli nota: This is the sound of the strong notes for the automatic patterns Bu, otomatik kalıplardaki kuvvetli notaların sesidir Optional setting to send NOTE OFF events NOTE OFF seçimi gönderildiğindeki seçimlik ayarlar Send NOTE OFF events NOTE OFF olaylarını gönder Forced Dark Mode Internal Icon Theme Qt Style: KMetronome Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 ALSA sekvansırdan ölümcül hata. Bu genelde çekirdeğin ALSA desteği olmadığı veya aygıt yolunun (/dev/snd/seq gibi) olmadığı durumlarda ya da çekirdek modülünün (örneğin snd seq) yüklü olmadığı durumlarda meydana gelir. Lütfen ALSA/MIDI ayarlarınızı kontrol edin. Gelen hata şöyle idi: %1 Error Hata Import Patterns Kalıpları İçeri Aktar Pattern Files (*.pat) Export Patterns Kalıpları Dışarı Aktar Tempo Tempo Enter new Tempo: Yeni Tempo Giriniz: Automatic the pattern is created automatically Otomatik Language Changed The language for this application is going to change to %1. Do you want to continue? KMetronomeWindow Drumstick Metronome This button starts playing the rhythm pattern Bu düğme ritm kalıbının çalmasını başlatır Play Çal This button stops playing the rhythm pattern Bu düğme ritm kalıbının çalmasını durdurur Stop Dur This button opens the configuration window Bu düğme yapılandırma penceresini açar Settings Ayarlar This button opens the pattern editor Bu düğme kalıp düzenleyicisini açar Patterns Kalıplar This button exits the program Bu düğme programdan çıkılmasını sağlar Quit Çık Number of measures (bars) and beats played from beginning Baştan itibaren çalınan ölçü ve vuruşların sayısı Pattern: Kalıp: This is the pattern definition to play, either "Automatic" or a custom defined one. Bu, çalınacak kalıbın tanımıdır, bunu "Otomatik" olarak ayarlayabileceğiniz gibi tanımı kendiniz de oluşturabilirsiniz. Beats/Bar: Vuruşlar/Ölçüler: This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Bu, her ölçüdeki vuruşların sayısıdır. Değerler 1 ile 32 arasındadır. Ölçü birimi özelliğinin sayısal göstergesidir. Beat Length: Vuruş Uzunluğu: This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Bu, vuruş süresidir. Değerler 1, 2, 4, 8, 16, 32 ve 64 arasındadır. Bunlar, ölçü birimi içindeki alt sürelerin özellikleridir. Whole Birlik süre Half İkilik süre Quarter Dörtlük süre Eighth Sekizlik süre Sixteenth Onaltılık süre Thirty-Second Otuz-ikilik süre Sixty-Fourth Atmış-dörtlük süre Weak weak notes MIDI velocity Zayıf Strong strong notes MIDI velocity Kuvvetli Volume audio volume level Gürlük Pan audio panning Pan This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Bu, otomatik ritm kalıbındaki zayıf notanın seslendirme gücüdür (ilki dışındaki tüm notaların) This is the velocity of the strong note in the automatic rhythm pattern (the first one) Bu, otomatik ritm kalıbındaki kuvvetli notanın seslendirme gücüdür (ilk vuruşun) This is the MIDI volume control (CC7) Bu MIDI ses denetimidir (CC7) This is the MIDI pan control (CC10) Bu MIDI pan denetimidir (CC10) This is the musical name of the tempo value Bu, tempo değerinin müziksel adıdır The current <i>tempo</i> value Geçerli <i>tempo</i> değeri Tempo (in quarters per minute) Tempo (dakika başına dörtlük süre) This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Kaydırgaç, <i>tempoyu</i>, veya ritmin hızını değiştirir. Değerler dakika başına 25 ile 250 dörtlüktür. (<i>Maelzel Metronom birimine göre</i>) File Edit Help language toolBar Import Patterns Kalıpları İçeri Aktar Export Patterns Kalıpları Dışarı Aktar Play/Stop Çal/Dur Edit Patterns Configuration about Ctrl+Q Show Action Buttons Eylem Düğmelerini Göster Show Toolbar about Qt Help Contents QApplication Whole Birlik süre Half İkilik süre Quarter Dörtlük süre Eight Sixteenth Onaltılık süre Thirty-Second Otuz-ikilik süre Sixty-Fourth Atmış-dörtlük süre QObject Cakewalk Instrument Definition File File Date SequencerAdapter No connection Bağlantı Kurulamadı po/rc.cpp:101 Drag the slider handle to change the tempo, in quarters per minute Tempoyu değiştirmek için dakika başına dörtlük olarak kaydırgaçı sürükleyiniz, po/rc.cpp:104 MIDI Metronome MIDI Metronome po/rc.cpp:107 This button starts playing the rhythm pattern Bu düğme ritm kalıbının çalmasını başlatır po/rc.cpp:110 Play Çal po/rc.cpp:113 This button stops playing the rhythm pattern Bu düğme ritm kalıbının çalmasını durdurur po/rc.cpp:116 Stop Dur po/rc.cpp:119 This button opens the configuration window Bu düğme yapılandırma penceresini açar po/rc.cpp:12 Save Kaydet po/rc.cpp:122 Settings Ayarlar po/rc.cpp:125 This button opens the pattern editor Bu düğme kalıp düzenleyicisini açar po/rc.cpp:128 Patterns Kalıplar po/rc.cpp:131 This button exits the program Bu düğme programdan çıkılmasını sağlar po/rc.cpp:134 Quit Çık po/rc.cpp:137 Number of measures (bars) and beats played from beginning Baştan itibaren çalınan ölçü ve vuruşların sayısı po/rc.cpp:140 Pattern: Kalıp: po/rc.cpp:143 This is the pattern definition to play, either "Automatic" or a custom defined one. Bu, çalınacak kalıbın tanımıdır, bunu "Otomatik" olarak ayarlayabileceğiniz gibi tanımı kendiniz de oluşturabilirsiniz. po/rc.cpp:146 Beats/Bar: Vuruşlar/Ölçüler: po/rc.cpp:149 This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Bu, her ölçüdeki vuruşların sayısıdır. Değerler 1 ile 32 arasındadır. Ölçü birimi özelliğinin sayısal göstergesidir. po/rc.cpp:15 This button deletes the current pattern definition Bu düğme şu anki kalıp tanımını siler po/rc.cpp:154 Beat Length: Vuruş Uzunluğu: po/rc.cpp:157 This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Bu, vuruş süresidir. Değerler 1, 2, 4, 8, 16, 32 ve 64 arasındadır. Bunlar, ölçü birimi içindeki alt sürelerin özellikleridir. po/rc.cpp:162 Whole Birlik süre po/rc.cpp:165 Half İkilik süre po/rc.cpp:168 Quarter Dörtlük süre po/rc.cpp:171 Eighth Sekizlik süre po/rc.cpp:174 Sixteenth Onaltılık süre po/rc.cpp:177 Thirty-Second Otuz-ikilik süre po/rc.cpp:18 Delete Sil po/rc.cpp:180 Sixty-Fourth Atmış-dörtlük süre po/rc.cpp:183 Weak Zayıf po/rc.cpp:186 Strong Kuvvetli po/rc.cpp:189 Volume Gürlük po/rc.cpp:192 Pan Pan po/rc.cpp:195 This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Bu, otomatik ritm kalıbındaki zayıf notanın seslendirme gücüdür (ilki dışındaki tüm notaların) po/rc.cpp:198 This is the velocity of the strong note in the automatic rhythm pattern (the first one) Bu, otomatik ritm kalıbındaki kuvvetli notanın seslendirme gücüdür (ilk vuruşun) po/rc.cpp:201 This is the MIDI volume control (CC7) Bu MIDI ses denetimidir (CC7) po/rc.cpp:204 This is the MIDI pan control (CC10) Bu MIDI pan denetimidir (CC10) po/rc.cpp:207 This is the musical name of the tempo value Bu, tempo değerinin müziksel adıdır po/rc.cpp:21 Rows: Sıralar: po/rc.cpp:210 The current <i>tempo</i> value Geçerli <i>tempo</i> değeri po/rc.cpp:213 Tempo (in quarters per minute) Tempo (dakika başına dörtlük süre) po/rc.cpp:216 This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Kaydırgaç, <i>tempoyu</i>, veya ritmin hızını değiştirir. Değerler dakika başına 25 ile 250 dörtlüktür. (<i>Maelzel Metronom birimine göre</i>) po/rc.cpp:220 If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Eğer bu seçim kutusu etkinse, program giriş çıkış portlarındaki bağlantıları hatırlayacaktır, ve program yeniden başladığında yeniden bağlanmayı deneyecektir. po/rc.cpp:223 Automatic ports connection on startup Yeniden başlarken otomatik port bağlantıları yapılsın po/rc.cpp:226 Optional input port conn: Opsiyonel giriş portu conn değeri: po/rc.cpp:229 This is the optional connection for the MIDI IN port. Bu MIDI IN portu için opsiyonel bağlantıdır. po/rc.cpp:232 Output port connection: Çıkış portu bağlantısı: po/rc.cpp:235 This is the mandatory connection for the MIDI OUT port MIDI OUT portu için zorunlu bağlantıdır po/rc.cpp:238 Output instrument: Çıkış çalgısı: po/rc.cpp:24 Use this button to add new rows (sounds) to the current pattern definition Bu düğmeyi şu anki kalıp tanımına yeni sıralar (sesler) eklemek için kullanın po/rc.cpp:241 This is the definition of the instrument connected to the MIDI OUT port Bu, MIDI OUT portuna bağlı olan çalgının tanımıdır po/rc.cpp:244 Bank: Ses Bankası: po/rc.cpp:247 This is the Bank of the selected MIDI program Bu, seçili MIDI programının Ses Bankasıdır po/rc.cpp:250 Channel: Kanal: po/rc.cpp:253 This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Bu, 1 ile 16 arasındaki MIDI kanalıdır. General MIDI vurma çalgı sesleri için 10 numaralı kanalı kullanır. po/rc.cpp:257 Program: Program: po/rc.cpp:260 This is the MIDI program Bu MIDI programıdır po/rc.cpp:263 Resolution: Çözünürlük: po/rc.cpp:266 This is the MIDI time resolution (number of ticks in a quarter note) Bu, MIDI zaman çözünürlüğüdür (dörtlük notadaki tıkların sayısı) po/rc.cpp:269 Weak note: Zayıf nota: po/rc.cpp:27 Add Ekle po/rc.cpp:272 This is the sound of the weak notes for the automatic patterns Bu, otomatik kalıplardaki zayıf notaların sesidir po/rc.cpp:275 Note duration: Nota süresi: po/rc.cpp:278 This is the note duration in ticks, when using NOTE OFF events BU, NOTE OFF seçeneği kullanıldığında, tıklardaki nota süresidir po/rc.cpp:281 Strong note: Kuvvetli nota: po/rc.cpp:284 This is the sound of the strong notes for the automatic patterns Bu, otomatik kalıplardaki kuvvetli notaların sesidir po/rc.cpp:287 Optional setting to send NOTE OFF events NOTE OFF seçimi gönderildiğindeki seçimlik ayarlar po/rc.cpp:290 Send NOTE OFF events NOTE OFF olaylarını gönder po/rc.cpp:293 If this option is activated, the knobs are drawn using a custom style Eğer bu seçenek etkinse, düğmeler özelleştirilmiş stili kullanacaklardır po/rc.cpp:296 Styled Knobs Stilize Düğmeler po/rc.cpp:297 Your names Server Acim po/rc.cpp:298 Your emails serveracim@gmail.com po/rc.cpp:3 Pattern: Kalıp: po/rc.cpp:30 Use this button to remove the selected row (sound) from the pattern definition Bu düğmeyi şu anki kalıp tanımından seçilmiş sırayı (sesleri) kaldırmak için kullanın po/rc.cpp:33 Remove Kaldır po/rc.cpp:36 Beats: Vuruşlar: po/rc.cpp:39 Highligh the grid columns while playing Çalarken ızgara sütünlarını vurgula po/rc.cpp:42 Highlight Columns Sütunları Vurgula po/rc.cpp:46 This is the current beat number Şu anki vuruş sayısıdır po/rc.cpp:49 This is the pattern table, beats as columns and sounds as rows Bu, vuruşların sütunlarla ve seslerin sıralar halinde gösterildiği kalıp tablosudur po/rc.cpp:52 Number of beats per measure (bar) Ölçü başına düşen vuruş sayısı po/rc.cpp:55 This is the beat length for the pattern column. Bu, kalıp sütununda yer alan vuruş uzunluğudur. po/rc.cpp:58 Whole Birlik süre po/rc.cpp:6 Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Yeni bir kalıp oluşturmak için yeni bir başlık yazınız veya listeden var olan bir kalıp seçiniz. po/rc.cpp:61 Half İkilik süre po/rc.cpp:64 Quarter Dörtlük süre po/rc.cpp:67 Eighth Sekizlik süre po/rc.cpp:70 Sixteenth Onaltılık süre po/rc.cpp:73 Thirty-Second Otuz-ikilik süre po/rc.cpp:76 Sixty-Fourth Atmış-dörtlük süre po/rc.cpp:79 This button starts playing the current pattern Bu düğme bu kalıbın çalmasını başlatır po/rc.cpp:82 Play Çal po/rc.cpp:85 This button stops the playback Bu düğme çalmayı durdurur po/rc.cpp:88 Stop Dur po/rc.cpp:9 This button stores the current pattern definition with the name given Bu düğme şu anki kalıp tanımını yükler ve verilen başlığı kullanır po/rc.cpp:91 QPM: quarters per minute QPM: dakika başına düşen vuruş sayısı po/rc.cpp:94 QPM: QPM: po/rc.cpp:97 This is the current tempo in quarters per minute Bu, dakika başına düşen şu anki tempodur src/drumgrid.cpp:278 Do you want to remove the current pattern? Bu kalıbı kaldırmak istiyor musunuz? src/drumgrid.cpp:279 Remove Pattern Kalıbı Kaldır src/drumgrid.cpp:333 Sample Pattern Örnek Kalıp src/drumgrid.cpp:364 Insert Pattern Row Kalıp Sırası Ekle src/drumgrid.cpp:365 Drum Key: Davul Tuşu src/drumgrid.cpp:386 Please select one, and only one row Lütfen, sadece ve sadece bir sıra seçiniz src/drumgrid.cpp:388 Do you want to remove the selected pattern row? Seçili kalıbı sırasını kaldırmak istiyor musunuz? src/drumgrid.cpp:389 Remove Row Sırayı Kaldır src/drumgrid.cpp:51 Pattern Editor Kalıp Düzenleyici src/drumgrid.cpp:67 Cut src/drumgrid.cpp:68 Copy src/drumgrid.cpp:69 Paste Kalıplar src/kmetronome.cpp:114 Play/Stop Çal/Dur src/kmetronome.cpp:118 Show Action Buttons Eylem Düğmelerini Göster src/kmetronome.cpp:125 Patterns Kalıplar src/kmetronome.cpp:130 Import Patterns Kalıpları İçeri Aktar src/kmetronome.cpp:135 Export Patterns Kalıpları Dışarı Aktar src/kmetronome.cpp:497 *.pat|Pattern Files (*.pat) *.pat|Kalıp Dosyaları (*.pat) src/kmetronome.cpp:498 Import Patterns Kalıpları İçeri Aktar src/kmetronome.cpp:510 *.pat|Pattern Files (*.pat) *.pat|Kalıp Dosyaları (*.pat) src/kmetronome.cpp:511 Export Patterns Kalıpları Dışarı Aktar src/kmetronome.cpp:527 Patterns Kalıplar src/kmetronome.cpp:87 Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 ALSA sekvansırdan ölümcül hata. Bu genelde çekirdeğin ALSA desteği olmadığı veya aygıt yolunun (/dev/snd/seq gibi) olmadığı durumlarda ya da çekirdek modülünün (örneğin snd seq) yüklü olmadığı durumlarda meydana gelir. Lütfen ALSA/MIDI ayarlarınızı kontrol edin. Gelen hata şöyle idi: %1 src/kmetronome.cpp:93 Error Hata src/kmetronomeview.cpp:145 Tempo Tempo Enter new Tempo: Yeni Tempo Giriniz: src/kmetronomeview.cpp:179 Automatic Otomatik src/kmetropreferences.cpp:29 Preferences Tercihler src/main.cpp:29 KDE MIDI metronome using ALSA sequencer KDE MIDI metronom ALSA sekvansır kullanıyor src/main.cpp:41 KMetronome KMetronom src/main.cpp:43 (C) 2005-2012 Pedro Lopez-Cabanillas (C) 2005-2012 Pedro Lopez-Cabanillas src/main.cpp:45 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas src/sequenceradapter.cpp:65 No connection Bağlantı Kurulamadı kmetronome-1.3.0/translations/PaxHeaders.13848/kmetronome_fr.ts0000644000000000000000000000013214155347442021410 xustar0030 mtime=1639304994.349062928 30 atime=1639304994.437063034 30 ctime=1639304994.349062928 kmetronome-1.3.0/translations/kmetronome_fr.ts0000644000175000001440000016771114155347442022211 0ustar00pedrousers00000000000000 About <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }</style></head><body style="font-family:'Sans Serif'; font-size:12pt; font-style:normal;"><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version: %1<br/>Qt version: %5<br/>Drumstick version: %6<br/>Build date: %2<br/>Build time: %3<br/>Compiler: %4</p></body></html> AboutClass About <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Drumstick Metronome</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://kmetronome.sourceforge.io"><span style=" text-decoration: underline; color:#007af4;">https://kmetronome.sourceforge.io</span></a></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Copyright © 2002-2021, </span><a href="mailto:plcl@users.sf.net?subject=VMPK"><span style=" font-family:'Sans Serif'; text-decoration: underline; color:#0057ae;">Pedro Lopez-Cabanillas &lt;plcl@users.sf.net&gt;</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This program is free software; you can redistribute 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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">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.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">You should have received a copy of the GNU General Public License along with this program; if not, see </span><a href="https://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#007af4;">https://www.gnu.org/licenses/</span></a><span style=" font-family:'DejaVu Sans';">.</span></p></body></html> DrumGrid Rows: Lignes : Use this button to add new rows (sounds) to the current pattern definition Utilisez ce bouton pour ajouter de nouvelles lignes (sons) à la définition actuelle de figure rythmique Add Ajouter Use this button to remove the selected row (sound) from the pattern definition Utilisez ce bouton pour supprimer la ligne (le son) sélectionnée de la figure rythmique Remove Retirer Beats: Notes : Highligh the grid columns while playing Met les colonnes de la grille en surbrillance durant la lecture Highlight Columns Mettre les colonnes en surbrillance This is the current beat number Numéro de battement actuel Pattern: Figure : Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Saisissez un nouveau nom et cliquez sur le bouton « Enregistrer » pour créer une nouvelle figure rythmique, ou choisissez une figure existante dans la liste déroulante. This button stores the current pattern definition with the name given Ce bouton enregistre la figure actuelle avec le nom indiqué Save Enregistrer This button deletes the current pattern definition Ce bouton supprime la définition actuelle de figure Delete Supprimer Number of beats per measure (bar) Nombre de battements par mesure This is the beat length for the pattern column. Durée du battement pour cette colonne de la figure Whole Ronde Half Blanche Quarter Noire Eighth Croche Sixteenth Double croche Thirty-Second Triple croche Sixty-Fourth Quadruple croche This button starts playing the current pattern Démarre la lecture de la figure rythmique Play Lire This button stops the playback Interrompt la lecture Stop Stop QPM: quarters per minute Tempo (en noires par minute) QPM: Quarters per Minute Tempo : This is the current tempo in quarters per minute Tempo en noires par minute Drag the slider handle to change the tempo, in quarters per minute Déplacez le curseur pour modifier le tempo, en noires par minutes This is the pattern table, beats as columns and sounds as rows Table des figures rythmiques, les battements en colonnes et les sons sur les lignes. Pattern Editor Éditeur de figures rythmiques Cut Copy Paste Figures Remove Pattern Supprimer la figure Do you want to remove the current pattern? Voulez-vous supprimer la figure actuelle ? Sample Pattern name of an automatically created pattern Exemple de figure Insert Pattern Row Insérer une ligne Drum Key: Touche « tambour » : Sorry Please select one, and only one row Veuillez ne sélectionner qu’une seule ligne Remove Row Supprimer la ligne Do you want to remove the selected pattern row? Voulez-vous supprimer la figure rythmique de cette ligne ? HelpWindow &Home &Back Close Zoom In Zoom Out KMetroPreferences Preferences Préférences KMetroPreferencesBase If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Si cette case est cochée, l'application se souviendra des connexions aux ports d'entrées et sorties et tentera de s'y reconnecter au prochain démarrage. Automatic ports connection on startup Connexion automatique des ports au démarrage Optional input port conn: Connexion (optionnelle) du port d'entrée : This is the optional connection for the MIDI IN port. Connexion optionnelle du port d’entrée MIDI. Output port connection: Connexion du port de sortie : This is the mandatory connection for the MIDI OUT port Connexion obligatoire du port MIDI de sortie Output instrument: Instrument de sortie : This is the definition of the instrument connected to the MIDI OUT port Définition de l’instrument relié au port MIDI de sortie Bank: Banque : This is the Bank of the selected MIDI program Banque du programme MIDI sélectionné Channel: Canal : This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Canal MIDI, entre 1 et 16. Le programme « General » utilise le canal 10 pour les sons de percussion. Program: Programme : This is the MIDI program Programme MIDI Resolution: Résolution : This is the MIDI time resolution (number of ticks in a quarter note) Résolution MIDI (nombre de tics pour une noire) Weak note: Note du temps faible : This is the sound of the weak notes for the automatic patterns Son pour la note faible des figures rythmiques automatiques Note duration: Durée d'une note : This is the note duration in ticks, when using NOTE OFF events Durée d’une note, en nombre de tics d’horloge, lorsque vous utilisez les événements NOTE OFF Strong note: Note du temps fort : This is the sound of the strong notes for the automatic patterns Son pour le temps fort des figures rythmiques automatiques Optional setting to send NOTE OFF events Envoyer des évènements « NOTE OFF » (facultatif) Send NOTE OFF events Envoyer des évènements « NOTE OFF » Forced Dark Mode Internal Icon Theme Qt Style: KMetronome Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 Erreur fatale du séquenceur ALSA. Cela arrive généralement lorsque le noyau ne gère pas ALSA, ou lorsque le fichier « /dev/snd/seq » n'existe pas, ou lorsque le module noyau « snd_seq » n'est pas chargé. Veuillez vérifier la configuration de ALSA/MIDI. Le nº d'erreur retourné est : %1 Error Erreur Import Patterns Importer des figures Pattern Files (*.pat) Export Patterns Exporter des figures Tempo Tempo Enter new Tempo: Saisissez le nouveau tempo : Automatic the pattern is created automatically Automatique Language Changed The language for this application is going to change to %1. Do you want to continue? KMetronomeWindow Drumstick Metronome This button starts playing the rhythm pattern Démarre la lecture du motif rythmique Play Lire This button stops playing the rhythm pattern Arrête la lecture du motif rythmique Stop Stop This button opens the configuration window Affiche la fenêtre de configuration Settings Configuration This button opens the pattern editor Ce bouton ouvre l’éditeur de figures rythmiques Patterns Figures This button exits the program Quitte le programme Quit Quitter Number of measures (bars) and beats played from beginning Nombre de mesures et de notes jouées depuis le début Pattern: Figure : This is the pattern definition to play, either "Automatic" or a custom defined one. Définition de la figure à jouer, « automatique » ou personnalisée. Beats/Bar: Notes par mesure : This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Nombre de temps dans une mesure Les valeurs vont de 1 à 32. C’est le numérateur de la signature rythmique. Beat Length: Durée de la note : This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Durée de la note. Les valeurs sont 1, 2, 4, 8, 16, 32 et 64. C'est le dénominateur de la signature rythmique. Whole Ronde Half Blanche Quarter Noire Eighth Croche Sixteenth Double croche Thirty-Second Triple croche Sixty-Fourth Quadruple croche Weak weak notes MIDI velocity Faible Strong strong notes MIDI velocity Fort Volume audio volume level Volume Pan audio panning Balance This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Intensité des temps faibles dans la figure rythmique (toutes les notes sauf la première) This is the velocity of the strong note in the automatic rhythm pattern (the first one) Intensité du temps fort dans la figure rythmique (la première note) This is the MIDI volume control (CC7) Contrôle du volume MIDI (CC7) This is the MIDI pan control (CC10) Contrôle de la balance MIDI (CC10) This is the musical name of the tempo value Nom musical de la valeur du tempo The current <i>tempo</i> value Valeur actuelle du <i>tempo</i> Tempo (in quarters per minute) Tempo (en noires par minute) : This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Ce curseur modifie le <i>tempo</i>, ou la vitesse du rythme. Les valeurs possibles vont de 25 à 250 noires par minute (<i>unités du métronome de Maelzel</i>) File Edit Help language toolBar Import Patterns Importer des figures Export Patterns Exporter des figures Play/Stop Lire/Stop Edit Patterns Configuration about Ctrl+Q Show Action Buttons Afficher les boutons d’action Show Toolbar about Qt Help Contents QApplication Whole Ronde Half Blanche Quarter Noire Eight Sixteenth Double croche Thirty-Second Triple croche Sixty-Fourth Quadruple croche QObject Cakewalk Instrument Definition File File Date SequencerAdapter No connection Pas de connexion po/rc.cpp:101 Drag the slider handle to change the tempo, in quarters per minute Déplacez le curseur pour modifier le tempo, en noires par minutes po/rc.cpp:104 MIDI Metronome Métronome MIDI po/rc.cpp:107 This button starts playing the rhythm pattern Démarre la lecture du motif rythmique po/rc.cpp:110 Play Lire po/rc.cpp:113 This button stops playing the rhythm pattern Arrête la lecture du motif rythmique po/rc.cpp:116 Stop Stop po/rc.cpp:119 This button opens the configuration window Affiche la fenêtre de configuration po/rc.cpp:12 Save Enregistrer po/rc.cpp:122 Settings Configuration po/rc.cpp:125 This button opens the pattern editor Ce bouton ouvre l’éditeur de figures rythmiques po/rc.cpp:128 Patterns Figures po/rc.cpp:131 This button exits the program Quitte le programme po/rc.cpp:134 Quit Quitter po/rc.cpp:137 Number of measures (bars) and beats played from beginning Nombre de mesures et de notes jouées depuis le début po/rc.cpp:140 Pattern: Figure : po/rc.cpp:143 This is the pattern definition to play, either "Automatic" or a custom defined one. Définition de la figure à jouer, « automatique » ou personnalisée. po/rc.cpp:146 Beats/Bar: Notes par mesure : po/rc.cpp:149 This is the number of beats for each measure (bar). Values are from 1 to 32. It is the numerator of the time signature specification. Nombre de temps dans une mesure Les valeurs vont de 1 à 32. C’est le numérateur de la signature rythmique. po/rc.cpp:15 This button deletes the current pattern definition Ce bouton supprime la définition actuelle de figure po/rc.cpp:154 Beat Length: Durée de la note : po/rc.cpp:157 This is the beat length. Values mean 1, 2, 4, 8, 16, 32 and 64. It is the denominator in the time signature specification. Durée de la note. Les valeurs sont 1, 2, 4, 8, 16, 32 et 64. C'est le dénominateur de la signature rythmique. po/rc.cpp:162 Whole Ronde po/rc.cpp:165 Half Blanche po/rc.cpp:168 Quarter Noire po/rc.cpp:171 Eighth Croche po/rc.cpp:174 Sixteenth Double croche po/rc.cpp:177 Thirty-Second Triple croche po/rc.cpp:18 Delete Supprimer po/rc.cpp:180 Sixty-Fourth Quadruple croche po/rc.cpp:183 Weak Faible po/rc.cpp:186 Strong Fort po/rc.cpp:189 Volume Volume po/rc.cpp:192 Pan Balance po/rc.cpp:195 This is the velocity of the weak notes in the automatic rhythm pattern (all of them, except the first one) Intensité des temps faibles dans la figure rythmique (toutes les notes sauf la première) po/rc.cpp:198 This is the velocity of the strong note in the automatic rhythm pattern (the first one) Intensité du temps fort dans la figure rythmique (la première note) po/rc.cpp:201 This is the MIDI volume control (CC7) Contrôle du volume MIDI (CC7) po/rc.cpp:204 This is the MIDI pan control (CC10) Contrôle de la balance MIDI (CC10) po/rc.cpp:207 This is the musical name of the tempo value Nom musical de la valeur du tempo po/rc.cpp:21 Rows: Lignes : po/rc.cpp:210 The current <i>tempo</i> value Valeur actuelle du <i>tempo</i> po/rc.cpp:213 Tempo (in quarters per minute) Tempo (en noires par minute) : po/rc.cpp:216 This slider changes the <i>tempo</i>, or speed of the rhythm. Values are 25 to 250 quarters per minute (<i>Maelzel Metronome units</i>). Ce curseur modifie le <i>tempo</i>, ou la vitesse du rythme. Les valeurs possibles vont de 25 à 250 noires par minute (<i>unités du métronome de Maelzel</i>) po/rc.cpp:220 If this checkbox is activated, the the program will remember the connections for the input and output ports, and try to reconnect them at program startup. Si cette case est cochée, l'application se souviendra des connexions aux ports d'entrées et sorties et tentera de s'y reconnecter au prochain démarrage. po/rc.cpp:223 Automatic ports connection on startup Connexion automatique des ports au démarrage po/rc.cpp:226 Optional input port conn: Connexion (optionnelle) du port d'entrée : po/rc.cpp:229 This is the optional connection for the MIDI IN port. Connexion optionnelle du port d’entrée MIDI. po/rc.cpp:232 Output port connection: Connexion du port de sortie : po/rc.cpp:235 This is the mandatory connection for the MIDI OUT port Connexion obligatoire du port MIDI de sortie po/rc.cpp:238 Output instrument: Instrument de sortie : po/rc.cpp:24 Use this button to add new rows (sounds) to the current pattern definition Utilisez ce bouton pour ajouter de nouvelles lignes (sons) à la définition actuelle de figure rythmique po/rc.cpp:241 This is the definition of the instrument connected to the MIDI OUT port Définition de l’instrument relié au port MIDI de sortie po/rc.cpp:244 Bank: Banque : po/rc.cpp:247 This is the Bank of the selected MIDI program Banque du programme MIDI sélectionné po/rc.cpp:250 Channel: Canal : po/rc.cpp:253 This is the MIDI channel, between 1 and 16. General MIDI uses the channel 10 for percussion sounds. Canal MIDI, entre 1 et 16. Le programme « General » utilise le canal 10 pour les sons de percussion. po/rc.cpp:257 Program: Programme : po/rc.cpp:260 This is the MIDI program Programme MIDI po/rc.cpp:263 Resolution: Résolution : po/rc.cpp:266 This is the MIDI time resolution (number of ticks in a quarter note) Résolution MIDI (nombre de tics pour une noire) po/rc.cpp:269 Weak note: Note du temps faible : po/rc.cpp:27 Add Ajouter po/rc.cpp:272 This is the sound of the weak notes for the automatic patterns Son pour la note faible des figures rythmiques automatiques po/rc.cpp:275 Note duration: Durée d'une note : po/rc.cpp:278 This is the note duration in ticks, when using NOTE OFF events Durée d’une note, en nombre de tics d’horloge, lorsque vous utilisez les événements NOTE OFF po/rc.cpp:281 Strong note: Note du temps fort : po/rc.cpp:284 This is the sound of the strong notes for the automatic patterns Son pour le temps fort des figures rythmiques automatiques po/rc.cpp:287 Optional setting to send NOTE OFF events Envoyer des évènements « NOTE OFF » (facultatif) po/rc.cpp:290 Send NOTE OFF events Envoyer des évènements « NOTE OFF » po/rc.cpp:293 If this option is activated, the knobs are drawn using a custom style Si cette option est activée, les boutons seront affichés avec un style personnalisé po/rc.cpp:296 Styled Knobs Jolis boutons po/rc.cpp:297 Your names Julien Richard-Foy po/rc.cpp:298 Your emails julien.rf@no-log.org po/rc.cpp:3 Pattern: Figure : po/rc.cpp:30 Use this button to remove the selected row (sound) from the pattern definition Utilisez ce bouton pour supprimer la ligne (le son) sélectionnée de la figure rythmique po/rc.cpp:33 Remove Retirer po/rc.cpp:36 Beats: Notes : po/rc.cpp:39 Highligh the grid columns while playing Met les colonnes de la grille en surbrillance durant la lecture po/rc.cpp:42 Highlight Columns Mettre les colonnes en surbrillance po/rc.cpp:46 This is the current beat number Numéro de battement actuel po/rc.cpp:49 This is the pattern table, beats as columns and sounds as rows Table des figures rythmiques, les battements en colonnes et les sons sur les lignes. po/rc.cpp:52 Number of beats per measure (bar) Nombre de battements par mesure po/rc.cpp:55 This is the beat length for the pattern column. Durée du battement pour cette colonne de la figure po/rc.cpp:58 Whole Ronde po/rc.cpp:6 Type a new name and press the "Save" button to create a new pattern, or choose an existing pattern from the drop-down list. Saisissez un nouveau nom et cliquez sur le bouton « Enregistrer » pour créer une nouvelle figure rythmique, ou choisissez une figure existante dans la liste déroulante. po/rc.cpp:61 Half Blanche po/rc.cpp:64 Quarter Noire po/rc.cpp:67 Eighth Croche po/rc.cpp:70 Sixteenth Double croche po/rc.cpp:73 Thirty-Second Triple croche po/rc.cpp:76 Sixty-Fourth Quadruple croche po/rc.cpp:79 This button starts playing the current pattern Démarre la lecture de la figure rythmique po/rc.cpp:82 Play Lire po/rc.cpp:85 This button stops the playback Interrompt la lecture po/rc.cpp:88 Stop Stop po/rc.cpp:9 This button stores the current pattern definition with the name given Ce bouton enregistre la figure actuelle avec le nom indiqué po/rc.cpp:91 QPM: quarters per minute Tempo (en noires par minute) po/rc.cpp:94 QPM: Tempo : po/rc.cpp:97 This is the current tempo in quarters per minute Tempo en noires par minute src/drumgrid.cpp:278 Do you want to remove the current pattern? Voulez-vous supprimer la figure actuelle ? src/drumgrid.cpp:279 Remove Pattern Supprimer la figure src/drumgrid.cpp:333 Sample Pattern Exemple de figure src/drumgrid.cpp:364 Insert Pattern Row Insérer une ligne src/drumgrid.cpp:365 Drum Key: Touche « tambour » : src/drumgrid.cpp:386 Please select one, and only one row Veuillez ne sélectionner qu’une seule ligne src/drumgrid.cpp:388 Do you want to remove the selected pattern row? Voulez-vous supprimer la figure rythmique de cette ligne ? src/drumgrid.cpp:389 Remove Row Supprimer la ligne src/drumgrid.cpp:51 Pattern Editor Éditeur de figures rythmiques src/drumgrid.cpp:67 Cut src/drumgrid.cpp:68 Copy src/drumgrid.cpp:69 Paste Figures src/kmetronome.cpp:114 Play/Stop Lire/Stop src/kmetronome.cpp:118 Show Action Buttons Afficher les boutons d’action src/kmetronome.cpp:125 Patterns Figures src/kmetronome.cpp:130 Import Patterns Importer des figures src/kmetronome.cpp:135 Export Patterns Exporter des figures src/kmetronome.cpp:497 *.pat|Pattern Files (*.pat) *.pat|Fichiers de figures rythmiques (*.pat) src/kmetronome.cpp:498 Import Patterns Importer des figures src/kmetronome.cpp:510 *.pat|Pattern Files (*.pat) *.pat|Fichiers de figures rythmiques (*.pat) src/kmetronome.cpp:511 Export Patterns Exporter des figures src/kmetronome.cpp:527 Patterns Figures src/kmetronome.cpp:87 Fatal error from the ALSA sequencer. This usually happens when the kernel doesn't have ALSA support, or the device node (/dev/snd/seq) doesn't exists, or the kernel module (snd_seq) is not loaded. Please check your ALSA/MIDI configuration. Returned error was: %1 Erreur fatale du séquenceur ALSA. Cela arrive généralement lorsque le noyau ne gère pas ALSA, ou lorsque le fichier « /dev/snd/seq » n'existe pas, ou lorsque le module noyau « snd_seq » n'est pas chargé. Veuillez vérifier la configuration de ALSA/MIDI. Le nº d'erreur retourné est : %1 src/kmetronome.cpp:93 Error Erreur src/kmetronomeview.cpp:145 Tempo Tempo Enter new Tempo: Saisissez le nouveau tempo : src/kmetronomeview.cpp:179 Automatic Automatique src/kmetropreferences.cpp:29 Preferences Préférences src/main.cpp:29 KDE MIDI metronome using ALSA sequencer Métronome MIDI KDE utilisant le séquenceur ALSA src/main.cpp:41 KMetronome KMetronome src/main.cpp:43 (C) 2005-2012 Pedro Lopez-Cabanillas (C) 2005-2012 Pedro Lopez-Cabanillas src/main.cpp:45 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas src/sequenceradapter.cpp:65 No connection Pas de connexion kmetronome-1.3.0/PaxHeaders.13848/ChangeLog0000644000000000000000000000013214155347442015222 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.437063034 30 ctime=1639304994.353062933 kmetronome-1.3.0/ChangeLog0000644000175000001440000001140514155347442016007 0ustar00pedrousers000000000000002021-12-12 * Release 1.3.0 2021-11-28 * Czech translation, by Pavel Fric 2021-11-25 * Qt6 compatibility fixes * New build options: USE_QT and BUILD_DOCS * Documentation: using Pandoc to create man page and help documents 2021-11-24 * revised documentation system 2021-09-25 * desktop icons replaced 2021-04-23 * added action icons: internal theme based on breeze * new settings: qt style, dark mode, and internal icon theme * desktop icons replaced 2021-04-01 * added SCM Revision to the about box 2021-02-03 * copyright years updated 2020-12-31 00:00 plcl * Build system and code modernized * Synchronized to Drumstick 2.0.0 * release 1.2.0 2019-11-05 00:00 plcl * Fixed the LCD number component, to use the application palette instead of hardcoded colors. This fix provides better looking and usability with dark and light desktop themes. * Updated CMake buildsystem, requires CMake 3.1 or newer * Updated documentation. * Release 1.0.1 2014-10-12 00:00 plcl * Migration to Qt5 * Release 1.0.0 2012-05-28 00:00 plcl * assigned shortcuts for keyboard media keys * Release 0.10.1 2011-02-05 00:00 plcl * Turkish translation added, by Server Acim 2010-09-16 00:00 plcl * docbook version update 2010-09-10 00:00 plcl * drumstick: sync release 0.5 * request realtime priority for the MIDI input thread 2010-06-06 00:00 plcl * Release 0.10.0 2010-06-05 00:00 plcl * German translation updated, by Rene Landert * Custom pattern samples * release candidate 2010-05-23 00:00 plcl * Enable the standard toolbar * Optionally hide the fake toolbar * Import/export patterns * Updated translation template 2010-05-20 00:00 plcl * Using an instrument definition file in .INS format * Custom patterns * Pattern editor (RFE #2517833) 2010-05-01 00:00 plcl * German translation, by Rene Landert 2010-04-19 00:00 plcl * Release 0.9.3 2010-02-20 00:00 plcl * aseqmm renamed to drumstick 2009-12-23 00:00 plcl * Release 0.9.2 * Fixed dynamic linking issues with aseqmm * assorted fixes 2009-12-21 00:00 plcl * Build system improvements * Updated Czech translation, by Pavel Fric 2009-12-14 00:00 julienrf * French translation, by Julien Richard-Foy * GUI improvements 2009-12-13 00:00 plcl * version string 0.9.2cvs * Czech translation. Thanks to Pavel Fric 2009-12-12 00:00 plcl * version 0.9.1 2009-08-11 17:30 plcl * synchronize with current aseqmm tree 2009-08-07 23:00 plcl * fix for bug #2795019 2009-05-18 12:00 plcl * feature Request #2792930 2009-02-08 23:00 plcl * Version string 0.9.1cvs * new configuration option: Styled Knobs 2008-12-29 00:00 plcl * Version 0.9.0 2008-11-23 00:00 plcl * Converted to KDE4/Qt4 2008-03-24 00:00 plcl * Fix the crash at startup when ALSA is not loaded * Documentation updates * Version 0.8.2 2008-03-21 00:00 plcl * Fix a compilation error using GCC 4. * Fix MIDI output for QSynth/Fluidsynth and other soft synths. It uses longer (configurable) durations, or even avoid using note off events entirely. * Schedule always one bar ahead of current time, to avoid the nasty little gaps between patterns. * Version 0.8.1 2005-06-20 21:17 plcl * Implemented double click event handler, changing tempo as suggested by Chris. 2005-06-12 23:51 plcl * Fix a typo. Thanks to Chris Cannam. 2005-04-25 23:41 plcl * updated version number 2005-04-25 23:32 plcl * removed some unneeded files 2005-04-25 23:25 plcl * minor changes 2005-04-25 23:11 plcl * more .cvsignore stuff 2005-04-25 23:10 plcl * .cvsignore files updated 2005-04-25 23:09 plcl * minor changes 2005-04-25 23:08 plcl * autosave settings (window size...) * apply tempo/resolution changes after config. dialog accept changes 2005-04-23 22:00 plcl * bug in sequencerthread: set_program event must be direct. 2005-04-19 22:53 plcl * build system update 2005-04-19 22:31 plcl * documentation update 2005-04-16 23:22 plcl * more files to ignore 2005-04-16 23:21 plcl * new DCOP interface commands: setTempo and setTimeSignature 2005-04-04 23:27 plcl * several unneeded files removed 2005-04-04 23:21 plcl * Documentation updated 2005-04-04 23:21 plcl * Spanish translation updated 2005-04-04 23:20 plcl * User interface updates * version number raised 2005-04-03 03:11 plcl * Configuration option to reconnect the input port 2005-04-03 03:09 plcl * Eclipse CDT project files 2005-03-30 00:06 plcl * Some systems need to include for pow(). 2005-03-29 22:51 plcl * Fist public release 2005-03-29 20:34 plcl * Initial import 2005-03-29 20:34 plcl * Initial revision kmetronome-1.3.0/PaxHeaders.13848/lconvert.pri0000644000000000000000000000013214155347442016020 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.437063034 30 ctime=1639304994.353062933 kmetronome-1.3.0/lconvert.pri0000644000175000001440000000111514155347442016602 0ustar00pedrousers00000000000000qtPrepareTool(LCONVERT, lconvert) isEmpty(LCONVERT_LANGS): LCONVERT_LANGS = es en isEmpty(LCONVERT_PATTERNS): LCONVERT_PATTERNS = qtbase qtscript qtmultimedia qtxmlpatterns LCONVERT_OUTPUTS = for(lang, LCONVERT_LANGS) { lang_files = for(pat, LCONVERT_PATTERNS) { lang_files += $$files($$[QT_INSTALL_TRANSLATIONS]/$${pat}_$${lang}.qm) } outfile = $$OUT_PWD/qt_$${lang}.qm system($$LCONVERT -i $$join(lang_files, ' ') -o $$outfile): LCONVERT_OUTPUTS += $$outfile } qm_res.files = $$LCONVERT_OUTPUTS qm_res.base = $$OUT_PWD qm_res.prefix = "/" RESOURCES += qm_res kmetronome-1.3.0/PaxHeaders.13848/INSTALL0000644000000000000000000000013214155347442014501 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.437063034 30 ctime=1639304994.353062933 kmetronome-1.3.0/INSTALL0000644000175000001440000000474014155347442015272 0ustar00pedrousers00000000000000You will need CMake 3.1 or newer. If your Linux distribution doesn't provide CMake, or if it provides an older version, you can get it here: https://cmake.org/download/ There are ready to use binary packages available for Linux from that page. If you must build it from source, please read the instructions supplied here: https://cmake.org/install/ This program needs the Drumstick libraries. You should install the development package before trying to compile KMetronome. You can alternatively build KMetronome statically linked to Drumstick, see the advanced build options. Drumstick is available here: http://drumstick.sourceforge.net Building with CMake ------------------- Unpack the tarball or check out CVS. Assuming that you have the source in ~/src/kmetronome, you need to change to that directory: $ cd ~/src/kmetronome Create a build directory, and change to it $ mkdir build $ cd build Now run CMake to generate the build files. $ cmake .. Some variables you may want to set: * CMAKE_INSTALL_PREFIX: cmake .. -DCMAKE_INSTALL_PREFIX=/usr * CMAKE_PREFIX_PATH: cmake .. -DCMAKE_PREFIX_PATH=$HOME/Qt/5.12.5/gcc_64/ If you are using your own compiled Drumstick source tree: * Drumstick_DIR: cmake .. -DDrumstick_DIR=$HOME/Projects/drumstick/build/ For example: $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr Look the configure.release and configure.debug scripts for more examples. If you prefer to avoid all this typing, you can use ccmake to view and change these options using a friendly curses-based interface: $ ccmake .. There is a GUI equivalent: $ cmake-gui .. Finally, run make, and then (sudo) make install, and you're done. $ make $ sudo make install To uninstall, use: $ sudo make uninstall Advanced Build Options ---------------------- By default, make will output brief details of each build step. If you prefer to see full command lines, use: $ make VERBOSE=1 Another option, useful for packagers, is setting DESTDIR at install time. The DESTDIR directory will be prepended to the prefix when copying the files: $ make install DESTDIR=~/rpmroot Dealing with Configuration Problems ----------------------------------- First, look for an answer in CMake FAQ: https://gitlab.kitware.com/cmake/community/wikis/FAQ You may want to read the documentation at: https://cmake.org/documentation If you can't solve your problem, open a request for support at the project site: https://sourceforge.net/p/kmetronome/ kmetronome-1.3.0/PaxHeaders.13848/icons0000644000000000000000000000013214155347442014506 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.437063034 30 ctime=1639304994.345062924 kmetronome-1.3.0/icons/0000755000175000001440000000000014155347442015347 5ustar00pedrousers00000000000000kmetronome-1.3.0/icons/PaxHeaders.13848/kmetronome_48.png0000644000000000000000000000013214155347442017764 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.437063034 30 ctime=1639304994.345062924 kmetronome-1.3.0/icons/kmetronome_48.png0000644000175000001440000000365214155347442020556 0ustar00pedrousers00000000000000PNG  IHDR00 1 gAMA a cHRMz&u0`:pQ<bKGD̿ pHYsodtIME $BlOIDATXå{Vu?`嶻rHacRD$!LG--S) fq(Cq3VR-,ŭ=w_<%RXvP>g1 rkHswpUco0IeggQFruuq,3rDvC,=W$r"S`z5`?` O?@b>6WY$0[a.`/s^JnŮ^)<+?˺ .) nkIֻ|qty]ϰa}h;Pľg%V2p> Al=xăhv8Dḏ+":^VgD< sָ֗*Ӏ_'UC/1OuX}"ΈHа,1߷UiYWqYğ%k9jI#pJ0I BR@/7H=:T|RO%X)pltjã!ݫGy4<'ޢ~֯G:fKӞsO(-2Wv ;u{:x]dCY춋Ŷ5ڻ@8ض m>0ֻr, ש=m^!~!s<)@?uu ! (M d@.M-_R 8P \>F185`R'cL2p9P .<) FaE{YI8t|czИ$Lo#V&mBW_웽Z\S&%n;j[>2%/:?%L'i \_J ESq3򐮊\i|&6?ܕ pIxu2[ۯx,wl2'L`,:32gw&Y9G;,c9כ+"M7Ww̉bw词g^tp [}= ~JB-U_tU:ZV0o^Ñt#ܝ12/x]bC¯__]l>oK9<M_Piaud*2j\A< )nngpSHʘU^@.gpr ctCTSE%X%&9]fyl}:`RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/4.0/Tb%tEXtdate:create2021-09-25T21:33:30+02:009|%tEXtdate:modify2021-09-25T21:31:36+02:00AtEXtSoftwarewww.inkscape.org<IENDB`kmetronome-1.3.0/icons/PaxHeaders.13848/CMakeLists.txt0000644000000000000000000000013214155347442017323 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.437063034 30 ctime=1639304994.345062924 kmetronome-1.3.0/icons/CMakeLists.txt0000644000175000001440000000050314155347442020105 0ustar00pedrousers00000000000000foreach(S IN ITEMS 48 64 128 256 512) install (FILES kmetronome_${S}.png DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${S}x${S}/apps RENAME kmetronome.png) endforeach() install ( FILES kmetronome.svgz DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps ) kmetronome-1.3.0/icons/PaxHeaders.13848/kmetronome_256.png0000644000000000000000000000013214155347442020045 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.437063034 30 ctime=1639304994.345062924 kmetronome-1.3.0/icons/kmetronome_256.png0000644000175000001440000004217614155347442020643 0ustar00pedrousers00000000000000PNG  IHDR\rf pHYsaaøtEXtSoftwarewww.inkscape.org<RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/4.0/Tb IDATxwxU߹I)C ( E@AA,( +VEDX]Ql˲"e)[.HBK!~\3s̙{sM'OWZ֭[Shh(RCGH'KIΈ"cvp'ۼ~ uիW)::Oty 2 Aԭ[7^zFlD)IRM| U"55Vk aвeKL:۶mCAAb[TU&&Pnmp|Gӕ=~Gdee)T3`[11l޽8|֭,ʕ+cXl uTIEz?== ,@ǎX|}}1zhرVUKd`R sG^ӕ̘1׮]R%)uyۄI@/kUw/D˖-,9xxxg޽{TC8Iy@]i3fFNWڷoe˖v0bܣB }y駟Ҋ+(??_|"~Ϗ*UD>>6{%f(## (55P\\67lؐz-zWۛB"fHcte hKDQwcbbh֬YrJ[yyyQViӦMr4h@ 6 ^JJ ]vqll,]zI ok'kD4AfRmu1c\\^~e;eêUpf0ܹh,^'NDVVXd 2ښI@yvjj*?RJm 4رcd9sF6S1sL-FaժU<"vgdö9(,,Ē%KPV-4Vwwwt sѣGyDurssm6L::tpXGйsgS^nnn?~|8~pLʕ+3gڶmkhW^K,aRbD41|WZe^~-0w\V8{,N #""ϟgi jƴXah$Ocr zmW^8UYW~ܹa3w\VCsvMtIi< lņL׮]fBrrfobh :Ex}u.\`AƵbMxxrr2,!5k K,AnnfnƥK0qDxyy ;,]E"g`s6a m6 m<ǒ%KʔaNy'99SNEʕ!Cp6ߗo`s g ` $IXcW.L4W_}Ua`` im0} 8`ۧe")) z@UO>yyyh.]$tZ/`L@]c[}t0; icƌAb"s&fǎhӦ`ԨQ,FZW42 1|7"""8B,XիWRm۶ŕ+WԒMF(#&9Պ3f|̝;:e %%˖-È#жm[ZjhѢ9sܹsS"-;kԨ}%@=&D`RO=u6òAJJ ~mQ>}p1g- 6G<==rJt4J*dh???:]!** ~~~`Xʹ43Fw۰X,ԒfFT ʕ+ ]={yLpBݗ 0\Zr)S(JqQ/\{3f] Wf0zhtJbxCw@ق{N• ;5k={}A U~"B*Uxjaj?.L-`ECZj+Mr0%'CS =gy :VN>\9!!!t针RfILL4T_~i(~Ӆ/ڎZvQ*IIIhܸJ޽;RSuwߜMٴi]JI.Q,¯_~ƐE۷?tִֵh"(@(s6lJ8p`riӜMg 6lPK a;Cʟg uȑ[OBBrùs4R N8"U R_Fϗ=~5V+ MsyԮ][Sy=#uREY;,~r>Ӭ%&L0Lk׮].X8u5pExm+cKJHLL|O>jo{OrvQJMe[o)E}@%ZWFP6hE 5;ѣUkӯ_?닄ggڵK*E>6BQWE_˖-.N3ܹVa՚Nr< ۽DEEi:^fM˅)СCˍ?QRK Ut<Orr&///M͛)c=,+ o2UYK8#XFDcUӦM$V^MÆ #*@TN]۵v[ƎKw~wҤI矓… HDԳgO ^QQ 4ޓ$~W߿DC"dtzaW_iE}!=vލɓ'=|'|/FZׅN֭[?~}:92j?ڵĉO?{(#0SЬV+qB_> \̟?_N:͛e2͛ T_Dʕ+?0yVXI4L  N=.]ҌB@\xQl&hԨ:$ ׿5i$n4AXVP 1>ݐJBfL{)((@Ϟ=ՙ}!s۷\t( Wök\7B]?9s=̞=ۮ̃vhjժw}gZN޽[./0<ӧOsN+G mLC˩S=.as! ޏ OX,juQTTm&!]6Wezȑ\nѢ\z'5:uY"ʢKҥoٲ[{E7-#66{p4R87ot%X\{xxًTu]:$ >nYӧL•֭[;9m4 ϯZ<)?Eeʕ{߾}\IsE7Fk@UJsͺuD*hҤƴl2烅dـ-"/˗*?# &EuH6kb .;t47TΝCjՄ4)S8%,B / رc収K V{Jߕ2WTTzqep ~ u՘&NX$|'SVG2%dggg\_u&?Z,W" 2믿reaÆe&xM____|_B; lUZXp!I0rH\~ݩoذ[Od2TV-cC؂ DfV+VZ-[I&)v.39rcDFFEgΝ;:^RV-KBjE\u5%:ll2%Q5g(88 k׮oٻ ܹsi&:w%&&RVVRpp0ՋK^^^iӦܹs[|9 Hd7oޤqS:u(88ZnMnnn.]J:=\O;$I#L0{֫͝;G{wEv&vZhРlrrrxzz"%%^TѢ<G=w1G&I?#y-ٳ4e8xyyы/|~~>XO"E6dv/2+ѣÜ?N!!!ϛhC0}g Ǐ:O?`)/\ _ϧիW늃^Mh֬u֍R||hě>OȚ5kQ NlB∊2ꫯ2? @SʛjW>LW\aN'OϲׁvZqѯ*@9εj*wDyk.#GzD۷oi24h 9B~ aX:jlذ9`nO&$$$͛7IYYYB2ψ#@7n(cccVGaOqEg>PuGwQ+ѿVMDEEԗ'](=;?LyѢE4k,_9 0OOOiݻ)77OO`Q{Pռp˖-iQPP1?o53堠 0voM>>>GFF:ĝzEfذaҞ={Tu~ϧݻwE7}T!!Cb~???z'1ӧO >z[@Bat]ִT8iҤI]9 0*UpmݺUhva̙ݑ. 999vݟWZ<:AvvrS13goۄPW74(<W./dffҧ~JTfMj۶-ݛtBԨQ#:u*9s)>ZlٳdOJkf~~r?%Pɓ?rPڳgODEE1rJtAۍ7d=___ʶ \/գr2LEO˗/#,,L"K/$}WNT[vLsk'EsE-ҋǎcڴi%U9}4у99~zEo-4<"l,].'??Ξ=k6TOum^ݹsG,6l p'"Eb{D6gTdhڴiB|(88X񙬬,s` <@RR%''I!)H|2d7,XRSS Ogɒ%]IhϙFA72.B(ކbVZ1?[)((/!i_L֯_oN Ϗ֭0" Tz^zOаaCg;7oWϊ={$g2334#{VIŹwOlRF^7ؾ};kz%iq4hЀY{:!C||4rHfx;v,EDDp{nGPZZh޳)Ԭ8`om IDATYfСCsϕuGwaFԽ{w4ŋԹsgځ(,,N8[5krMetSq/@e"RSRR17O [n3g gC-vZ HMMz^+7ou!(6GʷIq7W3$awް>S~8QZeذa_t;"hȑ7o3<õenQ@QT?"vZm|r]q\.sP0;駟tիE˖L^#,4`ݺu-SQ{ϐ?*,,Wfe÷;{xz:*wh߾}0AAANZn-$'!.9 8z(]p]&w: )%GGINN"_C(Hj֬)8vVY3EGQD=&YX~wy> )8j `g<8j'xsO>vZ=A[3z<> нTz۲ jj\?eԨQBcYHII{ Mh艟`EwdDZ4ˊQiӠD&M詧gΝT4hMz|@XsT IxCъ-2^FI:t0lVM4> b  W҄/lH,Ӏ۷o;tE/Fl|h4h rȗ]t1lח.]jX㏓q"r۷/ (*S=#"^xA?GŒ3wpnnnO? k֬qCW,g$IDhj,x=SzΑ#G~~~ B?3 8PH|+W˗3 4 )) E]t1u]ڵwޚ!T'*Y0W;txyyڵkiUݻWgUnnn|u ,687dR/ yf #J&Ѭ_uՔhX8p \EEEK+ܹPoLmڴDNNWz/^.%}D~}hW_ I4WW_}}r011QX̚~s4X,zja;n:.A&<:^iѢE=Rn4~طo;>CXVIll,a٘0a<<<8}tʗwwwղ7*^9ڵkaϞ=e9~8sEnX$O?,TƍudeeaƌUM_$ 2+9u vܩpmڴqL=zPu:|z8kN7o\n(MTTs5jԐfo7%v,asl[ """иqcԭ[;vСCpB\v͐_򎍍u`gΜa~D {hPS pD僄.;=}EXKM6et]Ombz~W"2X,i@||,*<#@U:D$;$kPfDDcʒ}Ni}etpٔ`U;wr-Lɋڻv;{A[:s6oWW^QӀ.Hs7@Cq-x IEJjaaajqŋ\#W~*^I7oNڵ}Æ BeSӓUX\\;v.xFmnnnԩS'{?V3.Aŋ͕,mݺDaa!EFF̙3+@Si:t)ih}kݬqՔbDaaa\NB='umۦK4 ӧy{{kzԩ45|28qoߦyGB:F}aMmRF:+W*^^^u~zriu`$**Jqa|I{ADGED)y-\mݺU';;[iJ!7|S#LmiӦ3x`f=^: EGYn?9G~3{ټy3ݽ{W񙂂ڲe Rw;zиqc&KK.ɵFַo_rwwBK`yivZ*,TB_Nر#¼_T-w#3m%b.+ ]fΜ5 ؼy!C(W#77Yၴ4ŸfϞ-bABBreR s`c憤${p{\aDWyo矹/DFF*+#???gV+b ]vL#/]Tƥrrիծ]OC=`ҏ͛7:/Pff&?pm۶W\;cO3=Wѧ >Ɯ`pKi4k#FR.Cnn.VZN$LqN&LjV[ǪU엑ŋ9Ep}XWy% 0@B? 3ZiPXXH-zGd.=/ OzZj!''GxZVχShZGDDپ}{9RgŊLmӦesghBCCZfu̵nݚ+sK,Ze9+͛w\\\)J*Ӏ{XVrȢE䢳) "R2e Wsqg:6l!Ҩ]!|(U*hEr Aرct`[ =mYyc]i5mT6 ;;Dm۶ulj]v\1}t^5BU:Y5kW&ի<]شiSY˝fwޑrFbb", Sϟ?P/¥uˮm^zuY$I:MD;qDL{yy9|L:t4W\?OaiҪU+r3G1cX,;]vh{'@㈨$I9zH%rUVNY믿ΝO318`I+[n^www|V^ PLs7wyGt} ʁ53IKKԮ{=(wYlbS:HpZٱcIʼyxqq1ȝf͚ɍlQ֌~X a1bwU^%,x@A9|gήREx_нMG2Pu;l$S:m\P\\u:]iSڵU͛73;;)&N(e 8p:d5J^4!*vt)oA$;j@\\MC"w }r1`"h]-/oΝ+m,*ȥR@=;tÇV>X6X,qㆳЫW/ۋ !]T  4j@@bccְF9=O>Ds;y\Aqz@VCHHda=zpj/_\ӊ;#1ԚrO 999xG556m8;۷ RރbQʺuIEhثVб>ڵCzzjgх :nn$9R)1DdsljH|͛iTTTĝF=(22b 2nܸ4+"]v c4`~}w^RI^-/lYtDXXRSS&;wWS Tta/?TwjGeפqFT\YS۫R N8!u*Ѵ2 UBqq1 hѢL\+Wr* nnnذA-F!6/1؜]jBBBp%äWr_pxqAMUٵknߍ"Z-8H Èg"rWzڵkԧOќV&MhڵԺukqeÔ@ 'PPP=#(sXt)M< 51i$Zp=wDD$Iqx nݺkMȶ_rieK,A׮]5d?$IBǎ#//YMFF>aJɤh#^;*^팴"iiiԩ>|"** M6r~e 侰^5kR2ia$=zƍc7o/Z$ ӦMslQ&),,Č34+ nnnꫯ8-@^^FqcƌgڴiQÄ u&.\ː$`ƍJI. XV̘1CHnҤ v- ǪU4yUq4B̝;W=#G(% L@s71Qk.$IkLQ<ɨZӔUCNsq]C˖-n&J(YخLReΝ O?T指ʊ1c8('MH $QQ<<Af5إKa SNef0++KVDX,HHHpjylj^$ SNU[< H_6@(  m쯼ӏ^_:,]iet͛Ւflfm$}|||5///;HNNt#Sy]!4aaazZPI{5j6 .[* >>>:uݏJ_:tay?p$Ix7նLPL+,`s7δBWb"hooݺӕt 4<DE]v%`vjb0Fqqoߎ`G3`/o7$ѪU+C1bĈJ[4qv;w`ҤIvCӽ{w+}ЪU+_W"o`` ֭["j}/_4}i5T^'Oɓ'5}Df;OyyyfXbܥ،֜&6ocn|_XChh(>#hW)'oPq%KAA"##1n8T^P7o2=&4˗/駟v<裘7oΞ=˭8W^uҗGe=''7o5_W> Φ[,dsN:L0fZex ٳ6Q3r ,YÇJ*b`̘1HLT7 0W/Z朑B,\а(.]wu됔dWC9$`I|@"z+,,SNQtt4߿vIt&5nݺQDDu֍Zl)w. Dю{f&:0;#E" *^J.\'OҩSԩSti~$QR%jٲ%iӆڴiCm۶SZDD;}OD+$I  D4^&FNϟX{oBB,ըQA԰a7nLM4!%/D/IHDCJ7''RRR(55n߾MEDD)''rEj֬I5jԸj֬InnnFDD%DKbМ&'~m\&H"ZKDѦ;pyy ^DԊ*N]d^"LD[$Idy*4ѕi ۨu!v$`WLDh#W`venDԜ:Q{ZQ]gʥ(q":FD$I*{[&1;vcK" !DDT< nM(lsDtAl7#M% DT_/" "9 "KDB*ݾ%Irm$ @%@ZPJIENDB`kmetronome-1.3.0/icons/PaxHeaders.13848/kmetronome_64.png0000644000000000000000000000013214155347442017762 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.437063034 30 ctime=1639304994.345062924 kmetronome-1.3.0/icons/kmetronome_64.png0000644000175000001440000001001214155347442020540 0ustar00pedrousers00000000000000PNG  IHDR@@iq pHYs\rtEXtSoftwarewww.inkscape.org<RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/4.0/Tb9IDATx[{Pe=aA9%gTEPRˑ̦D%ja:挥#M*_i4SDzRp@aAev>.]3}_}]u'q!`HAFpCj*q6$ \i(n(5 h'lT_"_CApn޼ T* nnnpwwGpp0"##1n8$&&"""B@oA8oOB$'<@RK=C/חпQK`` _u/j4y$H&GRˑ#G Ãcƌѣf1֯_8KǏ@$ y$DqwwwΝ;};j7uuuG'|”5kÇ4~ I ܇$jcȔT*\h9®.֒Zfaa!͛G"k9ɨ>M̙3eJ1''uuumEgggE$|~(Oaȗ7AtR :Φg̙#3BXX^J$_ ϐl#ɽ{ނ?m^WWǸ8ח111uM}[6d=Oܹ B{٤8I>3&[\\TWW3!!As곧R|I$ZR>ɰt,**;oƪihHFDDW^1==˗/_%k`\\%KĦlH$+MϚ5KreJ%hc+[ǿ֭[x9BHozVA`iiBEEE&~7l`wwޥ1m4Nj Z&k;%lټ7G|l,//ȿxbw֭$B~߫jY3fʕ+b˗K%$$X I?~K.URvA FGGcIrbV+f uuuqĈ`ʚi0JJJ\t$V{*2332/ @T$7$-[&6`K%#c"J&q>lt)yaSO=5$p„ bXJW\ /`r<|ܸq#xMiE ÎV_%|" ̙3ED'|yA4G~$СC$yJ.QPQQ!%..n3NN+Wĕ+WduN§~*KOO㏃ibccd $+IrْeuJ%mAȑ#e8A۷%]|Yo?#jkkIR!55AҢϟ?o 555ɓ'#$$$^YEFFNY{XXH?>>HKK0yxx՝ H222m2N>p5;w.;;;<͛Hζ{aiX5j5ۛ/񴵵I#99Y66u1ch.7EÃfaa!WZœ'O < p$$Ƌ/21K/DrE_|d7IY.v7 *ׯ[="N9s?E~+w֮]k}YassѣG4IqSRRlꫯJX$5$4o%q?V*IpY̶{fMӧ-&B8FʓV{_zUzˋ*7ve얖H&Z{3w޸Y*NNNR}9|^pA!7'y*++聖'rӦM;o$N02`8~Aii).\JTTTAAABtt4Ndj){.t@B@ 5CiV ڵIENDB`kmetronome-1.3.0/icons/PaxHeaders.13848/kmetronome_128.png0000644000000000000000000000013214155347442020043 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.437063034 30 ctime=1639304994.345062924 kmetronome-1.3.0/icons/kmetronome_128.png0000644000175000001440000002055714155347442020640 0ustar00pedrousers00000000000000PNG  IHDR>a pHYs'tEXtSoftwarewww.inkscape.org<RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/4.0/Tb IDATx}{Tgf񊀈fxԎ4󒦩[uJOjގ],_ ch7Yi򜼤AyT{*5%#/*(03}/y VZ/볟O?o|" #dQnQ $JYOwC!"jdvF"x79":KDca ED`"+joLVA8LDh7c즗*)HDci"DD"2Q}GD[cLhpKNDϐԤ\ʢl*,,$Hoߦ22d4IPPPQ`` 5i҄)**bcc)66HѨ) m$ubWK4XJDӈhYrEf:y$ѣG󔗗G`0Pll,uؑO8{ILDJD3x? ) l25 !!! "pe`K߹s0 /""Cff, ߏ)S 88XU]ZlubH y5FZ˳gϢcǎCXj}NPRR Yf6|p\~]QG@ Nu!00at ֭CML~<***pāYxk &8l͛c0>`wa4oCۭNŋCB)~B l~C|| ҴipM2{˱tRh.LdU-WU@#Xg"! @ظq;F h4ذa1xjiiݺ5N>-LV `otVp۶mtܹ36 6.=C6m|FݻѼysEz6ms r|"n߫[RTWW!_~}iŋI!0OZg"44T2FBee֊|ODعsOiz*vHO||tuwܖ#M60aBlܸqilx۷"Mz*|; +BJO6K,{P|N!JшzHzJd/yo("!!AѣGv… U0vz֭[ҥ"}0MqժUv'|wU)111v@բI&ϯorqemۖK^GFF0~BEpY4jԈKhΝQZZTōF#n߾nqQPPxr-[6G`X={ ##Cs':tӫf>GXhT d) III dHHN*]j|ѣ  z\jkk|rlR63gw.Ǎ'Z ›0]J[o؝ATTkG@@{u-ހ`20|pŝ>???8Sx9--Mu#Ι3gj2DEEݡcAV gv>}8\L&ŕATTti(S,5d.A]vU=KLLT53t0`֯gFTy)¨[HئM+ʅ3ks._:Ċ+T_btxgUrJnFILsee/U3|=*f͚C.]Tk6r>|0j.Tn];hIDVZE/_mٲ%j$"g*8Brr2 :222= ziR:x1fue ("۷o,^7+ !~~(--MjXh۶m&-?>=] 0aFJZ^:bƍz8qЯ_?Gy)u555ܝ޽{ F>HOO玓II#\tgq/chݺuRiҥ͔k׮)[t:Y5e 8С0/^)SPfͨM6ԢE EQII(+hӦM4y\l6s't@bWXovu  w<۷5&]s!]$[ 7hdddpoͲ'I3mѢ,Æ0;vPz(f-CbblOt΢k4o0Z! FGII ]~]&(;; ĉlvl`h4횏'Dfo6V;Kʘ'h|q$&&ҍ7T̤J]REn2}o_]jd!@qq1\tk֬t2o>*.'7f~7c08 v?<X,7|C555N駟ՀNhCDLL c>hϗeH᪈9y$7BCCIR`` :vܩ*=O.g*SX|> ܺukZlɓ' Jzkn$)#d3vک{`Nl3'G0h 3w2sF"L:UR\\2ja2ozN]SNLqp^ϳB { Ġ  7nHüJaҼV>Æ %Kd"Bd2(++O;v찛O|/zfjЭ[7$9R,))QÙ3gL'tصkݼdCuN?C=^&i͘1Ce@iKA򆟟_^U\)׿C^Zz= 6L.==])ч~Kڍ㑄"0Ȧ<[?7bL&˓1cƸ.22RA: xm5zH3L(x<*++>r@FO"u:N-FBtܙztg}q$"9r$zѻ-[8]zkokyB$~*+qİhBbVU\EBgv_tmϞ=^5jzGdND^$|PT%29ҩKGVWAk*.c>3x~jЭ[پ#h4CDH!Hѽ{w3ѣG;p}l6_[?֮]t׮]1b[`XЩS'UZnW^yEy%Mg<&&an޼iBCCqyLԺE<pS>}ds}#G@u۽ [ZZM+ 2VwFPl\iӦtqJHH FCZz}`tiG޷ѣԩStEڽ{7u֭?Dvr)__ =mݺ l#FC[]e)GK$P /݌(++S-ꫯl2lذyyy}."33SDwBBK\pAF0K._FDD4 Я_?lܸQ5{r{/UD`l5ɓн{:6m|/z;0HY ɒ1qCpQRRBGq)PuuWO@7uƘh _k`2D˩~\et@p5xi޼95kVw#?@ޣ'm0?>~ᇺJpllKZ,]$\W0୑]\"]V=8Xj0+W9rdsvvKc^ tE{IO~R]= (77uJ]v͛7eL߮ }[ʽz/tHtHP}:sLÇu\jG-Z}4ܹ^_PɠAuwBkgRM}Q Y䠠 0`@ÇR%AՊ"0 ,! LDDt0Hd0<<PnJQF6?TNCu|܊1VFyo(,,Ç@iD~FFѣEۧC @ ܹeOBI?-a۶mݥiӦn},sJåKD7neeIgIۡj-Ab#PMHH@J?E`#q4 6lO[ p9*1rx'Nf#1IDu f@cǎF۷o;TS6x]o\F);۱cGk׮OHH>*_B9x Wʼ f2$ↅi۶}Y?\U<-H:)k/^*{z򊌆^zaQɑe dura&M>dTb **JV޽{ߝ:"Fǎe4l߾h4*m3V n1_ "g:YYY:X9rDV3:={K bmZ`Μ9ܶoݺapB*x WZrxgϖ;qD޽n9o8~`-$S<|,^RR"m E>zyV"|W32ƶзo_8!D]nAd/vZzy-#}7nSǥ.DDԷo_&3gl)>sa`JJJtA]vsL~m ิ˗/^nݺرcҤ.ڮBG15kx4Em[ /z~hڴï/!!7npSRRTY5k]BrssX!66VC cV6icsJCXX>cV `ݻ]*o&W^w .p1BCI2\"B˖-m>Sg^G}TEEEHLLydiDzC>gܱc17o$M 7j^ҥKUw)̜9AU޽{][O)t6$K!mee%&xAFJJCSm=zp[4 RSS˸z*/jBhh('zu]!VڐxGbNF0vX… 2,^- lɓ'd 2ĩI&c ?< ]:c>{, 6o,LhӦ &MUVCf\^ t:̙3{O< 6e{2cxCBB6vIs{ ?ti;"wH7,]0x`U+ Əd j{HQ˗/#99kݻ#99ׯ_U"p:ºRԪ}=wB1}tl޼vnx[hzoD"EDvݗPVVeggSVVPNN]|YSK???Xxj޼dȵ1vIUa/B0p"z]nHQYYITQQATQQAZqBAAA2MD_3ȞGIDATW$l@X/Bt&AwCsy\!^"˵DQ"JD-EQ9A[MDW_,YMa]^Jpw"FD(*""61Ɗ?'ğ!?20M?DOIENDB`kmetronome-1.3.0/icons/PaxHeaders.13848/kmetronome.svgz0000644000000000000000000000013214155347442017656 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.437063034 30 ctime=1639304994.345062924 kmetronome-1.3.0/icons/kmetronome.svgz0000644000175000001440000000351514155347442020446 0ustar00pedrousers00000000000000Wn}߯hp_eV p`'P#z)rBR)r3!O>sCÞ~:\$jnY. Ƣ]MVI%_޼V;4 =\'b2=`V*&&U[6Uv[V}.m?4a]XPOvq\/?k\ !r@߯ZWwVc.TTڎKLrgYU1OU=7aN|Aߺ#?T[>#:egƾ}u <ˤ#DJac:𠌊ˠm`&r#v% H-E a2z.U65;dC4ѧF(w9F|+!8)F91[a:*n*dZlt6EZ4RGzǽ"XwrbTzE% Rhn*ݧ켘a;ޜB(0o5&ox.!9~8J2&+]{]xQ{n64zlݞZtE}猕`Qʜ'=CǠ.c*+QD: bȁ j@' P+qw9C@\g d_PĠ$ '?O˴z7LKh=AKkZ2ᆞ@7*1uHJ}:#g[X' laaZ`$P7[B$1bŢR .u`gGyIJrOц Jz2oP"3#5  jCpC7Ah~/Ky_Ͼkmetronome-1.3.0/icons/PaxHeaders.13848/kmetronome_512.png0000644000000000000000000000013214155347442020040 xustar0030 mtime=1639304994.345062924 30 atime=1639304994.437063034 30 ctime=1639304994.345062924 kmetronome-1.3.0/icons/kmetronome_512.png0000644000175000001440000011405414155347442020631 0ustar00pedrousers00000000000000PNG  IHDRx pHYsodtEXtSoftwarewww.inkscape.org<RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/4.0/Tb IDATxy|E?OO@ `  A@Q4"^Ⱥ (* ˪x.ʡE@nPpc!#LBBk@fkf_zT=]]SU]0c1c1c1c1c1c1c1c1c1c8cbQu.L{>;Niw7Ƙcv4A7R-{m=}xmJRo9 ҍt%MӮ 1&73y('G*(\pynY4MPc&n0&  C'YNݖN8wMӮ وA °y8iZҨsB`(@ RTQ ie+1 @Dn({ȷ=#dAYO MJFŘtf3ǒ6H* Vx?=^cΥ[P ءiZڐ`Ux7ڈv1>MHmH 攈 g]?Ītk^Ӵ\0f(n0AD臲~-1RUVjvZm8 Ј@7OcbOS c2p9"e^>cw: ` Q cp9cqڈOaa! `6]FNAA 0PZ5j֬ pss;U/K,4`Ӄ̮QCS.^/իRFFҕ+Wn<1yzz" V B```8F"7!(+:DZZӑtqQ7777ԭ[ A ׯ_(<Ky5B(be"p uJKKq :t=:^/OOODDD~Btt4Zh(xxx0GӴan""_Oxe;9L9rGő#G#??_uhCTTbccѼysDEE!** 0V"iV:0ws.7`$ñZVVv؁;v`Ϟ=8x .^:,-Ze˖ر#ڷoaE |=3̍]x@gX%-- ؾ};~X,a1ر#:t耎;e˖:2kMu0qIGD>zùR۷;v@bb":,VI~~~h߾=ڷo;7Ln0i~8|2~WZ ׯGVVꐘ h۶-x !66VuH {35M;:Vp wc|-gSf38+WbժUطoxc ""ݺuC\\wի ({'5Mۯ:V5p CDm ek KvZnށ_|iZ@c쮈~"ZHv(%%P˖- eqTajذ!;~՗.v"z1fo=-j?:wM>:t@)prT~}=z4ݻW%2"X"ZN+WЬYIJ'ұcT^h qC1f4"!d'322諯Ν;dRT5RLL MO"`1و(fQv{#GL&… XŭHD1D#""zUnv͚5>?'Nw:uиqĉ*nD1H"6l6)>>W8U&ҬY(?v&F1ƬED6V3榴4ӧO#55.((P]suuų> & "B}%>0QӴ"1 'GD|`^~~)Oοoi"""ТE w} dw( u[ ;ߍ<Ν;G ,QFU188;2ͲNk ua*[?CVMpǏӠAW2 ĉi޽F.tJMMYfѠAzʯ%UVuVY{ycL!"Ae+|"''&NH+>vO .,N+mFƍX]nW^*4VT1 FD]ȐJKKi֬YڴiCSNCq*bOE'2y{{| k<"z.UcL6"$Ol}o6oL111+7)**&NHFBf222hܹԫW/ruuU~]J4w\YV]+)ƘxDNDewx" ғ<<LZ q#cN|lYMii+$___7noÜl :LC ...\ ,""OkIƜo";ɽ7g*f͚E{ Z|DD51sDtyWb?OrwwW^-y{{o]JϧO>w4^~e*((uG(ܖ1Fe[JΦ+4iȑ&400rssiTV-R˖-)%%EaQ-u(c9n:|05nXyEQQ2L4l0:wSʢwy<==߫@Z~C%^զ92`˩F+R6mhǎ1qY\\\hĉ(!lZoT,wJyJKKiܸqv[Yܹsy~Ƭi&޽{|cgU,ch;NW^nݺ)K^^^4n8Ζu9=Lsε7#G:Z2fWQwƝG+R^(55U֡3VdffҸqr o___ZXr&_抗1ըlC];}v9QyuVYXw1zᇕw&M5#n"`>.nnnx7Cu8EEEصkq1$''###ׯ_b'Up4nxѬY3ա;ϟ_׮]S 0χެVxRӴBa1&EIM;ѳ>gjٲ%۷O!3hɒ%ԧO 1cwli;Sv"q#ZU 3-vuy{{Ӕ)ST!3rrrhڴiTNyiFYb-+ܰaCQxn&"JWČb蚈N)))ԬY37stqtX,4w\]CtAՇnI#GׁE J "c GD1D$e1ݻwK̭I4w\t:}:L&7.rss'lqLy摛kAt է&u4b*)){X7JDԔ$M2efjڴ)%%%8L&7|c7ck5 tY@ܻwo*,,{Xk7f#DtIyBof\чYh(NnOݕ_#|x f$"jFDuߑwX,ꫯ*1>-[&@IIIv$, Ig.s" MDˆ@]v .>D&PNN5iDr4j(էU '' @;v ""@":"XK47nFzLJH`ܹ6)2jՊ\= +o "_"ګB۷LJ-Z$wﶛC5kFEEEO$_]\+:{-D4J1[;{*T^^uM׸qc:|c}WжQcl2^^zt挮׈f#Rz u։>4&˗gk޽Ǭp!Tz4kLv§(ꝱ01)--'|RM%p{Nf3g*ۚ\\\xcۏhт222v%+Ť:{AD|#8OXplҮ];ܹM4QڵkU`3ٌa0+ԬYk׮ų>,GnnYt0x VDԄƏX,K/)mI0@IJLRQ_zUFfB'NTzt҅ BDDt\m~m7ѣy;vԢE էw)ҽ{w=K[(܊1*{-g~I,[L\o↨[~ҞJ.*#"O̲||||r+Jgb:uJu… `:a˖- UR%KK/l;DTOpXN6 .\ofiڵkc˖-xǕRrUߏ]vyJʟ={VA~&~3Odx_d{_[[ԩS hժe3yrrrT GUm۶m۶Jʟ4i͛g[pBkQ}"*T pl۶MY˜ɣ1)bQk:t0l"ˆ#ZOD/UU@<]={ˢ&M`hԨe3|||T DUQ֭[nݺ^vII  Çۚ{Re7&-*ϒ 4ɢf͚aƍ 3lf ???!QF !0rJ_޽{ҥK| eh3U-EeFDxqFQYVZVuV^63NDDtswwW6{ၟ~ 4lîu,""wa9* &EfY)mڴhxXM6Un50$X` fx{s=gL7DFDWl]E `6iĈJcLsyΝx ݶm[\ժU3\"uEu& f!C /{ڴi3g-PiP]$ȩ&V]t  Bqq,+EXf |}} -b(!..Nu & àA /+lhM?6UDWZZidd$֮] Ce駟cM=֭: f ٳbz-x!9lQM?@b?ƍÖ-[DeW)QNCe#$$ay#/FN -̙3xa6mx*,iDLd'ҩSDsPk֬Q>TvmS}Bׯ_֭[~M0֐^ȈhKիzё#GDs`ZlnM:u@ff&ziFK,5|8Mu"Q ]i=r9D`=JF>ܰh"~?ڵ+TӧO?%88k׮EZ +3++ uDdSˁ)BDkEDDSN5jΜ9"9K.QHHgyFibvj۶mic!mT wDԎJE]{!777C/TWXi&rqqQ//5i҄rrrT"f.\hp_#BDD$l\nn.5n tdXDsr|)((U>#CjժzmQ>Dȋsذa^=<VL4ICfݻw>%́K^[b[BM""?a _deÆ ˢgU̿/%RݞjժE{U}*)..nݺzN8pߵ@5@"F"p~dddsNDFFRsN , /\ˎƒ%KШ[݃bquX,5kִ$ IDATTMCg2qFtڏhiQ a) FbGEBB ر!t5?~iiiCAAバ4n~~~tj;lXEiF3fː2#G`ƍؾ};;ǏO7Fѹsgt "ޙ3gкuk[ZDD8ի[m:qc*Q, 6m]Q3g.\@_} 4ԩS !Cз~K.]R}NONRHZvuZΝ?PDX1cedd>{JHH0͖C w21DDD]|2!C 0f~g޽͍zEV7$HOO7||||?;['R{8u=.{c}au0kKYDRѳƈ (::ڰEAO?DQQQRGLL -_\!: /y=Szj*-nO'N#F4}t- 8аϏN>mK }01(ZaB[^p'OtԵkWCM^(55U!;K.т hԨQԭ[7WyyyѼys߿?M06nHCwj&MVә3gTzYf.] D(&-u8ptNe9sPj jԨA-R}UJII ee kO3+|w/{3<w_?-a!" SL"z\EVRRB]doii)J*iر<79ɓ'+_ݝOE,Yb u~Ĵ?=DMD.)Sv J+瞣է1}d2h޼yOI^u΃Q30Qɓ'4)+9k8v𿙆=̩|W;/O͟P ;6`rQ劸,aOL&JHHtF]MaL[{TF b|p[w 2я.ٳgvSۢ–jΜ9+itRէ1]\Baaa炙X***R}7ް%ēD&#"!W\@C.-[tdg[j֬IgϞU}СCGISUzʐ7Lc[B&iD]E4x`C."OOO:x𠨰ѣJ2iOc6ٶmM޶.#Uff&rZhaj9+EDψV^mM_ [ *pI֭S}C=ޱ& >\)+צMd2rNjKsĠVbl͛+lIڵS}ʎ;7&777 "7n!חҬ BDTP7̙3," œ9si+paXe׮]ظq0O?TuV+))7|:r}x؜?ڏiHj!".xY!+VݻwWKÖ4h էJvyxx(glIvxٱc Yd2QRR-!v." & 33SDVw5dWeWQ0EuQ|"|geٲe0ͪðIaa!V^: )!!AuscǎE˖-c,^ڏpwx_GiiO?EZ#;zjؼytٴi*YfEzYo&d"rhv zFkŊXnGA||rDںutٲeK.!==]u8poôiG^ιs0}tk?A2f:0\o>ňDU1ooo}ZuB~/Rz9xwX-$#]4Uo&YYY裏Gs3frDKKKSϟWcV99vУG<3˙7o|8Zn- "6Cu]^,V®]8"_-DTZF'Oޅ#!W) M=)))AWwrrr0`l߾ȜKFT DddҡC_z9680"zWDDiii-}s_UDJ={VF#"RVVS+})%%Eu)''4MS~IOMRRRSٲe%;\PIuyGrɶ,h޽{{w\aaa}5j̞=ϯ߿vFa׫+4o\umVu6믿.>ڏԅnDR50e#t9w 1m4eE4tAutQu'%%Ŧu+6n܈QBDGQ.]tQK_pƍ0l@ÃqGIrsԨQhܸ2AGTyl~urرllz:]9~C^ ፰zJqQOc=Ν#www<)"\q1㋶&DϟW} /oذAa8S{ƖԶm[էO7Lƍ m숊WDd矣XDV???eiӦhӦ0lҥKáL0Aw6^幺D CUn&ɐ^O>ڏt%=" 'RlڲS .͚5K [_էΡ,_\y ՇpΞ=+Rt]S{:uz4M#GXFΞ=[ߝv١CZr4h0ԩSsl۶MH^UIݺu/dSüNUgY!Dd,@D^DtUo4h UBzCkӧOWkÚ4w\է̡߿_UCJKKի+*6lHOpD)r8&ݙ^yՇ.^H!!!RLLSvnϞ=җgꫯ k'"-K۷/aÆT\\,"TQZZjNOE)r8C }0>5j(nOUfm\까e% "Ft UuYvv!fXڶmT#@ꤳ[>DyfQ~e G>%IJJ l2kÚ gFDB5J^ut+%Ԯ];vS␖,Y"5jCtxw@XFԩSOz!vڐS͚5~q}0^VVuYic2+H~ԩodp Qr=teէ@K?6 3""!Jϝ;WVzuc"z d2yY'#zqmۦ0BAA5ʰ7q<==iU'[oY.8#4cǎRcNJөZ "##)!!A!;ׯk̘1թ6mHzI'NP}vA@*,,6, HDI]Q777:s0R^^&-G}dʱfZEfXhŊB94zIϮSݺu#-6, HDeRg}VDNի4~xa1׫W>cvlܸq4CE[oE5ߢE 4i>5eGݭ *&+c*[䠝l\/f$$$`ҥظq#?^FEEK.0`:uIN-22'O4_~!eUeΝömpQ$''QfM"88M6EѩS'eggnݺΖi8q6lhzkRJ@ N…>>EHH7n͛s$ٮ]V^XXΞ= M1^{5̘1CZǏǤIO=%+j`ՑGDT5k֠gϞg(cƌnh;wDv:SӈDiiCCCqT#hv]J@g{jj*DRHCZb`ņLD_>x i_p5_R8gٰX,"*?ݗ)lڴ iiixb2&ʈ#?{lk?8*"` ?X{NZiܹJ=s ٣lDѣի'-UVʕ+|" ϝ6@$]v@޽,-ƌK*+#3L6lKKK|rk>"jMa"uh"TLvcFYx1rssh"`mĈLԳ… ȓ2(?XG}TZi޼yJ?}4uE\\7nhZ6xn'@D^zٱcΞ=+ n1f4l޼Yu{MflvNWR8 d0fŋK}Sx9޽{VZOFw7"{?cFyX#55Wc6swwf͛nG:S .\<9K.!11Qu0st?-.Rt57~I@4^:{1i3fKl6~9MUVaQ=',X,,YDD,۷/<==Ϙ\bT'O`L'޶m۬]U [o[nv* 7cFX,ضm0{'-o7ݥs rm4;La 0G6mHժU~Du"zP6aA_U@(ׯݥϘ::r?~0Efo֭[oGrܹs8zP̙?~\X^M69K(,,v0"=""]ffaf͚ڵ3ˊVhر8v<01<֭vI߆nit51z?`gNE(u v;DXe|睴a=PRRM6ͦBϜYǎ 77[Ν;a I^yeN8SNYD%#Go=11ׯ_כMѥ 슟?ԟ?~|oa肃X2ⰹ@D.MuWWWi3Btt ]vETFǎÑ#GtØJ={ڵkyzzZ72@Tyu}~Ĭ>ʽ!M6К~ۮb2@__Z4̙=3px;j}u]R[l#.s?s7iY4E5x9ݻK{~Cnn5&G{K.!%%Eo6^W8 4 _xll,ԩsϿשS' aѺuk)y5yi}vYTG"'9-Z`ӦMhҤ=?^<]\\ЫW/۟2fwd&[ %y ;v͢Bd+((p D͚5h4j..7˼-Z`޽xW1o޼ 'kv}Ŝ9stǶxb{aL=z`ҤIRa#a\峷{k.=YT̙3Bf23vSNaѢEX|9PRRr[nӧ+d߻ٳgƎ F5‰'*OAA;cǎiӦaLٌ@dee ϻFȰGjMt!v/((}dQp~3a˗/G\\"##;`׮]z@FF,X~=z4+-6m`zMpذaV%l%KØ ...ߪqak>"tr- 6z ݳgfSuN0l֭[o߾HHHнfŵk_M6ƼyPZZ*(??~<|||>>>_ju6ce:tнM ʶP2(V5aѣÇcСhڴ)V\)< |gĬY*z%d2qI054d=L˗#::ڰNB޽ѷo_\rEh#F@AA bk֬[3m۶pww Öʶpc-b]D$m򟏏Xd61vX׮]3˗#&&[n5U+sK̙385QSSSqU=YTm۶/Z^^_4t ?Էo_h[o>:uJ@D!sʉʵo7 u(|DrrrгgOXBu(bc̙CM~@̱lDCJ}#E"ȑ#vZա`Bٻw/0UNDDDHD JoV.zPi͛7G5͜lO?m ~24nXJ~(sd:y$ 4@f6+((>pL 駟0ydaTJff&,mׯ|u@d `6qQk>rݿ*@c>|fYo6Xe$''cذaJg[k6#,QكӧO ɋ1hBZVΏkLDw!s/9ł#FPu(VHf IDAT:u^ڴiu·mdдrz˴0Y`cva;icƌQViݻx9PHۆ9j#$DkIbeXjE ޽gΜcFk96tjȚk\a6ae:wlӦBw""~9,YW\˗1 "PGOA/_MZd9۷Oʎ{*߿ ɋ5yz"s @v7C5 sN={VH^I&%%ŚLoy4t7XEۧt\UV… JѣuCDXt3Vtt4L&kѭ+DT]Oy=p=& QQ(dN?v_@ Fn݄e+12Vjժ~RNMM#W@By Hɛ9W:b()[0 )^.4ԲY-1,XaHqY۷OIO<\]]ucXmdm dC@\5d"?ZnrC ɋ#3==ڕJ i*p9=YT{XyN8={C++[@HKKcFÓ]$Kmk)$--M`YpMӎ;-nԿh7 |X[. ]d V 6AblٲEI١hժx9CVΗ> P&5b 33gϞEJJ ӑ:,SPP;wWVam۶0s(AAA>sټ(Ae{t₰0 "}Sw>[lAzz:DTGbb"كd8qYYY˃b&MUVܹ3W׵ p\B(}J:u҅OzC.//&NHROf"Ţڵsmo)%%Eٹޱc믕]NN͙3l\\\}4sLzéiӦI ب2?t8((HJر͚5|be]v /"z)|; ;Oڣ/*+]vŋxaÆaÆ 6sf;vPKD`r]vemĐ@FM;4iO~-O׮]ڵrɥKT`(oh^z k͸|+--Ō3ЬY3]VZ9z|X̔ɑJ=3ӦMSЧO^Zu(&n<#Y7:q9ʓ{ /+"cD@m_G}/Bu'2#RqssCϞ=iӦ*?^{53F\X,L<O=]aG=Rz?C+}X&LPƟUf\~%`QX|~DÇcƌCEлwoiE*i3 "}dKܹs_bqy.^g}J<U`8{XG؏7|sQ-֭C||]e&Iם|n|ݫ@wmZ ]:ڰafϞ: W.d:Gb  +!!Aj!o}0dѢExT@3禗ܫ`s7j]JXbV\:Jyw6쁫C*=4+V͡CoBSLzW<{i_=L$"WFedd իkLc/ >}յ2oNii)y~0rH\~]iz|noYP-[Lf2}W.2pieÈo^H^ v?f̘C.^'*AVo@V?s!X-''}0RaѰaCa"jĤITQi_~%N<|Y!+ʆ|+̙3غul5|!H:4iDX6 7sL KYSNUV7v@uO?d~ñcT!M6mT`f͚#$0j!ʚ7ouNd+^ 7[266lؠ|= nqqo߾B)))UիrbURXjXŒ: lbxC6HiCOVV(gΜQ4xꩧT!=r0cٳgtgxv e{H܍mde:t߿*N:BZvߜ3j8;`=nn_P卍, l.'ɉhaTd2 (**aT.#ci9@l*ޕiY^|E!H1rH!8GIdQYkLV6a(@V IVBe>"8qСCQV-aUZ5ǫ㞺t"l_{Tr@`'sܤ5Jl&;$!Er///=ZuB1!;SH^Xz؟9ꪦ3͆)9de/^ AH5RV([0 1faT[o:Ja:dw7CVp"=M4QV(֎39,b SF=ך5kըQCuhI=Aze۶mU`^xڵS.j»ᆱ: K.B*,,Ě5k(""Bu5h25wm8$@M++_Q0Loo"o㫨NaSFeS +4@R[-_۴u+ j\U% AB@Ⱦ`)$!3s=ssu^j9̝3g}=KM@/Jeq 6hJJV&зo_a]6m; SFG}Tw 2D˗#77WJ^:v;tMj)yq3wT ~8+-XP6cjn2d.]}va˖-_8H3 ص۷Ǯ]0fǼy/";;999Vp]wyhӦ zǏ 0@01c 11QJ^b6mڄ7xCz]/-G ܬQFJ>BǍ>~@}h+Y0|$OVBcLs]_?Xs "" uWڻw/M8jժe=3i&݇S!%%%ꫯ eU_䥨h <޳gbbbn^%K`РAJf̊ԯ_iiƛ肃q%TREAdutJoҥxᇥŌs:n:رÇo1 7F-бcG]tJO:lD#$ !ƙWEϸ 6y<.~~~;v, o5kGQ=ԪU ]t֭[7w\.htҭ{EEEΆDXXK7C{`RgqzNUl\`iԨQ,ZEEEcr 225k֬/@]@yz*Z8fe'RMq ;$zܮ.-L]VZ~EUR|E GPWPYc*!ojۋ/bΝ#&MH$kܹb,><ׯ___#?#K5hz[oh6l.\L9U&ޓj+TBb[+W~J`xxC@f?WV%~?| !B疚T`f̪5k^\111RkymRZZ.]$oIM?*˛1zizۥKJĞ,- DZ~L3RФI]q =zޖfM&M[ jT# Y)[׮]Sa TQUctD[Yݙ̥po á$onV\lnah5K_pn|}}.LUM41:[ aqY`U9b6rM:~wnz[n0ҥKذaÁ*ɻm۶Fk ! Tںu+?Zz[lٲJ_CI]l-n$ !D}g-扜N'}Y8\D3fg\۶lbz{OljK{q}`x( SeΜ9~zS4lM657sElܸQZ~,l"RAVdQ={(ɗy7ÁW_}7+/6))"66L3!!!hԨM<P̙38s挒Zl߮/III 24ÇMo U^zIˏ,Dm۶)ɻM6F+c(8 UHIIQ7Nfͺ;}}~fcc+55W\Q,d|&Szz:-[VgEqƙ C5xRiɠbWaiu~CUM*}/i^g.s+/⧞z)))ʾBnݺܹ,X)-?T_ x7ne5j0:q۷ٖVGd .,۹s'.\`* K.-)))V2 Ƶ2UMI{l" `Nuf5R9a9<ƐQKtZZw 0bq3"==ǏWwfdK73S8ಕV6/ wKʋJ`Ŋ'#M6E˖-7|n`Hj8 Y6\`XdG^^۴ic),+++&9)繏3M{pBڸVs=,VAj իWEm~%%%%Xf.??Һ 274,63Oe`V6[.@׮]dQ,'B)))̬t/^lz[OѹsgK(f޼y ޽RݹMƥVcY4Qe?+V(˛U~˗/ZgϞ0SO?S!#Hܹsfrcڵk1X \MS #4[Z9ff!57[z!uV(֭[+\ OKjs皮aWwݍ^V 888۷E*ډ[-] ʗgj;vSY,ygbv;xUVE6ml" m0R f&ٻw/Ξ=kjիW7}8Nn`K.5z1.!b?޽{[ټ\+W>fH^^>"fi͙3 BTc9ڶ4 IDAT !NʎJ `DһwoZ tgϞ\˗/7=V&#!!!ׯΜ9;-eƼ@~~ hWAkJ*ѣƣ-2u됓cjƍy榶˳4 k;Yn]N+ڲj E**'':Xjwf,Yyq3+!;XBpJA ټy3^,Vy|7̪W.ɓؽ{Xce;18.!4ޮUVhР0nWTTdZyYfYcҥQF S۞?dDܹS?___&J9$VfC9s(˛UŽ\xs___Ka 0tP#զwYYT7vjtr+[V(~WƥK<̛sw#&&FZ~Ǐf )-|B@7X.!rlG߾}M \RR+1dV^4=,~0='D07[m߾'OTJ!ȨK)]XY>QZ~V:W^:]fv+5jSNF6Q*`y>R֭[TvTfn 9zޙqGO_HxGJ@q]YII ,X,dVVXv塌`Ȑ!RfvCJJ Μ9,)B˪b5k:Ȋ6 nuq__>ڵkgjB^ðmp@DhhњnˌVm 0j(qjHKKS?<} "e:n(_.]p]wIȑ#طogr:?yģ kdY`RtbJfIf,+%KpHî'wdW裏B#bAZP%VhԨ̘1O*ĉjtv2uk6KLOFId7p!1hYŒNx疱2krfbVes*0"?`{e > U&-Çcc%##C|1CEPPM2rDGU |򉲼[q?'7x?1Z NEoZ"սދ;pp0Ο?%3;y$5j$9RHQF ȑ#hҤxh޼yRk 7oJˏy֭[J򎈈 %Bv `iɐ|齿g;wԾ WAwަW]lv\BJˏye/UopoTi=70e^7OfxN}`!J B<+qwk׮"ݮ]g̙3صkT I!66tAxƍ̔̊,իO>F6VU,QQX7NBeS9w}'_47[ob ُɗnHMMUZoAn r=FV%PWX ?PI믿FN SU7O˷Z1sL?F|⴪XJ (΀aaax$EtL|ggsرCjŁ-[b703֯_={(˿K.h۶M>UjKO~T_{^4:t@ Lmϰaäv޿?~gi1{zwoU7Wj A׮]Ѿ}{IĉXpmߊ4hmAWU( СCXlCCC`B\QOY+WMz-3{8{,m&5O7XrzS;ffĔ)St:#,,&ZƦl8le?[.vgM6 /ի3g(BԬY٦?pZl)9*{ٿ?ڵk'5ϟ-Z'ŋVNپ};ފ1M4&!NDD/-mAL?_tÇwѯ_?{C3@۶mѬY3y.X@j~>/myL/@q/f3EpQ`I_]7p;2b4<+`哗?X>y#^ QQ(w7diӦ¹ĴiӔ;wHCZ~1h v֭|Gv?{A%+O$YqAU{1T^&ZqG Xsyg.#Rbԩgz\p[l݊c*ٳgJ1qD#~ B`3`XX.^t̽͛'?$$R<+q\'م={رcRdp8+C=dt>ZgsW j'NXJ)S(˟/ $$DjժU+}arrr~zP޽QjUy@﫯cҤIF<B0wpJwuF))}8}0ppuU/00?<9T6mLr[@Q C ot=ϟ/uK/`].ڵC`r,\Pzof`غAv֭[qiy2y֬Y|@F6` RH@@?K l.\жl3 CΝ)Օ>"'FDXp<%%%Go~#>BZ![m)**F) Z )tez͟{9݇U&AQQQ-""JJJtr ݺu}HٳF':]ob-?׿J l3gď?|?̜EyM?`aC ߖ-[py2k^^{M~{9ԫW&!Tc3j>qqqh֬p8 /xł*HvDDz)5O٬6*e*-Z$5OfɓJ*hd|R @ +H lk׮ŗ_j.u9x`s|C=@쑺wڵkK[R;wG}|?edj"YghӦ/ŋ*n…(**&)MXXxSێ;P&#}甔?^j̸b,t:O>ʟ񀩩OF 8Viܸ1~I|O)UNی~*<25k֬Y|?{6Z{tEHg& pjpUVV5kt97o(LԮ][> ֮]+-?f׮]CTTԦ"߅ ЪU+\zU~|}}?m۶F6c:تj>UVɓ%DT>Ӊ7(..V/v$ xBf\xx8|AynذiiR0a?,Ѕ GoO>+={"##<6m<3]kfһwo|9NWBVV}1ŋ̺ZjK.R\~=O رcO -Z0ډ9voFD|o5cǎm۶Nj1c|?U+vڵ+<L/_^P>}:Ə/5O_SLkʕF'"pOpކ˨>JHHpKoeʑEn8/g4tr\c*Q#rlIqq1u-?:uՐY9k}Nn$???xۢϧmۺFFFRzzs8$,O?*_ff&|I Tx3^III P`ҤIؿ[5m41c=I%I&_-C=֨T/_NB\޽{4ͥ G@۷o6ɷ~aωӭϏ.]Ν;GQQQnnUTǏ q*7 `|BBB'@ 0rH\tI W3;*))ARR0<^qq1FѰaC#\pXY%(aŹˠwTRR"#lKUTljSiioϻzoߞ$D˗V?͞=[C?eddM<;GݻLru3ݷGڷo: EDeGv.,,8 #lUZUW'NF#<ֱ,j߾[?o&<}+#٢E .,ǂ ?9q2)33Sc+%%%ЪU+3>" @%Wn-22OVYrA >EEEnۧ''*,,f[u9 _`#xJdOBD}IA)))֒ѣP ǦC꾅l7t1cP 晈hԩS}We_),ZHC')(('"έSO=e& DIa|DHDy*;W N*+|Ohsd%ypիWSPP[y̴_!`:QoNNnڭ?^!}򉔙=ZAAksd% >\͖-[>WFCuʁ^#>|_D4{lY?9q(++Kv{jժ\вēoʃ͗c^x1 !c%K:' Zj<fOD 0@DDtL֏On:Y1 4bݷ=z֭sKh9Dr"{@pPîR mڴI!xdmNd}[)wYjذo&MիfB~ r#d/^HnW^'0loرڜ8Ls}[)N͛7wy 5l^Ow xj^5kĒ%KЭ[7\vMBtsVBvܶ_]1j(a0&MFFIOOG~p!g6L 7 B(BwBDv޳~zFDD`ڵ[cIKKC~}xnv=B B(i-r !r<@<ʐLk׮ucf'OD=_|E3/5B쇫)#_WxedeHNNf1Y=p1;66oM_B:i %1c૯!={6 }3ƼWjj*뇴4;&&6l@*Un `\ |`0`[NFvO?E\\>v€tjƶmPV-Yᾞ+ @D!6$# 8| Ō3S<1ΦM,jժؼy3ڶmktL !~VG>7B ༌"##dDFFÁgy .DpB3/˿t^[!y#ȯiӦXlddgK/gy%%%n?cz0rH}>>>HLLD޽lBUcb=A ؼy3UREیck׮:Ƙ*)) &h{ !hfW>"x [jB) kK.]wݥe1VPPcbΜ9bxK/tX!CrH nBD-ZQFiW,Y:h?c3edd`Ȑ!HIIo/f6=W?\ ~R|7nN)s9s`Z,G?#Ghaĉx]S5tBR՝o%pYVqqqx!V-+IDATvv6 D-gy 6K.Z_0uT3fU/fяѸzHǏO21VIL>>|Ir8f/$DԀɼ׿j/tޝΟ?/c,??ƍ4tP*..6s"zSQ3"Jy/~խ[l"cѣԾ}{Ϥ#FXhiX)]w%$$h(!!Aa1<Ȳe˨ZjڟE?/"")y+PDd6:'x3f@HH81iiiXv-oߎCøv233ADP4m͚5=܃|7Vof ᭷/3~x|1}b u'Io""/O{ CtqHKKwy:t7SVjܸ1M<=tR\v w{9r:MO|yd3&&|iw#}{peرc3P@@IE >vޭoNM4@Ve%fL"z ܑ%''SPPQvvc&ɓ=_Z5j]pAZ%%%` kY9UD|ۃ1w!DT$nڵ@Ѵyf ڸq#կ__oAVNi:'O=zhkaw}%"#$~zZ?O*))yl7DE~GEERoVõ_s5O?r8)D 삈FBmw}ѱcd"+گ4p@ɑڟڵk:HUTd+H"2=4gϞ7RjոV1aԣG}+͛7SÆ _nݺg+ fL:"z֕gggӠA7X:sdM8Quw>|}}_utI+<=JkJJJlW%NӧO2~bƌگ4i$ݧ-_4hZޜCVk#Uc$5DDӦM#7ͩGtAهu~' ~=u%!-ZHeHW\ǓBu9;jGĽ'"$y "sRppL'O^&9{_GݩVZtUݗã̙3j֬ݜ4ydIē0OFDQ;&[lMڷoO;w}އ~%M0AΝT7/7D<CD,8rmV kI&Ym999TF .Ϗף(Gaa!ZݚԩC6mz!"S+1fKDԆ[oOƍ~㗖"##iڴi<گҳ>ҪUUVگOi[nt9ʴ!h":b)Pӧf~[SǎiÆ *9~얂ʕ+/m:tvCoNǏB+$?ʌ~)O[lܸj׮aPV[[NukhwU"PAAA4k,OD#7 P"ZjPgR׮]?JOYYEzk&vMz}yq8HQQQگCY;vX=+Dy"#,?)JQPP`wMf߸dj׮_^߿?]|ꡞ `[TO>?,KM6%N8=-_\erֵwk|/,c>"Ƽ=F & "r.gńJ-[D*̛7Oy{?2)B{~hɒ%2yru%tw׭i„ &ԦM3gW/C{3fˤ̶m(66V9H߿??/et ~5!2$''ۺSͩK.rJU~_k?vOݺu}۳gǼ?Q / `\#Z~ʔ!==c>kJYpȑϯS6mt_&i6mDQݷoCHӟ!"AD`5A""IӧO碣)!!RM/ܿA/%K.eEƏO2NDT1ch*oNUV &Й3gT_Sڵu_&SiڴiԠAHяh6RG~Jf$"ˣ^x|}}?|@MNrv.QF/!Νx~#Gŋeb"#YG~ɸ3˲}v[,x$Ӽy󨨨H)nϟSu_;r:f=zm-/խ[.\(tQ_0!W MDqq1%$$P``TZ5?~<߯D{N9{ӧT .дiӨuϓ$8ȐuJVQcjQk"I[#GЃ>e%eudR~~LpЪUhԨQ]}"qƴzjYID D ƘZjB[A|iXYI4qD[Xbc4m4ݗΜ9C=S߭Ϗ?Q^^Ss1^D4eɥ9w 6LKFjժM<:Uؕ+W<۵] JLLX~.Ν;e DT1=9yWoziJ;w)SЩSTruIk !/_3gR߾}+M,<k˗'/+P\\]pA:HD"˼Ks 5jC=z7|~,Ht)99Yy?z(4p@R^ѣ޽[ix?싈BU=|]m۶yFSTT5e2RnݴR:u됗GVx~|Rz(11Qv51(DUK111O6mMJJ~|vKoz1>}:5G)P||D(Mff&=6HCҔ)Sh˖-TXXh9N[AeQ}ч~HO<׫hB?NOK/g80<[ڰa]zs=nݩk׮po\ڱc͜9&L@]t񚚦<@6mRqۦ0+7y"j?cx0o<;vikuA֭ѪU+ĠuhӦ ?~\wZaҥāݻwСCp8Ӯk׮x1xx+Wdg"!DtMgDivIdH:uQFQ\\~V%dZt[(c̻Q="Rݻ*'NvOm۶ "^#`0Ƽ!U<շZUcVk(":UP||<7pHFUVcɟhcL&"'WGb)((9sP߾}y\NO-ZBt\/cLrM+ODȽCQ||Lw/_*cL" ##b"ڜ9sMFݺu')::&L@wv1삈 p֝OҜ:u ӄ TWtrU1슈h i5pC믿Nmڴy~K/ю;t|OPs3<F #}:IMMW^y:v5LM4'RJJ:jʋ`8[ Ut֯_d,YW^$88ݺuC߾}1x`jJGNkT܂ L9rB6z9_8ݻWFrr2n ө;,PFзo_DhhPr|=!]A06nitX+V ;$fQDDw`hܸNL!D`ws;"FT#%%7oFJJ ~!:u{֭w;GwXPQ9piFD4&)Wvv6oK %%Zh޼//={"::ZwX7;W5GBӺaV\`AD1p "ڵ vo>"//OwhN@@Zlmۢm۶A.]tᗥ@\_kS3.0!taϟݻqb8x 7TPjЪU+ &&[F֭dwB+a"lUhO?~ 'Oĉ'~7v6DÆ  aÆhٲ%ڵkի3!^0f p5PGs8V(paV?"##uKӬ;1Oqȵy/ pވAFF._˗/rrrPTT"BfkYAA/p8JGj)PJ@XX닪U"<<5kDdd$"##QF_=225kDxx[sBdi1)Q9C*S  "~=Eh Q ?fybJJAD~:hWg\6Wo !x.f* UWFji.Y}S:3f?[_gHbGp*BZbc QU@@# $ q^~!uƘ7cnFDpnNu=UWp ɛ)sczq1BA]5=kBMuȻLfpzJӯKB"E0$cr?]\UpJd_BBL52c1c1c1c1c1c1c1c1c1c1M?i54\IENDB`kmetronome-1.3.0/PaxHeaders.13848/TODO0000644000000000000000000000013214155347442014140 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.437063034 30 ctime=1639304994.353062933 kmetronome-1.3.0/TODO0000644000175000001440000000014114155347442014720 0ustar00pedrousers00000000000000* send MIDI Clock, and/or MTC events. * send MMC events. * share MIDI queue, use a shared queue kmetronome-1.3.0/PaxHeaders.13848/kmetronome.pro0000644000000000000000000000013214155347442016352 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.437063034 30 ctime=1639304994.353062933 kmetronome-1.3.0/kmetronome.pro0000644000175000001440000000300614155347442017135 0ustar00pedrousers00000000000000TEMPLATE = app TARGET = kmetronome DEPENDPATH += . src INCLUDEPATH += . src VERSION = 1.3.0 QT += core gui widgets dbus svg CONFIG += c++11 link_pkgconfig lrelease embed_translations DEFINES += VERSION=$$VERSION \ TRANSLATIONS_PATH=':/' LRELEASE_DIR='.' QM_FILES_RESOURCE_PREFIX='/' packagesExist(alsa) { PKGCONFIG += alsa } packagesExist(drumstick-alsa) { PKGCONFIG += drumstick-alsa } else { INCLUDEPATH += $$(DRUMSTICKINCLUDES) LIBS += -L$$(DRUMSTICKLIBS) -ldrumstick-alsa } DBUS_ADAPTORS += src/net.sourceforge.kmetronome.xml HEADERS += src/drumgrid.h \ src/helpwindow.h \ src/iconutils.h \ src/drumgridmodel.h \ src/instrument.h \ src/kmetronome.h \ src/kmetropreferences.h \ src/sequenceradapter.h \ src/about.h \ src/lcdnumberview.h FORMS += src/about.ui \ src/drumgrid.ui \ src/kmetropreferencesbase.ui \ src/kmetronome.ui SOURCES += src/drumgrid.cpp \ src/helpwindow.cpp \ src/iconutils.cpp \ src/drumgridmodel.cpp \ src/instrument.cpp \ src/kmetronome.cpp \ src/kmetropreferences.cpp \ src/main.cpp \ src/sequenceradapter.cpp \ src/about.cpp \ src/lcdnumberview.cpp RESOURCES += src/kmetronome.qrc \ doc/docs.qrc \ src/lcdnumbers.qrc \ data/datafiles.qrc TRANSLATIONS += \ translations/kmetronome_cs.ts \ translations/kmetronome_de.ts \ translations/kmetronome_es.ts \ translations/kmetronome_fr.ts \ translations/kmetronome_tr.ts LCONVERT_LANGS=cs de es fr tr include(lconvert.pri) kmetronome-1.3.0/PaxHeaders.13848/net.sourceforge.kmetronome.appdata.xml0000644000000000000000000000013214155347442023072 xustar0030 mtime=1639304994.353062933 30 atime=1639304994.437063034 30 ctime=1639304994.353062933 kmetronome-1.3.0/net.sourceforge.kmetronome.appdata.xml0000644000175000001440000000304414155347442023657 0ustar00pedrousers00000000000000 net.sourceforge.kmetronome Drumstick Metronome Drumstick MIDI Metronome based on the ALSA Sequencer CC0-1.0 GPL-2.0-or-later

Drumstick Metronome is a MIDI metronome with Qt5 interface, based on the ALSA sequencer. Intended for musicians and music students, it is a tool to keep the rhythm while playing musical instruments. It uses MIDI for sound generation instead of digital audio, allowing low CPU usage, and very accurate timing thanks to the ALSA sequencer.

kmetronome.desktop kmetronome https://kmetronome.sourceforge.io/ Pedro López-Cabanillas plcl_AT_users.sourceforge.net https://kmetronome.sourceforge.io/images/kmetronome1.png https://kmetronome.sourceforge.io/images/kmetronome2.png