I'm trying to load audio data using ExtAudioFileOpenURL() in the AudioToolbox, 
but seem to have a problem with the pointer gymnastics involved.

First I created a BridgeSuppport file using:

        gen_bridge_metadata -f AudioToolbox -o AudioToolbox.bridgesupport


I'm then using code like this:
    
    #load bridgesuppport file
    framework 'AudioToolbox'
    load_bridge_support_file 
"#{File.dirname(__FILE__)}/AudioToolbox.bridgesupport"

    #open audio file
    fileURL = NSURL.fileURLWithPath "#{File.dirname(__FILE__)}/Blow.aiff"
    fileRef = Pointer.new_with_type '^{OpaqueExtAudioFile}'
    raise "Can't open audio file" unless ExtAudioFileOpenURL(fileURL, 
fileRef)==0               #ok
    
    #read audio file
    ioNumberFramesPtr = Pointer.new_with_type 'I'
    ioNumberFramesPtr[0] = 800
    ioDataPtr = Pointer.new_with_type '^{AudioBufferList}'
    raise "Can't read audio file" unless ExtAudioFileRead(fileRef[0], 
ioNumberFramesPtr, ioDataPtr)==0          # error


but runnig this from xcode the last  line causes:

/Users/emiltin/Desktop/builds/Debug/Waveform.app/Contents/Resources/MyView.rb:101:in
 `awakeFromNib': unrecognized runtime type `{OpaqueExtAudioFile}' (TypeError)
        from 
/Users/emiltin/Desktop/builds/Debug/Waveform.app/Contents/Resources/rb_main.rb:11:in
 `<main>'



The problem seem to occur where I access fileRef[0]. Am I doing something wrong 
here?

Thanks,
Emil



From the generated BridgeSupport file:

<function name='ExtAudioFileOpenURL'>
<arg type='^{__CFURL=}'/>
<arg type='^^{OpaqueExtAudioFile}'/>
<retval type='l'/>
</function>
<function name='ExtAudioFileRead'>
<arg type='^{OpaqueExtAudioFile=}'/>
<arg type='^I'/>
<arg type='^{AudioBufferList=I[1{AudioBuffer=II^v}]}'/>
<retval type='l'/>
</function>

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to