94 lines
2.7 KiB
Python
94 lines
2.7 KiB
Python
import argparse
|
|
import os
|
|
import sys
|
|
from audio_io import AudioIO
|
|
from windows_audio import WindowsAudioManager
|
|
import sounddevice as sd
|
|
from metadata_manager import MetaDataManager
|
|
from settings import SettingsManager
|
|
|
|
from flask import Flask
|
|
from flask_cors import CORS
|
|
|
|
from routes.recording import recording_bp
|
|
from routes.device import device_bp
|
|
from routes.metadata import metadata_bp
|
|
from routes.settings import settings_bp
|
|
from flask_socketio import SocketIO, emit
|
|
import threading
|
|
|
|
app = Flask(__name__)
|
|
CORS(app)
|
|
socketio = SocketIO(app, cors_allowed_origins="*", logger=True, engineio_logger=True, async_mode='eventlet')
|
|
|
|
@socketio.on('connect')
|
|
def handle_connect():
|
|
print("Client connected")
|
|
emit('full_data', MetaDataManager().collections)
|
|
|
|
@socketio.on('record_clip')
|
|
def record_clip():
|
|
io = AudioIO()
|
|
io.save_last_n_seconds();
|
|
|
|
@socketio.on('play_clip')
|
|
def play_clip(data):
|
|
io = AudioIO()
|
|
print(f"Received play_clip event with data: {data}")
|
|
if data:
|
|
io.play_clip(data)
|
|
|
|
|
|
def main():
|
|
# Create argument parser
|
|
parser = argparse.ArgumentParser(description='Audio Recording Service')
|
|
|
|
# OSC port argument
|
|
parser.add_argument('--osc-port',
|
|
type=int,
|
|
help='OSC server port number',
|
|
default=5010)
|
|
|
|
# Parse arguments
|
|
args = parser.parse_args()
|
|
audio_manager = WindowsAudioManager()
|
|
settings = SettingsManager()
|
|
meta = MetaDataManager()
|
|
|
|
|
|
|
|
# Ensure save path exists
|
|
os.makedirs(settings.get_settings('save_path'), exist_ok=True)
|
|
|
|
|
|
io = AudioIO()
|
|
io.start_recording()
|
|
|
|
# settings.socket = socketio
|
|
io.socket = socketio
|
|
meta.socket = socketio
|
|
|
|
# Register blueprints
|
|
app.register_blueprint(recording_bp)
|
|
app.register_blueprint(device_bp)
|
|
app.register_blueprint(metadata_bp)
|
|
app.register_blueprint(settings_bp)
|
|
print(f"Starting Flask server on port {settings.get_settings('http_port')}")
|
|
# app.run(host='127.0.0.1', port=settings.get_settings('http_port'), debug=False, use_reloader=True)
|
|
socketio.run(app, host='127.0.0.1', port=settings.get_settings('http_port'), debug=False, use_reloader=False, allow_unsafe_werkzeug=True)
|
|
|
|
|
|
|
|
# Run the OSC server
|
|
# try:
|
|
# print(f"Starting OSC Recording Server on port {args.osc_port}")
|
|
# # osc_server.run_server()
|
|
# except KeyboardInterrupt:
|
|
# print("\nServer stopped by user.")
|
|
# except Exception as e:
|
|
# print(f"Error starting server: {e}")
|
|
# sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |