Programmieren & Softwareentwicklung

Wenn Du nicht nur Anwender sein willst, sondern auch aktiv programmierst oder mit dem Gedanken spielst, dann warten hier die passenden Fragen und Antworten auf Dich.

26.800 Beiträge

Sinus wird nicht korrekt berechnet?

Hallo ich ein Problem mit der Phasenverschiebung wenn diese bei GenerateSignal als 0 oder kleiner als 10 übergeben wird ist der Graph ein Gerade allerdings wenn die Phase als Wert wie zum Beispiel 200 übergeben wird ist der Graph wieder normal als ob die Phase die Amplitude beeinflusst ich kann aber nicht herausfinden woran es liegt?

Mein Code dieser erbt zwar von einer Klasse allerdings ist das unwichtig sowie das Main-Window unwichtig ist weil es kommen wirklich richtige Werte (Habe auch schon ChatGPT dazu gezogen wie man am Code sehen kann.):using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Controls;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.Windows;

using System.Windows.Media;

namespace Generator

{

  public class Sinus : Signal

  {

    public Sinus(int sampleRate) : base(sampleRate)

    {

    }

    public double[] GenerateSignal(double amplitude, double frequency, double phase, int time)

    {

      int totalSamples = this.SampleRate * time;

      double[] points = new double[totalSamples];

      // Phase als Verschiebung der x-Achse: Keine Umrechnung nötig, da Phase schon als verschobene Zeit in Bogenmaß funktioniert.

      for (int i = 0; i < totalSamples; ++i)

      {

        double t = (double)i / this.SampleRate; // Zeit in Sekunden

        points[i] = amplitude * Math.Sin(2 * Math.PI * frequency * t + phase); // Phase wirkt sich nur auf die Verschiebung aus

      }

      return points;

    }

    public override void Draw(Canvas canvas, double[] points)

    {

      // Erstelle die Polyline

      Polyline geometryFigure = new Polyline()

      {

        Name = "myPolyline",

        Stroke = Brushes.Black, // Linie sichtbar machen

        StrokeThickness = 1,   // Linienstärke

        Fill = Brushes.Transparent

      };

      // Berechne den Mittelpunkt des Canvas

      double canvasCenterY = canvas.ActualHeight / 2;

      // Berechne die Amplitude der Sinuskurve

      double amplitude = points.Max(); // Die maximale Amplitude der Sinusfunktion

      double minAmplitude = points.Min(); // Der minimalste Wert der Sinuskurve

      double amplitudeRange = amplitude - minAmplitude; // Gesamtbereich der Amplitude

      // Berechne den Offset, um den Mittelpunkt der Sinuskurve auf den Mittelpunkt des Canvas zu verschieben

      double offsetY = canvasCenterY;

      // Erstelle die PointCollection mit den verschobenen Punkten

      PointCollection pointCollection = new PointCollection();

      for (int i = 0; i < points.Length; ++i)

      {

        // Verschiebe den Punkt so, dass der Mittelpunkt der Sinuskurve in die Mitte des Canvas verschoben wird

        double x = i -500;

        // Skalierung und Verschiebung

        double y = points[i] + canvas.ActualHeight / 1.98;

        // Punkte zur PointCollection hinzufügen

        pointCollection.Add(new Point(x, y));

      }

      // Setze die Points für die Polyline

      geometryFigure.Points = pointCollection;

      // Füge die Polyline zum Canvas hinzu

      canvas.Children.Add(geometryFigure);

    }

  }

}

Ask Me Anything: Themenspecials

Auf dem Rapberry Pi5 kein Dolby Digital 5.1 über Kodi?

Bin schon seit mehreren Stunden am Suchen und am rum probieren, wie ich aus Kodi (20.5) Dolby Digital 5.1 raus bekomme.

Mein System:
  • Raspberry Pi5 8Gb
  • Raspberry PiOS 64-Bit (Debian 12)
  • Gnome 43.9
  • Sound von Raspberry Pi HDMI < HDMI Audio Extraktor < TV & receiver

In Kodi von meinem Raspberry Pi5 habe ich keine wirklichen Optionen zu Audio Passthrough. Es ist lediglich eine Überschrift vorhanden, aber gar nichts zum Einstellen. Spiele ich etwas in 5.1 ab dann kommt Stereo raus. Wenn ich während dem Video abspielen die Audio Einstellungen gehe gibt es ein Schalter mit Erlaube Passthrough. Jedoch verändert sich gar nichts. Noch dazu hat der Ton immer einen Kurzen Aussetzer alle 2 Sekunden, wobei der Raspi bei ca. 30 -50% Auslastung ist und Ram auch nicht annähert voll ist.

Über VLC Media Player die selbe Datei mit veränderten Einstellungen (Output module: "ALSA audio output"| Check "Use S/PDIF when available"| Device "Default Audio Device") bekomme ich am Receiver DD in 5.1. Wenn ich eine Datei abspiele die DD+ hat, dann bekomme ich nur Stereo Sound.
Über den PC habe ich am Experten Modus Audio Passthrough, aber auf dem Raspberry Pi5 nicht.

Was kann ich ändern damit ich DD rausbekomme? Im Internet habe ich unter dem Kodi Forum ein Github Seite gefunden mit einem Code. Jedoch weiß ich nicht wo es hin muss, denn ich habe mit "ind / -iname "51-alsa.lua" 2>/dev/null" bei mir Keine Datei Namens "51-alsa.lua". Mit "find / -iname "main.lua.d" 2>/dev/null" finde ich das verzeichnis "/usr/share/wireplumber/main.lua.d" wo es nur andere weitere Dateien gibt wie z. B. "50-alsa-config.lua".