Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
27.09.2014, 08:30 (Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2014 08:50 von Gigantbohne.)
ich habe ein Problem bezüglich eines Lowpassfilters. Der soll in einem einfach aufgebauten Synthesizer zum Einsatz kommen. Die Aufgabe ist sogesehen (denke ich) relativ einfach.
Ich erzeuge eine waveform und möchte diese dann filtern, das klappt auch halbwegs gut, allerdings habe ich jetzt jede Menge Störgeräusche im Signal. Habe woanders gelesen, dass man für kontinuierliches Filtern die point2point Filter benutzt, bloß damit funktioniert es erst recht nicht. Da bekomme ich zwar ein Signal rein, aber das array was dann da als Y rauskommt, bekomme ich nicht wieder zu einem Signal zusammengefügt. Vielleicht ist man Ansatz einfach nur falsch. Ich hab jedenfalls schon Stunden damit verbracht im Internet und hier bzw. auf dem englischsprachigen Forum von NI Threads zu lesen, doch dort sind die Probleme meist viel komplexer und verwirren mich eher noch.
Kann mir jemand bitte einen Tip geben ?
Gruß
Gigantbohne
Anzeige
27.09.2014, 09:45 (Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2014 09:48 von GerdW.)
1. Deine Loop hat keinen Stopp-Button. Sehr unschön…
2. Die Filterfunktion hat noch mehr Eingänge. Hast du die Hilfe zu allen diesen Eingangswerten gelesen?
3. Man kann den Filter-Case etwas vereinfachen:
4. Allgemeine Dinge:
- AutoCleanup nutzen
- dein Oszillator-VI sollte unbedingt mit Arrays arbeiten: übersichtliches ConnectorPane, einfache Skalierbarkeit, …
- Bedienelemente sollten unterschiedliche Namen bekommen: warum haben 2 Buttons den Namen "ON"?
vielen Dank erstmal für die hilfreichen Antworten ! Der Filter funktioniert jetzt schon mal so, wie ich mir das vorstelle. Ich werde jetzt mal versuchen, das Oszillator VI so umzubauen, dass es übersichtlicher wird. Die Buttons habe ich gleich benannt, da sie auf dem frontpanel alle "ON" heißen sollen, wahrscheinlich muss ich die dann extra mit einem Label versehen oder ? Ich probier mal weiter. Auf jeden Fall ist jetzt die Motivation wieder da ;-)
Zitat:Die Buttons habe ich gleich benannt, da sie auf dem frontpanel alle "ON" heißen sollen, wahrscheinlich muss ich die dann extra mit einem Label versehen oder ?
Würdest du in einer textbasierten Programmiersprache unterschiedliche Variablen gleich benennen?
In LabVIEW haben Controls ein Label/Namen und eine Caption/Untertitel. Das Label siehst du im BD und sollte einzigartig sein, den Untertitel kannst du statt des Labels im FP anzeigen lassen. Und dort kannst du dich bei der Bezeichnung ungestört austoben…
habe jetzt schon wieder ein neues Problem, und zwar mit den Property Nodes. Ich brauche die richtige Eigenschaft für ein Ring Menu, die mir True/False ausgibt, wenn eine Eingabe getätigt worden ist.
Quasi wie ein OK Button. Bezogen auf das Projekt möchte ich erreichen, dass man Presets wählen kann, welche dann einmalig über lokale Variablen Werte setzen. Momentan funktioniert das ja schon, bloß eben mit dem OK Button dazwischengeschaltet. Habe schon bestimmt 15 Properties ausprobiert die halbwegs gut klangen, hat aber mit keiner funktioniert.
Gruß
Bohne
Anzeige
27.09.2014, 14:56 (Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2014 14:58 von GerdW.)
wenn du den WERT eines Controls haben willst, musst du nur sein Terminal lesen…
Und das machst du doch schon, in dem du den Ring mit der Case-Struktur verbunden hast.
Was den Ring (und die sehr ähnlichen Enums) von einem Button unterscheidet: einen Button kann man so konfigurieren, dass es nach Betätigung in seinen Ausgangszustand zurückgeht (Latch…). Bei anderen Controls musst du das selbst erledigen.
Tipps:
- Wenn du wissen willst, wann es zu einer Wertänderung kommt, solltest du dich mit der Event-Struktur beschäftigen! (Alternativ selbst den aktuellen mit dem vorhergehenden Wert vergleichen…)
- In deinen Schleifen fehlen Wartezeiten…
- Die Sequenzstruktur ist überbewertet: THINK DATAFLOW!
Ich bin leider nicht so schnell, ich habe Deinen Beitrag ganz zuerst gelesen und habe dein Programm verschlimmbessert. Jetzt sind aber schon 5 Antworten mit Lösungen eingegangen, die ich jetzt noch nicht gelesen habe.
Ganz am Ende der Beitrage fällt mir allerdings auf:
Zitat:- In deinen Schleifen fehlen Wartezeiten…
Eine eingefügte Wait-Funktion wär hier grundfalsch! Die Funktion "Audioausgabe schreiben" sorgt für die notwendige Synchronisation. Sie lässt solange warten, bis sie wieder neues Datenfutter braucht. Bei zusätzlichem Wait in der Schleife geht möglicherweise der kontinuierliche Ton kaputt!
Mit deiner Wobbelfunktion habe ich micht nicht befasst, habe ich erst mal totgelegt.
Edit: Die Kritik von Gerd wegen der fehlenden Wartezeit, soweit sie sich auf das VI in Beitrag #6 bezieht, ist natürlich voll berechtigt.