lmms
Cross-platform music production software
Toggle main menu visibility
Loading...
Searching...
No Matches
include
MidiJack.h
Go to the documentation of this file.
1
/*
2
* MidiJack.h - MIDI client for Jack
3
*
4
* Copyright (c) 2015 Shane Ambler <develop/at/shaneware.biz>
5
*
6
* This file is part of LMMS - https://lmms.io
7
*
8
* This program is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU General Public
10
* License as published by the Free Software Foundation; either
11
* version 2 of the License, or (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
* General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public
19
* License along with this program (see COPYING); if not, write to the
20
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21
* Boston, MA 02110-1301 USA.
22
*
23
*/
24
25
#ifndef LMMS_MIDI_JACK_H
26
#define LMMS_MIDI_JACK_H
27
28
#include "lmmsconfig.h"
29
30
#ifdef LMMS_HAVE_JACK
31
#ifndef LMMS_HAVE_WEAKJACK
32
#include <jack/jack.h>
33
#include <jack/midiport.h>
34
#else
35
#include <weak_libjack.h>
36
#endif
37
38
#include <QThread>
39
40
#include "
MidiClient.h
"
41
42
43
namespace
lmms
44
{
45
46
constexpr
size_t
JACK_MIDI_BUFFER_MAX
= 64;
/* events */
47
48
class
AudioJack
;
49
50
class
MidiJack
:
public
QThread,
public
MidiClientRaw
51
{
52
Q_OBJECT
53
public
:
54
MidiJack
();
55
~MidiJack
()
override
;
56
57
jack_client_t*
jackClient
();
58
59
static
QString
probeDevice
();
60
61
inline
static
QString
name
()
62
{
63
return
( QT_TRANSLATE_NOOP(
"MidiSetupWidget"
,
64
"Jack-MIDI"
) );
65
}
66
67
void
JackMidiWrite
(jack_nframes_t nframes);
68
void
JackMidiRead
(jack_nframes_t nframes);
69
70
71
inline
static
QString
configSection
()
72
{
73
return
"MidiJack"
;
74
}
75
76
77
protected
:
78
void
sendByte
(
const
unsigned
char
c )
override
;
79
void
run
()
override
;
80
81
82
private
:
83
AudioJack
*
m_jackAudio
;
84
jack_client_t *
m_jackClient
;
85
jack_port_t *
m_input_port
;
86
jack_port_t *
m_output_port
;
87
uint8_t
m_jack_buffer
[
JACK_MIDI_BUFFER_MAX
* 4];
88
89
void
JackMidiOutEvent
(uint8_t *buf, uint8_t len);
90
void
lock
();
91
void
unlock
();
92
93
void
getPortInfo
(
const
QString& sPortName,
int
& nClient,
int
& nPort );
94
95
volatile
bool
m_quit
;
96
97
};
98
99
100
}
// namespace lmms
101
102
#endif
// LMMS_HAVE_JACK
103
104
#endif
// LMMS_MIDI_JACK_H
MidiClient.h
lmms::AudioJack
Definition
AudioJack.h:60
lmms::MidiClientRaw::MidiClientRaw
MidiClientRaw()=default
lmms::MidiJack::name
static QString name()
Definition
MidiJack.h:61
lmms::MidiJack::sendByte
void sendByte(const unsigned char c) override
Definition
MidiJack.cpp:212
lmms::MidiJack::m_jack_buffer
uint8_t m_jack_buffer[JACK_MIDI_BUFFER_MAX *4]
Definition
MidiJack.h:87
lmms::MidiJack::m_output_port
jack_port_t * m_output_port
Definition
MidiJack.h:86
lmms::MidiJack::unlock
void unlock()
lmms::MidiJack::JackMidiWrite
void JackMidiWrite(jack_nframes_t nframes)
Definition
MidiJack.cpp:218
lmms::MidiJack::run
void run() override
Definition
MidiJack.cpp:223
lmms::MidiJack::jackClient
jack_client_t * jackClient()
Definition
MidiJack.cpp:158
lmms::MidiJack::configSection
static QString configSection()
Definition
MidiJack.h:71
lmms::MidiJack::JackMidiOutEvent
void JackMidiOutEvent(uint8_t *buf, uint8_t len)
lmms::MidiJack::JackMidiRead
void JackMidiRead(jack_nframes_t nframes)
Definition
MidiJack.cpp:180
lmms::MidiJack::m_input_port
jack_port_t * m_input_port
Definition
MidiJack.h:85
lmms::MidiJack::m_jackAudio
AudioJack * m_jackAudio
Definition
MidiJack.h:83
lmms::MidiJack::m_jackClient
jack_client_t * m_jackClient
Definition
MidiJack.h:84
lmms::MidiJack::m_quit
volatile bool m_quit
Definition
MidiJack.h:95
lmms::MidiJack::MidiJack
MidiJack()
Definition
MidiJack.cpp:64
lmms::MidiJack::getPortInfo
void getPortInfo(const QString &sPortName, int &nClient, int &nPort)
lmms::MidiJack::probeDevice
static QString probeDevice()
Definition
MidiJack.cpp:169
lmms::MidiJack::lock
void lock()
lmms
Definition
RemotePluginBase.cpp:34
lmms::JACK_MIDI_BUFFER_MAX
constexpr size_t JACK_MIDI_BUFFER_MAX
Definition
MidiJack.h:46
Generated on
for lmms by
1.18.0