• Advertisement
Sign in to follow this  

Unity openAL timing woes (my first post)

This topic is 4203 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello to all, This is my first post at devmaster.net and I'm glad to be part of the community. I am working on project using openGL(win32) and I was wanted to use openAL for the audio. My problem is with getting audio loops (.wav) to playback in sync. I've used GetClickCount() and timeGetTime() to attempt to keep track of the musical measures. Since I'm still early in the development stage of this project, I'm starting with 2 .wav files both at 80bpm. At 80bpm the time between each quarter note is 750ms (1000ms*60sec)/80bpm. My code is set to check if 750ms or more have expired and if so, I increment a "quarter note" variable. If I've got more than 4 quarter notes then I set the value to 1 and increment a "measure" variable. So it’s kind of like a metronome or measure/beat counter common in sequencing software. In my test, I count down 4 quarter notes and then start playing the first loop. On the first down note of the ninth measure, the second loop starts to play as well. So...I was doing this at work on my fat Dell XPS and hurray!!!! not only did it work, but my measure/beat counter (which is displayed on screen) seemed to be keeping "perfect" time. But when I got home to test it out on my 1.5ghz p4 boo!!!!!!!! it was starting to get out of sync by the 9th measure...which made me very very sad. As I said I've tried using both GetClickCount() and timeGetTime(). GetClickCount() worked on the Dell at work, but timeGetTime() did not, and of course neither worked at home. The only thing I have not tried is QueryPerformanceCounter which I have not figured out how to implement, and I have also seen many recommending to stay clear of it. Ultimately, I'd like to have 1 or 2 major loops (about 8 measures each) and then have maybe 10 or so other shorter sounds that would not loop but would play back in sync on user events. Seems reasonable, but its gonna sound pretty crappy if I have a bunch of 80bmp loops playing at the same time out of sync. I am hoping that someone can give me some advice on how to manage a timing system accurate enough so when a new sound plays it can do so on the next down beat or next measure. I'd be happy with that, I won’t even worry about eighth or sixteenth notes. Since I am still in early development, I would be open to options other than openAL if there are other technologies better suited. I hope that I'm not being over ambitious here. I'm optimistic that it can be done, but I have run out of ideas. Sorry for the book here. Thanks in advance dudeBot

Share this post

Link to post
Share on other sites
well...if all i get is a flame for pasting
the message I posted at devmaster and forgetting
to change it to gamedev, then maybe you are
indeed correct.

Share this post

Link to post
Share on other sites
Original post by dudeBot
well...if all i get is a flame for pasting
the message I posted at devmaster and forgetting
to change it to gamedev, then maybe you are
indeed correct.

It's just a joke, far from a flame. Chill out, dude. [cool]

Share this post

Link to post
Share on other sites
I can take a joke.
I though it was pretty funny that I did that
I guess if I had written the reponse
I would have put some kind of smile after the comment
to make sure that it was taken as a joke. :)

I guess I was more looking for some help with my post.
And I guess I got more busted than flamed.

Anyway, sorry if I over reacted, just looking for
some guidance.

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
  • Advertisement
  • Popular Tags

  • Advertisement
  • Popular Now

  • Similar Content

    • By 3dmodelerguy
      So I am building a turn based rogue-like (think CDDA). The game is going to have a very large map (up to 1000's x 1000's) however to alleviate most of that I obviously can't render everything so there will just be render a certain radius around the player and just load in and out data as the player moves.
      The next major system I am prototyping is making interactive tiles destructible and pretty much everything will be destructible besides basic landscape (cars, doors, windows, structures, etc. will be destructible)
      While I am only rendering a certain amount of tiles around the player, I want to keep the amount of colliders active at one time to be as small as possible for performance and currently the tilemap tool I use automatically merges colliders together.
      So instead of creating a separate colliders for each of these tiles and having the destructible behavior tied to that object (which my tilemap tool would allow me to do) I was thinking that I would store an array of all the X and Y locations for the interactive tilemap layer and let the tilemap manage the colliders. 
      Then when I hit a collider on the interactive tilemap layer, instead of of getting the behavior for how to deal with the destruction for that tile from that game object, I would pull it from the array I mentioned earlier based on the tile I attempt to interact with which I already have.
      Does this sound like a good approach? Any other recommendations would be welcomed.
    • By NDraskovic
      Hey guys,
      I have a really weird problem. I'm trying to get some data from a REST service. I'm using the following code:
      private void GetTheScores() { UnityWebRequest GetCommand = UnityWebRequest.Get(url); UnityWebRequestAsyncOperation operation = GetCommand.SendWebRequest(); if (!operation.webRequest.isNetworkError) { ResultsContainer rez = JsonUtility.FromJson<ResultsContainer>(operation.webRequest.downloadHandler.text); Debug.Log("Text: " + operation.webRequest.downloadHandler.text); } } The problem is that when I'm in Unity's editor, the request doesn't return anything (operation.webRequest.downloadHandler.text is empty, the Debug.Log command just prints "Text: "), but when I enter the debug mode and insert a breakpoint on that line, then it returns the text properly. Does anyone have an idea why is this happening?
      The real problem I'm trying to solve is that when I receive the text, I can't get the data from the JSON. The markup is really simple:
      [{"id":1,"name":"Player1"},{"id":2,"name":"Player2"}] and I have an object that should accept that data:
      [System.Serializable] public class ResultScript { public int id; public string name; } There is also a class that should accept the array of these objects (which the JSON is returning):
      [System.Serializable] public class ResultsContainer { public ResultScript[] results; } But when I run the code (in the debug mode, to get any result) I get an error: ArgumentException: JSON must represent an object type. I've googled it but none of the proposed solutions work for me.
      Also (regardless if I'm in the debug mode or not) when I try to do some string operations like removing or adding characters to the GET result, the functions return an empty string as a result
      Can you help me with any of these problems?
      Thank you
    • By nihitori
      The Emotional Music Vol. I pack focuses on beautiful and esoteric orchestral music, capable of creating truly emotive and intimate moods. It features detailed chamber strings, cello and piano as the main instruments, resulting in a subtle and elegant sound never before heard in video game royalty-free music assets.

      The pack includes 5 original tracks, as well as a total of 47 loops based on these tracks (long loops for simple use and short loops for custom / complex music layering).

      Unity Asset Store link: https://www.assetstore.unity3d.com/en/#!/content/107032
      Unreal Engine Marketplace link: https://www.unrealengine.com/marketplace/emotional-music-vol-i

      A 15 seconds preview of each main track is available on Soundcloud:
    • By RoKabium Games
      Another one of our new UI for #screenshotsaturday. This is the inventory screen for showing what animal fossils you have collected so far. #gamedev #indiedev #sama
    • By eldwin11929
      We're looking for programmers for our project.
      Our project is being made in Unity
      -Skills in Unity
      We're looking for programmers who can perform a variety of functions on our project.
      Project is a top-down hack-and-slash pvp dungeon-crawler like game. Game is entirely multiplayer based, using randomized dungeons, and a unique combat system with emphasis on gameplay.
      We have a GDD to work off of, and a Lead Programmer you would work under.
      Assignments may include:
      -Creating new scripts of varying degrees specific to the project (mostly server-side, but sometimes client-side)
      -Assembling already created monsters/characters with existing or non-existing code.
      -Creating VFX
      -Assembling already created environment models
      If interested, please contact: eldwin11929@yahoo.com
      This project is unpaid, but with royalties.
      Additional Project Info:
      Bassetune Reapers is a Player-verus-Player, competitive dungeon crawler. This basically takes on aspects of dungeon crawling, but with a more aggressive setting. Players will have the option to play as the "dungeon-crawlers" (called the 'Knights', or "Knight Class", in-game) or as the "dungeon" itself (literally called the 'Bosses', or "Boss Class", in-game). What this means is that players can choose to play as the people invading the dungeon, or as the dungeon-holders themselves.
      Key Features:
      -Intense, fast-paced combat
      -Multiple skills, weapons, and ways to play the game
      -Tons of different Bosses, Minibosses, creatures and traps to utilize throughout the dungeon
      -Multiple unique environments
      -Interesting, detailed lore behind both the game and world
      -Intricate RPG system
      -Ladder and ranking system
      -Lots of customization for both classes s of customization for both classes
  • Advertisement