kramann.info
© Guido Kramann

Login: Passwort:










EmbSyst
1 day_by_day
2 Eingebettete_Systeme
..2.1 Softwareentwicklung
....2.1.1 AgileSoftwareentwicklung
....2.1.2 Verhalten
....2.1.3 Entwurfsmuster
....2.1.4 FuzzyRegler
....2.1.5 Uebung
..2.2 Arduino
....2.2.1 Uebung1
..2.3 Android
....2.3.1 UML
......2.3.1.1 Volumenberechnung
......2.3.1.2 UML_Klassendiagramm
......2.3.1.3 Konstruktor
......2.3.1.4 Statische_Variable
....2.3.2 bluej
....2.3.3 Threads
....2.3.4 Interfacedesign
....2.3.5 Android
......2.3.5.1 Getting_Started
......2.3.5.2 App
......2.3.5.3 Beispielprojekt
........2.3.5.3.1 Richtlinien
........2.3.5.3.2 Anforderungen
........2.3.5.3.3 Layout
........2.3.5.3.4 Projekt_einrichten
........2.3.5.3.5 Refactoring
........2.3.5.3.6 Icon
........2.3.5.3.7 Icon2
........2.3.5.3.8 Kurzanleitung
........2.3.5.3.9 Architektur
........2.3.5.3.10 Anwendungsklasse
......2.3.5.4 Threads
......2.3.5.5 Activities
......2.3.5.6 Was_ist_wo
......2.3.5.7 Regelungssysteme
........2.3.5.7.1 Servo
........2.3.5.7.2 Fahrzeug
......2.3.5.8 ADB_Apps
......2.3.5.9 Veroeffentlichen
......2.3.5.10 Einzelheiten
........2.3.5.10.1 Bildschirmaufloesung
........2.3.5.10.2 Parameter
........2.3.5.10.3 Permission
........2.3.5.10.4 Latenzzeit
......2.3.5.11 Tonerkennung
........2.3.5.11.1 Wahrscheinlichkeitsrechnung
........2.3.5.11.2 Kovarianz_Scilab
........2.3.5.11.3 Java_Threads
........2.3.5.11.4 Java_Reflection
....2.3.6 Processing
......2.3.6.1 Installation
......2.3.6.2 Erste_Schritte
......2.3.6.3 Mechatronik
......2.3.6.4 Bibliotheken
......2.3.6.5 Uebung
......2.3.6.6 Snippets
........2.3.6.6.1 Dateioperationen
........2.3.6.6.2 Bilder
........2.3.6.6.3 GUI
........2.3.6.6.4 Text
........2.3.6.6.5 PDF
........2.3.6.6.8 Maus
........2.3.6.6.10 Zeit
........2.3.6.6.13 Animation
........2.3.6.6.15 Simulation
......2.3.6.7 Referenzen
....2.3.7 Android_Processing
......2.3.7.1 Basics
......2.3.7.2 Einrichten
......2.3.7.3 Crossplattform
......2.3.7.4 sinus
......2.3.7.5 sample
......2.3.7.6 analyse
......2.3.7.7 synthese
......2.3.7.8 Hilfsapps
......2.3.7.9 Eigene_Library
....2.3.8 Processing_VR
....2.3.9 Shapes3D
....2.3.10 TextToSpeech
....2.3.11 Internetprogrammierung
......2.3.11.1 Codegenerierung
......2.3.11.2 PHP_Programmierung
......2.3.11.3 PHP_OOP
......2.3.11.4 Java
......2.3.11.5 UDP
......2.3.11.6 Internetkontrolle
........2.3.11.6.1 Kamerabild
....2.3.12 OSC
......2.3.12.1 Datenaustausch
......2.3.12.2 i2audiolab
......2.3.12.3 Ardour
....2.3.13 Netzwerkprogrammierung
....2.3.14 JNI
....2.3.15 Erweitern
......2.3.15.1 sprich
......2.3.15.2 spiel
....2.3.16 thbvr
....2.3.17 Reflection
....2.3.18 Script
....2.3.19 Java3D
3 Echtzeitprogrammierung
..3.1 Echtzeit
..3.2 Korrektheit
..3.2 Semaphoren
..3.3 Hardware
..3.5 Synchronprogramm
..3.6 Zustandsmaschine
..3.7 Arduino
....3.7.1 Uebung
....3.7.2 RTOS
....3.7.3 Scheduler
....3.7.4 Semaphor
......3.7.4.1 Laufkatze
......3.7.4.2 Java
......3.7.4.3 Semaphor
....3.7.5 Messages
..3.8 Android
....3.8.2 Threads
......3.8.2.1 Java
......3.8.2.2 Synchronisierung
..3.9 Petrinetze
....3.9.1 Installation
....3.9.2 Test
4 KI
..4.1 Unueberwachtes_Lernen
..4.2 Agentensysteme
....4.2.1 Architekturen
......4.2.1.1 Verhalten
......4.2.1.2 Entwurfsmuster
....4.2.2 SUMO
......4.2.2.1 GettingStarted
......4.2.2.2 Antrieb
......4.2.2.3 Sensoren
......4.2.2.4 Zeitbasis
......4.2.2.5 Fernsteuerung
......4.2.2.6 Umsetzung_Fernst
......4.2.2.7 Fernsteuerung3
......4.2.2.10 Umsetzung
......4.2.2.11 Sockelsoftware
......4.2.2.12 Plan
......4.2.2.13 Lernen
........4.2.2.13.1 Parameter
........4.2.2.13.2 Identifikation
........4.2.2.13.3 Java
..4.3 Genetische_Algorithmen
....4.3.1 Heuristiken
....4.3.2 Genalgorithmus
..4.4 Kalmanfilter
....4.4.1 Vorarbeit
....4.4.2 Minimalversion
....4.4.3 Beispiel
5 Bildverarbeitung
..5.1 Gestalttheorie
..5.2 Bildverarbeitung
6 Technische_Systeme
..6.1 Kulturgeschichte
..6.2 Technikphilosophie
..6.3 Anthropozaen
7 Literatur
kramann.info
© Guido Kramann

Login: Passwort:




Verwendung von Ardour für die Erzeugung von Sound

(EN google-translate)

(PL google-translate)

Die Resourcen eines Smartphones sind in der Regel sehr begrenzt. Echzeitbearbeitung von Sound kann nur mit Einschränkungen und i.d.R mit reduzierten Samplingraten oder auf wenigen Kanälen gelingen.

Statt dessen wird im weiteren Verlauf das Konzpet verfolgt, zwar die Sensorik des Smartphones und das VR-Rendering zu nutzen, den Sound aber über OSC-Befehle zu steuern. Die Befehle sollen an einen PC geschickt werden, auf dem Ardour läuft.

Für erste Versuche reicht es, Sketche auf dem gleichen PC laufen zu lassen, auf dem auch Ardour läuft und die OSC-Befehle an "localhost" bzw. 127.0.0.1 zu schicken.

Versuch 001: Start und stop eines geloopten Audiofiles von Processing aus.

ardour_versuch001.zip - Ardour- und Processing-Projekt zu diesem Versuch.
Einstellungen beim Anlegen des Ardour-Projektes.

Bild 0-1: Einstellungen beim Anlegen des Ardour-Projektes.

Audio-Einstellungen. Zukünftig typisch: 48kHz (wie im i2audiolab).

Bild 0-2: Audio-Einstellungen. Zukünftig typisch: 48kHz (wie im i2audiolab).

Einrichten des Ardour-Projektes:

  1. Über Projekt -> importieren das Audiofile orgel64_2.wav importieren (ist so geschnitten, dass es "seamless" geloopt werden kann).
  2. Projekt -> Fades ... kein Ein- und Ausfaden.
Importieren:

Bild 0-3: Importieren: "Kopiere Dateien in Projekt" angehakt. (Vermeidet Probleme beim umkopieren des Projekts)

Nahtlose Schleifen unter Bearbeiten -> Globale Einstellungen -> Transport aktivieren;

Bild 0-4: Nahtlose Schleifen unter Bearbeiten -> Globale Einstellungen -> Transport aktivieren;

OSC in Ardour aktivieren: Bearbeiten -> Globale Einstellungen -> Eingabegeräte/Controller

Bild 0-5: OSC in Ardour aktivieren: Bearbeiten -> Globale Einstellungen -> Eingabegeräte/Controller

  • Per Default lauscht Ardour auf Port 3819.
  • Dies kann in der Konfigurationsdatei geändert werden: /home/fhbstud/.config/ardour4/config (fhbstud ist user, Dateimanager: Ansicht -> Verborgene Dateien anzeigen.)
Hier den Default-Eintrag nötigenfalls ändern.

Bild 0-6: Hier den Default-Eintrag nötigenfalls ändern.

import oscP5.*;
import netP5.*;

OscP5 oscP5;
NetAddress myRemoteLocation;

void setup() 
{
  size(400,400);
  frameRate(25);
  oscP5 = new OscP5(this,3819);  
  myRemoteLocation = new NetAddress("127.0.0.1",3819);
}

boolean AN = false;

void mousePressed() 
{
  AN = !AN;  
  
  if(AN)
  {    
      OscMessage myMessage = new OscMessage("/ardour/goto_start"); //Band zurückspulen
      oscP5.send(myMessage, myRemoteLocation);
      delay(10); //Befehle benötigen in Ardour etwas Verarbeitungszeit und werden ohne delay nicht richtig erkannt.
      OscMessage myMessage2 = new OscMessage("/ardour/transport_play"); //Band starten
      oscP5.send(myMessage2, myRemoteLocation); 
      delay(10);
      OscMessage myMessage3 = new OscMessage("/ardour/loop_toggle"); //... geloopt
      oscP5.send(myMessage3, myRemoteLocation); 
      delay(10);
      
      println("Ardour gestartet");
    }
  else
  {
      OscMessage myMessage3 = new OscMessage("/ardour/loop_toggle"); //geloopt rückgängig
      oscP5.send(myMessage3, myRemoteLocation); 
      delay(10);
      OscMessage myMessage = new OscMessage("/ardour/transport_stop");//stoppen.
      oscP5.send(myMessage, myRemoteLocation); 
      delay(10);
      println("Ardour angehalten");
  }
  
}

public void draw()
{
     if(AN)
         background(0,255,0);
     else    
         background(255,0,0);
}

Code 0-1: ardour_proc_versuch001.pde - Processing Sketch für den ersten Versuch.

  • Bei einem Mausklick auf das Processing-Fenster des Sketches wird das Band von Ardour geloopt gestartet oder gestoppt.
Screenshot des laufenden ersten Versuches, Ardour von Processing aus zu steuern.

Bild 0-7: Screenshot des laufenden ersten Versuches, Ardour von Processing aus zu steuern.

Versuch 002: Start und stop eines geloopten Audiofiles von Processing aus.

Audio-Einstellungen für das neue Ardour-Projekt: Wav-Files haben eine Samplingrate von 48kHz.

Bild 0-8: Audio-Einstellungen für das neue Ardour-Projekt: Wav-Files haben eine Samplingrate von 48kHz.