OS X 上的 Haskell 音频输出?

2024-03-16

我希望能够从 Haskell 输出音频。我目前在 OS X (Snow Leopard) 上使用 GHC 6.10。我尝试过构建 jack 库(使用 JackOSX)和 PortAudio 库,但它们似乎都没有效果。有没有一种相对简单的方法可以在 Mac 上从 Haskell 程序进行实时音频输出?

编辑:清晰度


我已经成功地使用了 PortAudio。

我从我的玩具程序中摘录了一些内容,制作了一个非常简单的“echo”示例,如下所示:

(带着耳机运行。这是从麦克风到扬声器的反馈回路,可能会变成很响经过几轮反馈后)

import Control.Monad (forever)
import Data.Int (Int16)
import Foreign.Ptr (nullPtr)
import Sound.PortAudio

initPortAudio :: Int -> IO (PaStream Int16)
initPortAudio blockSize = do
  Right NoError <- initialize
  Just micDevIdx <- getDefaultInputDevice
  Just spkDevIdx <- getDefaultOutputDevice
  Right paStream <-
    openStream
    (Just (StreamParameters micDevIdx 1 PaInt16 0.1 nullPtr))
    (Just (StreamParameters spkDevIdx 1 PaInt16 0.1 nullPtr))
    44100 blockSize
    :: IO (Either String (PaStream Int16))
  Right NoError <- startStream paStream
  let zeroBlock = replicate blockSize [0]
  Right NoError <- writeStream paStream zeroBlock blockSize
  return paStream

main :: IO ()
main = do
  paStream <- initPortAudio blockSize
  forever $ do
    Right numSampsAvail <- getStreamReadAvailable paStream
    Right curSamps <- readStream paStream 1 numSampsAvail
    Right NoError <- writeStream paStream curSamps numSampsAvail
    return ()
  where
    blockSize = 0x800

在 Leopard 中与 GHC 6.10.4 一起工作。

我自己的玩具程序实际上只使用音频输入,并且它向音频输出输出零(没有这样做 PortAudio 抱怨的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OS X 上的 Haskell 音频输出? 的相关文章

  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 下载Xcode? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我刚刚升级到 OS X Mavericks 我很高兴能够使用所有新的 Mavericks 技术 我只有
  • 约束包如何工作?

    背后的想法数据 约束 Forall http hackage haskell org packages archive constraints 0 3 2 doc html src Data Constraint Forall html据我
  • 使用到达时间差对信号进行三边测量

    我在寻找或实现寻找信号源的算法时遇到一些麻烦 我的工作目标是找到声音发射器的位置 为了实现这一点 我使用了三个麦克风 我正在使用的技术是多点定位这是基于到达时间差 The 到达时间差使用发现每个麦克风之间互相关接收到的信号 我已经实现了算法
  • 错误:执行 gem 时... (Gem::FilePermissionError)

    我检查了所有其他类似的答案 没有一个与我的完全一样 这些解决方案也不适合我 gem environment and sudo gem environment给出相同的结果 RubyGems Environment RUBYGEMS VERS
  • 更改 Android 中的媒体音量?

    我可以更改媒体音量吗 如何 到目前为止我用过这个 setVolumeControlStream AudioManager STREAM MUSIC 但有一个搜索栏并且想要更改媒体音量 而不是铃声音量 那么有人可以告诉我如何更改媒体音量onC
  • xcode 4 垃圾收集已删除?

    我正在学习 Xcode 和 Objective C 但是我正在阅读的书使用的是旧版本 3 2 的 Xcode 其中一章完全致力于内存和泄漏 说我需要通过 项目设置 gt 构建 打开垃圾收集 但是 我找不到垃圾收集设置 它已被删除还是我只是错
  • 使用 Swift(使用 SwiftJWT)和 REST API 连接到 Apple Store Connect - 失败并出现 401

    我正在尝试通过他们的 REST API 连接到 Apple Store Connect 虽然这在几天前有效 但我无法弄清楚为什么它停止工作 现在我无法通过身份验证 即我发出的服务器响应的每个请求都是 401 我是否遗漏了什么 我做什么 生成
  • 如何让 JavaScript 发出蜂鸣声?

    我希望我的网页在用户超出我的最大字符限制时发出蜂鸣声
  • 使用不同的苹果帐户更新 XCODE

    我的操作系统是 MAC 10 7 3 xcode 4 3 1 使用不同的 apple id 安装 因为我的 macbook pro 以前被我的朋友使用过 现在 当我尝试将 Xcode 升级到 4 3 2 时 它会询问我朋友帐户的凭据 不幸的
  • Haskell 处理负参数

    尝试对两个值求和 其中只有一个为负值 例如 1 and 2 soma Float gt Float gt Float soma x1 x2 x1 x2 结果出现错误 为什么
  • 使用 VBScript 切换当前活动声音设备?

    我想在连接到我的计算机 Windows 7 32 位 的两个音频设备之间切换 我看了一下question https stackoverflow com questions 35709 change active sound card on
  • NSView 鼠标跟踪

    我在 Mac OS X 上遇到了 Cocoa NSView 的奇怪行为 我在 NSView 容器中有一个自定义 NSView 这个自定义 NSView 跟踪鼠标移动 点击 并有一个工具提示 当我在所描述的视图上方添加 NSView 时 即使
  • 使用 Google Translate API 获取单词的发音

    我正在尝试将法语单词的发音保存到 wav 或 mp3 文件中 我想知道 Google Translate API 上是否有任何地方 因为它有发音功能 可以让我实现这个目标 其他库也可以工作 自从提出这个问题以来 从谷歌翻译中 抓取 MP3
  • 在 iPhone 上下载、保存和播放 mp3

    我想从某个网站下载 mp3 文件 将其保存到我的 CoreData 模型 AudioMp3 中 然后播放 下面的函数可以工作 但首先 效率低下 因为它必须首先将 mp3 保存到文件 其次 它在接下来的调用次数中重复播放相同的 mp3 我认为
  • 函数式语言中的部分求值和函数内联有什么区别?

    我知道 函数内联就是用函数定义代替函数调用 部分评估是在编译时评估程序的已知 静态 部分 在 C 等命令式语言中 两者之间存在区别 其中运算符与函数不同 但是 在像 Haskell 这样的函数式语言 其中运算符也是函数 中 两者之间有什么区
  • 如何让位置音频在 SceneKit 中工作?

    我在使位置音频在 SceneKit 中工作时遇到问题 从 Xcode 生成的 SceneKit 游戏模板开始 我将以下代码添加到handleTap 方法的末尾 let ship scnView scene rootNode childNod
  • 是否可以通过 Android 应用程序来录音?

    我是一名开发人员 希望创建一个 Android 应用程序来记录电话 这是出于我个人的需要 为了我自己的目的和记录而记录电话 是否有可能做到这一点 是否可以访问麦克风以及通过扬声器发出的声音 我对 Android 开发有点陌生 所以请耐心等待
  • 如何使用foldr为列表创建显示实例?

    我想为我的数据类型 我的列表 编写自己的显示实例 到目前为止 我的方法是有效的 但我总是在末尾有一个逗号 我已经尝试用最后一个元素启动折叠并将其从列表中删除 但它很麻烦而且不起作用 有没有更简单的方法来获得正确的解决方案 实际 1 2 3

随机推荐

  • Java 8 中的方法参考

    public class Car private int maxSpeed public Car int maxSpeed this maxSpeed maxSpeed public int getMaxSpeed return maxSp
  • WPF C# 应用程序运行 2-3 次就会冻结我的整个计算机

    我在这个问题上放了很多信息 因为我不知道什么是相关的 Issue 我遇到一个问题 我正在开发的程序在运行时会冻结我的整个计算机并且不返回任何错误 我完全无法执行任何 CTRL ALT DEL 甚至不起作用的操作 该程序接受来自 Androi
  • 用 C++ 扩展 PHP?

    我有一个用 PHP 编写的性能密集型例程 我想将其移植到 C 以提高性能 有没有办法使用 C 编写插件或扩展或其他东西并从 PHP 与之交互 无需手动编辑实际的 PHP 源代码 As 莱姆斯 说 https stackoverflow co
  • 将 object_setInstanceVariable() 转换为 ARC?

    我希望转换一个实例 object setInstanceVariable self key UTF8String id addr 到 ARC 当我尝试使用 Xcode 内置 Objective C ARC 转换器时 出现以下错误 objec
  • 闭包和通用量化

    我一直在尝试研究如何在 Scala 中实现 Church encoded 数据类型 看起来它需要 n 级类型 因为你需要一个一流的const类型函数forAll a a gt forAll b b gt b 然而 我能够这样对对进行编码 i
  • 如何在 Visual Studio 中选择性地抑制标记验证?

    有时我发现能够抑制包含 HTML ASPX 等 的文件中的某些标记验证警告很有用 是否有相当于 pragma warning disable restore对于 HTML 周围也有类似的问题 参见this https stackoverfl
  • python - 将字符串中的日期与今天的日期进行比较

    客观的 将字符串中的日期与今天的日期进行比较 Issue 收到此错误 ValueError 未转换的数据仍然存在 12 00 00 问题 如何修复该错误 如何删除字符串的时间元素 Code from datetime import date
  • 无法使用 Dapper.NET 将文件流插入 SQL 文件表

    我在我的项目中使用 Dapper NET 作为 ORM 层 我正在尝试编写用于文件上传和下载的WebApis 但是我无法让它工作 我已经进行了足够的搜索来寻求帮助 但我找不到任何帮助 如果我只是使用 ADO NET 我可以使用 VarBin
  • python:pandas:如何根据另一列分组查找列中的最大值

    我想根据一列 SERVER 对数据帧进行分组 然后在其他列 JOB ID 中找到最大值 DF SERVER JOB ID LOG FILE TIME 0 abc 123 1 1 abc 123 dep2 1 123 log 2019 12
  • 如何将按钮与引导程序中的行/列的底部对齐?

    我有 4 列的行 每列都有一个标题和一些文本 大多数列都有相似数量的文本 向下按列中的按钮以匹配其余列 然而 一列的文本较少 并且按钮按下得不够远 有没有办法将按钮与行底部对齐 我想实现这一点并同时保持响应 因此当屏幕较小时它看起来像这样
  • 在可序列化的 C# 类上使用不带 XmlArray 的 XmlArrayItem 属性

    我想要以下格式的 XML
  • R:{ggplot2}:如何/可以独立调整facet_grid 图上的x 轴限制?

    我创建了一组由三个单变量密度组成的多面集合 比较 MCMC 方法 如下所示 目前 我不关心尾巴 那么如何将上图中的 x 轴限制更改为 c 3 1 c 2 0 c 10 8 这可能吗 我已经读过从2009年开始 但似乎不起作用 这被实施了吗
  • 如何在 vi/Vim 中的多行选择的开头插入文本

    In Vim http en wikipedia org wiki Vim 28text editor 29 如何在所选内容的每行开头插入字符 例如 我想通过前置来注释掉一段代码 在每一行的开头假设我的语言的注释系统不允许像这样的块注释 我
  • 如何统一改变任何对象的颜色?

    我想为创建的每个对象统一更改 C 中每个实例的颜色 我不希望使用相同预制件创建的前一个对象也仅更改其颜色 请帮忙 假设您实例化一个游戏对象 您可以通过简单地访问渲染和材质来分配 更改 颜色 gameObject GetComponent
  • 使用 jQuery 向左/向右滑动 div

    我在多个地方找到了以下代码来向左 向右滑动 hello hide slide direction left 1000 但是 我无法让它工作 这是我正在尝试的简约测试
  • 从组合中选择值时,在 Access 子表单数据表中突出显示该记录

    我有一个带有组合框和子表单的访问表单 子表单处于数据表模式 我想要的方式 我想做的是做一种搜索功能 当从组合框中选择某些内容时 我希望子窗体的数据表滚动到并突出显示匹配的记录 我不想过滤子表单 即删除所有不匹配的记录 谁能给我一些关于如何实
  • Laravel Mix Uncaught ReferenceError:$未定义

    我搜索了又搜索 但找不到我的问题的答案 这是我的问题 我正在尝试使用 Laravel Mix 全局加载 jQuery 我尝试修改各种文件 但似乎没有任何效果 我仍然收到 未定义 错误 这是我的代码 Bootstrap js window r
  • 如何以编程方式向下滑动 UITableView 以显示底层 UIRefreshControl

    当我以编程方式更新表时 如何显示 UIRefreshControl 使用 self refreshControl beginRefreshing 使微调器具有动画效果 但不会显示它 您必须手动更改contentOffset你的UITable
  • Tomcat 和 CATALINA_HOME

    我正在搞乱 Tomcat 服务器 我认为发生了一些奇怪的事情 我从 apache 网站下载了 Tomcat 7 不是 RPM 而是 tar gz 据我了解 应该设置 CATALINA HOME 和 CATALINA BASE 环境变量 但是
  • OS X 上的 Haskell 音频输出?

    我希望能够从 Haskell 输出音频 我目前在 OS X Snow Leopard 上使用 GHC 6 10 我尝试过构建 jack 库 使用 JackOSX 和 PortAudio 库 但它们似乎都没有效果 有没有一种相对简单的方法可以