gpt4 book ai didi

audio - 如何在 Racket/gui 中重复播放歌曲?

转载 作者:行者123 更新时间:2023-12-02 23:11:30 25 4
gpt4 key购买 nike

我正在使用 Racket 制作幻灯片,并希望在幻灯片后面循环播放一首短歌。我目前正在使用 (play-sound)但是 Racket 在歌曲结束时因段错误而崩溃,总是在不同的幻灯片上。如果我在没有声音代码的情况下运行节目,它不会出现段错误。

我认为歌曲结尾导致 Racket /gui崩溃,循环可能会阻止这种情况。在节目的主要功能中播放歌曲

(define (run)
(play-sound "path" #t)
(slide (...)
(run))

使歌曲连续中断,仅播放前两秒左右,然后重复。我现在在主要功能之外有播放声音线,但它确实在最后崩溃,有时在最后。我尝试增加 DrRacket 的内存,但没有帮助。任何建议表示赞赏。

最佳答案

您可能对 RSound 包感兴趣(参见 http://pkgs.racket-lang.org)。与您当前的方法相比,此软件包既有优点也有缺点。最明显的缺点是它需要您将歌曲转换为 WAV。这是一些代码:

#lang racket

(require rsound)

(define ishmael (rs-read "/Users/clements/Desktop/call-me-ishmael.wav"))

(define LEAD-TIME (* 1/10 44100))

(define (play-forever sound)
(define p (make-pstream))
(define len (rs-frames sound))
(let loop ([t 0])
(pstream-queue p sound (+ t LEAD-TIME))
(define next-t (+ t len))
(sleep (* 1/44100 (- next-t (pstream-current-frame p))))
(loop next-t)))

(play-forever ishmael)

关于audio - 如何在 Racket/gui 中重复播放歌曲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com