Python Beep

Salve,

Vorrei mettere dei beeps con differenti durate e frequenze in uno script, per segnalare il risultato di certe comparazioni in Rhino.

In Internet vedo che basta importare il modulo ‘winsound’ per avere tutti i metodi sonori a disposizione.

Ovviamente “import winsound” non funziona ( non trova il modulo…)

Qualcuno ha un idea di dove si trova questo modulo ? e come si fa ad importarlo?

oppure esiste un’altro modo per emettere dei Beeps ?

per ora silenzioso , vi saluto

franco

Ciao Franco,
in RhinoScript c’è il comando Rhino.MessageBeep.
La libreria Winsound credo sia integrata in Python per windows
https://docs.python.org/2/library/winsound.html

Ciao Lucio,

grazie per il Rhino.MessageBeep. pero’ ho bisogno di poter avere dei suoni variati.
Questa winsound, che pare vada molto bene, e’ integrata nei pacchetti python , ma non nel nostro ironpython di rhino.
Forse c’e’ un modo di accedere ai suoni e beeps del framework .net ? penso di di si , dato che il ns python e’ “iron”. ma non so come si fa.
qualche idea?

ciao
franco

ciao Lucio,

vedo che rhinoscriptsyntax .MessageBeep non e’ implementatp in Python, mentre l’uso di Rhino.MessageBeep mi da errore:

ecco lo script:

import rhinoscriptsyntax as rs
import Rhino
numero = rs.GetReal(“numero?”)
if numero > 0:
Rhino.MessageBeep() # con e senza () il risultato non cambia

Ecco il risultato:
Message: attribute ‘MessageBeep’ of ‘namespace#’ object is read-only

Se esploro la classe Rhino con dir, non trovo nessun ‘MessageSpeed’.

puoi fare un piccolo script di esempio?
grazie
ciao
Franco

Purtroppo non sono scriptatore in python e quindi non ho la conoscenza approfondita per poterti dare una soluzione certa.
Non so se installando Python il modulo winsound diventa disponibile anche per IronPython.
Ci vorrebbe un consiglio da @emilio o @vittorio

Mi spiace, ieri ho dato un’occhiata in fretta, ma nisba …
Purtroppo sono giu’ di energie ( tosse ) per cui la sera a casa tendo piu’ a sdraiarmi sul divano che a smanettare …:unamused:
Magari nel week-end ci riprovo :slight_smile:

P.S.
Credo che Vittorio sia in Spagna per i plug-in … magari puo’ chiedere direttamente …:smiley:

http://ironpython.net/blog/2012/07/07/whats-new-in-ironpython-273.html

https://docs.python.org/3/library/winsound.html

qui parlano che c’è il modulo per iron python se non mi sbaglio.
Prova a dare una sbirciata.

Ecco, arriva il superpaolo e ci mette una pezza lui!! :wink:
Brào! :+1:

grazie:

ho dato un ‘occhiata , ma non mi aiuta.
C’e modo di installare il 2.73 al posto dell’ironpython fornito con rh5 con la certezza che funzioni?
in alternativa c’e modo di procurarsi questa lib winsound ? Dove? E dove la si memorizza affinche’ py la trovi?

ciao franco

Ciao

Ho trovato questo:

import System

System.Media.SystemSounds.Beep.Play()

… ma qui l’effetto non e’ gran che …

Ciao Emilio:

col tuo contributo fin’ora sono arrivato fin qu ( indenta lo script , per favore)i:

import rhinoscriptsyntax as rs
import os
import System

n = rs.GetReal(“input n”)
if n <0 :
beep = lambda x: os.system(“echo -n ‘\a’;sleep 0.05;” * x)
beep(3)
elif n >= 0 :
System.Media.SystemSounds.Beep.Play()

sembra che anche
print ("\a") e print("\007") con la lib ‘sys’ riescano a fare un beep.

Io ho provato, sono riuscito un paio di volte , ma non sono riuscito ad ottenerlo con costanza.

in teoria si dovrebbe accedere al framework di windows ( e’ pur sempre ironPython) e prendere i suoni di sistema , ma non so come si fa.

il python di rhino5 non ha questa maledetta libreria ‘winsound’ . E’ compresa nella versione 2.73 , che e’ successiva.

Non riesco a capire se questa libreria puo’ essere scaricata da internet ed installata : e nessuno ha una risposta.

mi sembra impossibile che si possano fare un mucchio di cose complesse con Py e per una banalita’ come un beep non ci sia una soluzione semplice…

vedremo.
ciao , grazie
franco

Ciao Emilio,

ho visto vhe esiste anche :
System.Media.SystemSounds.Asterisk.Play()

cosi abbiamo tre tipi di beep .

ciao

Ciao Franco

I suoni dovrebbero essere 5 (ma non ho provato … ) :

https://msdn.microsoft.com/en-us/library/system.media.systemsounds(v=vs.110).aspx

Ciao

funzionano tutti , tranne “Question”, ma forse dipende di miei settaggi windows.
grazie
ciao
franco

In effetti l’impressione (almeno per gli umili scriptomani che non hanno le conoscenze dei geeks RMA) e’ che uscire dal seminato con IronPython sia da suicidio …

Cercando info sul beep avevo trovato la libreria .NET NAudio, con un bell’esempio in C# da copiare.

( http://mark-dot-net.blogspot.it/2009/10/playback-of-sine-wave-in-naudio.html )

Beh, c’e’ da scrivere una classe derivata che ridefinisce un metodo purtroppo overloaded …
in IronPython non ci sono riuscito … per cui nisba !

OK, e’ certo un mio limite non riuscire a fare certe cose, pero’ …
Secondo me dovrebbero abilitare gli script per Rhino anche in C#, come in Grasshopper, cosi’ usando librerie .NET non vengono fuori i solito problemi con i tipi di dati e gli overload … visto che per certe cose siamo costretti a usare librerie .NET …

A meno che la cosa sia possibile … io non ho mai sentito niente a riguardo.

Magari dovremmo provare a eseguire i beep in GH … :smirk:

Ciao !