Python - spela ljud - hur?
Python - spela ljud - hur?
Win 11 Pro, 64 bit.
Jag skulle gärna vilja spela upp en ton där jag väljer frekvens och tid (100 - 300 ms).
Kan bäst jämföra med att spela upp morsekod - för det är exakt vad jag vill.
Jag vill göra det vid att skapa en minnesbuffer med audiodata i när programet startas då jag inte vill blanda in hårddisken.
Pga. Win 11 fungerar winsound.Beep inte, det kommer varken fel eller ljud.
Det finns olika andra exempel med spela upp fil osv. men ingen med spela upp en ljudbuffer.
Tips?
Jag skulle gärna vilja spela upp en ton där jag väljer frekvens och tid (100 - 300 ms).
Kan bäst jämföra med att spela upp morsekod - för det är exakt vad jag vill.
Jag vill göra det vid att skapa en minnesbuffer med audiodata i när programet startas då jag inte vill blanda in hårddisken.
Pga. Win 11 fungerar winsound.Beep inte, det kommer varken fel eller ljud.
Det finns olika andra exempel med spela upp fil osv. men ingen med spela upp en ljudbuffer.
Tips?
Re: Python - spela ljud - hur?
Om du väljer Java så går det bra. Men borde väl finnas i Phyton också?
Re: Python - spela ljud - hur?
Testade winsound.Beep på w10 maskin, har ingen w11 ...än.
ETT beep verkar fungera, men med fler efter varann låter det inte som jag förväntade mig, men har inte läst dokumentationen ingående. Standardwindowsljud ger den ifrån sig ok, och varvar man med dessa mellan beepen så blev de bättre,,?
ETT beep verkar fungera, men med fler efter varann låter det inte som jag förväntade mig, men har inte läst dokumentationen ingående. Standardwindowsljud ger den ifrån sig ok, och varvar man med dessa mellan beepen så blev de bättre,,?
Re: Python - spela ljud - hur?
Har testat Beep - och hittat text där det anges att 'system-beep' inte fungerar f.o.m. Win 11.
Re: Python - spela ljud - hur?
kolla Win32 API , specifikt PlaySound med SND_MEMORY flaggan
Python är inte riktigt för mig,
med det finns väl pywin32 för att komma åt windows api från python
Python är inte riktigt för mig,
med det finns väl pywin32 för att komma åt windows api från python
Re: Python - spela ljud - hur?
Nifelheimer: Skal kolla på det. Låter som rätt väg att gå.
Jag gillar inte Pyton - men har gjort MYCKET med det och det får duga till 'Q&D'-lösningar. ('Q&D' = Quick & Dirty)
Jag ska fixa det siste med sökvägen till TPAPRO så jag kan få Borland C Builder 6 upp att köra igen, DÅ kan jag göra vettiga program.
Jag gillar inte Pyton - men har gjort MYCKET med det och det får duga till 'Q&D'-lösningar. ('Q&D' = Quick & Dirty)
Jag ska fixa det siste med sökvägen till TPAPRO så jag kan få Borland C Builder 6 upp att köra igen, DÅ kan jag göra vettiga program.
Re: Python - spela ljud - hur?
Kan detta vara något?
pip install sounddevice numpy
pip install sounddevice numpy
Kod: Markera allt
import numpy as np
import sounddevice as sd
# ======================
# Ljudinställningar
# ======================
SAMPLE_RATE = 44100
FREQ = 700 # Hz
VOLUME = 0.5
# ======================
# CW-funktioner
# ======================
def cw_tone(freq, duration_ms, volume=0.5):
n = int(SAMPLE_RATE * duration_ms / 1000)
t = np.arange(n) / SAMPLE_RATE
# Fyrkantsvåg (klassisk CW)
wave = np.sign(np.sin(2 * np.pi * freq * t))
# Envelope (5 ms attack/release)
env_len = int(SAMPLE_RATE * 0.005)
envelope = np.ones(n)
envelope[:env_len] = np.linspace(0, 1, env_len)
envelope[-env_len:] = np.linspace(1, 0, env_len)
return volume * wave * envelope
def silence(duration_ms):
return np.zeros(int(SAMPLE_RATE * duration_ms / 1000))
# ======================
# Morse-timing (WPM ≈ 12)
# ======================
DIT_MS = 100
DAH_MS = 3 * DIT_MS
GAP_MS = DIT_MS
LETTER_GAP_MS = 3 * DIT_MS
DIT = cw_tone(FREQ, DIT_MS, VOLUME)
DAH = cw_tone(FREQ, DAH_MS, VOLUME)
GAP = silence(GAP_MS)
LETTER_GAP = silence(LETTER_GAP_MS)
# ======================
# SOS (... --- ...)
# ======================
TAIL = silence(200) # 100 ms säkerhetsmarginal
sequence = np.concatenate([
DIT, GAP, DIT, GAP, DIT,
LETTER_GAP,
DAH, GAP, DAH, GAP, DAH,
LETTER_GAP,
DIT, GAP, DIT, GAP, DIT,
TAIL
])
# ======================
# Spela upp
# ======================
sd.play(sequence, SAMPLE_RATE)
sd.wait()Re: Python - spela ljud - hur?
Hnnn... det verkar vara ett enklare sätt. Tack.
Testade det och jag är nu i mål.
Testade det och jag är nu i mål.
