Requirements for Software

All applications in the system Theremino, work on Windows-XP, Windows-Vista, Windows-7, Windows-7-Starter and Windows-8, both 32 bit and 64 bit. For operation on alien systems (reduced performance), Mono and Wine are needed. See notes on pages Raspberry Pi, Linux, Android and Mac OSX. There are no minimum requirements, for memory and CPU.

If your applications do not start, may be missing DotNet 3.5 SP1 and DirectX 9.0 c.

Unfortunately Microsoft moves frequently files, and hides the installers “off-line”, to encourage those “Online” (They then often do not contain everything and give problems). So to simplify, Here's the right files:

If all the applications do not start, install this:
Net_Framework_ 3.5 _SP1

For some applications (for example Theremino 3D), also serves this:
DirectX_ 9.0 c (local download)
DirectX_ 9.0 c (download from Microsoft)

Installers should always be started with “Right mouse button” and “Run as administrator”, otherwise there might be errors and not work.

Note that the DirectX installer does not start by itself. You have to unzip the ZIP in a folder (Choose an empty folder and temporary – Maybe do one on purpose). Then you have to launch DxSetup.exe, follow the instructions and give all OK required.

If these two files don't work, also read this page: blogs/tips-and-tricks

– – – – – – – –

ATTENTION: If you use Windows to 64 bit, then you must compile all applications for x 86 (otherwise sometimes fail to read and write the slots).

To access configurations, inside VisualStudio, Open “Menu-Tools”/”Project and Solutions”/”General” and enable “Show advanced build configuration” and also “Always show solution”.

Then go on the Toolbar / Right button / Customize / Commands / Build / and add the last two commands list, named “Solution Configurations” and ” Solution Platforms”, by dragging the toolbar and close the Customize Panel.

Finally going on box “Solution platforms” (the larger of the two), Open the “Configuration manager”, make a new “Platform” of type “x 86” and assign it to both Debug and Release.

Firmware system devices

The firmware for Master, Slaves and CapSensor you download from page wiring diagrams:

Computers and operating systems

Thereminico software runs (bad) on Linux and Mac OSX, But if you want to work comfortably and without problems, is better to run it on Windows (Windows XP, Windows 7 and, better yet, Windows 10). Possibly ask for insurance to the seller. For added safety to run our application, try for example the SlotViewer.

Tablet10a Theremino FlatPC

The computers are: PC, Notebooks, Net-Books, Tablets, Tablets with keyboard staccable, eeebox, Stick PC and FlatPC

PCs and Notebooks: Usually are all okay. Check that the processor is not an ARM and that your operating system is Windows 7 or Windows 10.

Netbooks: Netbooks are great for portable systems, for example for the Gamma spectrometry, or for geological surveys. Just bigger than a Tablet and close to transport. Some have an ARM processor, and don't go well. Check that the operating system is Linux.

Tablet: On Amazon are for sale Some models of Tablet, from 8 inch Machthe, with Quad-core CPU and genuine Windows10, for less than 50 Euro. The display is a little’ small but all applications in the system Theremino work perfectly.

Tablet TCU (Theremino Control Units): These are the Tablets approved by system Theremino. Are tested with all modules and system applications. We also verified that have two USB Sockets, one large food type USB3 and you can while they are connected to the Theremino Master. The full specifications are on site thereminoshop where you can buy for 160 Euro, shipping included (special price with the voucher of Yuntab to Theremino the system).

Small PC, eeebox, Sticks for TV: There are various models in general rather slow and some even very expensive (attention that often have no Windows installed). For stand-alone systems the eeeBox are cheaper than other solutions (Mini-ITX, Via, EPIA, Raspberry) because the price includes everything: Feeder, Harddisk and container, as well as keyboard and wireless mouse.

FlatPC TCU (Theremino Control Units): Are mini PC, particularly suitable for forms and applications of the system Theremino. They are small and lightweight, enough to be the “head thinker” a drone or an airplane fuselage. But they are so powerful that we can replace all the electronic control ’, They also perform in drones also weighs twice as much.

In the expectation that the Chinese site thereminoshop to be able to import FlatPC, You can arrange with the Meegopad, available at Amazon or eBay for about 80 Euro, shipping included. Beware that they have licensed Windows10, possibly ask expressly to the seller.

A great way to check for FlatPC is using a Tablet as a screen and wireless keyboard (via WiFi with TeamViewer). You can do this in local area network, no need for an Internet connection, or through the Internet. You can then check, for example from the ’ Office or from a tropical island ’, your home computer, the greenhouse, that forecast... etc…

Availability of PC, Tablets and FlatPC

Below in this page we will present different solutions and we're doing everything we can to push the Chinese to hasten the design and sale of the models that we're interested in. But dealing with them requires a lot of time, not so much for distance and not even for the language, but for the difference in culture from the same words mean different things.

Meanwhile there are various options:

1) The sticks Meegopad with Windows10. Virtually identical to a FlatPC, same processor, same performance. We tried them and they are great with all our applications. You can find them on Amazon or on eBay for about 90 Euro.

2) The "Intel YUNTAB tv box 10 Compute MINI PC"that is on Amazon for 97 Euro, He, too, with the same performance.

3) Tablet with 7 inches or 8 inch. For example the "Mediacom WinPad W801 Tablet PC"from 74 Euro, or the "Mediacom WinPad W700 Tablet PC"from 41 Euro shipping included. And they're all Atom Z3735G, i.e. QuadCore for 1.8 GigaHz. The second has 16 Gigs of memory, the first 32 Giga (It means bearing dozens of our applications at once and even a dozen movies).

Check back often for thereminoshop because that's where the new models will be published by the Chinese as they become available.

In all cases you must make sure that your operating system is Windows, otherwise our applications do not work (or work with low performance).

Tablet TCU


This is a Tablet PC – TCU (Theremino Control Unit) that is for sale at thereminoshop.

Has Windows 10 preinstalled, genuine and fully licensed. Has the touch screen, the detachable keyboard with magnetic connector POGO, In addition 7 hours of battery life, 32 Giga Byte storage, HDMI, WiFi, Bluetooth, Usb3, 2 Gigs of DDR3 RAM, 2 Megs of L2 cache, quad-core processor 64 bit with speeds up to 1.83 Giga, etc.. The full specifications (controlled by us one by one) they are about individual models (10 or 12 inch) on the site thereminoshop.

The keyboard also has the touch pad, as the Microsoft tablet, but at a fraction of its price. With the HDMI connector you can connect a second external display, then double space on the desktop. And adding a wireless mouse (bluetooth), you get a high-performance PC classic.

The specimens that they mailed in proof have worked perfectly in all tests. Even the small model (from 10 inch) lights up 5 seconds, goes faster than the “Steam PC” We use in the lab, consumes less than 5 Watts, in normal operation, and even less than 2 Watts by turning off the display and other devices. Checking it with TeamViewer, with display off, We got to exceed ten hours of battery life.

We have tested extensively with all modules and all applications in the system Theremino. Have two USB connectors, one mini USB and a standard, that is even a USB3, so the higher current and speed. They also have an outlet for a memory card, protected with a cover, to further expand the solid state hard drives. However, even with the “only” 32 GB base there is enough room to load all applications in the system Theremino simultaneously.

Flat PC

Are finally coming. Are several times more powerful than Raspberry PI, a hundred times more powerful than an Arduino and three times smaller than both. Similar models are now on sale for 93 Euro, shipping included, and it is expected that in the 2017 go down under 50 Euro

FlatPC_4 FlatPC_2

This is a Flat PC – TCU (Theremino Control Unit) that will be for sale at thereminoshop in the coming months.

Raspberry and Arduino, theoretically, they would cost even less, but you must add the Wifi, mass memory, the feeder, the box and the heatsinks, so the real price ends up exceeding the 100 Euro.

Advantages over a Raspberry: Memory is not an external SDI, Why not c ’ is in danger of losing the operating system just no power. There is Windows 10 genuine, WiFi and Bluetooth built, execution speed is higher and lower power consumption. Also all our applications work perfectly, as we are used to on PCs large, and they work for, without installing strange Linux libraries. You don't have to fight with mono, the wine, passwords and “sudo” (superuser rights).

Advantages compared to an Arduino: A FlatPC can do everything an Arduino, but a hundred times faster and with a thousand times more memory. The speed is such that the execution is more “in real time” than what you can get from an Arduino. In addition, having a real operating system, it becomes easy to implement functions difficult or impossible for an Arduino, for example, send an email or check a drone with WiFi. And all this without adding wires, adapters and bulky “Shield” (see this page).

In summary: A FlatPC is a real PC, but incredibly small! Smaller than a Raspberry and an Arduino (about 3 times less volume). So small and light (less than 50 grams) that can fit on a Drone. And can do everything alone (radio, telemetry, piloting, videos of unmanned, accelerometer, high resolution images…). Then delete all other modules, 200 grams less weight and hundreds of dollars saved.

FlatPC also has the HDMI connector to attach an external monitor. Adding an inexpensive wireless keyboard and mouse (bluetooth), you get a high-performance PC classic, but economical and space-saving.

A great way to check for FlatPC is using a Tablet as a screen and wireless keyboard (via WiFi with TeamViewer). You can do this in local area network, no need for an Internet connection, or through the Internet. You can then check, for example from the ’ Office or from a tropical island ’, your home computer, the greenhouse, that forecast... etc…

Comparison of features

The following characteristics are obtained from samples that were submitted in evidence by thereminoshop (Yuntab) and from information obtained from the Internet. Our assumptions are largely, are approximate, may contain errors and are subject to change before the official release.

This comparison is not a judgement on the quality of Raspberry and Arduino. Are great systems for applications that have been designed and we recommend them often. Both Raspberry that Arduino have excellent compilers and fantastic performances for those who use Linux and sketches. But they are performances that have no relationship with the applications of the system Theremino, they are not listed in this table.

FlatPC + Theremino Master Raspberry PI 2 Model B Arduino_DUE
Quad Core ByTrail
4 x 1330 MHz
ARM _ _ Cortex_A7
Quad Core
4 x 900 MHz
Single Core
1 x 84 MHz
Bit processor 64 bit 32 bit 32 bit
RAM 2 Giga Byte
666 MHz
1 Giga Byte

166 MHz
96 Kilo Bytes
84 MHz
L2 cache 2 MByte 1 MByte No
Mass storage 32 (or 64) Jig series
+ slot to 64 External Giga
No memory
only the slot to 32 External Giga
512 kilo Bytes
Dimensions 74 x 104 x 12 mm
(Note 1)
92 x 100 x 33 mm
(Note 1)
62 x 112 x 35 mm (Note 1)
Volume 92 cm3
(Note 1)
303 cm3
(Note 1)
243 cm3
(Note 1)
Weight 65 grams around (including a Master, and an ADC to 24 bits and 16 channels) 50 grams
+ 70 g. box
+ weight Wifi etc…
(Note 3)
100 grams
+ 40 g. box
+ weight Wifi etc…
(Note 3)
Wi-Fi Always standard (802.11/n) No No
3G Standard on some models No No
Bluetooth Always standard
(Realtek chip set)
No No
Accelerometer SI No No
Real time clock Windows RTC system No No
Controller for LiPo batteries SI (and integrated with the operating system)
(Note 5)
No (to be added but not integrated)
(Note 5)
Audio Intel sound card with WDM In-Out Just exit (low quality) No
Video HDMI
2400 x 1600 pixels and beyond
up to 1080 x 1024 pixels
Power supply 5 Volts
2 Watts
(Note 2)
5 Volts
4.5 Watts
(Note 2)
From 7 to 12 Volts
from 1 to 2 Watts
In Out
INOUT – 21 types
up to 22 ADC
up to 24 bit
(Note 6)
INOUT – 6 types
and no ADC
INOUT – 5 types
up to 16 ADC
up to 12 bit
Windows 10 genuine and complete SI No
(Windows IOT)
(Note 7)
Dotnet 3.5 and 4 SI No No
Visual Studio Community (free) SI No No
Games with DirectX SI No No
Remote control with Team Viewer SI SI No
Price (indication) 50..100 Euros all included (Note 6) 60..110 Euro
(Note 4)
70..120 Euro
(Note 4)

Note 1: Approximate dimensions, with box, USB Hub, connection cables, Wifi adapter, Bluetooth adapter and 29 GB external memory.
Note 2: Power used by the motherboard, with video card off (control via TeamViewer). Not including Wifi, bluetooth, external memory and other accessories.
Note 3: Given that Raspberry and Arduino does not have WiFi, Bletooth, Harddisk and container, You should also add the weight of the cables, hub, shield and adapters to connect them.
Note 4: Typical price, with heatsinks, box, electric power supply, USB Hub, connection cables, Wifi adapter, Bluetooth adapter and 29 GB external memory.
Note 5: LiPo battery charger is included in the FlatPC series and the operating system is aware of the State of charge. Then normal battery indicator appears as on Smartphones, Tablets and notebooks. Instead on a Raspberry, adding a controller to the LiPo, do not inform the operating system Linux and the charge indicator does not appear.
Note 6: The price of FlatPC includes 30 Giga Byte storage, WiFi, Bluetooth, a Master, power supply and cables. Instead the accessories (the ADC module from 16 channel 24 bit, USB HUB, Mouse, Keyboard) vary depending on the offers.
Note 7: The Windows IOT (Internet Of Things), that you can install on Raspberry, runs only applications written especially for him. A Raspberry with Windows IOT, does not work with any desktop applications, We usually use on PCs.

Development tools

To develop or modify software, using Visual Studio Express, that we provide for free, for non-commercial or educational. Per permettere a tutti di aprire i progetti, We use Visual Studio Express 2008.

Visual Studio Express 2008 is practically equal to the 2010, 2012 and 2013, Apart from the colors and little else, but performance is lacking, in all subsequent versions, including:

  • The ability, to convert old projects written in VB6.
  • The ability to install it, also on the old computers, and also with XP.
  • The short installation time (a few minutes against the hours you need to install version 2015).
  • The short occupation of space on HardDisk that tablets is always poor (less than 1 Gigabyte against the Incredibles 20 Gigabyte versions of 2015 complete with CPP and various utilities).

Then developers, they want to partner with the system Theremino, should install VS2008ExpressSp1, usually the only VbNet (other languages can be installed one at a time). All the development tools, they are installed in English, to facilitate communication, between developers.

Download VisualStudioExpress2008 only VbNet (files from 500 Mega compressed with 7Z):

Download full VisualStudioExpress2008 (files from 780 Mega in ISO version):
VS2008ExpressSp1_VB_C # _ CPP

– – – – – – –

As much as possible We try to always use Visual Studio 2008 Express (IN ENGLISH) and DotNet 3.5, so keep the simple applications and read for educational purposes. For projects that truly require exotic functions (and just for those) We will use the latest version of Visual Studio that is currently “Visual Studio 2015 Community – Update 1 – English ". Important to note that now the free versions do not call more “Express” but “Community”.

Visual Studio downloads 2015 Community from Microsoft:

Before downloading the Visual Studio Choose language English. Then, during the installation, choose which components to install and add the CPP and maybe even support for applications “modern” (feel for applications).

– – – – – – –

For those who find it too complex on Visual Studio, We have created two alternatives: the Theremino Script (easier to use, but less powerful than Visual Studio) and the Theremino Automation (very easy to use, but only suitable for very simple automation and control applications).

Theremino EmptyApp

The easiest way to communicate, with other applications and with hardware, would Theremino Automation. Or, as a second level of difficulty, We would Theremino Script. But some users want to use the real Visual Studio, and they asked for a simplified base, to start.

This application, contains only three buttons and a text box, but it also contains the class “Theremino Slots”, you need to write and read the Slot. By means of the slots, communicating with hardware, and with other applications, of the system Theremino. And when it comes to slots, You can do everything.

Attention: It may happen that on systems to 64 applications may be unable to read and write the slots, in this case must be completed for “x 86”. The version 1.1 Empty App is configured to be compiled with x 86, but equally it is good to learn how to do it. Read the notes at the top of this page that explain, How to prepare Visual Studio, with boxes “Debug/Release” and “Solution Configuration”.

During the tests, We recommend to keep open a Slot Viewer, to see the values of slots, and to edit them at will. A first test could be this:

  • Locate the “Timer1_tick” (last function of Form1)
  • Comment out or delete the three instructions (rows), that are in the “Timer1_tick”
  • Write in their place this line: Textbox1-> Text = ReadSlot Slots.(1).ToString
  • Launch the program, and press the second button.
  • Change the value of the Slot 1, with the Viewer.
  • The value of the Slot 1, should appear in the text box, and catch up quickly.

Tips for developers

First of all,, try if our applications work and, If necessary, install DotNet 3.5 DirectX 9.0 c runtime and. To check if there is DirectX try, for example,, Theremino_3D.

Then install the Visual Studio Express (usually the only VbNet) and prepare it as explained, in the next paragraph.

Begin exploring a simple application, for example, the Viewer, by opening the file in the “Solution”, that is called "Theremino_SlotViewer.sln".

To make new applications don't ever start from scratch but:
– Choose an application, to do more or less, the things you need.
– Copy the top folder (that contains all of the files in the application).
– Study a new name, keeping the Convention “Theremino_NomeApp”
– Rename the new folder, you just created, with the new name (underscore including)
– Open the solution,
– Delete the project is no longer being found since the folder is renamed.
– Right click on the solution do “Add existing project” and choose the file “.vbproj”
– In “Solution explorer” (window top right) Rename “Solution” and “Project”.
– Open the project properties and select the Panel “Application”.
– Rename the two boxes at the top “Assembly name” and “Root namespace”.
– Press “Assembly information” and rename the title, the description and the other fields.
– Select the Panel “Compile” and set “All Configurations” and “All Platforms”.
– Press the button “Browse” and rename the folder where will be written the EXE.
– Compile, close DotNet and manually delete, all files with the old name.
– Changing applications, trying to maintain the basic structure.
– Possibly copy functions, controls and ideas from other applications thereminiche.
– To copy from one application to another, open simultaneously the two applications, in multiple copies of VisualStudio, by double clicking on the corresponding file “.sln”. Finally you do copy – paste everything you need, both graphics work.

For accessing slots: from file “Class_ThereminoSlots. vb”, or from “Class_ThereminoSlots. cs” (for those who prefer working in CSharp or is doing a port on Java, Python or CPP). The latest versions, Theremino class Slots, are found in the springs of HAL, in Visual Basic and CSharp, that you download from here: downloads/foundations # hal

To start with a simplified skeleton: from Theremino_EmptyApp, located on this same page: downloads/notes-on-software # emptyapp

To explore the State of variables during operation: change the box “Release” in “Debugging”, place a red dot, with the left mouse button, to the left of the row, where you want to interrupt the program, and launch the program, with the green arrow.

Compile the programs without optimizations. Optimizations do not accelerate the implementation of the software, If not no, and only in some cases. On the other hand the optimizations they create problems for some antivirus, and consider the program as “suspect”.

Compile the programs as “x 86” and not “Anycpu”, unless you know exactly what you are doing. With AnyCpu all steps of those parameters must be perfect, If you get it wrong an IntPtr instead of an Int32, the program may not work on systems to 64 bit. If you compile AnyCpu, You should then try the program, on all Windows systems, both 32 which in 64 bit.

Always use Int32 and Int64 instead of Int instead of Long, otherwise on 64 bit, unforeseen defects may occur.

Leave a DotNet tasked to destroy objects. Dotnet knows better than we do, What is the best time, to destroy objects, and reclaim space. If you are using “Dispose method”, It forces you to destroy them prematurely, and do you just waste time.

Leave a DotNet error checking. When they do occur errors, It is good that DotNet may emit his messages, they are always very significant. If it prevents you from doing it, then it becomes difficult to figure out what happened. Then, for pleasure, impestate not Catch program, except in special cases (pretty much just in reading and writing files).

The Try-Catch block need to continue even if errors occur, not to blow up the program, at the slightest puff of wind. Then, In addition to not cram all lines of Try Catch, the Catch must be strictly voids. Only in special cases, When you know what you are doing, and you want to make a more meaningful message, than Dot Net, then it makes sense to put something in your Catch.

Comment little and well. Write for example “A = B ' This statement allocates, the variable to, a copy of the numeric value, of variable B” It distracts attention and makes the software long and unreadable. Some programmers come to absurdity, write three lines of comments, for each line of code, sometimes even with additional instructions, to generate the XML file. Please don't do it!

Automatic documentation? No thanks. XML files are more difficult to read the code itself. Also, when you change the code, It's easy to forget to line up the XML instructions. So in the end you can trust “automatic documentation” and you should always check the code. Whom, sadistically, It became long and unreadable, because of the “automatic documentation”.

Not commenting between rows but the blank space on the right. Try to comment, in the same style used by the community thereminica. Comments do not serve, for those who write the program, but for those who will read it in the future. So it is good to use a uniform style (a peak followed by a line of less, with commentary on the right). This helps separate instructions, into meaningful groups, every group with a brief comment at the beginning.

Write function names, variables and comments in English. The universal language of the software is the simplified English: “I DO THIS YOU DO WHAT”. We Italians are only a small part of the world, Let's get used to write software understandable to all. Who does not know English, can write in Italian and translated as Googletranslate. In software using only simple words, and easy to remember.

Maintain a modular structure. Copy the basic structure from your existing applications. This way you will be able to transfer functions and behaviors, from one application to another. The modular structure, facilitates collaboration and allows even less experienced, compose new applications, with the copy paste.

Leverage existing software. Currently there are over 50 applications and scripts, ranging from 3D to WebBrowser, the audio, scientific applications, to music, and video. Almost all algorithms, and all kinds of syntax, There are, in either of the applications, but not only! The solutions we propose are carefully chosen, and are at 99%, the best solution that you can find on the web. Often are new solutions, and on the Web are not just. And then finding an application, that has what it takes, open it at the same time as your, and copy the parts you need, from a Visual Studio to another.

Of course who writes for himself can do exactly what he pleases. But in this case would do well to give a personal name (without “Theremino_xxx”) its applications.

Nondeterministic programming

They wrote us asking to deepen l’nondeterministic programming topic mentioned on page “Mission” and specifies guidance on it.

Much has been written about programming but who knows that it is more an art than a science. And also that much of the good and bad in that style rules depends more on programming. And just as you cannot specify rules for “produce” abstract or metaphysical rather than impressionistic paintings. For the same reasons it is not possible to specify rules for nondeterministic programming.

Therefore we will write what to do, but only a few ideas and some mistakes to avoid.

  • Simplicity – Better passare more time to simplify and to add more functions since a program is more complex and contains errors. The formal correctness proofs are not necessarily more complex of the program itself and therefore inevitably contain errors too. Only intuition and experience can give a reasonable assurance that a program works well (Note 1) but intuition gives good results only with simple programs. So if an application becomes too complex is well split it into multiple separate applications, each with simpler tasks. And it is for this reason that applications of the system Theremino are numerous (fifty in 2017) and grow a dozen per year.
  • Robustness – A robust software is not a software full of error messages, but software that manages alone. Sometimes it might give informational messages, but it should never crash. Because of one of these error messages is there almost does not fall on the Moon. Fortunately, there has been a technician, with great courage, in the few seconds available yet, He basically said: “screw it”. But if it was just for the software the mission would have failed (Note 2).
  • Redundant and probabilistic programmingAll programs that are not simple “two plus two equals four”, always contain errors and if not contained, the errors may arrive with the data to be processed or may lurk in the specification was used as a basis for writing them. So one must abandon the idea of writing perfect algorithms but rather try to write it in a way that they can continue to function even in the presence of errors. And here there are no rules, to achieve this you definitely need at least ten years experience and have written thousands of applications.
  • Asynchronicity If the subsystems are waiting each other enough that one hang to kill the entire program. Human beings don't do this. Each neuron whispers or shouts its message and doesn't care if the neurons following they collected nor wait for a reply from them, a confirmation of receipt or a parity check (Note 3).
  • Resemblance to the “software” produced by evolutionBiological systems continue to process data even though everything is totally and hopelessly wrong. Even with massive damage, and sometimes due to errors, some results are always. Can limp but not stop the same trying. This is what we should try to get the software. Current practices lead instead to write software that would be perfect but that, because of its exaggerated perfectionism, dies very easily.

(Note 1) Kurt Gödel in 1931 He proved that arithmetic is incomplete (first theorem) and also that no system quite meaningful to hold the arithmetic can be used to prove its own consistency (second theorem). And concluded that if an axiomatic system can prove its own consistency, then it must be inconsistent. But Gödel also said that humans (and other living organisms n.d.A.) possess an intuitive mode, not just computational, and that therefore his theorem sets no limits to what can be recognized as true by the man (and other living organisms n.d.A.)

(Note 2) Besides wasting millions of dollars the story could completely change. Maybe the next mission would have been a failure and maybe you would be abandoned entirely the idea of trying. This is not to say that descend on the Moon is very different from a tree, but perhaps it was unique and unrepeatable missions. Probably we extinguish ourselves as did the inhabitants of Easter Island, After destroying the environment in which they lived. Then, in our small way, getting off on the moon a little’ of importance has, and is the farthest point that we could get it.

(Note 3) We have demonstrated with Theremino CNC it is possible a asynchronous control even for demanding applications requiring maximum security. Theremino CNC moves up to five axes in a coordinated manner in five-dimensional space and none of the hundreds of users who are using the he still found flaws. But are all simple and well functioning, not to mention that his heart is totally asynchronous (writes "when it happens" it reads "sopruso").

Events and Threads

To live with an operating system, applications should be written in a particular way. With simple applications these difficulties don't notice, but as soon as the application becomes a little’ complex, occur on time faults and jams. These problems, are not caused by the programming language (VBNET, ThereminoScript, Java, C++, VB6…), and even by the operating system (Windows, Linux or Android). These are general concepts, that must be understood.

Why Arduino is not affected by these difficulties? Because normally Arduino sketches are simple and should not partner with an operating system. But even with Arduino, as soon as you exit from the toy, These problems are cropping up. Read This post that is a classic example of what can happen.

Understand the events and Threads

Events are generated by the operating system, These buttons pressed, Windows move, mouse and timers expiring. The events are run on the main Thread of the application. Each application has as a minimum, a main Thread, that takes care of the communication with the user (UI – User Inteface).

Each Thread can do only one thing at a time, If you are performing a instruction, cannot simultaneously to other. What happens if you are running long tasks, for example a break of 10 seconds, in the main Thread of the application? It happens that the application has stopped responding, to user commands.


  • Handle with care events, the main Thread, of the application. Never take breaks or lengthy operations (always be under a tenth of a second, better a penny). In case of lengthy operations, You should write complicated mechanisms, to interrupt them periodically (State machines, Do Events and the like)
  • Launch a second Thread, that from that moment, will have its own independent life.

Threads are employed. One Thread cannot call the functions of another Thread, to force him to do something. This is because the second Thread is executing other statements, and can not double. Then the first Thread must leave messages, and the second should periodically check them, and run them. Usually to communicate, using shared variables (numeric variables or text).

As it should appear on Visual Studio

In practice, you change the buttons on the toolbar, the location and visibility of panels, and other options, until you get, look just like this picture. These operations are done once, After you install Visual Studio.

First of all,, the menu opens “Tools” “Options” and in the Options Panel, you choose “Project and solutions”, “General” and enable “Show advanced build configurations” and “Always show solution”.

To work well you must see the Panel “Solution explorer”, to the right, with under the properties pane, and down the mistakes. It lacks some Panel, you add them with the menu “View”, and with the menu “Debug-Windows”.

The toolbar should contain the box “Debug/Release” (in order to stop the program with the breakpoint, and inspect the values of variables), and the box “x 86” (in order to set x 86, and operate applications, on all versions of Windows). If you are missing, you press the right mouse button, to the right of the last command, and you choose “Customize”, “Commands”, And then “Build”. Finally shakes the command list, until the last two: “Solution configuration” and “Solution platform”, and dragging them on the command bar.

Settings download

To speed up the configuration, We have prepared files with our settings for Visual Studio Express 2008 and Visual Studio Community 2015:

To apply the settings to Visual Studio you can use two methods:

1) Unzip the ZIP file where you like. Open Visual studio, menu “Tools”, “Import and export settings” , and then click “Import selected environment settings”.

2) Unzip the ZIP file and overwrite the files located in the following folders:
“C:\UsersxxxxxDocumentsVisual Studio 2008 Settings”
“C:\UsersxxxxxDocumentsVisual Studio 2015 Settings”

Uncommon peculiarities thereminico Software

Theremino is not an application, but an entire ecosystem, composed of over fifty applications, that communicate with each other.

The applications “thereminiche”, do not require installation, never require you to restart your computer, and do not write in the registry. Your computer and operating system, is not altered, By no means. A basic principle of the system Theremino, is that applications, do not change anything, outside their folder. These principles are the basis of portable applications.

For which, to uninstall just delete, and to update to new versions, just overwrite the files. The old configuration files work, also on new program versions (and vice versa). Applications can be moved to the folder, they are portable and modular, can communicate with each other and may run in multiple copies (taking care to keep them in separate folders, so that each application, have its parameters, and his private files)

Applications have minimal documentation. All parameters are immediately visible, and the user interface is simplified to the maximum. The basic idea says: “If an application, needs much explanation, It means he's hurt, better improve its user interface, that stretch the documentation”.

Consider our applications as examples, so changeable and upgradeable. They are all equipped with springs, and written in simple way. To which you can add performance, or use them as a basis, to create new applications. Investigators and collaborators are welcome.

We wrote the software in the easiest way possible, so you can use it to learn programming. For which, First of all,, We used the simpler language, the Basic, that VbNet has also become, the language more powerful and fast – don't believe anyone who says otherwise – see for yourself, doing the speed test with the three programs MMF, downloadable from the page downloads/foundations, that are all exactly the same things, and are written in C++, CSharp and VbNet. Finally explore the source codes, and judge for yourself, What is the easiest, concise and understandable. Chi, for some obscure reason, prefer to write more, to get the same things, could open our application with SharpDevelop, Press “VBNET to CSharp” and, in a few seconds, would his software converted, with a few thousand semicolons in addition.
On this page you can read the details that make the VbNet above CSharp (and also well above the C++): HTTPS://

Programming Tools

This section regroups tools, Tips and software, that might be useful to programmers. The order of this list is random. All you misses a more precise location, ends here.

Array calculation functions
The net is full of libraries for matrices! Yes it's true. But when we needed them (for the calculation algorithm of Gaussians, in Theremino MCA), We couldn't find one that worked. Most of the libraries, are made by mathematicians, which care only of formal. Therefore when inserted into an algorithm, go continually in error, due to the recursion and intermediate values that differ. The calculation functions, This zip, have many advantages: First of all work! Then you do not stumble in the Division by zero, are written in pure DotNet, and not the recursive. In addition, We've tried long, and we can guarantee, they are among the fastest.

Theremino Know-how 2014 and 2015
This is a wild cluster of ideas, examples, functions, algorithms and tricks to VbNet. It was not meant to be published, so you can find everything, including comments in Italian and nonsense. It is almost one Giga Bytes of knowledge, that may be useful, extreme programmers (those who do the dirty work). This file is updated to August 2014. We plan to publish a new one every year.

The version of the 2015 It also contains the latest news, that unfortunately are scattered in a lot of obsolete information. We've eliminated some of the most useless parts, but the file remains the same a huge pile of trash, with some here and there.

Get the system modules

The theremino team only deals with research and does not sell hardware. The system is completely "Freeware", "Open Source", "Not for Profit" and "DIY", but there are manufacturers who can provide modules assembled and tested at a great price. One could hardly self-build them spending less. A list of manufacturers on this page:


The source code of our software does not contain copyright notices, author names and links to our site, so you can make every use, without limitation of any kind. We do not require you to specify the original source or our site but if you are happy with our software remember us and make known this site to your friends. Any donations, even small, are very welcome and can help us to maintain the software “free” and to produce always new applications.

Comments are closed.