• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

gui/H09-Apr-2021-3,0052,414

img/H03-May-2022-

lv2ttl/H09-Apr-2021-397375

robtk/H09-Apr-2021-

src/H09-Apr-2021-615466

zita-resampler/H09-Apr-2021-572406

COPYINGH A D09-Apr-202117.7 KiB340281

MakefileH A D03-May-202210.3 KiB331257

README.mdH A D09-Apr-20212.6 KiB8158

git2lv2.mkH A D09-Apr-20211.4 KiB4429

x42-scope.1H A D09-Apr-20211.4 KiB3837

README.md

1Simple Scope
2============
3
4A simple audio oscilloscope with variable time scale, triggering, cursors
5and numeric readout in LV2 plugin format.
6
7The minimum grid resolution is 50 micro-seconds - or a 32 times oversampled
8signal. The maximum buffer-time is 15 seconds.
9
10Currently variants up to four channels are available.
11
12For documentation please see http://x42.github.io/sisco.lv2/
13
14
15Install
16-------
17
18Compiling this plugin requires the LV2 SDK, gnu-make, a c-compiler,
19libpango, libcairo and openGL (sometimes called: glu, glx, mesa).
20
21```bash
22  git clone git://github.com/x42/sisco.lv2.git
23  cd sisco.lv2
24  make submodules
25  make
26  sudo make install PREFIX=/usr
27```
28
29Note to packagers: The Makefile honors `PREFIX` and `DESTDIR` variables as well
30as `CFLAGS`, `LDFLAGS` and `OPTIMIZATIONS` (additions to `CFLAGS`), also
31see the first 10 lines of the Makefile.
32You really want to package the superset of [x42-plugins](https://github.com/x42/x42-plugins).
33
34Usage
35-------
36```bash
37# Just run the stand-alone jack app
38x42-scope
39# Some info
40man x42-scope
41```
42
43Screenshots
44-----------
45
46![screenshot](https://raw.github.com/x42/sisco.lv2/master/img/sisco1.png "Single Channel Slow")
47![screenshot](https://raw.github.com/x42/sisco.lv2/master/img/sisco4.png "Four Channels Variant")
48
49
50Oscilloscope vs Waveform Display
51--------------------------------
52
53![screenshot](https://raw.github.com/x42/sisco.lv2/master/img/scopeVSwave.png "oscilloscope vs waveform")
54
55
56Background Information
57----------------------
58
59This project was created to test and exemplify LV2 Atom-Vector communication
60and demonstrate the short-comings of LV2 thread synchronization and LV2Atoms
61for visualization UIs:
62
63LV2Atom messages are written into a ringbuffer in the LVhost in the DSP-thread.
64This ringbuffer is sent to the UI in another thread (jalv and ardour use
65`g_timeout()` usually at 40ms ~ 25fps), and finally things are painted in the
66main thread.
67
68Accurate (low-latency, high-speed) visualization is a valid use-case for LV2
69instance access in particular if visual sync to v-blank is of importance.
70This is not the case for a scope. A ringbuffer using message-passing is sufficient
71since signal acquisition is usually perform on a trigger condition and subject to
72hold-off times.
73
74The basic structure of this plugin is now available as eg05-scope example plugin
75from the official lv2plug.in repository.
76
77Compared to the example, this plugin goes to some length to add features in
78order to make it use-able beyond simple visualization and make it useful
79for scientific measurements. It is however still rather simple compared to
80a fully fledged oscilloscope. See the TODO file included with the source.
81