How can I play individual MIDI notes in a Web page?
I know of two ways to do it:
Write an ActiveX control. Then it only works on Windows. I used to write ActiveX controls a long time ago, but now nobody likes to install them.
Write a Java applet. This is OK if the user already has Java installed, but many users disable applets. This is the way I did it and you can see the result at newfweiler.com -- if it happens to work on your particular setup. You'll need at least Java 5, although I suppose I could rewrite it in Java 1.2 if I had to. The "Real Time Sequencer" and "Java Sound Synthesizer" don't work for me; I think you have to install wavetables or something to make them work.
Most users have Flash installed, but I looked in the Flash and Flex documentation and did not see anything equivalent to javax.sound.midi.
There are several ways to play a MIDI file in a Web page, and you can find "Javascript Pianos" that play a one-note MIDI file whenever you press a key. You can't play multiple notes at once or hold the key down for a long note.
What I'm trying to do is the equivalent of javax.sound.midi.Receiver.send(midiMsg, -1) using only what most people typically have installed on the machine.
Use Web Audio API to play sounds and .mid-files. See example of MIDI player at https://surikov.github.io/webaudiofont/examples/midiplayer.html
Use Web MIDI API (Chrome supports it) to listen MIDI keyboard. See example at https://surikov.github.io/webaudiofont/examples/midikey.html
Java is still probably going to be your best bet, even with the few users disabling it.
I use NoScript, and I can whitelist a site. I would say that most users would probably do the same if you provide compelling content.
Found the following (translated from Italian). I'd say Flash is the way to go. If you want to be ghetto you can just get 88 or so piano samples and play them against a timeline.
http://translate.google.com/translate?prev=hp&hl=en&js=n&u=http%3A%2F%2Fflash.html.it%2Fguide%2Flezione%2F2936%2Fmidi-player%2F&sl=it&tl=en&history_state0=
There is an example of online MIDI piano at https://jazz-soft.net/demo/VirtualPiano.html
It uses the Web Audio API and does not require any special software, however, if the Web MIDI is enabled, it has more functionality. Code included on the page.
Related
I have very old Siemens CX70 in working state and just don't want to throw it out. My idea is to use its math power and peripherals (GSM module, USB, Camera and screen) to build some simple applications for home use (multichannel termometer, timer and cheap security system - for examples).
I know I should use Java ME and IDE (I love Netbeans, for example). Can you tell me what I need more to start developing? I know Java well, I just need to make an environment to developing, debug and deploy. Mobile library documentation will be very helpful too.
Thanks.
There are so many online tutorials about this topic that the only right thing to do is to refer you to google.com
Search after "getting started with j2me".
However, there's something else you should know upfront before getting too excited.
The security model in JavaME will prevent you from doing much useful stuff, in relation to some of the things you mention.
Every time you try to access certain things in the phone, like e.g. the camera, or send SMS, or read/write a file on SD card, etc etc - the phone will show a popup "This app is trying to access camera. Allow this?". And the app will only continue after a manual click on Yes.
As you can imagine, this of course renders a lot of ideas useless.
In order to prevent these popups, you can sign your app with a certificate you buy from Thawte or Verisign. But as that'll cost you $300 a year, it's not the way most sparetime hobby developers chooses.
Personally, I found another way, but it requires you to use a phone from Sony Ericsson.
Because the old Sony Ericsson phones can be patched in order to remove the Java security. After doing this on one of my old phones, I've been having fun making apps like the ones you mention. For example, an app that keeps an eye on my home when we're out, by taking a picture every second. If it detects a difference in the picture, it sends me an MMS with the picture. :-)
I have searched a long time for patching options for other brands, but I just can't find anything useful. Nokia should supposedly also be patchable, but I just can't find anything useful about it.
So in short: If you'd like to make some sparetime hobby apps on a phone like that, you should either find a Sony Ericsson phone and patch it - or go dig up an old used Android device.
Good luck.
I've been looking all over the web to find something that allows me to play H264/Mpeg4 videos in java. The videos are recorded on an android device and i would like to attach a java programm to my app that the user can move/copy to his/her harddrive and execute to play the video on the computer (bigger screen, mouse input etc).
I did find xuggler, vlcj, ffmpeg, gstreamer.
They all say that they require some driver etc to be installed on the computer. But i need something that runs in pure java and that can be put into the jar that i will put into my app or website dl.
It has to be as simple as that, user dl the jar and executes and is able to watch the video that is stores on the android device (i realize that it requires the user to have java installed, but thats the only thing i want to burden them with).
Links or tutorials are welcome.
(i work a lot with android but hardly with plain java, so the lack of multimedia abilities is kinda throwing me off balance)
JCodec is a recent project aimed at providing a pure-java implementation of video and audio decoders, worth a try.
a was thinking if it is possible (probably) or if some framework exists (not-probably) for integrating media controls into Java application. Say I have completed media player in Java (java GStreamer) but with controls directly from Swing. But if I want to stop my player or play next song, I have these media keys on my keyboard, and when I press them, I suppose OS processes them and sends them to corresponding media application. So, I want to ask if you know some framework or library or something that would support this integration on multi platforms (I am aware of possibility to code it in JNI for each platform, but it doesn't seem as pretty solution to me), or if you have some experience with such problem and would provide some advice. I know that java.awt.Desktop exists and I supposed it would support these things when I stumbled on it, but it doesn't.
Thanks for any help, even for trying :)
I'm trying to create a client-side web app that generates music procedurally using some user-input parameters, so I'm looking for a framework (e.g. Flash, Silverlight etc.) that has the capability to play audio at a specified pitch. Whether it is playing a WAV/MP3 file, using MIDI output, or just playing beeps doesn't really matter -- I just need something that will enable me to generate arbitrary music client-side.
I've done a bit of searching and it appears that Flash might have the ability to change pitch with the help of a third-part plugin, but I couldn't find anything similar for Silverlight. I can go a try all them out manually if need be, but I thought I'd ask here first just in case anyone had tried something like this before.
Thanks in advance
Not sure about Silverlight, but sure as hell you can do it in Flash. Just this week Audiotool has been released:
http://www.audiotool.com/
Don't fool yourself though, that's a state-of-the-art application that requires squeezing every single bit of the Flash Player. You can read about what it takes to build it here:
http://blog.joa-ebert.com/2010/03/06/compiling-actionscript-in-the-enterprise/
Cheers,
Juan
I am looking to create a video training program which records videos - via webcam, user screen capture and captures sound. Now the main problem is that I need a cross-platform (mac and windows) solutions.
I know its possible to use flash to record webcam + audio. But its not possible to record the user's screen via flash.
So am wonder if I should use Java (which i believe will work on mac & windows). I do not want to develop to separate versions because of the cost involved in developing two versions.
Please guide me as I am new to this.
Thank you.
UPDATE
Hello again,
I had a look at the following site: www.screencast-o-matic.com or www.screentoaster.com. I see that they have developed a java applet which helps interact with Windows/Mac to record the screen.
I am wondering how to go about developing something like that and integrating it with Flash (for webcam and audio recording).
Is this a better idea?
This is not an answer to your question, but I strongly recommend against using video for educational programmes. Our company delivers university courses on-line, and we long ago learned that video feeds are only effective under particular scenarios. In general, a talking head is a waste of bandwidth. You're much better off to put together a well designed powerpoint presentation, record a voice-over (and edit it!) and then assemble the whole thing as a flash presentation. This is a non-trivial amount of work, but it provides a much more interesting product for the student.
When to use video:
1) When you are demonstrating something dynamic - Mechanics or Chemistry for example.
2) When you are acting out a scenario or case as an illustration -- For example, threat de-escalation techniques for high school teachers.
When you solve the screen recording problem, seriously consider whether you need full motion or if you can get away with stills. Often the motion is distracting, and a still with good voice over can be more effective. (Hint: Replace mouse pointers with something HUGE before recording -- Like Fox did with hockey pucks)
Try CamStudio. I don't know, if it works on Mac, but on windows, it's the best solution I know. It's open source, so you can use it's source code, if you want to :)
If you're looking to build an application that does all of the recording and screen capture itself, then you might consider using Adobe AIR (essentially, Flash running on the desktop) in combination with Merapi. Merapi is essentially a bridge between Adobe AIR and Java. So for example, for your project, you might use Java to handle the lower-level (but still cross-platform) stuff you can't do natively in AIR, and use Merapi to wire the Java application to your AIR UI.
This is by no means a simple project. Lets get that said and out the way. There are open source (and cross-platform) options for each element, but nothing (I know of) that will do everything for you.
I think the "cleanest" option would be to use Flash for webcam and audio, as you said, and run a VNC server to send the screen video... The only closed-platform code will be the VNC launching code. That should be pretty simple to maintain!
That raises a problem because most people are behind NAT firewalls these days. Setting up port forwarding is a pain in the behind. I've used an app called Gitso before which allows people to connect to me and send their desktop to my screen (for tech support). Its VNC-based and all it really does is add another layer on top of the VNC connection so rather than me connecting to them, they connect to me. That makes the whole business of port forwarding a non-issue.
And once you've recorded everything, there's the final issue of syncing it all back together... Might not be so hard.
Well, Camtasia provides the solution to get your problem done. It can record the onscreen activity and also the webcam video and put them in the same player template. Another screen recorder DemoCreator can publish the screen recording as Flash movie, but can not record the webcam.