- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 23

Thema: tone library auch für Raspi

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast

    tone library auch für Raspi

    hallo,
    durch Stöbern in einigen Raspi- und Arduino-Foren bin ich auf eine wünschenswerte Ergänzung gestoßen, die auch für den raspi schön wäre:
    eine Lib, um Töne aus dem Stegreif zu erzeugen.
    Arduino C/C++ macht dies durch tone() ,
    andere libs durch beep(),
    und so was wäre doch auch als Ton-Signal für den Pi schön, ausgegeben auf seine Kopfhörerausgänge (nicht über GPIOs).
    Wer will, könnte dann sogar damit tatütata oder amerikanisch wuiwuiwuwiwui oder Hänschenklein damit ganz schnell mal eben programmieren.
    Für frequency gibt es ja auch #defines mit festen Notentasten
    (#define _A4_ 440.0,
    #define _Dis6_ 1244.51 etc.).

    Die Syntax, die man häufig liest ist in der Art
    tone(frequency, duration)
    tone(frequency, duration, loudness)
    (die Pin-Angabe, die man für Arduino braucht, fällt hier ja weg)

    Ebenfalls häufig liest man etwas in der Art wie
    tone(frequency, duration, loudness, samplerate)

    Vielfach wurde diese Frage überall schon mal gestellt, aber nie gab es wirklich eine erkennbare Lösung (höchstens vage Links auf Monsterlibs wie alsa).

    Hat hier jemand trotzdem Kenntnis von so einer Lib, entweder bereits irgendwo gepostet oder für eigene Zwecke mal als Hilfsfunktion selber erstellt?
    Geändert von HaWe (05.10.2016 um 14:28 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Nur mal so als Idee zum suchen bei dem Komandozeilen Befehl der das löst:
    Code:
    apt-get install beep
    Wenn Du Details der Implementierung wissen willst den Sourcecode des Debian Pakets installieren und schauen wie die das machen.

    Du kannst auch den beep Befehl in den Meisten Programmiersprachen einfach als Externes Programm aufrufen. Die Funktionen lauten oft exec oder system oder so ähnlich. Ich weiß ja nicht mit was Du Programmierst.

    Alexander

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Mit ein Problem, welches zum Fehlen von Libs führt, ist die Faulheit der Entwickler. Ich habe auch schon für viele Dinge eigene Parser geschrieben, die schlummern aber auf meiner Platte, da ich keine Lust habe das ganze Zeug allgemeinverständlich zu formatieren und zu dokumentieren. Zumal ja auch viele Entwickler sowieso gerne ihr eigenes Süppchen kochen. Es ist also durchaus denkbar, dass irgendjemand einen Parser für solche Sounds geschrieben hat und benutzt, diese aber aus Faulheit nicht weiter gibt.

    Da bliebe für dich nun die Frage, kannst du Funktionen schreiben, welche das gewünschte Ergebnis liefern? Wenn ja, würdest du den Aufwand betreiben es allgemeinverständlich zu formatieren, zu dokumentieren und zu veröffentlichen? In dem Fall wäre der Missstand einer fehlenden Lib in diesem Fall beseitigt.

  4. #4
    HaWe
    Gast
    ich selber habe es immer gemacht, weil ich OpenSource und Public Domain für eine gute und unterstützenswerte Sache halte - sowohl für Lego NXC als auch Arduino als auch ein ganz wenig für den Pi, der selber noch Neuland für mich ist.
    beep() habe ich heute Nachmittag ausprobiert, funktioniert aber nicht (kein "PC Lautsprecher" am Pi, der normale Audio-Jack wird wohl nicht erkannt),
    Speaker test ebenfalls probiert, das funktioniert immerhin, es gibt aber dafür keine kurzen Töne soweit ich es selber ausprobiert als auch im Web gelesen habe (2-4 sek. Minimum).
    Ich selber kann aber keine Soundlibs schreiben, zuwenig Kenntnis über alsa und die ganzen Soundtreiber und die viel zu komplizierten Soundfunktionen. Könnte ich es, würde ich es selbstverständlich veröffentlichen, aber zur Zeit bin ich (wohl auf Jahre hinaus) noch auf fertige Libs angewiesen, die genau die Art von Wrappern für C/C++ zur Verfügung stellen, wie ich sie im TOP beschrieben habe.
    Das gilt auch sicher für eine ganze Menge weiterer Libs, wie sie z.B. zu Hunderten aber z.B. bereits für den Arduino schon existieren. Diesen ganzen Ideen- und Code-Pool muss man jetzt auch für den Pi sammeln und zusammenstellen.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Das wusste ich nicht das der beep nur mit dem alten PC-Speaker geht. Ich dachte auf neuerer Hardware würde das über den Treiber der Soundkarte realisiert. Sorry.

    Eine neue LIB für die Soundkarte zu schreiben ist vermutlich nicht Sinnvoll. Die wird nicht wirklich kleiner werden als die anderen die es gibt. Da eine Soundkarte selbst keine Töne erzeugen kann. Wie es zum Beispiel der PC-Speaker macht. Du musst die Töne per Software berechnen und dann an die Soundkarte übergeben.

    Was ich noch gefunden habe ist der aplay der kann verschiedene Audio Formate Spielen wie z.B. WAV. Das funktioniert auch habe ich dieses mal vorher ausprobiert. Der aplay musste bei mir nicht extra installiert werden. Dann müsstest Du unter den Formaten die der abspielen kann nur ein einfaches suchen und per Software den Ton oder die Töne generieren und an aplay übergeben. Das sollte funktionieren.

    Die Software des PI und der Arduinos kann man nicht wirklich vergleichen die Hardware des PI ist um größen Ordnungen höher als die der Arduinos ebenso das Betriebsystem das es bei Arduinos überhaupt nicht gibt. Daher sind Lösungen nicht immer mit einigen KB größen Libs zu bekommen Leisten aber auch sehr viel mehr. Dafür hat der PI ja auch mehr an Speicher und Rechenleistung zu bieten. Wenn Dir die Soundkarte zu komplex ist kannst Du aber mit einem kleine Verstärker einen Lautsprecher an einen PWM Pin des PI anschließen und dann mit diesem Töne erzeugen. Das macht der PC-Speaker so ähnlich.
    Geändert von alexander_ro (10.10.2016 um 23:16 Uhr)

  6. #6
    HaWe
    Gast
    Alexander, was eine "Soundkarte" angeht, hast du meinen Post missverstanden.
    Der Raspi hat keinen PC Speaker, daher funktioniert beep() auch nicht (sondern anscheinend nur auf Linux-PCs, die einen eingebauten Systemlautsprecher besitzen).
    Wenn du aber zeigen kannst, wie man beep auf einem Standard-Raspi zur Tonausgabe über Audiojack bzw. HDMI bringen kann, dann zeige es einfach - bisher konnte ich kenen entsprechenden Hinweis im web finden.
    Also nochmal:
    Die Ausgabe soll auf Kopfhörer bzw standard-Ausgabe-Device (d.h. je nach Einstellung eben auch HDMI) erfolgen, genau wie die Ausgabe von z.B. omxplayer oder aller anderen Sounds, die der Raspi standardmäßig wiedergibt (vom wav file bis zum youtube Video).
    Die Ton- Ausgabe soll durch Aufruf der Funktion innerhalb eines C/C++ Programms erfolgen können, am besten durch eine dar eingebundene C/C++ lib oder c+p des kompletten dafür nötigen Sourcecodes oder notfalls auch einen system call.
    Die Syntax soll in etwa sein, wie ich es oben im TOP beschrieben habe, also ähnlich wie

    tone(frequency, duration)
    tone(frequency, duration, loudness)

Ähnliche Themen

  1. DMA Kanäle als PWM auf dem Raspi
    Von Hellmut im Forum Raspberry Pi
    Antworten: 5
    Letzter Beitrag: 09.05.2016, 00:15
  2. ARM TrustZone und Raspi 3B
    Von Hellmut im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 0
    Letzter Beitrag: 12.04.2016, 16:06
  3. Antworten: 63
    Letzter Beitrag: 18.02.2016, 08:43
  4. [ERLEDIGT] Raspi Club?
    Von pofoklempner im Forum Raspberry Pi
    Antworten: 16
    Letzter Beitrag: 09.07.2015, 07:20
  5. Antworten: 0
    Letzter Beitrag: 10.01.2008, 02:52

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests