Foundations


HAL – Hardware Abstraction Layer

The HAL - Hardware Abstraction Layer - is the hearth of the Theremino system.

L’HAL mette in comunicazione l’hardware di InOut con il software ad alto livello attraverso USB e Slots

Se si usano i moduli hardware USB, allora l’HAL è indispensabile e deve rimanere acceso, si può minimizzarlo, ma deve restare in funzione.

Se non si usa hardware USB, allora l’HAL non è necessario, le applicazioni del sistema possono comunicare tra di loro, attraverso gli Slot, anche senza HAL.

Il programma HAL standardizza i dati dei sensori in un range di valori facilmente usabile e fornisce funzioni di test e debugging grafico (oscilloscopio)

    HAL cap keys with velocity - Theremino System

Nella versione 3.2 l’oscilloscopio è migliorato e sono disponibili i tasti capacitivi con “velocity”

Consigli per iniziare: Il programma “Theremino_HAL.exe”, non richiede installazione e può essere eseguito in qualunque cartella del sistema – Facendo doppio click su una linea si apre la finestra grafica che mostra l’andamento del segnale su quella linea – Con un click singolo su una linea e con un click su un’altra linea è possibile vederle contemporaneamente  - Tutte le caselle numeriche sono editabili con la tastiera, con il mouse su/giù, con la rotella del mouse e con le frecce alto e basso - Infine, durante le prove, è molto comodo cambiare i valori nella colonna “Value” con il mouse (premere il tasto sinistro su un numero della colonna “Value”, tenerlo premuto e muovere il mouse su e giù)
Errori temporanei causati da sovratensioni sui PIN di Input: A volte, toccando i PIN con le dita, il programma HAL smette di comunicare con l’hardware, scrive una riga rossa con il messaggio “disconnesso” e si deve premere “Riconosci”. Questo si verifica se il corpo è carico di elettricità statica e emette una piccola scarica elettrica. Tutti i componenti sono scelti con cura e non si rompono mai, ma anche se non si vede la scintilla, si tratta sempre di tensioni di molte migliaia di Volt, che mandano in tilt temporaneamente la comunicazione seriale e la porta USB. Durante le prove si faccia attenzione a maneggiare i moduli solo da spenti, oppure a toccare prima la massa (ad esempio il connettore USB). Il progetto finale dovrebbe sempre prevedere un contenitore isolante che impedisca agli utenti di toccare parti metalliche sotto tensione.
Note sulle versioni di Theremino_HAL
Versione 2.0: Abilita i sei pin di InOut dei master. Scaricatela e riprogrammate i Master con il nuovo firmware (V2.0) che si scarica dalla pagina: technical/schematics
Versione 2.2: Contiene la correzione di alcuni difetti e piccoli miglioramenti che rendono più facile testare i sensori di accelerazione.

Versione 2.6: Contiene miglioramenti minori e in caso di disconnessione dell’hardware si riprende immediatamente dagli errori senza caricare la cpu.
Versione 3.3: Help completi in Italiano, Inglese e Giapponese. Menu e toolbar con i principali comandi e accesso agli help. Tasti capacitivi con velocity (molto apprezzata dai musicisti) Miglioramenti nella stabilità. Ora si possono sostituire le configurazioni facilmente. L’HAL si accorge se un Master è già connesso e non cerca di aprirlo.
Versione 3.3: piccole correzioni anche ai file di help
Versione 3.4: piccole correzioni
Versione 3.5: Nelle versioni precedenti la banda passante era limitata a meno di 100 Hz anche con Response Speed al massimo. Ora invece impostando i valori 98, 99 e 100, il parametro “Response speed” esclude progressivamente la sua azione di filtraggio e la banda passante arriva fino a 250Hz (metà della frequenza di campionamento)

Versione 3.6: Aggiunta l’opzione “Remove errors” nelle proprietà del tipo “Usound sensor”. Nelle versioni precedenti il controllo dell’errore era sempre abilitato e ritardava i dati di quasi mezzo secondo. Ora è possibile eliminare il controllo e rendere più reattivo il valore della distanza. Le applicazioni di tipo “Radar a ultrasuoni” sono molto avvantaggiate da questa novità.
Versione 3.8 (sperimentale): Su alcuni computer, specialmente notebooks, con Windows7 e Windows8, alcuni utenti non riuscivano a superare i 300 FPS. Stiamo quindi tentando varie soluzioni per aumentare la massima frequenza di scambio. Questa versione dovrebbe raggiungere almeno 450 – 500 FPS su computer più lenti e oltre 800 – 900 FPS sui migliori. Questa versione, impostando manualmente la proprietà “Esegui come amministratore” al file “ThereminoHAL.exe” (solo Windows7 e 8) , acquista anche la priorità “Real Time”. Con la priorità “Real Time” non si sono visti miglioramenti, ma su alcuni computer potrebbe servire. Fateci sapere le vostre esperienze! 
Versione 3.9: Questa versione supporta anche i nuovi CapSensorHS con l’algoritmo “Dynamic Resolution” che permette una latenza incredibilmente bassa di 0.8mS  e nel contempo una grande risoluzione di campionamento per le applicazioni che la richiedono.

Download di Theremino_HAL – Versione 3.9
Theremino_HAL_V3.9 (versione per Windows, per Linux vedere le note di installazione)

Download di Theremino_HAL  - Versione 3.9 – Con sorgenti
Ecco tutti i sorgenti e i file di progetto necessari per capire il funzionamento del sistema Theremino e per eventuali modifiche. I sorgenti saranno anche utili agli esperti di sistemi non-Windows per fare traduzioni ed esperimenti nelle varie versioni di Linux e Mac.
Theremino_HAL_V3.9_WithSources (versione per Windows, per Linux vedere le note di installazione)

Download di Theremino HAL in C# - Versione 3.9 – Con sorgenti
Abbiamo preparato questa versione in C# per facilitare il “porting” verso Android, Linux e Mac che preferiscono le sintassi C-Like. Questa versione funziona esattamente come quella originale. Per l’uso normale si consiglia però di non usarla dato che è meno testata e leggermente meno efficiente a causa della più difficile gestione delle stringhe nei liguaggi C-Like.
Theremino_HAL_CSharp_V3.9_WithSources (versione per Windows, per Linux vedere le note di installazione)

- – – – – – – – – – – – -

   Documentazione editabile in formato ODT – Italiano, Inglese e Giapponesewww.onlinedoctranslator.com/translator.html che è ottimo, velocissimo e rispetta la formattazione.

ThereminoHAL_Documentation_ITA_ENG_JAP


Theremino Starter

La modularità del software del sistema Theremino si ottiene, in modo non convenzionale, con la esecuzione contemporanea di molte applicazioni. Ogni applicazione si occupa dei soli compiti per cui è stata progettata e li esegue nel modo migliore possibile. In questo modo le applicazioni possono essere semplici, efficienti e quasi esenti da difetti. Nel sistema Theremino molte applicazioni semplici comunicano tra loro e cooperano per eseguire compiti complessi.

Il Theremino Starter avvia tutte le applicazioni con nome “Theremino_xxx.exe” presenti nella sua cartella e sottocartelle.

Per costruire un “gruppo di applicazioni” si comincia con una cartella principale (con il nome del progetto che si sta creando) All’interno della cartella principale, ciascuna applicazione deve avere la sua cartella specifica con all’interno l’eseguibile, i file di appoggio e le sottocartelle. Se si usano più copie della stessa applicazione è bene aggiungere un numero finale ai nomi delle cartelle. Come illustrato nell’esempio seguente:

Cartella: "MultiPlayer"

      Cartella: "ThereminoSoundPlayer_1"
            Cartella: "Media"
            Applicazione: "Theremino_SoundPlayer.exe"

      Cartella: "ThereminoSoundPlayer_2"
            Cartella: "Media"
            Applicazione: "Theremino_SoundPlayer.exe"

      Cartella: "ThereminoVideoPlayer_1"
            Cartella: "Media"
            Cartella: "Media2"
            Applicazione: "Theremino_VideoPlayer.exe"

      Cartella: "Theremino_HAL"
            Applicazione: "Theremino_Hal.exe"
            File: "Theremino_HAL_ConfigDatabase.txt"
            File: "Theremino_HAL_INI.txt"

      Cartella: "Theremino_Helper"
            File: "CustomControlsLib.dll"
            Applicazione: "Theremino_Helper.exe"

      File: "Start_ALL_Theremino_Apps.vbs"

Gruppi di applicazioni come questo possono contenere anche decine di applicazioni. Quando disposte in cartelle separate, ogni applicazione del sistema conserva le proprie impostazioni, e anche le posizioni delle finestre in modo indipendente. Si possono addirittura creare più gruppi di applicazioni ed eseguirli tutti contemporaneamente, mantenendo una separazione adeguata tra le applicazioni e facendo in modo che ogni applicazione comunichi solo con i suoi sensori e i suoi attuatori. Ma nel contempo è anche possibile farle comunicare tutte, o a gruppi, tra di loro. Per comunicare si usano gli Slot, imparare a usare bene gli Slot è fondamentale.

Il piccolo script “Start_ALL_Theremino_Apps” si occupa di eseguire tutte le applicazioni di un gruppo con un solo click. Si consiglia di creare sul desktop un collegamento a questo “Starter”.

Theremino Starter
In questo file ZIP troverete il programma Theremino_Starter
Start_ALL_Theremino_Apps (versione per Windows)


Theremino SlotViewer

Theremino SlotViewer a simple and handy slot explorer and editor.

Gli slot sono il cuore dalla modularità del sistema Theremino. Spesso è comodo tenere d’occhio il loro valore o modificarlo manualmente. Questo piccolo “esploratore di slot” è molto flessibile, può visualizzare gli slot in vari modi e dimensioni, in verticale o in orizzontale e con lo schema di colori che si preferisce.

Theremino SlotViewer a simple and handy slot explorer and editor.  Theremino SlotViewer a simple and handy slot explorer and editor.

Theremino SlotViewer a simple and handy slot explorer and editor. Theremino SlotViewer a simple and handy slot explorer and editor. Theremino SlotViewer a simple and handy slot explorer and editor.

Si possono visualizzare gruppi composti da qualunque numero di slot, anche selezionandoli da zone diverse. Si possono editare i valori con il mouse, i tasti freccia, PageUp, PageDown. I tasti CTRL e SHIFT permettono di variare i valori più velocemente e si può usare anche la rotella del mouse.

- – - – - -

Versione 1.6 - Nelle versioni precedenti la regolazione degli slot con le frecce della tastiera non funzionava bene, ora è a posto.
Versione 1.7 Cambiando “Num slots” a volte appariva un piccolo riquadro bianco, ora non succede più.

Download di Theremino SlotViewer
ThereminoSlotViewer_V1.7 (versione per Windows, Linux e OSX, con Wine)

Download di Theremino SlotViewer con Sorgenti
Theremino_SlotViewer_V1.7_WithSources (versione per Windows, Linux e OSX, con Wine)


Interprocess Communications
Esempi di accesso ai dati in C++, CSharp, VbNet e VB6

Questi esempi spiegano come usare i MemoryMappedFiles per scambiare dati con gli slot del sistema Theremino nei linguaggi di programmazione C++. CSharp, VbNet e VB6

Si consiglia di cominciare le prove lanciando più versioni di questi programmi in linguaggi diversi, o anche tutte nello stesso linguaggio, e fare esperimenti di comunicazione scrivendo stringhe e numeri, inviandoli con SET e ricevendoli con GET

Per comunicare con gli Slot, con il programma HAL e con gli altri programmi Host del sistema Theremino si usano solo numeri “Single” (floating point a 32 bit) nelle posizioni da 0 a 1000 (offset da 0 a 4000) del MemoryMappedFile con nome Theremino1

La comunicazione MMF, tra applicazioni, potrebbe anche usare file con nomi diversi da Theremino1 e non impegnare i 999 slot del sistema Theremino.

Download
Theremino_MemoryMappedFiles_V1.2  (versione per Windows)

Gli esempi mostrano anche come usare stringhe, numeri interi, float a 64 bit e arrays che non servono per comunicare con il sistema Theremino ma potranno essere utili per far comunicare in modo efficiente (pochi microsecondi per ogni trasferimento) diversi programmi creati dagli utenti, anche in linguaggi diversi tra loro.

I sorgenti possono essere utili agli esperti di sistemi non-Windows per fare traduzioni ed esperimenti nelle varie versioni di Linux e Mac.

- – - – - – -

Un facile accesso agli slot con: “WriteSlot” e “ReadSlot”

Gli esempi precedenti di “Memory Mapped Files” sono molto generici e mostrano anche come comunicare stringhe, numeri e arrays.

Comunicare in modo standard con gli slot del sistema Theremino è molto più semplice, non ci si deve preoccupare del nome del file e non si devono moltiplicare gli indirizzi per la lunghezza del dato numerico, bastano due funzioni: WriteSlot e ReadSlot

Ricordarsi anche di chiamare la funzione “MemoryMappedFile_Init” nella inizializzazione della propria applicazione.

Scaricate questo file:
Download: Module_MemoryMappedFiles_VbNet_CSharp_Pascal
Poi includete il modulo nel vostro progetto e “voila”, avrete la comunicazione con gli slot. Questo file contiene i moduli per VbNet, CSharp e Pascal, ma è facile tradurli in ogni altro linguaggio, eventualmente copiate dagli esempi di accesso ai dati in C++ e VB6. Se servono esempi sull’uso delle funzioni WriteSlot e ReadSlot, quasi tutte le applicazioni del sistema Theremino le usano.


Software per comunicare con Max/MSP

Questi sono esempi di comunicazione bidirezionale tra gli slot del sistema Theremino e l’ambiente Max/MSP

Help interattivo per Max/MSP versione 4.x


Help interattivo per Max/MSP versione 5.x

Per mezzo di un MXE (modulo External per MAX) si ottiene una comunicazione estremamente veloce (chiamate dirette ad una DLL – pochi microsecondi per ogni trasferimento) 
 
Da notare che attraverso gli Slot del sistema Theremino più Patch di Max/MSP possono comunicare tra di loro in modo molto efficiente Questa possibilità potrebbe essere utile ai creatori di sistemi complessi che, attualmente, per la comunicazione tra Patch hanno a disposizione solo metodi decisamente più lenti. (non siamo grandi esperti di Max per cui se qualcuno conosce altri metodi efficienti ce lo comunichi e correggeremo queste note)


Max Install
In questo file tutto il necessario per far comunicare Max/MSP con gli Slot e i MemoryMappedFiles del sistema Theremino.
Theremino_Max_Installer_V1.0 (versione per Windows)

Sorgenti
In questo file troverete i sorgenti dell’ extension “Theremino.mxe”
Theremino_Max_Sources_V1.0 (versione per Windows)

Usando questi sorgenti è possibile ricompilare la patch Theremino.mxe. Con le necessarie variazioni, dovrebbe essere possibile anche interfacciarsi con PureData  e programmi simili (vvvv, Processing, EyesWeb, etc…)

Per Linux e per MAC  questo progetto dovrebbe essere modificato sia nella parte MemoryMappedFiles che nelle modalità di installazione dei files nelle cartelle di Max/MSP.


Software per comunicare via UDP con messaggi OSC

Questo è un esempio di comunicazione bidirezionale tra gli slot del sistema Theremino e l’ambiente Max/MSP con il protocollo Open Sound Control

Help interattivo di comunicazione UDP – OSC per Max/MSP versione 5.x
 
 

Questo esempio mostra una Patch di Max/MSP che invia sulla porta UDP 7401 la richiesta dei valori degli slot 0 e 56, li riceve dalla porta UDP 7400 e li mostra con due VU-Meters.

L’applicazione Theremino_OSC riceve le richieste dalla porta UDP 7401 e invia i valori degli slot sulla porta UDP 7400

 
 
 
Applicazione che realizza l’accesso agli Slot del sistema Theremino via UDP con messaggi OSC

-
-
Il lato destro della Patch di esempio mostra, con un procedimento simile, come scrivere valori numerici negli Slot del sistema Theremino.

Theremino OSC e Patch di esempio per Max/MSP
In questo file tutto il Software per comunicare via UDP con messaggi OSC
Theremino_OSC_V1.1 (versione per Windows, Linux)

Sorgenti
In questo file troverete i sorgenti del programma Theremino_OSC
Theremino_OSC_V1.1_WithSources (versione per Windows, Linux)

Possibilità di comunicazione via UDP
Il protocollo OSC via UDP è più lento rispetto al metodo precedente (con la DLL “External” di  MAX, chiamata MXE) ma permette una comunicazione molto più flessibile, sia sulla rete locale che attraverso Internet

Attraverso i nostri Slot, ThereminoOSC, Max/MSP, Processing e PureData è possibile mettere in comunicazione sistemi operativi e hardware apparentemente incompatibili in modo facile e immediato. Senza scrivere una sola riga di codice.

Con un minimo di esperienza nella programmazione è anche possibile modificare i nostri esempi (tutti freeware e con sorgenti completi) Il nostro software è tutto scritto in modo estremamente semplice e modulare in modo da poter essere una comoda base per lo sviluppo di applicativi con esigenze particolari.


Theremino Script


L’ interfaccia utente di Theremino Script permette di scrivere piccoli programmi in VbNet o in CSharp senza installare VisualStudio.

Le funzioni di comunicazione e i MemoryMappedFiles (Interprocess Communication) sono implementate a livello di sistema, per cui basta scrivere WriteSlot e ReadSlot per comunicare in modo efficiente (pochi micro secondi) con gli slot del sistema Theremino.

Il linguaggio è compilato e si appoggia a DotNet per cui l’esecuzione è velocissima (dalle nostre prove VbNet è più veloce di CSharp e di C++) inoltre VbNet dispone di un set di funzioni matematiche e grafiche assolutamente completo.

I programmi compilati sono usabili anche senza Theremino_Script e possono essere distribuiti come normali file “EXE”

Il Theremino Script è un po’ il figlio minore del Visual Studio Express di Microsoft ma non va altrettanto bene, è più lento, contiene sicuramente più bachi e difetti e non ha l’editor visuale dei Form, per cui il programma si scrive tutto in testo. Gli unici vantaggi sono che non si deve installare Visual Studio Express e che scrivere programmi di poche righe sembra, all’inizio, più semplice.

Noi consigliamo di usare il vero Visual Studio in VbNet ( versioni 2008 o 2010 express ) che permette di proseguire facilmente anche quando i programmi diventano molto grandi. Ma molti utenti hanno chiesto un metodo semplice di accedere agli slot del sistema theremino per scrivere cose come “Accendo un led – Attendo 10 secondi – Spengo il led” per cui abbiamo cercato di semplificare e nascondere al massimo ogni complicazione, non è detto che questa strada sia valida, provatela e fateci sapere come vi trovate.

Se non vi trovate bene con Theremino Script e non volete usare Visual Studio allora un’altra buona soluzione per comunicare con gli slot ed eseguire ogni genere di funzione di controllo potrebbero essere gli ambienti Max/Msp, PureData e Processing.

Note sulle versioni di Theremino_Script
Versione 2.1
 - Prima versione di Theremino_Script con l’accesso agli SLOT integrato.
Versione 2.2:
- Migliorati i suggerimenti (Intellisense) che ora presentano più scelte.
- I suggerimenti si scelgono cliccando sulla lista con un doppio click del mouse.
- Editare è più facile e più veloce.
- Non succede più di scegliere per sbaglio funzioni dalla lista dei suggerimenti.
- Aggiunto un esempio che simula i click di un Geiger con frequenza variabile, utile per provare il programma Theremino_Geiger.
Versione 2.3:
- La rotella del mouse ora scrolla in modo decente, veloce e progressiva.
- Aggiunto un esempio che fa lampeggiare un LED connesso allo “Slot 1″, utile per chi fa i primi passi con gli Slot, i Master e il programma Hal.

Download di Theremino Script V2.3
Theremino_Script_V2.3 (versione per Windows e Linux)

Download di Theremino Script V2.3 con sorgenti
In questo file troverete i sorgenti completi di Theremino_Script.
Theremino_Script_V2.3_WithSources (versione per Windows e Linux)


Theremino SimpleLogger (with Theremino Script)

Questo semplice “Logger” è semplificato al massimo. Anche i meno esperti di programmazione possono usarlo e adattarlo alle loro esigenze. Il file LOG.csv viene creato nella stessa cartella che contiene i programmi “exe”. Modificando le prime quattro righe del file “ThereminoLogger.vb” si possono variare l’intervallo di acquisizione e i canali da acquisire. Una volta modificato a proprio piacere, si può lanciare direttamente la versione compilata “ThereminoLogger.exe”, senza più passare dal “ThereminoScript”.

- Note per la nuova versione -
Sono presenti alcuni esempi di visualizzazione interattiva con KST. Per usare KST prima di tutto si deve installarlo da WEB e poi procedere come spiegato nel file “ReadMe – KST Install Notes.rtf” 

Abbiamo aggiunto anche le versioni compilate (exe), così non si deve nemmeno aprire Theremino Script per compilarle. Le tre versioni precotte loggano ogni secondo, dieci volte al secondo e cento volte al secondo.
I file di KST permettono di visualizzare i LOG in vari modi, mentre si sta loggando. Sono solo esempi. Con pazienza e informandosi sul WEB si può far fare a KST ogni genere di visualizzazione e filtraggio. Probabilmente è anche possibile usare KST per inviare file MySql su WEB. Usare KST non è per niente facile, è un software grandioso e i grandi risultati si devono pagare con molta pazienza.
- Correzione -
Abbiamo spostato i file KST nella stessa cartella del file LOG.csv. Sembra che KST abbia un difetto che gli impedisce di leggere il LOG se si trova in un altra cartella. Se non avete scaricato quest’ultima versione spostateli manualmente vicino al LOG.csv.

Download di Theremino SimpleLogger
Theremino_SimpleLogger_With_KST_Examples (versione per Windows e Linux)


Ottenere i moduli del sistema

Il team del sistema Theremino si occupa solo di ricerca e non vende hardware. Il sistema é completamente “Freeware”, “Open Source”, “No Profit” e “DIY”, ma esistono produttori che possono fornire i moduli assemblati e collaudati a un ottimo prezzo. Difficilmente si potrebbe auto-costruirli spendendo meno. Un elenco dei produttori in questa pagina: www.theremino.com/contacts/producers


Donazioni
 

Il codice sorgente dei nostri programmi non contiene note sul copyright, nomi degli autori e link al nostro sito, per cui potete farne ogni uso, senza limitazioni di alcun genere. Non chiediamo di specificare la fonte originale o il nostro sito ma se sarete contenti del nostro software ricordatevi di noi e fate conoscere questo sito ai vostri amici. Eventuali donazioni, anche piccole, sono molto gradite e possono aiutarci a mantenere il software “free” ed a produrne sempre di nuovo.


Note legali
 

ITALIANO – HARDWARE: NEI LIMITI PREVISTI DALLA LEGGE il sistema Theremino VIENE FORNITO “COSÌ COM’È”, E NON RILASCIA GARANZIA ESPLICITA O IMPLICITA, RISPETTO ALLA SUA FUNZIONALITA’, OPERATIVITA’, O USO, INCLUSE, SENZA LIMITAZIONE, LE GARANZIE IMPLICITE DI COMMERCIABILITÀ, IDONEITÀ PER UNO SCOPO PARTICOLARE O VIOLAZIONE. SI DECLINANO ESPRESSAMENTE OGNI RESPONSABILITÀ PER DANNI DIRETTI, INDIRETTI, CONSEQUENZIALI, INCIDENTALI O SPECIALI, INCLUSI, SENZA LIMITAZIONI, MANCATI GUADAGNI, PERDITE DI PROFITTI, PERDITE DERIVANTI DA INTERRUZIONE DI ATTIVITA’ O PERDITE DI DATI, INDIPENDENTEMENTE DALLA FORMA DI AZIONE O TEORIA LEGALE SOTTO CUI LA RESPONSABILITA’ VIENE ASSERITA, ANCHE SE NON INFORMATI DELLA POSSIBILITA’ O RISCHIO DI TALI DANNI.
ITALIANO – SOFTWARE: IL SOFTWARE del sistema Theremino E’ UN SOFTWARE LIBERO: E’ POSSIBILE RIDISTRIBUIRLO E/O MODIFICARLO SECONDO I TERMINI DELLA LICENZA “GNU General Public License” COME PUBBLICATA DALLA “Free Software Foundation”, NELLA VERSIONE 3, O QUALSIASI VERSIONE SUCCESSIVA. È POSSIBILE OTTENERE UNA COPIA DELLA LICENZA “GNU General Public License” DA: http://www.gnu.org/licenses
ENGLISH – HARDWARE: THE PRODUCT Theremino System IS PROVIDED TO YOU “AS IT IS”, AND WE MAKE NO EXPRESS OR IMPLIED WARRANTIES WHATSOEVER WITH RESPECT TO ITS FUNCTIONALITY, OPERABILITY, OR USE, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR INFRINGEMENT. WE EXPRESSLY DISCLAIM ANY LIABILITY WHATSOEVER FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR SPECIAL DAMAGES, INCLUDING, WITHOUT LIMITATION, LOST REVENUES, LOST PROFITS, LOSSES RESULTING FROM BUSINESS INTERRUPTION OR LOSS OF DATA, REGARDLESS OF THE FORM OF ACTION OR LEGAL THEORY UNDER WHICH THE LIABILITY MAY BE ASSERTED, EVEN IF NOT ADVISED OF THE POSSIBILITY OR LIKELIHOOD OF SUCH DAMAGES.
ENGLISH – SOFTWARE: THE Theremino System SOFTWARE IS FREE SOFTWARE: YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT UNDER THE TERMS OF THE “GNU General Public License” AS PUBLISHED BY THE “Free Software Foundation”, EITHER VERSION 3 OF THE LICENSE, OR ANY LATER VERSION. YOU CAN GET A COPY OF THE “GNU General Public License” FROM: http://www.gnu.org/licenses

Comments are closed.