标签: nssound

将NSSound转换为AVAudioPlayer

我有一些NSSound我想转换为AVAudioPlayer实例的对象.我有NSURLNSSound对象关联的文件路径,但原始文件可能不存在.这是我到目前为止:

class SoundObj: NSObject {
    var path: NSURL?
    var sound: NSSound?
    var player: AVAudioPlayer
}

let aSound = SoundObj()
aSound.path = NSURL(fileURLWithPath: "file:///path/to/sound.m4a")
aSound.sound = NSSound(contentsOfURL: aSound.path)!

do {
    try aSound.player = AVAudioPlayer(contentsOfURL: aSound.path)
} catch {
    // perhaps use AVAudioPlayer(data: ...)?
}
Run Code Online (Sandbox Code Playgroud)

如何将NSSound对象转换为AVAudioPlayer实例?

audio macos nssound avaudioplayer swift

11
推荐指数
1
解决办法
338
查看次数

在NSObject中玩NSSound(带有Objective-C的Mac App)

我正在制作一款需要播放音乐的游戏.为了使我的代码更易于管理,我想制作一个能够处理声音的NSObject(如淡入淡出,播放播放列表中的声音等).我有这个代码:

NSSound *music = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.filename ofType:self.fileExtention] byReference:NO];
[music play];
Run Code Online (Sandbox Code Playgroud)

当我将它放在AppDelegate.m文件中时,此代码可以工作,但是当我将它放在New NSObject类中时它不起作用.

NSObject类中的代码(名为Music):

- (void)playMusic:(NSString *)fileName ofType:(NSString *)type
{
    NSSound *music = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.filename ofType:self.fileExtention] byReference:NO];
    [music play];

    NSLog(@"Works!");
}
Run Code Online (Sandbox Code Playgroud)

我在AppDelegate.m中使用此代码调用该方法:

[[[Music alloc] init] playMusic:self.fileName ofType:self.extension];
Run Code Online (Sandbox Code Playgroud)

执行此操作时,它会记录"Works!" 这意味着代码被执行.

所以完全相同的代码在AppDelegate中工作,但在NSObject类中不起作用.有没有人知道是否可以在NSObject类中播放NSSound(如果不是,为什么?),如果是这样,如何编辑代码以使其有效?它会使我的代码看起来不那么混乱;)

cocoa objective-c nssound nsobject

6
推荐指数
1
解决办法
156
查看次数

如何淡化NSSound对象

我为我的Mac写了一个廉价而欢快的声板,我用NSSound播放各种声音:

-(void)play:(NSSound *)soundEffect:(BOOL)stopIfPlaying {
    BOOL wasPlaying = FALSE;

    if([nowPlaying isPlaying])  {
        [nowPlaying stop];
        wasPlaying = TRUE;
    }   

    if(soundEffect != nowPlaying)
    {
        [soundEffect play];
        nowPlaying = soundEffect;
    } else if(soundEffect == nowPlaying && ![nowPlaying isPlaying] && !wasPlaying) {
        [nowPlaying play];
    }
}
Run Code Online (Sandbox Code Playgroud)

而不是仅仅停止它,我希望它能在几秒钟内消失.

objective-c nssound

5
推荐指数
1
解决办法
933
查看次数

在Delphi XE2的Mac上有没有WAV声音播放?

是否有关于如何在Mac上使用Delphi XE2 FireMonkey构建的应用程序播放WAV文件的教程或示例?

我问,因为这段代码不起作用:

var
  //fWaves head and data is initialized and plays properly on Win through OpenAL
  fWaves: array of record 
    Head: TWAVHeaderEx;
    Data: array of byte;
  end;
  D: NSData;
  N: NSSound;
begin
  D := TNSData.Wrap(TNSData.Create.initWithBytes(@fWaves[0].Head, SizeOf(fWaves[0].Head) + fWaves[0].Head.DataSize));
  ShowMessage(IntToStr(D.length)); //--Length is correct
  N := TNSSound.Wrap(TNSSound.Create.initWithData(D));
  ShowMessage(FloatToStr(N.Duration)); //--Displays 0
  if N.play then
    ShowMessage('Yes')
  else
    ShowMessage('No'); //--Always returns NO
end;
Run Code Online (Sandbox Code Playgroud)

我正在从内存加载WAV文件头和数据,它可以与OpenAL一起使用.所以问题出在我的NSSound用法中.有谁能在Mac上提供Delphi XE2声音播放的一些工作示例?

delphi macos nssound delphi-xe2 firemonkey

5
推荐指数
1
解决办法
628
查看次数

如何在iOS中为按钮添加声音?

我想在按下按钮时发出声音.此外,还有不止一种声音.我正在使用Xcode 4.4.1和Storyboard.

在.h文件中

{
    IBOutlet UIButton *playSound;
}
Run Code Online (Sandbox Code Playgroud)

objective-c nssound ios

5
推荐指数
1
解决办法
1万
查看次数

声音选择器/系统声音列表

好的.我正在寻找一种简洁的方法来列出使用[NSSound soundNamed:]播放的系统声音 - 对我而言似乎API没有可用声音列表.

我还用谷歌搜索了这个,发现了一些相当古老且部分已被弃用的资源.如果应用程序应该有一个声音拾取器 - 什么是获得系统提供的声音列表的最佳方法?

macos xcode cocoa system-sounds nssound

4
推荐指数
1
解决办法
7573
查看次数

在iPhone应用程序中播放声音片段的最简单方法是什么?

我希望能够在iPhone OS应用程序中播放声音片段.我已经看到NSSoundAVFoundation的信息都是在iPhone OS设备上播放声音片段的方法,但我仍然不清楚这个主题并且可以使用一些帮助.不需要在实际代码中逐步拼出我,但是如果有人能给我一个关于我应该开始移动的大方向(即我应该关注哪些类)的提示我会填写在我自己的空白.那么,在iPhone应用程序中播放声音片段的最简单方法是什么?

iphone audio nssound avfoundation

3
推荐指数
2
解决办法
5512
查看次数

NSSound在iPhone上未声明?

sound = [[NSSound alloc] initWithContentsOfFile:@"staticbeam09.wav" byReference:YES];
Run Code Online (Sandbox Code Playgroud)

Apple文档中引用的代码。将其放在viewDidLoad中时出现错误。如果我放

NSSound *sound;
Run Code Online (Sandbox Code Playgroud)

在头文件中,在实现文件的顶部出现了specifier-qualifier错误。我必须做些什么才能使这项工作?我只是粘贴Apple文档中的代码-是否已弃用?谢谢你的帮助!

iphone xcode frameworks objective-c nssound

2
推荐指数
1
解决办法
2969
查看次数

如何在我的应用程序的Resources文件夹中播放mp3文件?

我正在制作一个可以在事件中播放声音的应用程序,但我无法弄清楚如何从应用程序的ressources文件夹中访问文件.

这是我正在做的事情:

NSSound *player = [[NSSound alloc] initWithContentsOfFile:@"Sound.mp3"] byReference:NO];
[player play];
Run Code Online (Sandbox Code Playgroud)

但它根本不起作用.如果我放一个完整长度的路径它会工作,但我需要另一种方式,因为有人可能会将我的应用程序放在Application文件夹以外的其他位置.

macos cocoa objective-c nssound

1
推荐指数
1
解决办法
5400
查看次数