Хобрук: Ваш путь к мастерству в программировании

Воспроизведение синусоидального сигнала с использованием rsound

Я написал этот код после прочтения документации rsound в Racket:

#lang racket
(provide (all-defined-out))
(require rsound)


(define (sunet)
  (sine-wave 880))

(signal-play sunet)

(stop)

Я использовал функцию «синусоида» на частоте 880 Гц и сохранил ее в функцию «sunet». Затем я применил к нему функцию «воспроизведение сигнала», которая воспроизводит сигналы как звук. Я получил эту ошибку:

application: not a procedure;
 expected a procedure that can be applied to arguments
  given: #<network/s>
  arguments.:
   880
> 

Разве «синусоида» не является функцией, и разве она не принимает частоту в качестве аргумента?

18.01.2016

  • Может быть, было бы понятнее, если бы вы упомянули в заголовке, что это проблема именно с rsound? 18.01.2016
  • это отличный вопрос, и я рад, что вы нашли ответ (я думаю, что где-то в документации есть пример кода). Я также знаю, что это может запутать многих людей; если у вас есть идея для лучшего сообщения об ошибке, я хотел бы услышать это. 20.01.2016

Ответы:


1

Я прочитал больше документации по rsound и прочитал о сетях. Очевидно, вам нужно создать сеть с входным сигналом и выходным сигналом, который выходит на что-то вроде signal-play.

Это был бы код, который мне нужен вчера:

(define sunet
  (network ()
       [A5 <= sine-wave 880]
       [out = A5]))

(signal-play sunet)

(sleep 3)

(stop)

И с двумя сигналами для создания powerchord:

(define sunet
  (network ()
       [E2 <= sine-wave 82]
       [B2 <= sine-wave 123]
       [out = (+ E2 B2)]))
(signal-play sunet)
(sleep 3)
(stop)

Итак, я только что ответил на свой вопрос.

19.01.2016

2

Это было труднее, чем я ожидал. Оказывается, sine-wave — это не функция, а сеть. Далее будет воспроизводиться синусоида.

    #lang racket
    (require rsound)

    (define s (network ()
                 [a <= sine-wave 880]
                 [out = a]))
    (signal-play s)

Я не знаю, почему не работает следующая более простая программа:

    #lang racket
    (require rsound)

    (define s (network ()
                 [out = sine-wave 880]))
    (signal-play s)
20.01.2016
  • @джон-клементс? Есть идеи? 20.01.2016
  • Это работает, хотя: #lang racket (require rsound) (define s (network () [out <= sine-wave 880])) (signal-play s) 21.01.2016
  • Новые материалы

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..