Recording-Stammtisch

  • Ersteller livebox
  • Erstellt am
Das hat mit Netzwerk nichts zu tun, das sind einfach 4 symmetrische analoge Audiosignale auf den 8 Adern eines Netzwerkkabels plus Abschirmung als gemeinsame Masse. Ein 4-Kanal-Multicore quasi.

Banjo
 
  • Gefällt mir
Reaktionen: 1 Benutzer
PoE = Power over Ethernet, wäre eine Möglichkeit, um ein Cat-Gerät mit Strom zu versorgen.
 
Das hat mit Netzwerk nichts zu tun, das sind einfach 4 symmetrische analoge Audiosignale auf den 8 Adern eines Netzwerkkabels plus Abschirmung als gemeinsame Masse. Ein 4-Kanal-Multicore quasi.

Banjo

Ahhh, danke für die Info! Kannte ich so nicht.
 
Wie funktioniert das über Netzwerk ohne Strom?
Es funktioniert über Netzwerkkabel (=4x 2 Paare) aber nicht digital, sondern klassisch analog. Das Cat5 Kabel wird einfach nur als analoges Multicore genutzt.
 
Ja, hat Banjo oben schon erklärt. :)
 
Tja, eigentlich hat das nichts unmittelbar mit Recording zu tun aber am Stammtisch geht das schon. Und KI war ja auch schon Thema hier.

Immerhin geht es um ein Projekt im Zusammenhang mit UAD Luna. Eigentliches Thema ist Unterstützung bei Programmier Projekten durch KI. Ich hatte gelegentlich schon immer mal wieder mit Programmieren zu tun, bunt gemischt in allen Möglichen Programmiersprachen. Auch Umgang mit Terminal und Command Line Skripten. Also ich kann das lesen und verstehen.

Nun habe ich bunt verstreut auf mehreren Festplatten Luna Projekte rumliegen. Nur teilweise organisiert und über die Jahre auch Zeug das in Vergessenheit geraten ist. Ich hatte dann mit dem Finder eine Suche gestartet und nach der extension .luna gesucht. Damit sind Ordner gekennzeichnet, die ein Luna Projekt enthalten. Sieht so aus:

Bildschirmfoto 2024-04-30 um 22.29.05.png


wie man sieht ist das etwas grösser. 1.03GB. Da sind alle Dateien des Projektes drin einschliesslich Audio. Bei Ableton ist das ähnlich. Die verwenden auch Ordner mit eigenem Icon für Projekte.

Dauert etwas, bis der Finder dann damit durch ist und das ergibt eine ziemlich lange Liste. Geht zwar, aber praktikabel ist das nicht.

Wie auch immer, ich wollte sowieso mal den Nutzen von KI als Helfer für Software Projekte antesten. Also habe ich das dann gemacht. Setup von den nötigen Bausteinen und anderes hatte ich gestern schon erledigt und rudimentäre Suchroutinen waren auch schon vorhanden. Ebenfalls mit KI Unterstützung.

Heute habe ich das dann umgesetzt. Hier die erste Eingabe in den Prompt:

Gerne helfe ich dir beim Debuggen deines Projekts. Bitte beschreibe das Problem, das du hast, und teile mir mit, in welcher Umgebung und mit welchen Technologien du arbeitest. Gibt es spezielle Fehlermeldungen oder unerwartetes Verhalten, das du beobachtest? Je mehr Details du mir gibst, desto besser kann ich dir helfen!
User
Zuerst einige Angaben:

Das Projekt ist in Python und besteht im Moment aus 3 Python Scrips und einigen HTML Dateien. Ein Script durchsucht einen Pfad nach Ordnern mit einer speziellen Extension .luna. Das sind Ordner in denen Projekte gespeichert sind, die zu der App Luna.app gehören. Das Such Script funktioniert und speichert die gefundenen Pfade in einer TXT Datei.

Ich habe dann noch den bestehenden Code eingegeben und dann ging es ziemlich schnell voran bis zum Endergebnis:

Bildschirmfoto 2024-04-30 um 22.42.06.png


Eine Liste der gefundenen Luna Projekte. "Open" öffnet die in UAD Luna, "Im Finder anzeigen" öffnet den Pfad im Finder.

Unten dann noch die Zusammenfassung:

Bildschirmfoto 2024-04-30 um 22.53.18.png


Insgesamt hat das vielleicht drei Stunden gedauert bis dahin.

Das besteht lediglich aus drei Scripts. Eines öffnet zu Beginn ein Finder Fenster, in dem der Suchpfad eingegeben wird. Das sucht dann, schreibt die Pfade zu den Funden in eine Text Datei.

Die wird von einem zweiten Script eingelesen das dann eine HTML Datei schreibt. Ein Drittes startet eine Flask Server mit den nötigen Zutaten für die Funktionen für öffnen des Finders und öffnen der Luna.app. Danach dann nur noch in Safari die Seite öffnen.

Insgesamt eine wirklich prima Sache.

Hier die Konversation mit der KI.

Kann ich empfehlen. Dafür ist das wirklich eine prima Sache..... (;
Für Hacker Freaks im Anhang noch der Code der Dateien.

Start Script:

Code:
#!/bin/bash

# Pfade zu den Skripten
SEARCH_SCRIPT="/Users/thomas/110_days_python/Test_Scripts/search.py"
WRITE_RESULTS_SCRIPT="/Users/thomas/110_days_python/Test_Scripts/write_results.py"
FLASK_APP="/Users/thomas/110_days_python/Test_Scripts/app.py"

# Ausführung des Search-Skripts
echo "Starte die Suche nach .luna Projekten..."
python3 "$SEARCH_SCRIPT"
echo "Suche abgeschlossen."

# Ausführung des Skripts, das die HTML-Datei erstellt
echo "Generiere HTML-Datei aus den Suchergebnissen..."
python3 "$WRITE_RESULTS_SCRIPT"
echo "HTML-Datei wurde generiert."

# Überprüfe, ob der Port 8000 bereits verwendet wird
PORT=8000
if lsof -i:$PORT > /dev/null; then
    echo "Port $PORT ist bereits belegt."
    read -p "Möchten Sie den laufenden Server beenden? (ja/nein): " answer
    if [[ "$answer" = "ja" ]]; then
        echo "Beende laufenden Prozess auf Port $PORT..."
        lsof -t -i:$PORT | xargs kill -9
        echo "Prozess auf Port $PORT wurde beendet."
    else
        echo "Vorgang abgebrochen."
        exit 1
    fi
else
    echo "Port $PORT ist frei."
fi

# Starten des Flask-Servers
echo "Starte Flask Server auf Port $PORT..."
export FLASK_APP="$FLASK_APP"
flask run --port=$PORT

echo "Flask Server läuft auf http://localhost:$PORT"

Such Script:


Python:
import subprocess

# Statische Erweiterung für die Suche
extension = ".luna"

def get_directory():
    """Fragt den Benutzer nach einem Verzeichnis mithilfe eines Finder-Popup-Fensters."""
    # Verwende das macOS `osascript`-Befehl, um das Finder-Popup-Fenster anzuzeigen
    script = """
    tell application "Finder"
        activate
        set selectedFolder to POSIX path of (choose folder with prompt "Wähle ein Verzeichnis aus")
    end tell
    selectedFolder
    """
    # Führe das AppleScript aus und erhalte den ausgewählten Ordnerpfad
    directory = subprocess.run(['osascript', '-e', script], capture_output=True, text=True).stdout.strip()
    return directory

def validate_directory(directory):
    """Überprüft, ob der eingegebene Pfad gültig ist."""
    # Füge hier deine Validierungslogik hinzu
    # Beispiel: Wenn der Pfad existiert und ein Verzeichnis ist, gibt True zurück, sonst False
    return True if directory else False

def search_files(directory, extension):
    """Sucht nach Dateien mit der angegebenen Erweiterung im Verzeichnis."""
    # Führe den Befehl `find` aus, um Dateien mit der Erweiterung zu finden
    result = subprocess.run(['find', directory, '-name', f"*{extension}"], capture_output=True, text=True)
    # Teile die Ausgabe des Befehls, um Dateipfade zu erhalten
    file_paths = result.stdout.strip().split('\n')
    return file_paths

def write_to_file(file_paths, output_file):
    """Schreibt die gefundenen Dateipfade in eine Ausgabedatei."""
    with open(output_file, 'w') as file:
        for file_path in file_paths:
            file.write(file_path + '\n')

def main():
    # Frage den Benutzer nach einem Verzeichnis
    directory = get_directory()

    # Überprüfe den eingegebenen Pfad
    if not validate_directory(directory):
        print("Der eingegebene Pfad ist ungültig oder leer.")
        return

    # Suche nach Dateien mit der .luna-Erweiterung im angegebenen Verzeichnis
    file_paths = search_files(directory, extension)

    # Zeige die Suchergebnisse im Terminal an
    print("Suchergebnisse:")
    for file_path in file_paths:
        print(file_path)

    # Schreibe die Suchergebnisse in die Ausgabedatei
    output_file = "/Users/thomas/110_days_python/Test_Scripts/treffer.txt"
    write_to_file(file_paths, output_file)

    # Zeige die Anzahl der Fundstellen an
    print(f"Anzahl der Fundstellen: {len(file_paths)}")
    print(f"Die Treffer wurden in die Datei {output_file} geschrieben.")

if __name__ == "__main__":
    main()

Script generieren HTML:

[
CODE=python]import os

def get_directory_size(directory):
total_size = 0
for dirpath, _, filenames in os.walk(directory):
for filename in filenames:
filepath = os.path.join(dirpath, filename)
total_size += os.path.getsize(filepath)
return total_size / (1024 ** 3) # Konvertiere Bytes in Gigabytes

def create_html_file(file_paths, output_file):
total_size_gb = 0 # Variable zur Speicherung der Gesamtgröße
with open(output_file, 'w', encoding='utf-8') as f:
f.write('<!DOCTYPE html>\n<html>\n<head>\n<meta charset="UTF-8">\n<title>Luna Project Search</title>\n')
f.write('<style>\n')
f.write('body { font-family: Arial, sans-serif; }\n')
f.write('table { width: 100%; border-collapse: collapse; }\n')
f.write('th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }\n')
f.write('th { background-color: #f2f2f2; }\n')
f.write('tr:nth-child(even) { background-color: #f9f9f9; }\n')
f.write('button { padding: 5px 10px; background-color: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer; }\n')
f.write('</style>\n')
f.write('</head>\n<body>\n')
f.write('<h1>Luna Project Search</h1>\n')
f.write('<table>\n')
f.write('<tr><th>Projektname</th><th>Größe (GB)</th><th>Aktion</th><th>Finder</th></tr>\n')
for file_path in file_paths:
file_name = os.path.basename(file_path)
size = get_directory_size(file_path)
total_size_gb += size
f.write(f'<tr><td>{file_name}</td><td>{size:.2f} GB</td><td><button onclick="openLuna(\'{file_path}\')">Öffnen</button></td><td><button onclick="openInFinder(\'{file_path}\')">Im Finder anzeigen</button></td></tr>\n')
f.write('</table>\n')
f.write(f'<h2>Gesamtgröße aller Projekte: {total_size_gb:.2f} GB</h2>\n')
f.write('<script>\n')
f.write('function openLuna(path) {\n')
f.write(' fetch("/open_luna", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", }, body: "path=" + encodeURIComponent(path) })\n')
f.write(' .then(response => response.json()).then(data => alert(data.message)).catch(error => console.error("Error:", error));\n')
f.write('}\n')
f.write('function openInFinder(path) {\n')
f.write(' fetch("/open_in_finder", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", }, body: "path=" + encodeURIComponent(path) })\n')
f.write(' .then(response => response.json()).then(data => alert(data.message)).catch(error => console.error("Error:", error));\n')
f.write('}\n')
f.write('</script>\n')
f.write('</body>\n</html>')

output_directory = '/Users/thomas/110_days_python/Test_Scripts/templates'
output_file = os.path.join(output_directory, 'treffer.html')

if not os.path.exists(output_directory):
os.makedirs(output_directory)

with open('/Users/thomas/110_days_python/Test_Scripts/treffer.txt', 'r', encoding='utf-8') as file:
file_paths = file.read().splitlines()
create_html_file(file_paths, output_file)
[/CODE]

Flask Server handling:


Python:
from flask import Flask, request, jsonify, render_template  # Füge `render_template` hinzu
import subprocess

app = Flask(__name__, template_folder='/Users/thomas/110_days_python/Test_Scripts/templates')

@app.route("/")
def index():
    return render_template('treffer.html')

@app.route("/open_luna", methods=['POST'])
def open_luna():
    path = request.form['path']
    try:
        subprocess.run(['open', '-a', '/Applications/LUNA.app', path], check=True)
        return jsonify(success=True, message="Projekt erfolgreich geöffnet")
    except subprocess.CalledProcessError as e:
        return jsonify(success=False, message="Fehler beim Öffnen des Projekts")

@app.route("/open_in_finder", methods=['POST'])
def open_in_finder():
    path = request.form['path']
    try:
        subprocess.run(['open', '-R', path], check=True)
        return jsonify(success=True, message="Ordner im Finder geöffnet")
    except subprocess.CalledProcessError as e:
        return jsonify(success=False, message="Fehler beim Öffnen im Finder")

if __name__ == "__main__":
    app.run(debug=True, port=8000)
 
  • Gefällt mir
  • Interessant
Reaktionen: 2 Benutzer
Gestern habe ich bei Thomann nach kleinen und überschaubaren Audio Interfaces für mein Arbeitszimmer gesucht ... dabei bin ich über dieses hier gestolpert ... Bei Lewitt und im Netz ist davon weit und breit nix zu sehen.


Hat da jemand was zu?

Gruß
Martin
 
Sie haben was neues für diese Woche angekündigt. Vermutlich voreilig vom Thomann raus geschmissen.
 
Ok … kam was …


View: https://youtu.be/jJJRx9l5m_4?si=ythl2GNJN93v2PQz

Und die Webseite funktioniert auch.


Sieht nach ner schönen kleinen Lösung mit einfacher Bedienung und ein paar hilfreichen Features aus. Könnte genau das sein, was ich für mein Arbeitszimmer gestern gesucht habe, als ich bei Thomann über den Frühstart gestolpert bin.

Dann suche ich jetzt mal bei Thomann welche kleinen Monitore nächste Woche vorgestellt werden 🤣.

Gruß
Martin
 
Hehe. Ja, (nicht nur) für Streamer haben die schlaue Sachen am Start. :)
 
das Teil hatte ich auch nachgeschlagen auf den Newsletter hin, Kann man in der Schweiz bestellen für CHF 157.00 inkl. MwSt.

Günstig eigentlich......
 
Dann suche ich jetzt mal bei Thomann welche kleinen Monitore nächste Woche vorgestellt werden 🤣.
Hier sind sie:
adam-audio-a4v-a7v-limited-edition-770x425.jpg

adam-audio-a4v-a7v-studio-monitors-white-25th-anniversary-limited-edition-vorschau.jpg

;)
 
Was haltet ihr von den umgesetzten Ideen? ... Hui oder Pfui ???
Ich hatte an meinem Arbeits-PC für Teams Konferenzen usw, schon länger ein LCT440 stehen, das ich jetzt mal probeweise durch ein RAY ersetzt habe:
1715146124014.png


Das mit dem "Autofokus" funktioniert super, das Muten per Distanz ist aber in der Konstellation nicht wirklich praktikabel für mich. Das mag an der Position des Mikros liegen, aber am Ende habe ich es wieder deaktiviert und Mute mein Mikro in Teams wieder konventionell per Software.
 
  • Gefällt mir
Reaktionen: 2 Benutzer
schon länger ein LCT440 stehen

Eigentlich ja totaler Overkill, aber wer hat, der hat :) ...

Muten per Distanz ist aber in der Konstellation nicht wirklich praktikabel für mich

Weil es nicht "frei" vor dir schwebt, oder weil es auf dem Kopf steht? Worauf führst du das zurück? ...

Die "Blogger-Zielgruppe" zeigt ja immer gerne ihr Equipment im Bild/Video ... hängen die Mikros also gerne vor das Gesicht. Deine Ausrichtung war da wahrscheinlich nicht im "Testlauf" dabei.


Das hatte ich befürchtet :) ... zum Glück bin ich nicht so der Adam Fan, sondern eher auf der Focal Seite. Ob es das für den Zweck "Arbeitszimmer" (Also das Daily MB, Bassic und Co. - ab und zu mal einen Mix grob "herrichten", der im MenCave auf der SD vom ZOOM gelandet ist, mal Sounds am Helix testen und ohne Kopfhörer hören ...) sein muss, da bin ich noch unschlüssig.

Gruß
Martin
 
Zuletzt bearbeitet:
Eigentlich ja totaler Overkill, aber wer hat, der hat
Ich war ja am überlegen, einige Zeit verwendete ich schlicht ein Audiotechniker AT2010, aber dann brauchte ich das immer wieder Live und ständig umstöpseln ist nicht so mein Ding.
Alternativ hätte ich dann noch ein uralt C414, ein TLM 170 bzw TLM 107 und ein Gefell M930 zur Auswahl (naja, es gäbe da schon noch Möglichkeiten, aber die sind üblicherweise alle nur daheim im Einsatz). Und so ist es halt das günstigste geworden.
Weil es nicht "frei" vor dir schwebt, oder weil es auf dem Kopf steht? Worauf führst du das zurück? ...
Das mit dem frei vor mir schweben wäre etwas blöd, da ich für das Software entwickeln halt zwei größere 4k Monitore benutze und wenn da irgend etwas im Gesicht rum baumelt, das die Größe eines RAY hätte, dann würde ich das stören. Also muss es da außerhalb des primären Sichtfeldes sein, aber so dass es nicht all zu weit weg ist. Und hat sich das mittige Platzieren unterhalb der Monitore ergeben.
Es kann schon sein , dass es mit der tiefen Position zu tun hat, denn auch der Autofokus reagiert z.B darauf wenn ich mit den Fingern auf der Tastatur rum klopfe, einfach weil halt alles was vor dem Mikro passiert von dem als Bewegung erkannt wird. Die Auswirkungen beim Mute sind halt drastischer als beim Autofokus, daher habe ich es wieder deaktiviert.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Ich würde sowas ja für ein Gesangsmic (550 oder 840) auch super finden für Backing Vocals. Quasi eingebautes Optogate. Her damit Lewitt! :)
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Alternativ hätte ich dann noch ein uralt C414, ein TLM 170 bzw TLM 107 und ein Gefell M930 zur Auswahl

Nobel geht die Welt zugrunde:) Ich hab aber auch ein AKG C5600 mit C414-Kapsel zum Teamsen am Start, einfach because I can. Das schaut wie eine Webcam oben über den Monitorrand auf einem kleinen K&M Standstativ mit Gusssockel.

Banjo
 

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben