diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 1be9c772225c32d319fbad273d37b7a693960a77..16eeaebe382863cea0220d2262e58af2799aa914 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,22 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="BookmarkManager">
-    <bookmark url="file://$PROJECT_DIR$/guru.py" line="135" mnemonic="8" />
+    <bookmark url="file://$PROJECT_DIR$/guru.py" line="137" mnemonic="8" />
     <bookmark url="file://$PROJECT_DIR$/modules/scheduling/scheduler.py" line="258" mnemonic="1" />
   </component>
   <component name="ChangeListManager">
     <list default="true" id="c58ca86a-4167-4474-accb-41439a535514" name="Default" comment="">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
-      <change beforePath="$PROJECT_DIR$/aura.py" afterPath="$PROJECT_DIR$/aura.py" />
+      <change beforePath="$PROJECT_DIR$/configuration/aura.ini" afterPath="$PROJECT_DIR$/configuration/aura.ini" />
       <change beforePath="$PROJECT_DIR$/guru.py" afterPath="$PROJECT_DIR$/guru.py" />
-      <change beforePath="$PROJECT_DIR$/libraries/base/calendar.py" afterPath="$PROJECT_DIR$/libraries/base/calendar.py" />
       <change beforePath="$PROJECT_DIR$/libraries/database/broadcasts.py" afterPath="$PROJECT_DIR$/libraries/database/broadcasts.py" />
       <change beforePath="$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py" afterPath="$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py" />
-      <change beforePath="$PROJECT_DIR$/modules/communication/liquidsoap/initthread.py" afterPath="$PROJECT_DIR$/modules/communication/liquidsoap/initthread.py" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/alsa.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.alsa.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/dynamicsources.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.dynamicsources.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/inToOut.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.inToOut.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/inputToOutput.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.inputToOutput.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/library.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.library.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/playd.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.playd.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/playlist.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.playlist.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/pulse.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.pulse.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/record.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.record.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/simpleplayer.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.simpleplayer.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/simplestmixer.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/simplestmixer.liq" />
       <change beforePath="$PROJECT_DIR$/modules/liquidsoap/simplestmixer.log" afterPath="$PROJECT_DIR$/modules/liquidsoap/simplestmixer.log" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/stream.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.stream.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/test.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.test.liq" />
+      <change beforePath="$PROJECT_DIR$/modules/liquidsoap/tester.liq" afterPath="$PROJECT_DIR$/modules/liquidsoap/unused.tester.liq" />
       <change beforePath="$PROJECT_DIR$/modules/scheduling/scheduler.py" afterPath="$PROJECT_DIR$/modules/scheduling/scheduler.py" />
+      <change beforePath="$PROJECT_DIR$/modules/tools/padavan.py" afterPath="$PROJECT_DIR$/modules/tools/padavan.py" />
       <change beforePath="$PROJECT_DIR$/modules/web/routes.py" afterPath="$PROJECT_DIR$/modules/web/routes.py" />
-      <change beforePath="$PROJECT_DIR$/test.py" afterPath="$PROJECT_DIR$/test.py" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="TRACKING_ENABLED" value="true" />
@@ -27,104 +39,103 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="broadcasts.py" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/libraries/database/broadcasts.py">
+      <file leaf-file-name="guru.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/guru.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-9">
-              <caret line="56" column="1" lean-forward="false" selection-start-line="56" selection-start-column="1" selection-end-line="56" selection-end-column="1" />
+            <state relative-caret-position="204">
+              <caret line="72" column="67" lean-forward="false" selection-start-line="72" selection-start-column="67" selection-end-line="72" selection-end-column="67" />
               <folding>
-                <element signature="e#43#75#0" expanded="true" />
+                <element signature="e#20#31#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="initthread.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/modules/communication/liquidsoap/initthread.py">
+      <file leaf-file-name="padavan.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/modules/tools/padavan.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="340">
-              <caret line="42" column="25" lean-forward="false" selection-start-line="42" selection-start-column="25" selection-end-line="42" selection-end-column="25" />
+            <state relative-caret-position="304">
+              <caret line="68" column="51" lean-forward="false" selection-start-line="68" selection-start-column="51" selection-end-line="68" selection-end-column="51" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="communicator.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py">
+      <file leaf-file-name="simplestmixer.log" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/modules/liquidsoap/simplestmixer.log">
+          <provider selected="true" editor-type-id="LogFileEditorProvider">
+            <state relative-caret-position="-6273">
+              <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="simplestmixer.liq" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/modules/liquidsoap/simplestmixer.liq">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="467">
-              <caret line="146" column="54" lean-forward="false" selection-start-line="146" selection-start-column="54" selection-end-line="146" selection-end-column="54" />
+            <state relative-caret-position="204">
+              <caret line="12" column="33" lean-forward="false" selection-start-line="12" selection-start-column="33" selection-end-line="12" selection-end-column="33" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="scheduler.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/modules/scheduling/scheduler.py">
+      <file leaf-file-name="settings.liq" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/modules/liquidsoap/settings.liq">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="155">
-              <caret line="223" column="45" lean-forward="false" selection-start-line="223" selection-start-column="45" selection-end-line="223" selection-end-column="45" />
-              <folding>
-                <element signature="e#1093#1106#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="150">
+              <caret line="19" column="0" lean-forward="false" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="guru.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/guru.py">
+      <file leaf-file-name="aura.ini" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/configuration/aura.ini">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="527">
-              <caret line="58" column="130" lean-forward="false" selection-start-line="58" selection-start-column="111" selection-end-line="58" selection-end-column="130" />
-              <folding>
-                <element signature="e#20#31#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="391">
+              <caret line="32" column="20" lean-forward="false" selection-start-line="32" selection-start-column="20" selection-end-line="32" selection-end-column="20" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="aura.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/aura.py">
+      <file leaf-file-name="communicator.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="391">
-              <caret line="23" column="53" lean-forward="false" selection-start-line="23" selection-start-column="53" selection-end-line="23" selection-end-column="53" />
-              <folding>
-                <element signature="e#0#13#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="202">
+              <caret line="964" column="26" lean-forward="false" selection-start-line="964" selection-start-column="26" selection-end-line="964" selection-end-column="26" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="test.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/test.py">
+      <file leaf-file-name="playerclient.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/modules/communication/liquidsoap/playerclient.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="340">
-              <caret line="22" column="25" lean-forward="false" selection-start-line="22" selection-start-column="25" selection-end-line="22" selection-end-column="25" />
+            <state relative-caret-position="-4362">
+              <caret line="11" column="37" lean-forward="false" selection-start-line="11" selection-start-column="37" selection-end-line="11" selection-end-column="37" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="routes.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/modules/web/routes.py">
+      <file leaf-file-name="fallback.liq" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/modules/liquidsoap/fallback.liq">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="442">
-              <caret line="26" column="20" lean-forward="false" selection-start-line="26" selection-start-column="20" selection-end-line="26" selection-end-column="20" />
-              <folding>
-                <element signature="e#0#25#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="1615">
+              <caret line="95" column="0" lean-forward="false" selection-start-line="95" selection-start-column="0" selection-end-line="95" selection-end-column="0" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="calendar.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/libraries/base/calendar.py">
+      <file leaf-file-name="serverfunctions.liq" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/modules/liquidsoap/serverfunctions.liq">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="416">
-              <caret line="220" column="55" lean-forward="false" selection-start-line="220" selection-start-column="55" selection-end-line="220" selection-end-column="55" />
-              <folding>
-                <element signature="e#805#818#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="85">
+              <caret line="5" column="30" lean-forward="false" selection-start-line="5" selection-start-column="30" selection-end-line="5" selection-end-column="30" />
+              <folding />
             </state>
           </provider>
         </entry>
@@ -140,14 +151,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>schedule is</find>
-      <find>alchemyenc</find>
-      <find>asd</find>
-      <find>warning(</find>
-      <find>alchemyen</find>
-      <find>simplejson</find>
-      <find>json.</find>
-      <find>alchemyencoder</find>
       <find>import json</find>
       <find>encod</find>
       <find>printing i</find>
@@ -169,7 +172,15 @@
       <find>__fetch_schedule_entries__</find>
       <find>__fetch_schedule_entry_data__</find>
       <find>store_schedule_entry</find>
+      <find>i am the</find>
+      <find>/10</find>
       <find>load_</find>
+      <find>get_f</find>
+      <find>func</find>
+      <find>current</find>
+      <find>playlist</find>
+      <find>acti</find>
+      <find>send</find>
     </findStrings>
     <replaceStrings>
       <replace>&quot;</replace>
@@ -212,8 +223,6 @@
         <option value="$PROJECT_DIR$/modules/liquidsoap/problem.liq" />
         <option value="$PROJECT_DIR$/libraries/enum/consolecolor.py" />
         <option value="$PROJECT_DIR$/libraries/database/combadb.py" />
-        <option value="$PROJECT_DIR$/modules/liquidsoap/fallback.liq" />
-        <option value="$PROJECT_DIR$/modules/liquidsoap/simplestmixer.liq" />
         <option value="$PROJECT_DIR$/README.md" />
         <option value="$PROJECT_DIR$/modules/communication/liquidsoap/client.py" />
         <option value="$PROJECT_DIR$/libraries/enum/redischannels.py" />
@@ -221,20 +230,22 @@
         <option value="$PROJECT_DIR$/modules/communication/redis/adapter.py" />
         <option value="$PROJECT_DIR$/libraries/database/trackservice.py" />
         <option value="$PROJECT_DIR$/modules/controller/controller.py" />
-        <option value="$PROJECT_DIR$/configuration/aura.ini" />
         <option value="$PROJECT_DIR$/libraries/exceptions/exception_logger.py" />
         <option value="$PROJECT_DIR$/libraries/database/statestore.py" />
-        <option value="$PROJECT_DIR$/modules/tools/padavan.py" />
         <option value="$PROJECT_DIR$/libraries/database/database.py" />
         <option value="$PROJECT_DIR$/aura.py" />
-        <option value="$PROJECT_DIR$/guru.py" />
-        <option value="$PROJECT_DIR$/modules/web/routes.py" />
         <option value="$PROJECT_DIR$/modules/communication/liquidsoap/initthread.py" />
-        <option value="$PROJECT_DIR$/modules/scheduling/scheduler.py" />
         <option value="$PROJECT_DIR$/test.py" />
         <option value="$PROJECT_DIR$/libraries/base/calendar.py" />
-        <option value="$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py" />
+        <option value="$PROJECT_DIR$/modules/web/routes.py" />
         <option value="$PROJECT_DIR$/libraries/database/broadcasts.py" />
+        <option value="$PROJECT_DIR$/modules/scheduling/scheduler.py" />
+        <option value="$PROJECT_DIR$/guru.py" />
+        <option value="$PROJECT_DIR$/modules/tools/padavan.py" />
+        <option value="$PROJECT_DIR$/modules/liquidsoap/fallback.liq" />
+        <option value="$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py" />
+        <option value="$PROJECT_DIR$/modules/liquidsoap/simplestmixer.liq" />
+        <option value="$PROJECT_DIR$/configuration/aura.ini" />
       </list>
     </option>
   </component>
@@ -282,6 +293,11 @@
               <item name="engine" type="b2602c69:ProjectViewProjectNode" />
               <item name="engine" type="462c0819:PsiDirectoryNode" />
             </path>
+            <path>
+              <item name="engine" type="b2602c69:ProjectViewProjectNode" />
+              <item name="engine" type="462c0819:PsiDirectoryNode" />
+              <item name="configuration" type="462c0819:PsiDirectoryNode" />
+            </path>
             <path>
               <item name="engine" type="b2602c69:ProjectViewProjectNode" />
               <item name="engine" type="462c0819:PsiDirectoryNode" />
@@ -298,18 +314,43 @@
               <item name="engine" type="462c0819:PsiDirectoryNode" />
               <item name="modules" type="462c0819:PsiDirectoryNode" />
             </path>
+            <path>
+              <item name="engine" type="b2602c69:ProjectViewProjectNode" />
+              <item name="engine" type="462c0819:PsiDirectoryNode" />
+              <item name="modules" type="462c0819:PsiDirectoryNode" />
+              <item name="communication" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="engine" type="b2602c69:ProjectViewProjectNode" />
+              <item name="engine" type="462c0819:PsiDirectoryNode" />
+              <item name="modules" type="462c0819:PsiDirectoryNode" />
+              <item name="communication" type="462c0819:PsiDirectoryNode" />
+              <item name="liquidsoap" type="462c0819:PsiDirectoryNode" />
+            </path>
             <path>
               <item name="engine" type="b2602c69:ProjectViewProjectNode" />
               <item name="engine" type="462c0819:PsiDirectoryNode" />
               <item name="modules" type="462c0819:PsiDirectoryNode" />
               <item name="controller" type="462c0819:PsiDirectoryNode" />
             </path>
+            <path>
+              <item name="engine" type="b2602c69:ProjectViewProjectNode" />
+              <item name="engine" type="462c0819:PsiDirectoryNode" />
+              <item name="modules" type="462c0819:PsiDirectoryNode" />
+              <item name="liquidsoap" type="462c0819:PsiDirectoryNode" />
+            </path>
             <path>
               <item name="engine" type="b2602c69:ProjectViewProjectNode" />
               <item name="engine" type="462c0819:PsiDirectoryNode" />
               <item name="modules" type="462c0819:PsiDirectoryNode" />
               <item name="scheduling" type="462c0819:PsiDirectoryNode" />
             </path>
+            <path>
+              <item name="engine" type="b2602c69:ProjectViewProjectNode" />
+              <item name="engine" type="462c0819:PsiDirectoryNode" />
+              <item name="modules" type="462c0819:PsiDirectoryNode" />
+              <item name="tools" type="462c0819:PsiDirectoryNode" />
+            </path>
             <path>
               <item name="engine" type="b2602c69:ProjectViewProjectNode" />
               <item name="engine" type="462c0819:PsiDirectoryNode" />
@@ -464,7 +505,7 @@
       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43275487" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32936078" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.30802602" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.30802602" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.329718" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
       <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
@@ -531,58 +572,16 @@
           </properties>
         </breakpoint>
       </default-breakpoints>
-      <option name="time" value="50" />
+      <option name="time" value="51" />
     </breakpoint-manager>
     <watches-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/pulse.liq">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/playd.liq">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="3281">
-          <caret line="193" column="0" lean-forward="false" selection-start-line="193" selection-start-column="0" selection-end-line="198" selection-end-column="1" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/serverfunctions.liq">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="85">
-          <caret line="5" column="1" lean-forward="false" selection-start-line="5" selection-start-column="1" selection-end-line="5" selection-end-column="1" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/modules/communication/zmq/adapter.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-150">
-          <caret line="255" column="8" lean-forward="false" selection-start-line="255" selection-start-column="8" selection-end-line="255" selection-end-column="8" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/simpleplayer.liq">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="290">
-          <caret line="24" column="78" lean-forward="false" selection-start-line="24" selection-start-column="78" selection-end-line="24" selection-end-column="78" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/settings.liq">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="323">
-          <caret line="19" column="0" lean-forward="false" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/libraries/exceptions/auraexceptions.py" />
     <entry file="file://$PROJECT_DIR$/libraries/color/terminal.py" />
     <entry file="file://$PROJECT_DIR$/libraries/base/config.py" />
     <entry file="file://$PROJECT_DIR$/libraries/client/auraclient.py" />
-    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/test.liq">
+    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/unused.test.liq">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="0">
           <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
@@ -606,13 +605,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/fallback.liq">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2040">
-          <caret line="120" column="119" lean-forward="false" selection-start-line="120" selection-start-column="119" selection-end-line="120" selection-end-column="119" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/modules/liquidsoap/helpers/message.py">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="884">
@@ -620,20 +612,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/simplestmixer.liq">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="119">
-          <caret line="7" column="20" lean-forward="false" selection-start-line="7" selection-start-column="20" selection-end-line="7" selection-end-column="20" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/modules/communication/liquidsoap/playerclient.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="4998">
-          <caret line="294" column="40" lean-forward="false" selection-start-line="294" selection-start-column="40" selection-end-line="294" selection-end-column="40" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file:///usr/local/lib/python3.5/dist-packages/sqlalchemy/__init__.py">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="0">
@@ -698,13 +676,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/configuration/aura.ini">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="151">
-          <caret line="69" column="19" lean-forward="false" selection-start-line="69" selection-start-column="16" selection-end-line="69" selection-end-column="19" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file:///usr/lib/python3.5/json/__init__.py">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="-2652">
@@ -737,15 +708,8 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="4777">
           <caret line="286" column="0" lean-forward="false" selection-start-line="286" selection-start-column="0" selection-end-line="286" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/modules/tools/padavan.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2074">
-          <caret line="125" column="12" lean-forward="false" selection-start-line="125" selection-start-column="12" selection-end-line="125" selection-end-column="12" />
           <folding>
-            <element signature="e#0#17#0" expanded="false" />
+            <element signature="e#25#37#0" expanded="false" />
           </folding>
         </state>
       </provider>
@@ -787,27 +751,41 @@
         <state relative-caret-position="391">
           <caret line="23" column="53" lean-forward="false" selection-start-line="23" selection-start-column="53" selection-end-line="23" selection-end-column="53" />
           <folding>
-            <element signature="e#0#13#0" expanded="true" />
+            <element signature="e#0#13#0" expanded="false" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/guru.py">
+    <entry file="file:///usr/lib/python3/dist-packages/MySQLdb/connections.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="527">
-          <caret line="58" column="130" lean-forward="false" selection-start-line="58" selection-start-column="111" selection-end-line="58" selection-end-column="130" />
-          <folding>
-            <element signature="e#20#31#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="87">
+          <caret line="275" column="34" lean-forward="true" selection-start-line="275" selection-start-column="34" selection-end-line="275" selection-end-column="34" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/test.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="340">
+          <caret line="22" column="25" lean-forward="false" selection-start-line="22" selection-start-column="25" selection-end-line="22" selection-end-column="25" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/relationships.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="203">
+          <caret line="2090" column="0" lean-forward="false" selection-start-line="2090" selection-start-column="0" selection-end-line="2090" selection-end-column="0" />
+          <folding />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/modules/web/routes.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="442">
-          <caret line="26" column="20" lean-forward="false" selection-start-line="26" selection-start-column="20" selection-end-line="26" selection-end-column="20" />
+        <state relative-caret-position="85">
+          <caret line="5" column="0" lean-forward="false" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
           <folding>
-            <element signature="e#0#25#0" expanded="true" />
+            <element signature="e#0#25#0" expanded="false" />
           </folding>
         </state>
       </provider>
@@ -820,65 +798,138 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/libraries/database/broadcasts.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="272">
+          <caret line="211" column="45" lean-forward="false" selection-start-line="211" selection-start-column="45" selection-end-line="211" selection-end-column="45" />
+          <folding>
+            <element signature="e#43#75#0" expanded="false" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/modules/scheduling/scheduler.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="155">
-          <caret line="223" column="45" lean-forward="false" selection-start-line="223" selection-start-column="45" selection-end-line="223" selection-end-column="45" />
+        <state relative-caret-position="219">
+          <caret line="323" column="15" lean-forward="false" selection-start-line="323" selection-start-column="15" selection-end-line="323" selection-end-column="15" />
           <folding>
-            <element signature="e#1093#1106#0" expanded="true" />
+            <element signature="e#1093#1106#0" expanded="false" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file:///usr/lib/python3/dist-packages/MySQLdb/connections.py">
+    <entry file="file://$PROJECT_DIR$/libraries/base/calendar.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="87">
-          <caret line="275" column="34" lean-forward="true" selection-start-line="275" selection-start-column="34" selection-end-line="275" selection-end-column="34" />
+        <state relative-caret-position="416">
+          <caret line="220" column="55" lean-forward="false" selection-start-line="220" selection-start-column="55" selection-end-line="220" selection-end-column="55" />
+          <folding>
+            <element signature="e#805#818#0" expanded="false" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/guru.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="204">
+          <caret line="72" column="67" lean-forward="false" selection-start-line="72" selection-start-column="67" selection-end-line="72" selection-end-column="67" />
+          <folding>
+            <element signature="e#20#31#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/modules/tools/padavan.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="304">
+          <caret line="68" column="51" lean-forward="false" selection-start-line="68" selection-start-column="51" selection-end-line="68" selection-end-column="51" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/test.py">
+    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/simplestmixer.log">
+      <provider selected="true" editor-type-id="LogFileEditorProvider">
+        <state relative-caret-position="-6273">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/unused.library.liq">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="340">
-          <caret line="22" column="25" lean-forward="false" selection-start-line="22" selection-start-column="25" selection-end-line="22" selection-end-column="25" />
+        <state relative-caret-position="-102">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file:///usr/local/lib/python3.5/dist-packages/sqlalchemy/orm/relationships.py">
+    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/serverfunctions.liq">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="203">
-          <caret line="2090" column="0" lean-forward="false" selection-start-line="2090" selection-start-column="0" selection-end-line="2090" selection-end-column="0" />
+        <state relative-caret-position="85">
+          <caret line="5" column="30" lean-forward="false" selection-start-line="5" selection-start-column="30" selection-end-line="5" selection-end-column="30" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/libraries/base/calendar.py">
+    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/unused.playlist.liq">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="416">
-          <caret line="220" column="55" lean-forward="false" selection-start-line="220" selection-start-column="55" selection-end-line="220" selection-end-column="55" />
-          <folding>
-            <element signature="e#805#818#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="1377">
+          <caret line="162" column="23" lean-forward="false" selection-start-line="162" selection-start-column="23" selection-end-line="162" selection-end-column="23" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/fallback.liq">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1615">
+          <caret line="95" column="0" lean-forward="false" selection-start-line="95" selection-start-column="0" selection-end-line="95" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/unused.playd.liq">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="193">
+          <caret line="71" column="13" lean-forward="false" selection-start-line="71" selection-start-column="5" selection-end-line="71" selection-end-column="13" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/modules/communication/liquidsoap/playerclient.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-4362">
+          <caret line="11" column="37" lean-forward="false" selection-start-line="11" selection-start-column="37" selection-end-line="11" selection-end-column="37" />
+          <folding />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="467">
-          <caret line="146" column="54" lean-forward="false" selection-start-line="146" selection-start-column="54" selection-end-line="146" selection-end-column="54" />
+        <state relative-caret-position="202">
+          <caret line="964" column="26" lean-forward="false" selection-start-line="964" selection-start-column="26" selection-end-line="964" selection-end-column="26" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/libraries/database/broadcasts.py">
+    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/simplestmixer.liq">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-9">
-          <caret line="56" column="1" lean-forward="false" selection-start-line="56" selection-start-column="1" selection-end-line="56" selection-end-column="1" />
-          <folding>
-            <element signature="e#43#75#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="204">
+          <caret line="12" column="33" lean-forward="false" selection-start-line="12" selection-start-column="33" selection-end-line="12" selection-end-column="33" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/modules/liquidsoap/settings.liq">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="150">
+          <caret line="19" column="0" lean-forward="false" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/configuration/aura.ini">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="391">
+          <caret line="32" column="20" lean-forward="false" selection-start-line="32" selection-start-column="20" selection-end-line="32" selection-end-column="20" />
+          <folding />
         </state>
       </provider>
     </entry>
diff --git a/configuration/aura.ini b/configuration/aura.ini
index dfbf1c4832293123f78cd2758966d1f6312f451a..a0253f41e23458a9c23c26dcf9749cca2be7135e 100644
--- a/configuration/aura.ini
+++ b/configuration/aura.ini
@@ -24,13 +24,13 @@ db_host="localhost"
 # if you have no idea what to do here => set use_alsa to "n", then pulseaudio is used
 use_alsa="y"
 # alsa_buffer => int
-alsa_buffer="16000"
+#alsa_buffer="16000"
 # alsa_buffer_length => int
 alsa_buffer_length="5"
 # alsa_periods => int
 alsa_periods="0"
 # frame_duration => double
-frame_duration="0.4"
+frame_duration="0.35"
 # frame_size => int
 frame_size=""
 
diff --git a/guru.py b/guru.py
index 18cf14bba179c6bf89bc3069c284ce51292bbb89..f4b4121f6621d56d14f151b8362e386006c89699 100755
--- a/guru.py
+++ b/guru.py
@@ -69,6 +69,8 @@ class Guru:
                                 help="For which type you wanna GET a next audio file?")
             parser.add_argument("-snf", "--set-next-fallback-file-for", action="store", dest="set_fallback_for", default=False, metavar=("FALLBACKTYPE", "FILE"), nargs=2,
                                 help="For which type you wanna SET a next audio file?")
+            parser.add_argument("-np", "--now-playing", action="store", dest="now_playing", default=False, metavar="NOWPLAYINGSOURCE",
+                                help="Which source is now playing")
             parser.add_argument("-ip", "--init-player", action="store_true", dest="init_player", default=False,
                                 help="Reset liquidsoap volume and mixer activations?")
 
diff --git a/libraries/database/broadcasts.py b/libraries/database/broadcasts.py
index 4ab4d237cee34c5037c6f5021193d3f0d311a91a..cbafb39fc206db56dca246966a73e10acf3677df 100644
--- a/libraries/database/broadcasts.py
+++ b/libraries/database/broadcasts.py
@@ -5,7 +5,7 @@ import datetime, os, urllib, sys
 import time
 import decimal
 
-from sqlalchemy import orm, Boolean, Column, Date, DateTime, Float, Integer, String, Text, Time, ForeignKey, ForeignKeyConstraint
+from sqlalchemy import orm, func, Boolean, Column, Date, DateTime, Float, Integer, String, Text, Time, ForeignKey, ForeignKeyConstraint
 from sqlalchemy.orm import relationship
 from sqlalchemy.sql.expression import false
 from libraries.database.database import db
@@ -167,12 +167,6 @@ class ScheduleEntry(db.Model, AuraDatabaseModel):
 
     @staticmethod
     def select_next_manual_entry_num():
-        from sqlalchemy import func
-        # damn BAND-AID
-        #db.session.commit()
-
-        #subqry = db.session.query(func.max(ScheduleEntry.entry_num)).filter(ScheduleEntry.schedule_id = 0)
-        #qry = db.session.query(Data).filter(Data.user_id == user_id, Data.counter == subqry)
 
         max_manual_entry_num = db.session.query(func.max(ScheduleEntry.entry_num)).filter(ScheduleEntry.schedule_id == 0).first()
         print(max_manual_entry_num)
@@ -211,20 +205,23 @@ class TrackService(db.Model, AuraDatabaseModel):
     __tablename__ = 'trackservice'
 
     trackservice_id = Column(Integer, primary_key=True, autoincrement=True)
-    schedule_id = Column(Integer, ForeignKey("schedule.schedule_id"))
     playlist_id = Column(Integer, nullable=False)
     entry_num = Column(Integer, nullable=False)
 
     source = Column(String(255), nullable=False)
+    start = Column(DateTime, nullable=False, default=func.now())
 
     __table_args__ = (
         ForeignKeyConstraint(['playlist_id', 'entry_num'], ['schedule_entry.playlist_id', 'schedule_entry.entry_num']),
     )
 
-    schedule = relationship("Schedule", foreign_keys=[schedule_id], lazy="joined")
+    #schedule = relationship("Schedule", foreign_keys=[schedule_id], lazy="joined")
     # trackservice_entry = relationship("ScheduleEntry", foreign_keys=[playlist_id, entry_num], lazy="joined")
     schedule_entry = relationship("ScheduleEntry", primaryjoin="and_(TrackService.playlist_id==ScheduleEntry.playlist_id, TrackService.entry_num==ScheduleEntry.entry_num)", lazy="joined")
 
+    @staticmethod
+    def select_one(trackservice_id):
+        return db.session.query(TrackService).filter(TrackService.trackservice_id == trackservice_id).first()
 
 # ------------------------------------------------------------------------------------------ #
 # class TrackServiceSchedule(db.Model, AuraDatabaseModel):
@@ -277,4 +274,4 @@ class TrackService(db.Model, AuraDatabaseModel):
 #     def select_all():
 #         return db.session.query(TrackServiceScheduleEntry).filter().all()
 
-AuraDatabaseModel.recreate_db(True)
+#AuraDatabaseModel.recreate_db(True)
diff --git a/modules/communication/liquidsoap/communicator.py b/modules/communication/liquidsoap/communicator.py
index 5f1b0eebfd87df0567bab58facbbb8a9f3ebd199..201af47114403fe7a815e85e23dfc36286edd263 100644
--- a/modules/communication/liquidsoap/communicator.py
+++ b/modules/communication/liquidsoap/communicator.py
@@ -12,7 +12,7 @@ from modules.communication.liquidsoap.recorderclient import LiquidSoapRecorderCl
 from modules.communication.liquidsoap.initthread import LiquidSoapInitThread
 from libraries.enum.consolecolor import TerminalColors
 from libraries.exceptions.auraexceptions import LQConnectionError
-from libraries.database.broadcasts import TrackServiceSchedule, TrackServiceScheduleEntry
+from libraries.database.broadcasts import TrackService
 from libraries.exceptions.exception_logger import ExceptionLogger
 
 
@@ -89,7 +89,6 @@ class LiquidSoapCommunicator(ExceptionLogger):
         if active_source == "":
             return ""
         return self.channels.index(active_source)
-        #return active_source
 
     # ------------------------------------------------------------------------------------------ #
     def get_mixer_status(self):
@@ -125,26 +124,16 @@ class LiquidSoapCommunicator(ExceptionLogger):
             self.channel_volume(input_type, entry.volume)
             self.disable_transaction(True)
             self.insert_track_service_entry(entry)
+            self.playlist_insert()
 
     # ------------------------------------------------------------------------------------------ #
     def insert_track_service_entry(self, schedule_entry):
-        ts_schedule = TrackServiceSchedule.select_one(schedule_entry.schedule.schedule_id)
-        havetoadd = False
+        trackservice_entry = TrackService()
+        trackservice_entry.playlist_id = schedule_entry.playlist_id
+        trackservice_entry.entry_num = schedule_entry.entry_num
+        trackservice_entry.source = schedule_entry.source
 
-        if not ts_schedule:
-            if self.debug:
-                print("no TrackServiceSchedule with id " + str(schedule_entry.schedule.schedule_id) + " in database => creating a new one")
-            ts_schedule = TrackServiceSchedule()
-            ts_schedule.schedule_id = schedule_entry.schedule.schedule_id
-            havetoadd = True
-
-        ts_schedule_entry = TrackServiceScheduleEntry()
-        ts_schedule_entry.ts_schedule_id = schedule_entry.schedule.schedule_id
-        ts_schedule_entry.playlist_id = schedule_entry.playlist_id
-        ts_schedule_entry.entry_num = schedule_entry.entry_num
-
-        ts_schedule.store(havetoadd, commit=True)
-        ts_schedule_entry.store(add=True, commit=True)
+        trackservice_entry.store(add=True, commit=True)
 
     # ------------------------------------------------------------------------------------------ #
     def all_inputs_but(self, input_type):
@@ -525,7 +514,6 @@ class LiquidSoapCommunicator(ExceptionLogger):
 
         else:
             message = self.__send_lqc_command__(self.lqc, "mixer", "select", index, activate)
-            #message = self.__send_lqc_command__(self.lqc, 'mixer', 'volume', str(index), str(int(volume)))
             return message
 
 
diff --git a/modules/liquidsoap/alsa.liq b/modules/liquidsoap/alsa.liq
deleted file mode 100644
index 20c18621d07c9ecd647e8fe3ab99e757232d1f7e..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/alsa.liq
+++ /dev/null
@@ -1,6 +0,0 @@
-
-input_fs = single(id="fs", "/var/audio/fallback/output.flac")
-input_http = input.http(id="http", "http://stream.fro.at/fro128.mp3")
-linein_alsa_1 = input.alsa(id="linein", device = input_device_0, bufferize = false)
-mixer = mix(id="mixer", [input_fs, input_http, linein_alsa_1])
-output.alsa(id="lineout", device = output_device_0, bufferize = false, mixer)
diff --git a/modules/liquidsoap/dynamicsources.liq b/modules/liquidsoap/dynamicsources.liq
deleted file mode 100644
index 6ae441c432ec0e8bf5c19bef607a1846ee2e8abf..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/dynamicsources.liq
+++ /dev/null
@@ -1,150 +0,0 @@
-%include "readini.liq"
-
-inifile = '/etc/aura/aura.ini'
-ini = read_ini(inifile)
-
-set("log.file.path", "./<script>.log")
-
-set("server.telnet", true)
-set("server.telnet.bind_addr", "0.0.0.0")
-set("server.telnet.port", 1234)
-
-use_alsa           = list.assoc("use_alsa", ini) == "y"
-frame_duration     = float_of_string(list.assoc("frame_duration", ini))
-frame_size         = int_of_string(list.assoc("frame_size", ini))
-alsa_buffer        = int_of_string(list.assoc("alsa_buffer", ini))
-alsa_buffer_length = int_of_string(list.assoc("alsa_buffer_length", ini))
-alsa_periods       = int_of_string(list.assoc("alsa_periods", ini))
-
-if use_alsa then
-    if frame_duration > 0.0 then
-        print("setting frame.duration to #{frame_duration}")
-        set("frame.duration", frame_duration)
-    end
-    if frame_size > 0 then
-        print("setting frame.size to #{frame_size}")
-        set("frame.size", frame_size)
-    end
-    if alsa_buffer > 0 then
-        print("setting alsa.buffer to #{alsa_buffer}")
-        set("alsa.alsa_buffer", alsa_buffer)
-    end
-    if alsa_buffer > 0 then
-        print("setting alsa.buffer_length to #{alsa_buffer_length}")
-        set("alsa.buffer_length", alsa_buffer_length)
-    end
-    if alsa_periods > 0 then
-        print("setting alsa.periods to #{alsa_periods}")
-        set("alsa.periods", alsa_periods) # assertion error when setting periods other than 0 => alsa default
-    end
-end
-
-# First, we create a list referencing the dynamic sources:
-dyn_sources = ref []
-
-# This is our icecast output.
-# It is a partial application: the source needs to be given!
-out = output.icecast(%mp3,
-                     host="test",
-                     password="hackme",
-                     fallible=true)
-                     
-
-
-# Now we write a function to create 
-# a playlist source and output it.
-def create_playlist(uri) =
-  # The playlist source 
-  s = playlist(uri)
-
-  # The output
-  output = out(s)
-
-  # We register both source and output 
-  # in the list of sources
-  dyn_sources := 
-      list.append( [(uri,s),(uri,output)],
-                    !dyn_sources )
-  "Done!"
-end
-
-# And a function to destroy a dynamic source
-def destroy_playlist(uri) = 
-  # We need to find the source in the list,
-  # remove it and destroy it. Currently, the language
-  # lacks some nice operators for that so we do it
-  # the functional way
-
-  # This function is executed on every item in the list
-  # of dynamic sources
-  def parse_list(ret, current_element) = 
-    # ret is of the form: (matching_sources, remaining_sources)
-    # We extract those two:
-    matching_sources = fst(ret)
-    remaining_sources = snd(ret)
-
-    # current_element is of the form: ("uri", source) so 
-    # we check the first element
-    current_uri = fst(current_element)
-    if current_uri == uri then
-      # In this case, we add the source to the list of
-      # matched sources
-      (list.append( [snd(current_element)], 
-                     matching_sources),
-       remaining_sources)
-    else
-      # In this case, we put the element in the list of remaining
-      # sources
-      (matching_sources,
-       list.append([current_element], 
-                    remaining_sources))
-    end
-  end
-    
-  # Now we execute the function:
-  result = list.fold(parse_list, ([], []), !dyn_sources)
-  matching_sources = fst(result)
-  remaining_sources = snd(result)
-
-  # We store the remaining sources in dyn_sources
-  dyn_sources := remaining_sources
-
-  # If no source matched, we return an error
-  if list.length(matching_sources) == 0 then
-    "Error: no matching sources!"
-  else
-    # We stop all sources
-    list.iter(source.shutdown, matching_sources)
-    # And return
-    "Done!"
-  end
-end
-
-def backup_pool () =
-  result = get_process_lines("python ./helpers/next_song_from_pool.py")
-  log("next song: #{result}")
-  request.create(list.hd(result))
-end
-
-backup_pool = request.dynamic(backup_pool)
-
-
-# Now we register the telnet commands:
-server.register(namespace="dynamic_playlist",
-                description="Start a new dynamic playlist.",
-                usage="start <uri>",
-                "start",
-                create_playlist)
-server.register(namespace="dynamic_playlist",
-                description="Stop a dynamic playlist.",
-                usage="stop <uri>",
-                "stop",
-                destroy_playlist)
-server.register(namespace="dyn",
-                description="load next song from pool",
-                usage="next <folder>",
-                "next",
-                
-                
-                
-output.dummy(blank())
diff --git a/modules/liquidsoap/inToOut.liq b/modules/liquidsoap/inToOut.liq
deleted file mode 100644
index 5543c2799b95a263f859a0505ec2ec09a83bd745..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/inToOut.liq
+++ /dev/null
@@ -1,48 +0,0 @@
-set("frame.size", 1881)
-#set("decoding.buffer_length", 20.)
-#set("frame.channels", 2)
-#set("frame.samplerate", 44100)
-
-set("server.telnet", true)
-set("server.telnet.port", 1234)
-
-set("alsa.alsa_buffer", 2048)
-#set("alsa.periods", 8)
-#set("alsa.buffer_length", 4096)
-
-# works, but every now and then buffer overruns in alsa.in on node
-# more or less the same with or w/o clock_safe set. maybe a bit better with clock_safe=false
-input_alsa = input.alsa(bufferize=false, clock_safe=false)
-output.alsa(bufferize=false, clock_safe=false, input_alsa)
-
-#output.alsa(bufferize = false, input.alsa(bufferize = false))
-
-# works
-#url = "http://stream.fro.at/fro64.mp3"
-#i = strip_blank(input.http(id="stream", url))
-#input_http = mksafe(i)
-#output.alsa(bufferize=false, input_http)
-
-# works
-#input_fs = fallback(track_sensitive=false,
-#            [ single("/var/audio/fallback/music.flac"), playlist.safe("/var/audio/fallback/NightmaresOnWax/Smokers Delight") ] )
-#ignore(input_fs)
-#output.alsa(bufferize=false, input_fs)
-
-#output.alsa(device="hw:1,0", bufferize=false, input_alsa)
-#output.alsa(device="hw:1,0", bufferize=false, input_http)
-#output.pulseaudio(input_http)
-#output.alsa(device="hw:0,0", bufferize=false, input_alsa)
-#output.pulseaudio(input_fs)
-
-#mixer = mix(id = "mixer", [input_alsa])
-#final_stream = fallback(id="station_fallback", [mixer, playlist.safe("/var/audio/fallback/NightmaresOnWax/Smokers Delight")])
-#output.alsa(device="hw:1,0", bufferize=false, final_stream)
-
-#ignore(mixer)
-#ignore(input_fs)
-#ignore(input_http)
-#ignore(input_alsa)
-
-
-
diff --git a/modules/liquidsoap/inputToOutput.liq b/modules/liquidsoap/inputToOutput.liq
deleted file mode 100644
index fe5d30609d702859d566c409538c40bf91f44b6e..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/inputToOutput.liq
+++ /dev/null
@@ -1,42 +0,0 @@
-#set("frame.size", 3763)
-#set("decoding.buffer_length", 20.)
-#set("frame.channels", 2)
-#set("frame.samplerate", 44100)
-
-set("server.telnet", true)
-set("server.telnet.port", 1234)
-
-input_alsa = input.alsa(bufferize=false)
-#output.alsa(device="hw:0,0", bufferize=false, input_alsa)
-
-#output.alsa(bufferize = false, input.alsa(bufferize = false))
-
-url = "http://stream.fro.at/fro64.mp3"
-#url = "http://mp3stream1.apasf.apa.at:8000/listen.pls"
-input_http = strip_blank(id="http_strip", input.http(id="stream", url))
-#input_http = mksafe(i)
-ignore(input_http)
-
-
-input_fs = strip_blank(id="fs_strip", single("/var/audio/fallback/music.flac"))
-#fallback(track_sensitive=false,
-#            [ single("/var/audio/fallback/music.flac"), playlist.safe("/var/audio/fallback/NightmaresOnWax/Smokers Delight") ] )
-ignore(input_fs)
-
-#output.alsa(device="hw:0,0", bufferize=false, input_alsa)
-#output.alsa(device="hw:0,0", bufferize=false, input_http)
-#output.pulseaudio(input_http)
-#output.alsa(device="hw:0,0", bufferize=false, input_fs)
-#output.pulseaudio(input_fs)
-
-mixer = mix(id = "mixer", [input_fs, input_http, input_alsa])
-#final_stream = fallback(id="station_fallback", [mixer, playlist.safe("/var/audio/fallback/NightmaresOnWax/Smokers Delight")])
-output.alsa(bufferize=false, mixer)
-
-ignore(mixer)
-#ignore(input_fs)
-#ignore(input_http)
-#ignore(input_alsa)
-
-
-
diff --git a/modules/liquidsoap/library.liq b/modules/liquidsoap/library.liq
deleted file mode 100644
index a0bacf9410172ab9e9431fc0099cf9e0747b51ad..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/library.liq
+++ /dev/null
@@ -1,139 +0,0 @@
-%include "readini.liq"
-
-inifile = '/etc/aura/aura.ini'
-ini = read_ini(inifile)
-
-def get_task_number (taskname) =
-    tasks = [
-         ('seek_track', '10'),
-         ('load', '11'),
-         ('move', '12'),
-         ('insert', '13'),
-         ('remove', '14'),
-         ('push', '15'),
-         ('data', '16'),
-         ('skip', '17'),
-         ('pause', '19'),
-         ('play', '18'),
-         ('flush', '16'),
-         ]
-    if list.mem_assoc(taskname, tasks) then
-        tasks[taskname]
-    else
-        log("Warning: task #{taskname} does not exist")
-        "00"
-    end
-end
-
-def get_namespace_number(namespace) =
-    channelnames = ref string.split(separator=',', list.assoc("channels", ini))
-
-    namespaces = [
-         ('player', '10'),
-         ('common', '11'),
-         ('playlist', '11'),
-         ('request', '12'),
-         ('mixer', '13'),
-         ]
-    def addNamespace (ret, el)
-        number = string_of((list.length(ret) + 10))
-        list.append(ret,[("ch#{el}", "#{number}")])
-    end
-    namespaces = list.fold(addNamespace, namespaces, !channelnames)
-
-    if list.mem_assoc(namespace, namespaces) then
-        namespaces[namespace]
-    else
-        log("Warning: namespace #{namespace} does not exist")
-        log(json_of(namespaces))
-        "00"
-    end
-end
-
-def create_protocol () =
-    #pwd = list.hd(get_process_lines('pwd'))
-    #def getdirname() =
-
-    #    if dirname(argv(0)) == "." then
-    #        ""
-    #    else
-    #       '/'^dirname(argv(0))
-    #    end
-    #end
-    #cur = getdirname()
-    add_protocol(temporary=true, "silence", fun(arg,delay)-> begin system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/silence.sh 0.01 > /var/tmp/quiet.wav; qwavheaderdump -q -F /var/tmp/quiet.wav > /dev/null' ) ['/var/tmp/quiet.wav'] end)
-end
-
-#create_protocol()
-
-def message (~value="", namespace, success, message, code, error, ~level="error", ~type='internal') =
-
-    level = if success then 'success' else level end
-    namespace = if namespace == 'common' then
-                   'playlist'
-                else
-                    namespace
-                end
-    namespace_number = get_namespace_number(namespace)
-    code = "10#{namespace_number}#{code}"
-    result = [('section', '#{namespace}'),
-              ('success', '#{success}'),
-              ('message', '#{message}'),
-              ('value', '#{value}'),
-              ('code', '#{code}#{error}'),
-              ('level', '#{level}'),
-              ('type', '#{type}'),
-              ]
-    json_of(compact=true,result)
-
-end
-
-##Sorgt für unterbrechungsfreien Wechsel zwischen den Tracks
-def crossfade(a,b)
-    add(normalize=false,
-        [ fade.initial(duration=2., b),
-         sequence(merge=true,
-                  [ blank(duration=0.), fallback([]) ]),
-         fade.final(duration=2.,a) ])
-end
-
-def foldplaylist(l, el)=
-        # fold metadata to list
-        def tolist (ret, el) =
-            tmp = string.split(separator='=',el)
-            if list.length(tmp) > 1 then # found the separator in current el
-                # get the key -> value pair
-                key = list.nth(tmp,0)
-                value = list.nth(tmp,1)
-                # append to list
-                list.append(ret,[(key,value)])
-            else
-                # nothing to do
-                ret
-            end
-        end
-        # extract metadata part from annotation
-        extracted = string.extract(pattern="annotate:[,](.*):/",string.replace(pattern='"',(fun (s) -> ""),el))
-        # split extracted string by comma separator and create a list
-        list.append(l,[list.fold(tolist, [], string.split(separator=',',extracted["1"]))])
-end
-# The server seeking function
-def seek_track(source, t) =
-
-  t = float_of_string(default=0.,t)
-  ret = source.seek(source,t)
-  log("Seeked #{ret} seconds.")
-  success = ret > 0.
-  error = if success then '00' else '01' end
-  errors = [('00', 'Seeked #{ret} seconds on #{source.id(source)}'), ('01', 'Seek failed')]
-  message(value=string_of(ret), source.id(source), success, errors[error], get_task_number ('seek_track'), error, level="warning", type='unknown')
-  #"Seeked #{ret} seconds."
-end
-
-def reload_recorded(~skip, ~uri) =
-  print('param skip: #{skip} +++ param uri: #{uri}')
-  print("reload_recorded not implemented")
-  "nana"
-end
-
-
diff --git a/modules/liquidsoap/playd.liq b/modules/liquidsoap/playd.liq
deleted file mode 100644
index 42466444241f59c5e625756943af8480b998688c..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/playd.liq
+++ /dev/null
@@ -1,310 +0,0 @@
-#!/usr/bin/liquidsoap
-
-#set("log.stdout", true)
-
-inst = if argv(1) != "" then string_of(argv(1)) else 'playd' end
-instance = ref inst
-
-%include "readini.liq"
-
-inifile = '/etc/aura/aura.ini'
-ini = read_ini(inifile)
-
-# send alive 
-ignore(system('#{list.assoc("install_dir", ini)}/modules/liquidsoap/helpers/message.py -c #{!instance} -t sayAlive'))
-# send alive frequently
-exec_at(freq=20., pred={true}, {ignore(system('#{list.assoc("install_dir", ini)}/modules/liquidsoap/helpers/message.py -c #{!instance} -t sayAlive'))})
-
-# set current playlist
-ignore(system('#{list.assoc("install_dir", ini)}/modules/liquidsoap/helpers/message.py -c #{!instance} --task=setState -n playlistcurrent -v ""'))
-
-# load data from ini file
-#daemongroup = list.assoc("daemongroup", ini)
-#daemonuser = list.assoc("daemonuser", ini)
-
-
-socketdir = list.assoc("socketdir", ini)
-
-# ALSA settings
-use_alsa = list.assoc("use_alsa", ini)
-alsa_buffer = int_of_string(list.assoc("alsa_buffer", ini))
-alsa_periods = int_of_string(list.assoc("alsa_periods", ini))
-
-# set player i/o devices
-player_input = list.assoc("input_device", ini)
-#player_second_input = list.assoc("player_second")
-player_output = list.assoc("output_device", ini)
-
-# fallback settings
-fallback_audio_folder = list.assoc("fallback_audio_folder", ini)
-fallback_max_blank = float_of_string(list.assoc("fallback_max_blank", ini))
-fallback_min_noise = float_of_string(list.assoc("fallback_min_noise", ini))
-fallback_threshold = float_of_string(list.assoc("fallback_threshold", ini))
-
-# channel names from config
-channelnames = ref string.split(separator=',', list.assoc("channels", ini))
-
-# alsa settings
-# buffer - decrease latency: eg. alsa_buffer="2024"
-set("alsa.alsa_buffer", alsa_buffer)
-set("alsa.periods", alsa_periods)
-
-# enable socketserver
-set("server.socket", true)
-set("server.socket.path", socketdir^"/<script>.sock")
-set("server.telnet", true)
-set("server.telnet.port", 1234)
-
-# enable daemon
-#set("init.daemon", true)
-#set("init.daemon.change_user.group", daemongroup)
-#set("init.daemon.change_user.user", daemonuser)
-#set("init.daemon.pidfile.path", socketdir^"/<script>.pid")
-#set("init.daemon.pidfile.perms", 0o666)
-
-# set logging
-set("log.file",true)
-set("log.file.path", list.assoc("logdir", ini)^"/<script>.log")
-set("log.file.perms",0o640)
-set("log.level", 10)
-
-# allowed mime types
-set("playlists.mime_types.xml",["text/xml","application/xml","application/xspf+xml"])
-
-# load functions
-# dir = list.assoc("install_dir", ini)
-
-%include "library.liq"
-%include "playlist.liq"
-
-# Der input wie oben definiert
-def get_input()
-    def get_input()
-        if use_alsa == "y" then
-            if player_input == "soundcard" then
-                print("autodetect device")
-                input.alsa(id="sound_input", fallible=true, clock_safe=false)
-            else
-                print("manual set device: "^player_input)
-                input.alsa(id="sound_input", fallible=true, clock_safe=false, device=player_input)
-            end
-        else
-            input.pulseaudio(id="sound_input")
-        end
-    end
-    def get_fallback()
-        if fallback_audio_folder != "" then
-            print("fallbackfolder chosen: "^fallback_audio_folder)
-            playlist.safe("/var/audio/fallback/music.flac")
-            #playlist.safe(fallback_audio_folder)
-        else
-            blank(duration=20.0)
-        end
-    end
-
-    if player_input == "" then
-        blank(duration=0.1) # wait...
-    else
-        # start silence detector on input alsa and set a fallback
-        fallback(track_sensitive=false,
-                 [ strip_blank(max_blank=fallback_max_blank, min_noise=fallback_min_noise, threshold=fallback_threshold, get_input()),
-                   get_fallback() ]
-        )
-    end
-end
-
-playlistrunning = ref false
-
-playlist_recorded = playlist.xml(id='playlist', on_done=fun() -> begin ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n playlistcurrent -v ""')) ignore(server.execute('mixer.select 0 false')) end, 'none')
-# Die Source aus der Playlist
-recorded = snd(playlist_recorded)
-
-# Skippen erlauben
-add_skip_command(recorded)
-
-# Funktion zum laden einer neuen Playlist
-playlist_funcs = fst(playlist_recorded)
-
-# Flush functions
-flush_recorded = snd(fst(playlist_funcs))
-
-# Reload function
-reload_recorded = fst(fst(playlist_funcs))
-
-#up funtction
-move_recorded = fst(fst(snd(playlist_funcs)))
-
-#insert funtction
-insert_recorded = fst(snd(fst(snd(playlist_funcs))))
-
-# remove function
-remove_recorded = snd(snd(fst(snd(playlist_funcs))))
-
-#push function
-push_recorded = snd(snd(snd(playlist_funcs)))
-
-#show playlist function
-data_recorded = fst(snd(snd(playlist_funcs)))
-
-# create playlist source with smart crossfade
-playlist = fallback(id="common", track_sensitive=false, [                                    
-    switch(transitions = 
-        [crossfade,crossfade], 
-        [
-            ( {!playlistrunning == true}, recorded ), # play the playlist
-            ( {!playlistrunning == false}, get_input() )
-        ]
-    ),
-        if fallback_audio_folder != "" then 
-            playlist.safe(fallback_audio_folder)
-        else 
-            blank(duration=20.0)
-        end  
-])
-
-# method to dynamicaly create a channel
-def addChannel (ret, el, ~base="ch")
-    equeue = request.equeue(id = base^el) # create the equeue request
-    # add a seek function to the channel
-    server.register(namespace="ch"^el,
-                description="Seek to a relative position",
-                usage="seek <duration>",
-                "seek",fun (x) ->  begin seek_track(equeue, x) end)
-    # append and return the list
-    list.append(ret,[equeue])
-end
-
-channels = addChannel([], '1', base='auto')
-channels = addChannel(channels, '2', base='auto')
-channels = list.fold(addChannel, channels, !channelnames)
-
-mixer = mix(id = "mixer", list.append([playlist], channels))
-#ignore(s) # testing
-
-
-# User may load a XML-Playlist
-#server.register(namespace='playlist',
-#    description="Load Playlist",
-#    usage="load <uri>",
-#    "load",fun (p) ->  begin
-#        reload_recorded(skip=0, uri=p)
-#    end
-#)
-
-# Register the seek function
-server.register(namespace='playlist',
-    description="Seek to a relative position",
-    usage="seek <duration>",
-    "seek",fun (x) ->  begin seek_track(recorded, x) end
-)
-
-# The play function
-server.register(namespace='playlist',
-    description="Play recorded files",
-    usage="play",
-    "play",fun (x) -> if !playlistrunning == true then                                    
-        message('playlist', false, 'Playlist already playing', get_task_number ('play'), '01', level="info", type="user")
-    else 
-        ignore(server.execute('mixer.select 0 true')) 
-        playlistrunning := true 
-        message('playlist', true, 'Start playing' , get_task_number ('play'), '00')
-    end
-)
-
-# Flush current  playlist
-server.register(namespace='playlist',
-    description="Flush recorded playlist",
-    usage="flush",
-    "flush",fun (s) ->  begin flush_recorded() end)
-
-# The remove function
-server.register(namespace='playlist',
-    description="Remove item from playlist",
-    usage="remove <pos>",
-    "remove",fun (p) ->  begin remove_recorded(int_of_string(p)) end)
-
-# Let the user move up or down a track
-server.register(namespace='playlist',
-    description="Move an item up or down",
-    usage="move <from> <to>",
-    "move",fun (p) ->  begin  
-        params=string.split(separator=" ",p) 
-        src=if list.length(params)>0 then (int_of_string(list.nth(params,0))+0) else 0 end
-        target=if list.length(params)>1 then (int_of_string(list.nth(params,1))+0) else 0 end
-        move_recorded(src, target) 
-    end
-)
-
-# Insert an entry
-server.register(namespace='playlist',
-    description="Add an entry",
-    usage="insert <pos> <uri> [<title> <time>]",
-    "insert",fun (p) ->  begin  
-        params=string.split(separator=" ",p) 
-        pos=if list.length(params)>0 then list.nth(params,0) else '' end
-        uri=if list.length(params)>1 then list.nth(params,1) else '' end                                    
-        title=if list.length(params)>2 then list.nth(params,2) else '' end
-        time=if list.length(params)>3 then list.nth(params,3) else '' end
-        insert_recorded(pos=pos, title=title,time=time,uri) 
-    end
-)
-
-# Insert a track on top of playlist
-server.register(namespace='playlist',
-    description="Push an item to top and play immediately",
-    usage="push <pos>",
-    "push",fun (p) ->  begin
-        params=string.split(separator=" ",p) 
-        pos=if list.length(params)>0 then int_of_string(list.nth(params,0)) else 0 end 
-        push_recorded(pos) 
-    end
-)
-
-# Show metadata
-server.register(namespace='playlist',
-    description="Show remaining playlist data in json format",
-    usage="data",
-    "data",fun (s) ->  begin 
-        playlist = data_recorded() 
-        json_of(compact=true, playlist) 
-    end
-)
-
-# Pause/stop playlist
-server.register(namespace='playlist',
-    description="Pause playing recorded files",
-    usage="pause",
-    "pause", fun (x) -> if !playlistrunning == false then 
-        message('playlist', false, 'Playlist already stopped', get_task_number ('pause'), '01', level="info", type="user")
-    else 
-        playlistrunning := false 
-        ignore(server.execute('playlist.skip'))
-        ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n playlistcurrent -v ""'))
-        message('playlist', true, 'Playlist stopped', get_task_number ('pause'), '00') 
-    end
-)
-
-# get remaining time
-server.register(namespace='playlist',
-    description="Remaining time",
-    usage = "remaining",
-    "remaining", fun(x) -> string_of(source.remaining(recorded)) 
-)
-
-#streamm = single("/var/audio/fallback/music.flac")
-#ignore(streamm) # testing
-
-# Alsa output
-if use_alsa == "y" then
-    if player_output == 'soundcard'  then
-        output.alsa(id="player", fallible=true, mixer)
-    else
-        output.alsa(id="player", fallible=true, device=player_output, mixer)
-    end
-else
-    output.pulseaudio(id="player", mixer)
-end
-
-
-# %include "stream.liq"
-     
diff --git a/modules/liquidsoap/playlist.liq b/modules/liquidsoap/playlist.liq
deleted file mode 100644
index dcc724f39e05886163d3f505a43036a85f7dd3bf..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/playlist.liq
+++ /dev/null
@@ -1,202 +0,0 @@
-
-# Liest Playlist im XML-Format (XSPF)
-%include "readini.liq"
-%include "library.liq"
-
-inst = if argv(1) != "" then string_of(argv(1)) else 'playd' end
-instance = ref inst
-
-error_message = ref ""
-
-def playlist.xml(~id="",~skip=0,~on_done={()},uri)
-  # A reference to the playlist
-  
-  playlist = ref []  
-  
-  # A reference to the uri
-  playlist_uri = ref uri
-  # A reference to know if the source
-  # has been stopped
-  has_stopped = ref false
-  # The next function - see request.dynamic
-  def next () =
-    file =
-      if list.length(!playlist) > 0 then               
-        ret = list.hd(!playlist) # get first entry
-        playlist := list.tl(!playlist) # remove first entry from playlist
-        ret
-      else
-        # Playlist finished?
-        if not !has_stopped then
-          on_done () # call on_done method
-        end
-        has_stopped := true
-        ""
-      end
-    if file == '' then
-       request.create("silence:waiting") #
-    else              
-       track = file
-       extracted = string.extract(pattern="annotate:.*:(/.*)",string.replace(pattern='"',(fun (s) -> ""), track))
-       wavfile = extracted["1"]
-       
-       ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n playlistcurrent -v "#{wavfile}"'))
-       request.create(track)
-    end    
-  end
-  # Instanciate the source
-  source = request.dynamic(id=id,next)
-  
-  # flush function
-  def flush () =
-    log(label=id,"Flush "^string_of(list.length(!playlist))^" Items")     
-    playlist := []  # playlist is empty now
-    ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n playlistcurrent -v ""'))
-    message(value=json_of(!playlist), 'playlist', true, "Playlist flushed", get_task_number ('flush'), "00", type='internal')
-  end
-  
-  # Get its id.
-  id = source.id(source)
-  # The load function
-  def load_playlist (~skip=1) =
-
-    playlist_tmp = request.create.raw(!playlist_uri) # temporary try to create the playlist
-    
-    result =
-        if file.exists(!playlist_uri) and request.resolve(playlist_tmp) then # playlist should exist and be resolvable
-            playlist_tmp = request.filename(playlist_tmp) # create a temporary request
-            entries = playlist.parse(playlist_tmp) # parse the playlist request
-            
-            # create a annotation from playlist track
-            def annotate_track(el) =
-              meta = fst(el)
-              # remove protocol from filepath
-              filepath = string.replace(pattern='"',(fun (s) -> ""),string.replace(pattern='file://',(fun (s) -> ""),string.escape(snd(el))))
-              # fold metadata
-              s = list.fold(fun (cur, el) -> begin "#{cur},#{fst(el)}=#{string.escape(snd(el))}" end, "", meta)
-              # return annotation
-              "annotate:#{s}:#{filepath}"
-            end
-            # map entries
-            error_message := if list.length(entries) > 0 then "OK" else "empty" end
-            list.map(annotate_track,entries)
-        else
-            error_message := if file.exists(!playlist_uri) then "!resolve" else "!exist" end
-            log(label=id,"Couldn't read playlist: request resolution failed.")
-            # return an empty list
-            []
-        end
-    request.destroy(playlist_tmp)  # destroy the temporary request      
-    playlist := result
-  end
-
-  # Move function 
-  def move (fromPos, toPos) =
-    countx = ref -1 # counter
-    fromx = ref (fromPos - 1) # position of item       
-    tox = ref (toPos - 1) #  position to move
-    msg = ref ""
-    msg := message('playlist', true, "Item #{fromPos} moved to #{toPos} in Playlist", get_task_number ('move'), "00", type='internal')
-    # check if we can move
-    if (toPos) > list.length(!playlist) 
-        or (fromPos) > list.length(!playlist)
-        or toPos < 1 
-        or fromPos < 1 then         
-            msg := message('playlist', false, "Moving item #{fromPos} to position  #{toPos} is impossible.", get_task_number ('move'), "01", type='user', level="warning")
-    elsif toPos != fromPos then
-        # get the item to move
-        itemToMove = ref list.nth(!playlist, !fromx)
-    
-        # returns the resorted list
-        def resort (ret, el) =
-            countx := !countx + 1     
-            if !countx == !fromx then # das ist das Item, das verschoben wird -  es wird uebersprungen 
-                ret
-            elsif !countx == !tox then # Wir haben die Position erreicht, an der das zu verschiebende Item platziert wird             
-                if !fromx < !tox then # aber entry wurde bereits uebersprungen 
-                    list.append(ret,[el, !itemToMove]) # also muss hinter dem aktuellen Element eingefuegt werden                    
-                else  
-                    list.append(ret,[!itemToMove, el]) # ...andernfalls davor
-                end
-            
-            else
-                list.append(ret,[el]) #Liste um den aktuellen Eintrag erweitern
-            end            
-        end
-        playlist := list.fold(resort, [], !playlist)            
-    end    
-    !msg
-  end
-  
-  # method to delete an item from the list  
-  def remove (index) =
-    countx = ref 0
-    delx = ref (index - 1)        
-
-    def delete (ret, el) =
-        countx := !countx + 1  
-        if !countx == (!delx +1) then 
-            ret # the position to be removed
-        else
-            list.append(ret,[el]) # append evereything else
-        end              
-    end
-    
-    playlist := list.fold(delete, [], !playlist)     
-    message(value=json_of(!playlist), 'playlist', true, "Item #{index} removed from Playlist", get_task_number ('remove'), "00", type='internal')
-  end
-  
-  # method to insert an item 
-  def insert (~title='Unknown', ~time='00:00', ~pos='', uri) =
-    el = 'annotate:title="#{title}",time="#{time}",location="#{uri}":#{uri}'
-    playlist := list.append(!playlist,[el]) #Item erst mal an die Playlist anhaengen
-    if int_of_string(pos) > 0 then # Eine Position ist angegeben
-        result = move(list.length(!playlist), int_of_string(pos)) # Item dorthin verschieben
-        result_list = of_json(default=[('success','false')], result) # Die Ausgabe von "move" als assoziatives Array
-        if list.assoc('success', result_list) != "true" then # War move nicht erfolgreich?
-            result # ... dann geben wir die Ausgabe von move zurueck
-        else # ... andernfalls Erfolgsmeldung
-            message(value=json_of(!playlist), 'playlist', true, "#{title} item  inserted into #{pos} in Playlist", get_task_number ('insert'), "00", type='internal')               
-        end
-    elsif int_of_string(uri) > 0 then # uri ist ein int? Da hat der User was falsch gemacht...
-        message('playlist', true, "Syntax error: playlist.insert <pos> <uri> [<title> <time>]", get_task_number ('insert'), "01", type='user', level="info")
-    else # da auch, da ist pos 0 oder negativ    
-        message('playlist', true, "Cannot insert #{title} at position #{pos}. Put it on the end.", get_task_number ('insert'), "02", type='user', level="info")
-    end
-  end
-  
-  # returns the remaining list
-  def getplaylist () =
-    
-    list.fold(foldplaylist, [], !playlist)
-  end
-  
-  def push (index) =      
-      "Not implemented yet"
-  end  
-  
-  # The reload function
-  def reload(~blank=false, ~skip=0, ~uri="") =
-    if uri != "" then
-      playlist_uri := uri
-    end
-    log(label=id,"Reloading playlist with URI #{!playlist_uri}")
-    has_stopped := false
-    load_playlist(skip=skip)
-    #if !error_message == 'OK' then
-    #    message('playlist', true, 'Playlist #{!playlist_uri} loaded', get_task_number ('load'), '00', level="success")
-    #elsif !error_message == '!exist' then
-    #    message('playlist', false, "Playlist #{!playlist_uri} does not exist", get_task_number ('load'), '01', level="warning", type="external")
-    #elsif !error_message == 'empty' then
-    #    message('playlist', false, "Playlist #{!playlist_uri} is empty or wrong format", get_task_number ('load'), '02', level="warning", type="external")
-    #else
-    #    message('playlist', false, "Playlist #{!playlist_uri} doesn't resolve.", get_task_number ('load'), '03', level="warning", type="external")
-    #end
-  end
-  log(label=id,"Loading playlist with URI #{!playlist_uri}")
-  # Load the playlist
-  load_playlist(skip=skip)
-  # Return
-  (((reload,flush),((move,(insert,remove)),(getplaylist,push))),source)
-end
-
diff --git a/modules/liquidsoap/pulse.liq b/modules/liquidsoap/pulse.liq
deleted file mode 100644
index f1a018955e0c107f094a84eeb7f8348b62a510fe..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/pulse.liq
+++ /dev/null
@@ -1,6 +0,0 @@
-
-input_fs = single(id="fs", "/var/audio/fallback/output.flac")
-input_http = input.http(id="http", "http://stream.fro.at/fro128.mp3")
-linein_pulse_1 = input.pulseaudio(id="linein", device = input_device_0)
-mixer = mix(id="mixer", [input_fs, input_http, linein_pulse_1])
-out := output.pulseaudio(id="lineout", mixer)
diff --git a/modules/liquidsoap/record.liq b/modules/liquidsoap/record.liq
deleted file mode 100644
index b2952201fb920e11f2f916dcbfd7283464a69356..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/record.liq
+++ /dev/null
@@ -1,159 +0,0 @@
-inst = if argv(1) != "" then string_of(argv(1)) else 'record' end
-instance = ref inst
-
-%include "readini.liq"
-
-ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} -t sayAlive'))
-exec_at(freq=20., pred={true}, {ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} -t sayAlive'))})
-
-audiobase= if !instance == 'record' then list.assoc("audiobase", ini) else list.assoc("altaudiobase", ini)  end
-filenamepattern = ref audiobase^"/%Y-%m-%d/%Y-%m-%d-%H-%M.wav"
-daemongroup = list.assoc("daemongroup", ini)
-daemonuser = list.assoc("daemonuser", ini)
-socketdir = list.assoc("socketdir", ini)
-recinput = if !instance == 'record' then list.assoc("recinput", ini) else list.assoc("altrecinput", ini)  end
-recorder_device = if !instance == 'record' then list.assoc("recorder_device", ini) else list.assoc("altrecorder_device", ini) end
-set("init.daemon",true)
-set("init.daemon.change_user.group",daemongroup)
-set("init.daemon.change_user.user",daemonuser)
-set("server.socket",true)
-set("server.socket.path",socketdir^"/"^!instance^".sock")
-set("init.daemon.pidfile.path",socketdir^"/"^!instance^".pid")
-set("init.daemon",true)
-set("log.file",true)
-set("log.file.path",list.assoc("logdir", ini)^"/"^!instance^".log")
-set("log.file.perms",0o660)
-set("log.level",4)
-
-# Der aktuelle Dateiname für die Aufnahme
-recordingfile = ref ""
-#wir definieren eine Referenz für die Stop-Funktion, die aber bisher noch nichts tun kann
-stop_f = ref (fun () -> ())
-#bewahre uns davor, dass zweimal gleichzeitig die gleiche Date aufgenommen wird
-block_dump = ref false
-
-# Stop dump - wir definieren die Funktion, die stop_f ausführt
-def stop_dump() =
-  f = !stop_f
-  f ()
-end
-
-#Der input wie oben definiert
-def get_input() 
-    if recinput == 'soundcard' then
-        ## input ist Alsa  
-        if recorder_device != ''  then
-            input.alsa(device=recorder_device)
-        else
-            input.alsa()
-        end
-            
-    elsif recinput == 'nosound' then
-        mksafe(empty())
-    else
-        ## input ein via config definierter Stream
-        mksafe(input.http(recinput))        
-    end
-end
-
-#Wav header fixen und ggf. die Aufzeichnung beenden
-def on_close(filename) 
-    # es darf wieder aufgenommen werden
-    block_dump := false 
-    # Korrekten WAV-Header schreiben
-    system("qwavheaderdump -F #{filename}")
-    # event dumpend feuern
-    ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n dumpend -v #{filename}'))
-    log('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n dumpend -v #{filename}')
-    # Naechsten Dateinamen vormerken
-    recordingfile := list.hd(get_process_lines("date +#{!filenamepattern}"))
-    ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n dumpfile -v #{!recordingfile}'))
-end
-
-#Funktion gibt Auskunft welches File aktuell ist und wieviel Prozent bereits aufgenommen werden
-def currecording()
-    curfile = !recordingfile
-    if curfile != "" then           
-        procent_done = list.hd(get_process_lines("echo $(($(stat -c%s "^curfile^")/3174777))")) 
-        "#{curfile},#{procent_done}"
-    else 
-        ""
-    end        
-end
-
-#Funktion zum Start der Aufzeichnung
-def start_dump() =
-    log('start dump') 
-    # don't record twice
-    if !block_dump == false then        
-        block_dump := true
-        # Der Input - Alsa oder Stream
-        input=get_input()
-        record = output.file(
-               id="recorder",   
-               # Wav Stereo erzeugen         
-               %wav(stereo=true),
-               perm = 0o664,
-               # die aktuell aufnehmende Datei in 'recordingfile' festhalten
-               on_start={ begin                             
-                    recordingfile := list.hd(get_process_lines("date +#{!filenamepattern}"))
-                    log('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n dumpfile -v #{!recordingfile}')
-                    ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n dumpfile -v #{!recordingfile}'))
-                    end},
-               # Beim Stoppen den Status zurücksetzen
-               on_stop={ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n dumpfile -v ""'))},
-               # Dateipfad
-               !filenamepattern,
-               # Funktion die beim Schließen der Datei aufgerufen wird
-               on_close=on_close,
-               # Alle 30 Minuten eine neue Datei
-               reopen_when={ if !instance == 'record' then int_of_float(gettimeofday()/60.) mod 30 == 0  else false end },
-               # Der Input
-               input
-        )
-           # Die Stopfunkton zeigt nun auf die Shutdown-Funktion der aktuellen Source
-        stop_f := fun () -> begin 
-                                log('stop recording') 
-                                # Aufnahme sauber beenden
-                                ignore(server.execute('recorder.stop'))
-                                # Source zerstören 
-                                source.shutdown(record) 
-                                # Variable zurücksetzen
-                                recordingfile := ""  
-                            end                                          
-     end    
-end    
-
-
-# Der Server wird durch 3 Funktionen bereichert
-# Der User darf die Aufzeichnung manuell starten
-server.register(namespace="record",
-                description="Start recording.",
-                usage="start",
-                "start",
-                fun (s) ->  begin start_dump() "OK" end)
-
-# Der User darf die Aufzeichnung manuell stoppen
-server.register(namespace="record",
-                description="Stop recording.",
-                usage="stop",
-                "stop",
-                fun (s) -> begin stop_dump() "OK" end)
-
-if !instance != 'record' then
-    # Der User darf einen Dateinamen für die Aufnahme definieren
-    server.register(namespace="record",
-                    description="Define filename for output.",
-                    usage="setfilename",
-                    "setfilename",
-                    fun (s) -> begin filenamepattern := audiobase^"/"^string_of(s)  "OK" end)
-end
-
-# Der USer kann sich über den Fortschritt der Aufnahme informieren
-server.register(namespace="record",
-                description="Show current file.",
-                usage="curfile",
-                "curfile",
-                fun (s) -> currecording() )
-
-output.dummy(blank(id="serve"))
diff --git a/modules/liquidsoap/simpleplayer.liq b/modules/liquidsoap/simpleplayer.liq
deleted file mode 100644
index c5dc9f1dec7a1f9086836b2033fca6d397b8f1ab..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/simpleplayer.liq
+++ /dev/null
@@ -1,30 +0,0 @@
-%include "/home/gg/PycharmProjects/aura/modules/liquidsoap/readini.liq"
-
-ini = read_ini("/etc/aura/aura.ini")
-
-set("log.file",true)
-set("log.file.path",list.assoc("logdir", ini)^"/<script>.log")
-#set("log.file.path", "<script>.log")
-set("log.file.perms",0o660)
-set("log.level",3)
-
-#fallback_audio_folder = list.assoc("fallback_audio_folder", ini)
-#fallback_audio_folder = "/var/audio/fallback"
-
-# track_sensitive => fallback_folder track sensitivity
-# max_blank => maximum time of blank from source
-# min_noise => minimum duration of noise on source to switch back over
-# threshold => power in dB under which the stream is considered silent
-
-#stream = fallback(track_sensitive=false,
-#  [ strip_blank(id="", max_blank=10., min_noise=10., threshold=0., once(input.alsa(id="sound_input", fallible=true, clock_safe=false))),
-#    playlist.safe(fallback_audio_folder) ])
-
-stream = fallback(track_sensitive=false,
-    [ strip_blank(id="defaultstripper", max_blank=10., min_noise=10., threshold=0., single("/var/audio/fallback/music.flac")),
-      playlist.safe("/var/audio/fallback/NightmaresOnWax/Smokers Delight") ] )
-
-#stream = single("/var/audio/fallback/music.flac")
-output.alsa(id="player", device="hw:0,0", stream)
-
-#output.alsa(fallible=true, input.alsa(id="sound_input", fallible=true, clock_safe=false))
diff --git a/modules/liquidsoap/stream.liq b/modules/liquidsoap/stream.liq
deleted file mode 100644
index 041ee83d99391ee618972b1eca79574497cb7969..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/stream.liq
+++ /dev/null
@@ -1,103 +0,0 @@
-#Create stream?
-stream = list.assoc("stream", ini)
-stream_type = list.assoc("stream_type", ini)
-stream_bitrate = int_of_string(list.assoc("stream_bitrate", ini))
-stream_port = int_of_string(list.assoc("stream_port", ini))
-stream_mountpoint = list.assoc("stream_mountpoint", ini)
-stream_user = list.assoc("stream_user", ini)
-stream_password = list.assoc("stream_password", ini)
-stream_host = list.assoc("stream_host", ini)
-stream_url = list.assoc("stream_url", ini)
-stream_name = list.assoc("stream_name", ini)
-stream_genre = list.assoc("stream_genre", ini)
-stream_description = list.assoc("stream_description", ini)
-
-
-if stream != "" then
-     if stream_type == "icecast" then
-
-          if stream_bitrate == 24 then
-               ignore(output.icecast(%mp3(bitrate = 24, samplerate = 22050), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 32 then
-               ignore(output.icecast(%mp3(bitrate = 32, samplerate = 22050), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 48 then
-               ignore(output.icecast(%mp3(bitrate = 48, samplerate = 22050), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 64 then
-               ignore(output.icecast(%mp3(bitrate = 64, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 80 then
-               ignore(output.icecast(%mp3(bitrate = 80, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 96 then
-               ignore(output.icecast(%mp3(bitrate = 96, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 112 then
-               ignore(output.icecast(%mp3(bitrate = 112, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 128 then
-               ignore(output.icecast(%mp3(bitrate = 128, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 160 then
-               ignore(output.icecast(%mp3(bitrate = 160, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 192 then
-               ignore(output.icecast(%mp3(bitrate = 192, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 224 then
-               ignore(output.icecast(%mp3(bitrate = 224, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 256 then
-               ignore(output.icecast(%mp3(bitrate = 256, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 320 then
-               ignore(output.icecast(%mp3(bitrate = 320, samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, s))
-
-          end
-
-     elsif stream_type == "harbor" then
-
-          if stream_bitrate == 24 then
-               ignore(output.harbor(%mp3(bitrate = 24, samplerate = 22050), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 32 then
-               ignore(output.harbor(%mp3(bitrate = 32, samplerate = 22050), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 48 then
-               ignore(output.harbor(%mp3(bitrate = 48, samplerate = 22050), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 64 then
-               ignore(output.harbor(%mp3(bitrate = 64, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 80 then
-               ignore(output.harbor(%mp3(bitrate = 80, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 96 then
-               ignore(output.harbor(%mp3(bitrate = 96, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 112 then
-               ignore(output.harbor(%mp3(bitrate = 112, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 128 then
-               ignore(output.harbor(%mp3(bitrate = 128, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 160 then
-               ignore(output.harbor(%mp3(bitrate = 160, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 192 then
-               ignore(output.harbor(%mp3(bitrate = 192, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 224 then
-               ignore(output.harbor(%mp3(bitrate = 224, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 256 then
-               ignore(output.harbor(%mp3(bitrate = 256, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          elsif stream_bitrate == 320 then
-               ignore(output.harbor(%mp3(bitrate = 320, samplerate = 44100), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, s))
-
-          end
-     end
-end
\ No newline at end of file
diff --git a/modules/liquidsoap/test.liq b/modules/liquidsoap/test.liq
deleted file mode 100644
index e5c2c61e30d6c03201d023a5adcf17339193463b..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/test.liq
+++ /dev/null
@@ -1,8 +0,0 @@
-set("log.file.path", "./test.log")
-
-#input_alsa = input.alsa(bufferize=false) #, clock_safe=false)
-#output.alsa(bufferize=false, input_alsa)
-
-input_pulse = input.pulseaudio() #, clock_safe=false)
-output.pulseaudio(input_pulse)
-
diff --git a/modules/liquidsoap/tester.liq b/modules/liquidsoap/tester.liq
deleted file mode 100644
index f6e3f384aa4d9cabaf7d5b43650efbad90349430..0000000000000000000000000000000000000000
--- a/modules/liquidsoap/tester.liq
+++ /dev/null
@@ -1,157 +0,0 @@
-#!/usr/bin/liquidsoap
-
-%include "/etc/aura/readini.liq"
-%include "/etc/aura/library.liq"
-%include "/etc/aura/playlist.liq"
-
-inifile = '/etc/aura/aura.ini'
-ini = read_ini(inifile)
-
-socketdir = list.assoc("socketdir", ini)
-
-# set player i/o devices
-live_input_device = list.assoc("live_input_device", ini)
-output_device = list.assoc("output_device", ini)
-
-# fallback settings
-station_fallback_pool = list.assoc("station_fallback_pool", ini)
-ignore(station_fallback_pool)
-fallback_audio_folder = list.assoc("fallback_audio_folder", ini)
-fallback_max_blank = float_of_string(list.assoc("fallback_max_blank", ini))
-fallback_min_noise = float_of_string(list.assoc("fallback_min_noise", ini))
-fallback_threshold = float_of_string(list.assoc("fallback_threshold", ini))
-
-# channel names from config
-channelnames = ref string.split(separator=',', list.assoc("channels", ini))
-
-set("server.socket", true)
-set("server.socket.path", socketdir^"/<script>.sock")
-set("server.telnet", true)
-set("server.telnet.port", 1234)
-
-# alsa settings
-#set("alsa.alsa_buffer", 2048)
-#set("alsa.periods", 0)
-#set("alsa.buffer_length", 1)
-
-playlistrunning = ref false
-# dynamic list of sources
-sources = ref []
-
-playlist_recorded = playlist.xml(
-     id='playlist', on_done=fun() -> begin ignore(system('#{list.assoc("install_dir", ini)}/modules/soundengine/helpers/message.py -c #{!instance} --task=setState -n playlistcurrent -v ""')) ignore(server.execute('mixer.select 0 false')) end, 'none')
-# Die Source aus der Playlist
-recorded = snd(playlist_recorded)
-
-# Skippen erlauben
-add_skip_command(recorded)
-
-# User may load a XML-Playlist
-server.register(namespace='playlist',
-    description="Load Playlist",
-    usage="load <uri>",
-    "load",fun (p) ->  begin
-        reload_recorded(skip=0, uri=p)
-    end
-)
-
-def get_station_fallback_pool()
-    #playlist.safe("/var/audio/fallback/NightmaresOnWax/Smokers Delight")
-    playlist.safe(station_fallback_pool)
-    #if station_fallback_pool != "" then
-    #    print("fallbackfolder chosen: "^station_fallback_pool)
-    #    playlist.safe(station_fallback_pool)
-    #else
-    #    print("no fallbackfolder chosen. blanking 20s.")
-    #    blank(duration=20.0)
-    #end
-end
-
-def get_live_input()
-    if live_input_device == "soundcard" then
-        print("autodetect input device")
-        #strip_blank(id="input_alsa_strip", max_blank=fallback_max_blank, min_noise=fallback_min_noise, threshold=fallback_threshold,
-        input.alsa(id="input_alsa", bufferize=false) #)
-    else
-        print("manually set device: "^live_input_device)
-        #strip_blank(id="input_alsa_strip", max_blank=fallback_max_blank, min_noise=fallback_min_noise, threshold=fallback_threshold,
-        input.alsa(id="input_alsa", bufferize=false, device=live_input_device) #)
-    end
-end
-
-def get_input_fs()
-   fallback(track_sensitive=false,
-       [ single("/var/audio/fallback/music.flac"), get_station_fallback_pool() ] )
-end
-
-def get_input_stream() 
-    url = "http://stream.fro.at/fro128.mp3"
-    #url = "http://mp3stream1.apasf.apa.at:8000/listen.pls"
-    mksafe(strip_blank(id="stream_strip", input.http(id="stream", url)))
-end
-
-# create playlist source with smart crossfade
-#filesystem_input = fallback(id="filesystem_input", track_sensitive=false, [
-#    get_input(),
-#    get_fallback()])
-
-# filesystem_input
-#fs_input = get_input_fs()
-fs_input = fallback(track_sensitive=false,
-            [ single("/var/audio/fallback/music.flac"), get_station_fallback_pool() ] )
-
-# create a source for stream overtakes
-stream_input = get_input_stream()
-#url = "http://stream.fro.at/fro64.mp3"
-#url = "http://mp3stream1.apasf.apa.at:8000/listen.pls"
-#stream_input = strip_blank(id="httpsttrip", input.http(id="stream", url))
-
-# and the studio input
-#live_input = get_live_input()
-live_input = input.alsa(id="input_alsa", bufferize=false)
-
-# API HOWTO:
-# mixer.inputs
-# stream.stop
-# stream.url [url]
-# stream.start
-# mixer.select [streamovertake] true
-
-def addChannel(source)
-    sources := list.append([source], !sources)
-end
-
-addChannel(fs_input)
-addChannel(stream_input)
-addChannel(live_input)
-
-mixer = mix(id = "mixer", !sources)
-
-#final_stream = fallback(id="station_fallback", [mixer, playlist.safe("/var/audio/fallback/NightmaresOnWax/Smokers Delight")]
-
-#server.register(namespace='mixer',
-#    description="Load Playlist",
-#    usage="select <num>",
-#    "load",fun (p) ->  begin
-#        reload_recorded(skip=0, uri=p)
-#    end
-#)
-
-ignore(mixer)
-ignore(fs_input)
-ignore(live_input)
-ignore(addChannel)
-ignore(stream_input)
-ignore(channelnames)
-ignore(output_device)
-ignore(playlistrunning)
-ignore(fallback_max_blank)
-ignore(fallback_min_noise)
-ignore(fallback_threshold)
-ignore(fallback_audio_folder)
-
-print("output_device: "^output_device)
-output.alsa(id="alsaout", bufferize=false, device=output_device, mixer)
-
-#ret = server.execute('help')
-#print(ret)
diff --git a/modules/scheduling/scheduler.py b/modules/scheduling/scheduler.py
index 570fd60ca0a2e2ae032925fff44d978308f5c209..95e3754a47157700cd46ef1e28575f24987bfa08 100644
--- a/modules/scheduling/scheduler.py
+++ b/modules/scheduling/scheduler.py
@@ -238,7 +238,7 @@ class AuraScheduler(ExceptionLogger):
                 # when do we have to start?
                 diff = entry.entry_start_unix - now_unix
 
-                diff = diff/100 # testing purpose
+                diff = diff/1000 # testing purpose
 
                 # create the activation threads and run them after <diff> seconds
                 if entry.source.startswith("linein"):
diff --git a/modules/tools/padavan.py b/modules/tools/padavan.py
index 627c9bc049405b3bb1e4d166889b01a2c504a686..cabcce0c7aa965766fc508bc1ad6425c3a488ae6 100644
--- a/modules/tools/padavan.py
+++ b/modules/tools/padavan.py
@@ -65,6 +65,9 @@ class Padavan:
         elif self.args.set_fallback_for:
             self.set_next_fallback_file(self.args.set_fallback_for[0], self.args.set_fallback_for[1])
 
+        elif self.args.now_playing:
+            self.now_playing(self.args.now_playing)
+
         elif self.args.init_player:
             self.init_player()
 
diff --git a/modules/web/routes.py b/modules/web/routes.py
index 3277a12b24869fce2f0de994f42543603f2e4722..e3e9e1db7539d6cf9bec392811e9229d56c048ec 100644
--- a/modules/web/routes.py
+++ b/modules/web/routes.py
@@ -1,7 +1,8 @@
 from flask import request
 
 from libraries.database.database import app
-from libraries.database.broadcasts import TrackServiceScheduleEntry
+from libraries.database.broadcasts import TrackService
+
 
 class Routes:
 
@@ -24,7 +25,7 @@ class Routes:
         now = request.args.get("now")
 
         if now == "":
-            entry = TrackServiceScheduleEntry.now_playing()
+            entry = TrackService.now_playing()
 
         #response[""]