Java-Gaming.org Hi !
Featured games (90)
games approved by the League of Dukes
Games in Showcase (682)
Games in Android Showcase (196)
games submitted by our members
Games in WIP (750)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
   Home   Help   Search   Login   Register   
  Show Posts
Pages: [1] 2 3 ... 45
1  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-07-20 09:16:05
If this code is useful to anyone, I can post it, but I want to handle the license and permissions stuff correctly.

Basic usage:
1  
    float[] audioFloats = OggVorbisToPCMFloats(URL oggUrl);

How do I know how many channels the audio stream is comprised of?

Maybe you could return float[][] or an actual POJO with some meta-data like sample-rate.

Transforming all samples into floats, only to have them converted into bytes/shorts again to play it seems a bit cumbersome. It may also be disadvantageous to be forced to decompress the entire file before you can play it. For long audio files this means significant decoding time and serious memory usage (especially due to the floats).

@Riven
Good points. I could see where that would make the code I just wrote more generally useful. It would not be hard to do if there is a use or request.

"How do I know how many channels..?" I have been assuming the programmer and the sound designer have an agreement to stick to a single format or set of formats. Audacity works great for converting formats. I've actually been prepping wildlife cues (owls, foxes, crows, woodpecker, wind-in-trees) for the last few hours. My last step is to convert to "CD-quality" wav, then turn that to ogg/vorbis.

As far as I can tell, OGG/Vorbis works with audio data in the form of normalized PCM floats. Conversion to shorts or bytes happens after the decompression. I intercept the normalized float data before these later stages, as normalized floats are also format I'm using for most of my audio work. So actually a lot of thrashing is avoided.

The audio mixer I wrote expects normalized PCM floats. All synth output, clip-data, processing, mixing that I do happens with normalized floats. The conversion to bytes only occurs if the "wrapper" (bridging the audio mixer output to the sound system input) requires it. Android allows normalized floats for audio output as an option. I'm hoping to work soon with @ziozio who may have already written code that allows normalized floats to output via OpenAL as part of a OggVorbis decoder he previously wrote. I suspect his code does convert to bytes, but puts off the conversion to the last possible moment.

There is a lot I don't know about memory management. I failed miserably earlier this evening when trying to read and understand Spasi's article on LWJGL's use of memory mgmt. Could use some coaching or recommended articles to get more background knowledge. I try to keep my learning on a need-to-know basis as otherwise there is no time for coding. But I really would like to know more about memory mgmt at this point.
2  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-07-20 03:59:56
Debugged and got working some code to take an .ogg file (ogg/vorbis) and turn the PCM contents into a float[] array. Am using the JOrbis library and based the code on two decoding examples (one a "tutorial") that come packaged with the library. It's not the most efficient, as I'm opening the file twice, once to get a length in frames for the target array, the other for the actual data extraction, and some changes I made in loop nesting may make it a couple microseconds slower than its true potential.

I'm unclear on which of the example authors need to be acknowledged. Use of the library itself requires a license, that is clear. The copied code is basically the setting up of the main variables and loops, and is very similar in both examples (two different authors, neither acknowledging the other). Their code is nearly identical except they name their variables differently. I vary by dropping all the code pertaining to converting the extracted normalized floats to bytes. (I am neither outputting bytes to System.out nor playing back the audio as the two examples do). I also alter the nesting of a couple inner loops to make it simpler to transfer the data channels into the target float[].

If this code is useful to anyone, I can post it, but I want to handle the license and permissions stuff correctly.

Basic usage:
1  
    float[] audioFloats = OggVorbisToPCMFloats(URL oggUrl);
3  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-07-14 21:15:15
Defined more tree types in vangard, including ancient pine and ancient oak... Chopping down ancient trees is bad karma.

I have added more plant products as well.

Pine trees make pine cones but I can't think of any practical uses for pine cones. I suppose you could gather lots of pine cones and sell them as firewood bundles.

I read that acorns are poisonous but can be converted into edible food by leaching the toxins out. The downside is they don't taste very nice but the vikings did eat them occasionally. I guess they are free food for the viking underclass.

Vikings loved hazelnuts so I had better add those tonight.

Hazelnuts? Doh. Sure, why not. (I momentarily got them confused with macadamia nuts and was wondering what the Vikings were doing trading with Hawaiians.)

Last night fell asleep after the beginning of what seemed to be a remarkably bad film: "The Norseman". Newfoundland scenes shot in Florida? Leader Lee Majors with a slightly Southern accent, everyone dressed in horned helmets with big ear muffs.

Native American Indian of CA used to "process" and eat acorns. Can read about them at various parks around here. Am surprised to hear Vikings did as well.
4  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-07-14 20:58:01
I thought I'd take "a day" to learn how to save and load XML files of settings for a Java app. I chose the theremin I wrote as the target for this. If it is to become a useful program, it should have the ability to allow one to save settings for the various types of sounds it can make, ranging from classic theremin to space ships or the industrial-echo-overdrive effects.

It turned into a three day job. (Could have been worse!) Unanticipated or partially anticipated sub tasks included: getting JavaFX MenuBars working, getting Swing's JFileChooser working (including dealing with suffixes, warnings for overwriting files) Swing JOptionPanes (seems easier to work with than JavaFX where you have to build your own, AFAIK), and doing a bit of cleanup of my code separating "model" from "presentation".

Success.
5  Game Development / Newbie & Debugging Questions / Re: getters and setters vs public vars on: 2016-07-11 00:36:37
The only exception I have to using setters and getters is when I am able to wholly separate some functionality into the mutable and immutable components. The intent is, in part, to help with concurrency issues. I got the idea from reading about functional programming. But that doesn't mean I'm implementing it correctly. In this case, the class with the variables only has variables and no functions whatsoever.
6  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-07-07 18:16:35
@Brynn Congrats!!
7  Discussions / Miscellaneous Topics / Re: MP3 Specification on: 2016-07-06 08:18:26
@ziozio I'm impressed you've been able to figure out ogg and other formats. I recall trying to figure out OGG/VORBIS several years ago and was unable to get any traction and gave up.

I just went to the wikipedia entry for MP3, and am seeing that the patents expire in 2017 in the USA, but have already expired in the European Union. I'm wondering if there are some European sites that have information, such as an academic site for New Music, like Stanford's CCRMA.

I tried doing a search at CCRMA for "MP3" and it looks like there have been talks and courses, but I didn't see any online documentation.
https://ccrma.stanford.edu/search/node/mp3

But I do think there is a big New Music site in Paris, IRCAM.
http://www.ircam.fr
Might find something poking around there, but it will probably be written in French.

I used to know how to get to lots of great tutorials at CCRMA, on digital music tech and math. The links I had are on a browser on an old PC that I rarely use now. Maybe they've made things harder for freeloaders, and want students and income for the information they teach. I remember working through sections that they had explaining the math behind e^i*PI = -1 and briefly being able to hold it in my head. I don't know if that stuff is still available from them.
8  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-07-03 23:45:14
Spent time on updating the AndroidOpenAL project, now updated the OpenAL Soft sources to 1.17.2. Today was a tough day, because I had failed to compile it since last four days, and my only successful compilation was a month ago with 1.12 version. Finally, I made it!

...

Is this an audio library?
Have you implemented a better performing method for streaming PCM than Android's AudioTrack?
9  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-06-30 18:16:12
Sunday/Tuesday worked out the kinks of converting a Yamaha DX7 patch called "CHROMA  5B" to Java. I want to use it in a game design I am currently working on. The interesting feature of this synth patch is that the shorter the amount of time before the release is triggered, the brighter the decay. In other words, when you play it on a keyboard by holding the key down, the tone color quickly becomes damped, but if you play super staccato (releasing very quickly) the tone color is quite bright, with qualities of a hammered metal string.

The last kink to work out was implementing "frequency scaling," so that the harmonic content of the higher frequency notes would balance with that of the lower notes. I hadn't yet added this to my synth as a general feature, and was worried it would be tricky. But it turned out to be easier than expected. A nice sounding roll off to the "modulation index" (a factor that determines the amplitude of the modulation) was achieved with a simple Math.log10(frequency) function.

Late Tuesday and most of Wednesday was spent working on getting a queue of sequences to run. I had previously gotten multiple instances of what I call PulseMotif to play in the "CircleSounds" demo, where multiple sequences loop concurrently and have their pan and volume altered by the position of circles on the screen. But I hadn't done the thing of having a new sequence start when another ends. The bigger goal is to have not only sequences possible, but real-time branching in the selection of which sequence to play next.

Anyway, I got a simple chain of three sequences to run smoothly yesterday. It is a bit clunky, but I think the key idea is a good one. Instead of focusing on various Sequence queueing/handling objects, I wrote a PulseMotifListener interface, and the player-code for the PulseMotif objects now sends out messages marking the beginning, looping and ending of a sequence to registered Listeners of that PulseMotif. (A similar thing happens with individual Notes played by my FM Synth implementation.) The testing code had an inner class that implemented PulseMotifListener, and it handled the removal of the finished sequence and the start of the next within the implementation of its pulseMotifDone() method. And it ran successfully, as far as I can tell.

Today, I plan to work out the logic where instead of a simple chain, I have a pool of options and state variables are used to select a sequence from the pool to chain when a given sequence ends. I'll try and get a demo of this up soon if it works.
10  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-06-26 02:38:38
There was a time when PHP had a reputation for hackability. Maybe its been addressed since and is fine now. I really don't know. But when I was looking into it, about 7 or 8 years  ago, it seemed like an awful lot of the code you had to write was explicitly protective measures such as counteracting code injection. Did that ever get fixed?
11  Discussions / Miscellaneous Topics / Re: Is it possible to get sued by Donald Trump if..... on: 2016-06-24 06:52:44
Ah, Reagan... If this is accurate, Trump following in his footsteps might be... Well, completely unsurprising.  Roll Eyes

Interestingly enough, there's an article like this with equally valid points for almost every president to ever run America. Lol

True enough.

Of the first point, though, I disagree with the author. The number of investigations is no longer a valid signifier of anything, except that someone wants to bring down a given target. The tactic of smear-by-investigation has been so overused that it is pretty much meaningless at this point. Actual indictments do count, though.
12  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-06-24 06:43:24
Been working on a few different ideas this last week or so. I already mentioned the forever non-repeating campfire SF/X.

1) got a "cluster-synth" abstract synth working with two synths based on it. I'm calling a cluster synth one where a collection of pitches are played as a single cluster, sharing their envelope and other components. The play command sends in a pitch array rather than a single pitch. Part of the benefit is that there is an efficiency in eliminating duplicate envelopes and other components for each contributing tone. It is for certain types of sounds that seem to work better as clusters than as single tones. One of the two is simply a collection of sine waves, the other a sort of deep whoosh, kind of hard to describe. When I get a chance I'll make a little demo gui with a way to make and save wav assets.

2) in the process of building this abstract synth, I was able to improve the abstract version of my more normal synths, and went back and revised a couple dozen existing synths.

3) got a "flibberillator" (flibberator?, flibbulator? -- my friend Ian had a term for the effect, I need to settle on its name) working. This takes some sounds and intermixes them instead of mixing them. We are talking about going back and forth between multiple sound sources in rapid succession. I don't know if this is a valid term, but I think of this sort of sound as a manifestation of a "glitch" aesthetic. Ian had remarked that the effect (when applied to multiple clusters of his sine waves), that it sounded like a computer thinking. (Ian Allen used a few examples on some of the cues he left on his account on SoundCloud: "Ian Allen") I hope to get this effect available to hear/generate via a simple gui too. The algo isn't generalized yet for any sound source; it is only working (first pass) via the abstract cluster synth.

4) back to trying to get a simple playback of the "Maggot Brain" (George Clinton) accompaniment going via my event system. There were a couple curious things to fix, as the "Event System" I wrote is still a bit complicated and I'm continuing to work out the kinks. This is a step towards being able to score a piece for real-time playback and towards making branching scores.

This next few weeks though, looking to spend some time on projects for a couple other members! Collaborating, once again. It has been a long time.
13  Discussions / Miscellaneous Topics / Re: What I did today on: 2016-06-16 23:31:02
Because you ask the player to make a choice, up front, about how good they think they are, at a game they've never played before, using criteria they don't yet know. And they cannot choose the right answer! They'll feel like they're missing out if they choose "pweez don't hurt me"; they'll moan vociferously but refuse to back down if they choose "kill me now!!"

Far better to just design a game at which everyone has fun and sort of creates the difficulty level of their own making, so to speak.

Cas Smiley

It occurred to me the other day that the good old pinball machine might be a nice model, when it comes to difficulty issues. There's enough variety and randomness that a novice can have fun, but room for skillful play such that an aficiondo will not be bored.

***

My WIDT: again, a task that I thought was going to take three hours took the better part of several days. I made an endless torch/fire, derived from a 5-second sample, and added it to the peacefulbrook "sound demo" jar.

In the process of working on it, discovered that several other things were broken and had to fix them, mostly pertaining to the synths and the event system.

I discovered an article describing how to output a stream of PCM data via OpenAL. LWJGL streaming sound with OpenAL. Am looking forward to digesting it. But there are several other things on the queue as well.
14  Games Center / WIP games, tools & toy projects / Re: Skullstone - a dungeon crawler game on: 2016-06-16 22:58:53
Quote
I think I'll stay with current solution, I have too many other things to code Wink

A totally sane response!

I did get a bit piqued, though, and added a "campfire" to the peacefulbrook sound scape jar, just to prove to myself the technique would work. It uses a 5-sec sample lifted and tweaked from a longer free SFX. I think it sounds pretty convincing as a non-repeating, endlessly varying fire. The torches in your hallways would be a bit different, but this should be close enough to extrapolate.

A couple things on the queue but hopefully before long I will attempt to build a LWJGL/OpenAL direct audio-streaming tool. It seems to me something like that could be a nice step forward for procedural audio on LWJGL-derived engines.
15  Games Center / WIP games, tools & toy projects / Re: Audio library demos on: 2016-06-16 22:40:34
I just added a newly revised peacefulbrook demo jar.

The main difference is that there is now a campfire. I wanted to show an example of a fire that would go on endlessly without looping. For example (with a bit of modification or a different sample): a torch on a wall in a 3D game.

The recording consists of 5 seconds lifted from a free sound effect, and processed a bit in Audacity. The effect could probably be just as effective with a couple fewer seconds in length, which would have shaved off several hundred KB. As it stands, the file is 2.7MB now, with just about all of it coming from the stream and the fire recording.

With more stuff happening at the same time, the volume controls take a bit more tweaking to get a nice mix. My wife thought the fire was a bit low, and when I turned it up, like the frogs were in the fire. So, consider bumping the fire up a tad, and putting the frogs more in the distance (lowering the volume).
16  Games Center / WIP games, tools & toy projects / Re: Skullstone - a dungeon crawler game on: 2016-06-15 02:49:48
Quote
@philfrei:
I don't know if I can output a PCM stream, to be honest my knowledge about audio is very little. The engine uses OpenAL for audio and all I'm doing is playing samples in proper location, environment etc.

I took a look at JMonkeyEngine, and as far as I can tell, it is probably using LWJGL for its audio (which implements OpenAL) but it could be using JOGL as an alternate way.

I found an article that looks like it might lead to making a way to hook in streaming audio. Whether this can be done while preserving the environments and 3D location functions, I don't know. I'm a bit backed up with tasks at the moment, but if I get the chance to make a wrapper and a perpetually changing torch-burning sound, would you be interested in testing it out?
17  Games Center / WIP games, tools & toy projects / Re: Vangard on: 2016-06-14 20:44:21
I have several working tools written for controlling ambient sound playback. If you send me a desired api for how you'd like to access them, I bet I can make a jar/library to your specs. Message me if you'd like to give it a try.
18  Java Game APIs & Engines / JavaFX / Re: JavaFX For Pixel Games on: 2016-06-02 05:21:53
Concerning the Plan B (reading the pixels) I found this tutorial, which makes use of PixelReader and PixelWriter:
http://docs.oracle.com/javafx/2/image_ops/jfxpub-image_ops.htm

It is not as easy as expanding the image and having it work automatically, but maybe will suffice. Going from a reader to a writer to make a 2X image or 3X image would only require going once through a pretty straightforward for loop to create the new version of the image.

It seems like there could be some other layers or levels where some type of smoothing is being applied, assuming you have set the smoothing to false. But maybe just making new images is cleaner anyway. IDK.

Neat that JavaFX works on Raspberry!
19  Java Game APIs & Engines / JavaFX / Re: JavaFX For Pixel Games on: 2016-06-02 01:14:29
Any chance of posting a screen shot of this effect? I don't recall seeing "pixilated" images like you describe before, and am wondering what this looks like.

As for alternate methods, I suppose it would involve working the raw data, which I know how to do with a BufferedImage. I haven't gotten into an image's pixel data with JavaFX yet, though.

There is a smooth property in ImageView that might pertain to this.
20  Discussions / Jobs and Resumes / Re: Efe Tozan - Full Time Composer For Your Games on: 2016-05-24 22:16:54
Very impressive!
21  Game Development / Newbie & Debugging Questions / Re: What library should I work with?(if any at all?) on: 2016-05-16 02:35:09
JavaFX in its current form is relatively new, so I think there are more than a few people here who are substantially invested in LibGDX, LWJGL, even Java2D that haven't truly given it a proper go. I was encouraged to try it anyway when princec, the original author of LWJGL, gave it a thumbs up as viable and interesting.

It supports a lot of special graphical effects, and it is definitely easier to learn and use than Java2D, as well as much more powerful in most regards. Unlike the earlier iteration of JavaFX, the code looks and reads like Java rather than like a separate language that has been tacked on. One of my discomforts with LibGDX has been that between its API (mostly good but not as deeply designed and polished as Java or JavaFX) and the difficulties of making OpenGL work, I found the learning curve to be steep.

JavaFX is not so great a choice if you want to make Android or iOS games, though. And there is not as much support, it seems, for game programmers, as of yet. Not a lot of tutorials made with game programming in mind.
22  Game Development / Newbie & Debugging Questions / Re: Sound on Debian Jessie Linux on: 2016-05-08 05:40:59
Try little-endian. I think it is more common. This is the format I always use and I've not had any troubles like you describe. My Linux is a different version though, as I use Ubuntu.
23  Game Development / Newbie & Debugging Questions / Re: Sound on Debian Jessie Linux on: 2016-04-26 02:46:16
Just to double check, because I'm not sure what you mean when you say you are using AWT's sound. AFAIK, there is no play() method for audio in the AWT library.

The main sound libraries for Java audio playback are contained in javax.sound.sampled. The output classes that should be already implemented and running on any system that runs Java are the Clip and the SourceDataLine. Are you trying to execute the play() method of a Clip?

What is the class of the "audio" variable you mentioned in your original post, as in "audio.play()"?
24  Game Development / Newbie & Debugging Questions / Re: Sound on Debian Jessie Linux on: 2016-04-24 02:43:50
Quote
  Most of the articles I've read have said to change a file and uncomment something, but the problem is that I do not have administrative access to even open these files, much less change them.

I don't know a lot about Linux, but isn't the deal for getting administrative access something like going to a control prompt (is the program named Terminal?) and typing "sudo" before the command that you want to execute? Of course, that assumes you know the admin password.
25  Games Center / WIP games, tools & toy projects / Re: Vangard on: 2016-04-24 02:38:54
I gave the program a go a few days ago. It took me a while to figure out what I was doing, and I still have questions. But overall, it was intriguing and seems like it must be working as designed.

The first time I tried it, I didn't have your summary instructions and really floundered. I didn't figure out that the center sprite was the one being controlled. I couldn't tell that anything was happening when the arrow keys were pressed, as there is a lot of movement going on at the same time. For example, hitting the up arrow (I now know) moves you "forward" but given that the AI or whatever might be pointing you in any direction, it is hard to pick out the right movement and infer the control. Or at least, it was for me. Also I expected the down arrow to allow backwards movements. And I mistakenly was expecting the keys to be left/right/up/down, not rotate/forward.

Second time, I had reviewed your instructions and I figured out a lot more. But was stumped by trying to pick an apple off of a tree. Third attempt, I realized that the interaction is via the menus that pop up, not clicks on the countryside depiction. I'm not sure how you find your hovel if you forget where it is. I guess, by giving control back to the AI and letting it go back to home?

Now, after having picked and sold a few apples, I am wondering about the character I was started with. As far as I can tell it sleeps at its hovel, then goes to the market and hangs out there doing ??, and then goes home and sleeps again. I was not able to observe its profession or get anywhere when trying to buy a shovel and go mining or farming. So, I remain puzzled as to how I might add value to whatever the AI is already doing for my character.

I guess the next step is to go watch several different characters, and learn what is going on that way.

I think the graphics are functioning quite well. I like them. I look forward to seeing how this neat project develops.
26  Java Game APIs & Engines / Java Sound & OpenAL / Re: Java OGG API with concurrent playback on: 2016-04-18 09:29:06
I would trust what princec has to say more than philfrei, and that goes double for philfrei of 2013.
27  Game Development / Game Play & Game Design / Re: Is a Binaural Sound Engine in Java possible? on: 2016-04-12 04:06:18
This thread has my first hack at 3D sound, using pure Java. Since the original question was about whether this is possible or not, it seemed useful to have a link here.
28  Games Center / WIP games, tools & toy projects / Re: Skullstone - a dungeon crawler game on: 2016-04-12 03:54:00
I like the audio tracks a lot. The loops are polished, expressive, and wear well, with good levels of tension, so they should work as game play gets tenser or relaxes. Getting game play to have dynamic arcs can be a challenge though. There's always a danger of: "oh there's another monster, kill it, walk walk walk, oh there is another monster, kill it..." which can get a bit flat.

I don't know if your audio system is set up to do this, but (small point) instead of looping a flaming torch sample (the sample you have sounds like a good one), can you play a continuous stream of slices from the torch sample? I'm thinking slightly overlapping 1/4 or 1/5 second slices, selected randomly from the sample. As long as the player is moving around, the torch audio is long enough that you don't hear the loop. But if a person stops by a torch, it can become apparent. Something similar to the treatment of the brook sound here might be a small but nice touch. Am happy to share the algo, but I don't know your audio system. Can you output a continuous PCM data stream as audio?
29  Games Center / WIP games, tools & toy projects / Re: PFTheremin on: 2016-04-10 19:21:12
PFTheremin, SoundHandler API

   SoundHandler sh = new SoundHandler();

Class is located in the package: com.adonax.jtheremin

   // Following are methods of SoundHandler, e.g., sh.start();
   void start() // turns on audio thread
   void stop()  // turns off audio thread

   void startSync()  // save a reference sound frame and nanotime for internal event
             // used to schedule the pitch updates, can be called any time the
         // pitch updates develop lag beyond a built-in 1800 frames

   void setSynth(String name) // {"FM Sawtooth", "FM Square"}

   void startNote()  // theremin note starts playing, called by mouse-down
   void releaseNote()  // theremin note released, called by mouse-up
   void updateVolume(float normalizedFloat)  // Y-axis position scaled to float [0..1]
   void updatePitch(float pitch, long timeStamp) // pitch = actual Hz to be played
         // timeStamp (nanotime) = when that pitch occurs
         // the frame where the pitch will be scheduled is calculated from the
         // values stored in startSync()
   void updateVibDepth(float normalizeFloat) // vibrato affects both pitch and volume
   void updateVibRate(float normalizedFloat) // [0..1] corresponds to 2Hz..18Hz
         // distributed via a power function x^2
   void updateTimbre(float normalizedFloat)  // [0..1], corresponds to a range of values
         // preset in synth, sometimes referred to as FM Modulator Index
   void setModulatorFeedback(float normalizedFloat) // more FM stuff, affects timbre

   // control of Echo via the SoundHandler, e.g., sh.setEchoRunning(true);
   void setEchoRunning(boolean echoRunning)  // make the echo effect audible/quiet
   void setEchoMillis(int millis) // time until first echo
   void setEchoVolume(float normalizedFloat)  // volume of echo
   void setEchoFeedback(float d) //

**************
The following function may be useful for generating pitch values procedurally. Midi note values are linear, one per "piano key", with "middle C" = 36. Fractional notes are possible.

   double PitchFunctions.getHertzFromMidi(float midiNoteValue)

The package of this static class: com.adonax.pfaudio.midi

(Please message me if you want to use this as an external library in any game or application you are making.)
30  Games Center / WIP games, tools & toy projects / PFTheremin on: 2016-04-10 19:17:04


jar download > PFTheremin

Continuing on the theme of making scalable audio assets...a theremin in the works. The JavaFX GUI allows it to be played in real time.

I started writing about this and went overboard, so deleted everything. Minimum needed to know to try it out:

> mouse down in the orange area to get playback
> X-axis is pitch, Y-axis is volume (and optionally mapped "Expression Axis" features)

Next post will be an api for use as an external library, if you want to try incorporating this audio functionality in a game you are writing.
Pages: [1] 2 3 ... 45
 
orrenravid (134 views)
2016-07-16 03:57:23

theagentd (202 views)
2016-07-11 14:28:54

Hydroque (285 views)
2016-07-06 05:56:57

Hydroque (432 views)
2016-07-03 08:52:54

GrandCastle (318 views)
2016-07-01 09:13:47

GrandCastle (313 views)
2016-07-01 09:09:45

CopyableCougar4 (368 views)
2016-06-25 16:56:52

Hydroque (357 views)
2016-06-22 02:17:53

SwampChicken (327 views)
2016-06-20 13:22:57

SwampChicken (280 views)
2016-06-20 13:22:49
Making a Dynamic Plugin System
by Hydroque
2016-06-25 00:13:25

Java Data structures
by BinaryMonkL
2016-06-13 21:22:09

Java Data structures
by BinaryMonkL
2016-06-13 21:20:42

FPS Camera Tutorial
by Hydroque
2016-05-22 05:40:58

Website offering 3D Models specifically for games for free
by vusman
2016-05-18 17:23:09

Website offering 3D Models specifically for games for free
by vusman
2016-05-09 08:50:56

Website offering 3D Models specifically for games for free
by vusman
2016-05-06 11:10:21

Website offering 3D Models specifically for games for free
by vusman
2016-04-29 12:56:17
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!