0
0

Awesome! I think I’m finally going to play around with porting my engine’s audio API from FMod to FMod Ex. This version looks like it’s got everything I need, and since you’re almost at beta I don’t think I need to worry about too many breaking changes… :)

  • You must to post comments
0
0

I’m getting quite a bit of popping as channels switch between virtualized and real. Is there a way to limit this? It also happens with the virtualvoices example.

  • You must to post comments
0
0

Below are the items we talked about at GDC:

1) virtualize/unvirtualize event callback flag
2) sound groups for volume control
3) no delay queuing of new sound to play at end of current one (I think you called this sentencing?)

  • You must to post comments
0
0

Ok, when I first start virtualvoices.exe it starts off really loud, then you hear a pop and it gets very quiet. If I drag to the right I get a loud pop, then it gets quiet again. It also sometimes locks up if I switch to a different application and back. It doesn’t always do this, it seems to depend on the random placement of the sources when run.

  • You must to post comments
0
0

[quote="VOR":nhymaa40]3) no delay queuing of new sound to play at end of current one (I think you called this sentencing?)[/quote:nhymaa40]
I’d be very interested in this one too!

  • You must to post comments
0
0

[quote="CliffCawley":1sa3pn8o]I’ve tried playing an Audio CD with the software flag so that I can get viz to work with it as well, however I don’t hear anything.

If i set it to Hardware then i can hear the music, but the viz doesn’t work.

Will viz support both hardware and software mode? If not, will you be able to play Audio Cd’s through Software mode?

Cliff :)[/quote:1sa3pn8o]

Well don’t I feel like a tool. The allocation of the channels at the start (i.e. 1000 hardward and 0 software) basically set me up for the fall :(

The thing that misslead me is that the sound appeared to still be playing, i.e the time was counting up, and everything seemed normal.

I did some further tests and found out that if you specify hardware mode, and you don’t allocate any hardware channels, that FMOD will fail out gracefully, informing you there was a channel allocation error. However if you do the same with Software mode, it will still appear to be playing the sound, just with no audio. (I tested this with both playSound and playStream)

Perhaps this is a bit misleading? Why does software still give feedback about what it is playing, yet you just don’t hear sound, when hardware mode fails ?

Cliff :)

  • You must to post comments
0
0

I’ve been going over the new geometry API and I’ve got some suggestions which would make it more useful.

I’d like to have an enable state on FMOD_GEOMETRY so I don’t have to delete and recreate them to get the same functionalty. A way to save an FMOD_GEOMETRY and reload it would also be nice to prebuild them in our art tools.

We’ve also got a very large coordinate range so the world size is huge. As a result we don’t have one coordinate system with a fixed origin. To get sufficient accuracy I have to move the origin around with the player so most sound positions are relative. This means I’ll have to call FMOD_Geometry_SetPosition frequently on all FMOD_GEOMETRY objects. How expensive is this? Could you provide an offset vector to apply to your raycasting instead of the application having to move all the objects around?

  • You must to post comments
0
0

[quote:3eud7t8b]Well don’t I feel like a tool. ๐Ÿ˜ฎ [/quote:3eud7t8b]

Uh, ok… which one in particular? A hammer? A sabersaw, perhaps?

Sorry, I couldn’t resist ๐Ÿ˜‰

  • You must to post comments
0
0

The fmod 3 VB files had a few extra functions in them to help VB users use some aspects of the fmod API that you couldn’t otherwise use.

In particular I use the GetStringFromPointer(), and through that the ConvCStringToVBString() Windows API declaration.

It might be useful if some of these were added back in to save VB users trying to solve these problems for themselves. ๐Ÿ˜€

Thanks!

  • You must to post comments
0
0

[quote="brett":2tsppjji]
what do you mean ‘don’t allocate any hardware channels’? The user doesn’t allocate hardware channels, or do you mean set the maxhardware channel count to 0 before System::init?

What should happen is if there are no hardware channels, fmod falls back to software.
If there are no software channels, well this is up to debate, but currently fmod virtualizes channels when you run out of real channels.
Ie if you have 8 software voices, and you try and play 9, one of them becomes ‘virtual’ and is updated silently until a real channel becomes free.

This makes sense, but i could probably change the behaviour to return an error if 0 software voices was specified in System::init.
At the moment it treats it like the 9 on 8 chase. In this case it would be 9 on 0, so 9 voices would be virtual.
Thats why they ‘seem’ to be playing still.[/quote:2tsppjji]

Ok cool, I was just making sure it wasn’t a bug, but now that i know the reasoning behind it, it makes sense ๐Ÿ˜‰

  • You must to post comments
0
0

That’d be good Brett. :) It’s not a big deal, just makes things a bit simpler for VB people coming to fmod for the first time.

  • You must to post comments
0
0

When can we see some Delphi examples? Still having trouble getting with the FMOD_CREATESOUNDEXINFO used in FMOD_System_CreateSound.

gr. Harold

  • You must to post comments
0
0

Hey brett,

Not sure if this is something or not, or if i just don’t understand what you have done, but:

Looking at the Dsppluginviewer example, main.cpp code, i noticed something interesting:

On Line 290, you are looping through all the available channels
[code:3drci01r]for (channel = 0; channel < numchannels; channel++)[/code:3drci01r]

However you don’t seem to use the ‘channel’ variable for anything within the for loop.

I did notice that on line 292 (the first statement of the for loop), you say
[code:3drci01r]gSystem->getWaveData(OscBuffer, GRAPHICWINDOW_WIDTH, 0);[/code:3drci01r]

Just wondering if you mean that 0 (which is a channeloffset), is supposed to be the channel variable?

(I couldn’t find getWaveData in the docs at all to confirm you meant offset into number of channels or offset into a channel)

Cliff :)

  • You must to post comments
0
0

Nope, sice it expects a VAR parameter, you can’t just supply a NULL value.

I’ve just figured out how to get it to work, you need to supply an emptied structure :

[code:10tem1vs] exInfo.cbsize := SizeOf( exInfo );
exInfo.fileoffset := 0;
exInfo.filelength := 0;
exInfo.numchannels := 0;
exInfo.defaultfrequency := 0;
exInfo.format := FMOD_SOUND_FORMAT_NONE;
exInfo.initialsubsound := 0;
exInfo.numsubsounds := 0;
exInfo.inclusionlist := 0;
exInfo.inclusionlistnum := 0;
exInfo.pcmreadcallback := nil;
exInfo.pcmseekcallback := nil;
exInfo.dlsname := 0;
exInfo.maxpolyphony := 0;
[/code:10tem1vs]

and then it works..

Ok, back to developing.[code:10tem1vs][/code:10tem1vs]

  • You must to post comments
0
0

[quote:2rx72izm]Geometry::setActive and Geometry::getActive is a good idea and shouldnt be too hard to implement.[/quote:2rx72izm]

Exactly what I wanted.

[quote:2rx72izm]I’ll look into this. We might just do something like have a way to get a pointer to the raw data, and a length in bytes, and you can save it or copy it out yourself in whatever fashion you like.

Loading could just be System::createGeometryFromData or something.
[/quote:2rx72izm]

That works for me.

[quote:2rx72izm]Moving objects isnt expensive, because objects have simple bounding box tests when they are checked against. The ‘expensive’ bit is the ray/poly testing inside the objects which is optimized via an octtree type system which is the same if it is moving or static.

What sort of things are your objects? I would assume for audio they are just boxes, with not much detail?[/quote:2rx72izm]

I’m talking about potentially moving every object each frame so I wanted to know if you recalculated your spatial datastructures each time anything moved which could be very slow. I’m moving everything by the same offset each time so there isn’t a need to recalc anything, just apply an offset to position.

I’m adding support to our tools to add extra brushes to the levels as sound blockers to be simpler than using the real geometry, but the level builders want to use the structural brushes instead… this could be a lot of polygons :(

Also, outdoors I’m playing with simplifying the terrain around the player and add sound blocker objects for building walls.

I’ve already got very efficient raycasting for my scenes… is there any way you could just let me set a callback function for you to call into our application to do the cast which just returns the audio properties along with position of intersection, distance, normal given a ray origin and direction plus max distance to check?

  • You must to post comments
0
0

Yes. Null (nil) is not accepted.

You can do it even more elegantly and without the need to set every value using:

ZeroMemory(@exinfo,SizeOf(exinfo));
exinfo.cbsize:=SIZEOF(exinfo);

  • You must to post comments
0
0

I am trying to get my visualisation for my application working, however I am having difficulties getting getWaveData to return anything.

I have seen what you do in DSPPluginViewer and have attempted to replicate it.

So far, i can’t get getWaveData to return anything in the wavearray object.

I’ve even completely stripped out everything from the example down to bare minimum just to see if i could break it, but it still returns values in the wavearray. I even converted the project to not using the plugin system (fmodex.dll instead of fmodexp.dll) and ripped out all the plugin stuff, and it still worked!!)

If i use this function in my application, or even in the playstream application, i can’t get any values. I can only see getWaveData work correctly in the DSPPluginViewer example and I have no idea why.

To test in playstream, I added
[code:10ne27jc] static float OscBuffer[256];
system->getWaveData(OscBuffer, 256, 0);[/code:10ne27jc]
just before the sleep statement, and then set a breakpoint on the sleep statement, when i heard the song playing.

No matter what i do, the entire float array seems to be filled with nothing, it never gets updated by that getWaveData call.

Brett, do you have any tips on what to do, is there something special i am not doing?

Cliff.

  • You must to post comments
0
0

I’ve had identical problems under visual basic.

In fact I created a seperate function under VB for when I didn’t want to set any CREATESOUNDEXINFO parameters:
[code:3ceiny0c]Public Function FMOD_System_CreateSoundSimple(ByVal System As Long, ByVal name_or_data As String, ByVal mode As FMOD_MODE, ByRef sound As Long) As FMOD_RESULT
Dim exinfo As FMOD_CREATESOUNDEXINFO
FMOD_System_CreateSoundSimple = FMOD_System_CreateSound(System, name_or_data, mode, exinfo, sound)
End Function[/code:3ceiny0c]
Some googling found that if the exinfo parameter to FMOD_System_CreateSound was defined “as Any” instead of “as FMODSOUNDEXINFO” you could pass null as a parameter. Unfortunately that results in a crash for me at present. I’m not sure if the crash is VB’s or fmod’s fault but it’s easily reproducable.

  • You must to post comments
0
0

[quote="brett":248aiw89]
It should just work, have you supplied FMOD_SOFTWARE when creating your sounds?[/quote:248aiw89]

Wow. It’s amazing what a little flag can do ๐Ÿ˜€

I never realized that it wouldn’t work in hardware mode! Thanks for the tip, it’s now working correctly ๐Ÿ˜‰

Cliff :)

  • You must to post comments
0
0

really great release!!!
๐Ÿ˜€

i modified my preliminary mp3 player to work with the new fmod ex and it is much easier as with bass or fmod…
the new features are really incredible…

looking forward to the beta ๐Ÿ˜€
(although i didn’t noticed any bugs)

greets,
stalnation

  • You must to post comments
0
0

I’ve tried playing an Audio CD with the software flag so that I can get viz to work with it as well, however I don’t hear anything.

If i set it to Hardware then i can hear the music, but the viz doesn’t work.

Will viz support both hardware and software mode? If not, will you be able to play Audio Cd’s through Software mode?

Cliff :)

  • You must to post comments
Showing 20 results
Your Answer

Please first to submit.