1 |
schoenebeck |
2809 |
<html> |
2 |
|
|
<head> |
3 |
|
|
<meta name="author" content="Christian Schoenebeck"> |
4 |
|
|
<title>LSCP Shell</title> |
5 |
|
|
<meta name="description" content="The LinuxSampler Control Protocol Shell allows you to control the sampler from the command line."> |
6 |
|
|
<link rel="stylesheet" href="http://doc.linuxsampler.org/css/preview.css"> |
7 |
|
|
<script type="text/javascript" src="http://doc.linuxsampler.org/js/preview.js"></script> |
8 |
|
|
</head> |
9 |
|
|
<body> |
10 |
|
|
<p> |
11 |
|
|
The command line application <i caption="LinuxSampler Control Protocol">lscp</i> |
12 |
|
|
is a text based shell for controlling the sampler entirely from the |
13 |
|
|
command line, providing colored output, type completion, help text while |
14 |
|
|
typing LSCP commands and other convenient features for terminal |
15 |
|
|
enthusiasts who want to use the sampler without any |
16 |
|
|
<i caption="Graphical User Interface">GUI</i> frontend application. |
17 |
|
|
</p> |
18 |
|
|
<img src="lscp_shell.png" caption="LSCP Shell"> |
19 |
|
|
|
20 |
|
|
<h3>Visual Feedback</h3> |
21 |
|
|
<p> |
22 |
|
|
As you can see on the screen shot above, the LSCP shell displays all |
23 |
|
|
possibilities to complete the current command in real-time while you are |
24 |
schoenebeck |
2810 |
typing. In contrast to other shells you don't need to |
25 |
schoenebeck |
2817 |
hit a special key over and over again for that. These hints are always |
26 |
schoenebeck |
2810 |
automatically displayed right next to your text cursor (in yellow color). |
27 |
schoenebeck |
2809 |
Also the color of your current command line changes while you are typing: |
28 |
|
|
<ol> |
29 |
|
|
<li><b>White:</b> |
30 |
|
|
As long as the current command line is incomplete, it will be |
31 |
|
|
displayed in white color. |
32 |
|
|
</li> |
33 |
|
|
<li><span style="color:red;"><b>Red:</b></span> |
34 |
|
|
You accidently hit the wrong key? The shell will automatically mark |
35 |
|
|
mistyped characters in red color, that is only the part of your |
36 |
|
|
command line which is wrong. So you immediately see that your command |
37 |
|
|
line is wrong before even hitting the return key and you also see |
38 |
|
|
which characters you have to delete with backspace to correct the |
39 |
|
|
current command line. |
40 |
|
|
</li> |
41 |
|
|
<li><span style="color:green;"><b>Green:</b></span> |
42 |
|
|
As soon as your current command line is complete and correct, the |
43 |
|
|
line will change to green color, so you immediately see that you may |
44 |
|
|
now trigger the return key. |
45 |
|
|
</li> |
46 |
|
|
</ol> |
47 |
|
|
There is even more: as soon as the shell detects which LSCP command you |
48 |
|
|
are going to fire, which may be long before you actually complete the |
49 |
|
|
current command line, the shell will automatically display a detailed |
50 |
|
|
description for that LSCP command, taken from the LSCP specification |
51 |
|
|
document. These text sections are automatically grabbed from the LSCP |
52 |
|
|
specification document at compile time and built into the shell. So there |
53 |
|
|
is no special document directory structure or even an Internet connection |
54 |
|
|
required for that feature. |
55 |
|
|
</p> |
56 |
|
|
<p> |
57 |
|
|
So these visual feedback features reduce the amount of times you have to |
58 |
schoenebeck |
2817 |
grab for the LSCP specification document, and provide a huge speed up of |
59 |
schoenebeck |
2809 |
your LSCP typing tasks. |
60 |
|
|
</p> |
61 |
|
|
|
62 |
|
|
<h3>Type Completion</h3> |
63 |
|
|
<p> |
64 |
|
|
As with other shells, you may hit the tab key to auto complete your current |
65 |
|
|
command line. However in contrast to other shells this feature is not |
66 |
|
|
limited to a small set of keywords, this feature is directly combined with |
67 |
|
|
the real LSCP parser module, and thus it completes your command line as |
68 |
|
|
much as possible, which may include a sequence of several keywords, and |
69 |
|
|
may also stop at a certain character within a keyword. In other words: it |
70 |
|
|
auto completes as much characters until a position is reached where a |
71 |
|
|
human decision is required. |
72 |
|
|
</p> |
73 |
|
|
|
74 |
|
|
<h3>Automatic Correction of trivial Errors</h3> |
75 |
|
|
<p> |
76 |
|
|
There are days when things must go fast, when you may even not have the |
77 |
|
|
time to care about the visual feedback features described above. On such |
78 |
|
|
days it happens that you fire commands with the shell that may have typos |
79 |
|
|
and other mistakes. The LSCP shell will help you and automatically |
80 |
|
|
corrects trivial mistakes for you. So after you fired a command with the |
81 |
|
|
return key, the command line will be checked, and if it is incorrect, the |
82 |
schoenebeck |
2817 |
shell will check your command line for trivial mistakes, automatically |
83 |
schoenebeck |
2809 |
correct those errors for you, display the updated, corrected command line |
84 |
|
|
in the shell and execute it with the sampler. Or do you want to get |
85 |
|
|
bothered for things like upper/lower case or space/underscore confusions? |
86 |
|
|
</p> |
87 |
|
|
|
88 |
|
|
<h3>Always up to date</h3> |
89 |
|
|
<p> |
90 |
|
|
You may think that those mentioned automation features may only work for |
91 |
|
|
a certain part of the LSCP protocol, or that they may lag behind new LSCP |
92 |
|
|
extensions or changes. Fortunately this never the case! As with modern |
93 |
|
|
development environments, the LSCP shell is directly connected with the |
94 |
|
|
sampler's real LSCP parser module. That means whenever there are any |
95 |
|
|
changes to either the LSCP protocol (i.e. keywords and grammar rules) or |
96 |
|
|
to the LSCP specification document, they will automatically also be |
97 |
|
|
available to the LSCP shell. So it does not require any further |
98 |
|
|
development effort to maintain the shell and keep track of the latest |
99 |
|
|
LSCP features. And since the LSCP shell is designed as thin client, you |
100 |
|
|
may even use an old version of the LSCP shell on your local machine and |
101 |
|
|
use it to control a remote computer with a more recent LinuxSampler (and |
102 |
|
|
LSCP) version, without missing any of the latest LSCP changes with the |
103 |
|
|
shell's automation features. |
104 |
|
|
</p> |
105 |
|
|
|
106 |
schoenebeck |
2817 |
<h2>What next?</h2> |
107 |
|
|
<p> |
108 |
|
|
If you have never been in touch with LSCP before, you might have a look |
109 |
|
|
at the latest |
110 |
|
|
<a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html">LSCP specification document</a> |
111 |
|
|
first. |
112 |
|
|
</p> |
113 |
|
|
|
114 |
schoenebeck |
2809 |
</body> |
115 |
|
|
</html> |