Requirements for Software
All the applications of the system theremino, work on Windows-10 and Windows-11, both 32 bit and 64 bit. Almost all our applications still work on Windows-XP, Windows-Vista, Windows-7, Windows-7-Starter and Windows-8. 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.
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.
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 store-ino 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 store-ino 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).
This is a Tablet PC – TCU (Theremino Control Unit) soon to be sold at store-ino.
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 store-ino.
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.
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
This is a Flat PC – TCU (Theremino Control Unit) which goes on sale on store-ino 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 sent to us in evidence from 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
4 x 900 MHz
1 x 84 MHz
|Bit processor||64 bit||32 bit||32 bit|
|RAM||2 Giga Byte
|1 Giga Byte
|96 Kilo Bytes
|L2 cache||2 MByte||1 MByte||No|
|Mass storage||32 (or 64) Jig series
+ slot to 64 External Giga
only the slot to 32 External Giga
|512 kilo Bytes|
|Dimensions||74 x 104 x 12 mm
|92 x 100 x 33 mm
|62 x 112 x 35 mm (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…
+ 40 g. box
+ weight Wifi etc…
|Wi-Fi||Always standard (802.11/n)||No||No|
|3G||Standard on some models||No||No|
(Realtek chip set)
|Real time clock||Windows RTC system||No||No|
|Controller for LiPo batteries||SI (and integrated with the operating system)
|No (to be added but not integrated)
|Audio||Intel sound card with WDM In-Out||Just exit (low quality)||No|
2400 x 1600 pixels and beyond
H264 up to 1080 x 1024 pixels
|Power supply||5 Volts
|From 7 to 12 Volts
from 1 to 2 Watts
|INOUT – 21 types
up to 22 ADC
up to 24 bit
|INOUT – 6 types
and no ADC
|INOUT – 5 types
up to 16 ADC
up to 12 bit
|Windows 10 genuine and complete||SI||No
|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 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.
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 2019).
- 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. It's 2019 It should be even worse).
- The project compilation speed, fractions of a second against dozens of seconds even on the fastest machines.
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 2019 Community”. Important to note that now the free versions do not call more “Express” but “Community”.
Visual Studio downloads 2019 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 Automation (very easy to use and also powerful enough) and the Theremino Script.
Theremino Script is difficult to use and less powerful than Visual Studio, then it combines the worst of both. Our advice is to use Automation or go directly to Visual Studio.
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 Theremino System. 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.
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 programming – All 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 evolution – Biological 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.
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://www.simple-talk.com/dotnet/net-framework/10-reasons-why-visual-basic-is-better-than-c
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 infinite intermediate values, divisions by zero and diverging recursions. The calculation functions, This zip, have many advantages: First of all work! Then they don't stumble into singularities, 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, 2015 and 2020
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 a huge pile of rumenta, with some here and there.
The version of the 2020 is the same as the 2015 but with 200 additional megabytes. The new files contain everything we have learned over the past five years.
If you have any problems you can not solve please write to firstname.lastname@example.org
Sometimes problems happen difficult to explain in an email. In that case we could talk via Skype or phone, and it would also be useful to be able to share your screen.
We recommend that you install an application “Remote desktop”. These applications allow you to see the desktop of a computer away, as if it was on site. You can also transfer files and work on the software that is on the remote computer. There are many applications of this kind, some even open source and totally free, we usually use AnyDesk which is fast and easy to use.
AnyDesk is a commercial application, but it can be used by private and non-profit makers, therefore suitable for a Nonprofit organization like ours.
AnyDesk is downloaded from This page and it installs in a few tens of seconds. Once installed it will also be useful on other occasions, for example to help your less experienced friends.
We thank the team di AnyDesk, giving us free use of their excellent application.
– – –
Applications “Remote desktop” not to use
TeamViewer – We used to use it before but it created problems (the versions purchased did not agree with the free ones and there were always version problems). Some of our Chinese correspondents also use TeamViewer for commercial purposes and therefore bought it. They bought the version 12, which is incompatible with later versions (13 and 14). So either they bought version fourteen (spending quite substantial additional amounts), or we were all forced to install the version 12 in order to communicate with them.