Sida 1 av 1

Python - spela ljud - hur?

Postat: 1 januari 2026, 15:21:19
av Icecap
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?

Re: Python - spela ljud - hur?

Postat: 1 januari 2026, 17:20:26
av 4kTRB
Om du väljer Java så går det bra. Men borde väl finnas i Phyton också?

Re: Python - spela ljud - hur?

Postat: 1 januari 2026, 18:00:14
av Icecap
Java är inget alternativ.

Re: Python - spela ljud - hur?

Postat: 1 januari 2026, 18:17:31
av rvl
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,,?

Re: Python - spela ljud - hur?

Postat: 1 januari 2026, 18:36:35
av Icecap
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?

Postat: 1 januari 2026, 18:59:18
av nifelheim
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 :)

Re: Python - spela ljud - hur?

Postat: 2 januari 2026, 12:57:41
av Icecap
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.

Re: Python - spela ljud - hur?

Postat: 2 januari 2026, 13:54:01
av LarryXz
Kan detta vara något?
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?

Postat: 2 januari 2026, 13:57:11
av Icecap
Hnnn... det verkar vara ett enklare sätt. Tack.

Testade det och jag är nu i mål.