Solved

Interactive MP3 player, how can I find or develop one?

Posted on 2011-09-02
9
384 Views
Last Modified: 2012-05-12
I'm trying to find an MP3 player or codec (not sure) that will do the following:

Requirements:

1. Must start MP3's either at the same time, or using some kind of signaling from a master track, start at a given time.
2. Must be able to play multiple MP3's in a mix.
3. Good to have: Some kind of interactivity so that the user can mix the MP3's.

This is not a music making software like Acid, or Fruity Loops, although maybe that would work.
It should be as easy to use as a regular player, except the user can either choose from mix templates, or create a template and save that.
Other features would be to base the mix on feedback from the user other than interacting with an interface, for example, a heartbeat, or audio input etc.
(Probably the ability to control this via MIDI would work).
I am a VB.NET programmer, but I don't know much about creating audio applications.

One of my goals is to become a recording artist or producer that creates ambient music mixes in this multi-track MP3 format so that people can download or by my music. This would be suitable for relaxation, semi-ambient dynamic music to listen to while working or studying (that's not too distracting) spoken word instruction, or any kind of audio that needs to be triggered. This seems like a fairly simple concept except the interface part which might be more complicated. I knwo the technology exists, but it seems nobody has attempted this.
0
Comment
Question by:harmono
  • 5
  • 4
9 Comments
 
LVL 38

Expert Comment

by:Insignificant Volunteer
Comment Utility
Hi harmono

I'll be honest and say that the only ideas that came to mind are from a recording perspective, eg. something like the free Audacity application that allows you to record multiple tracks and mix down, or load audio files (including MP3s) and mix and merge them.  It is not really what you are looking for though.

However, seeing as you are a programmer you might get some inspiration from a web based function I found on Karaoke-Version.co.uk

Let's choose a song in the "Custom Backing Tracks" section.  Hmmm.  Seeing as he would have been 65 yesterday and the vocals on this one aren't too bad, here's a "Demo Preview" of Freddy and Queen.

It is a Flash-enabled page that loads individual instruments as tracks which can each be volume adjusted or muted, and you can change the overall key of the song.  It uses separate MP3 files that are downloaded to the Temporary Internet Files folder (or browser cache used by other browser if applicable) as "multi_1.mp3, Multi-2.mp3, etc, and they obviously play back in sync.  The idea here is that you customise what instruments you want for your backing track and pay to download your custom MP3.  having paid for it, you can return and re-customise another download for no additional cost as many times as you wish.

The "mixer" is a *.SWF file and the preview ID, mixer layout, colours, track parameters like start and end position in mixer, duration, preview clip size, volume and mute state, etc, are loaded from "multi.xml".

I am not suggesting that you plagiarise the code and Flash content, but perhaps the concept and your programming knowledge may inspire some ideas.
0
 
LVL 1

Author Comment

by:harmono
Comment Utility
BillDL, Thanks for the input. It seems like there are many ways to approach this. The most simple way would be to simply play multiple MP3's at the same time, I think that's possible, because I play multiple videos at the same time and play multiple autio applications at the same time. I think I'll experiment with .wav and .mp3 player code for visual basic and see if I can tweak it.
0
 
LVL 38

Accepted Solution

by:
Insignificant Volunteer earned 125 total points
Comment Utility
Sorry I couldn't help more.  I was trying to inspire your creative side until other "programmers" came along with suggestions, but alas none yet.  I've played with quite a number of programs that allow you to create melodic multi-instrument backing tracks in the past, but they create the sound using MIDI and we all know how unrealistic some of the "instruments" sound in *.MID files, so any of them are obviously out of the question.

Good luck in your quest.
0
 
LVL 1

Author Comment

by:harmono
Comment Utility
BillDL, Actually I was thinking a MIDI implementation with a Virtual Synth combination might be the ticket. I have several concepts in my head, so the MIDI part is the more complicated concept. I listened to that demo, is that Freddy singing it?
0
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 
LVL 38

Expert Comment

by:Insignificant Volunteer
Comment Utility
Freddy Krueger maybe, but not Freddy Mercury.  They use session artists, some good, some mediocre, and some just bad.  That was one of the better vocal renditions.
0
 
LVL 1

Author Comment

by:harmono
Comment Utility
Oh. Like Guitar Hero. I was listening at very low levels on PC speakers so it was convincing enough.
Yeah well that's encouraging, it would be nice if there was a VB.net version, maybe I'll find one.
0
 
LVL 1

Author Comment

by:harmono
Comment Utility
I found the basic way to play MP3's on the internet. It's really easy. I was able to sync two mp3's and mix them I believe with no issues. I need to do at least 3 at once, possibly up to 6 layers.
Now the more complex part is creating loops that come in and out at certain times, that's a bit advanced, but I can get the basic idea across using this.
 
Public Class Form1
     Dim saveVolume As Integer = 20
     Dim saveVolume2 As Integer = 20
     Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

     End Sub

     Private Sub open_Click(sender As System.Object, e As System.EventArgs) Handles open.Click
          Try
               Dim filesToPlay As New ArrayList
               opd.InitialDirectory = "c:\"
               opd.ShowDialog()
               filesToPlay.Add(opd.FileName)
               opd.InitialDirectory = "c:\"
               opd.ShowDialog()
               filesToPlay.Add(opd.FileName)
               Dim i As Integer = 0
               If filesToPlay.Count = 2 Then
                    player.URL = filesToPlay(0)
                    player2.URL = filesToPlay(1)
               End If
               'player.Ctlcontrols.pause()

          Catch ex As Exception
               MessageBox.Show("Some error occur so can't play media", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

          End Try
         


     End Sub

     Private Sub mexit_Click(sender As System.Object, e As System.EventArgs) Handles mexit.Click
          Application.Exit()

     End Sub

     Private Sub play_Click(sender As System.Object, e As System.EventArgs) Handles play.Click
          player.Ctlcontrols.play()
          player2.Ctlcontrols.play()

     End Sub

     Private Sub mstop_Click(sender As System.Object, e As System.EventArgs) Handles mstop.Click
          player.Ctlcontrols.stop()
          player2.Ctlcontrols.stop()
     End Sub

     Private Sub mpause_Click(sender As System.Object, e As System.EventArgs) Handles mpause.Click
          player.Ctlcontrols.pause()
          player2.Ctlcontrols.pause()
     End Sub

     Private Sub mup_Click(sender As System.Object, e As System.EventArgs) Handles mup.Click
          player.settings.volume = player.settings.volume + 10
     End Sub

     Private Sub mdown_Click(sender As System.Object, e As System.EventArgs) Handles mdown.Click
          player.settings.volume = player.settings.volume - 10
     End Sub

     Private Sub mmute_Click(sender As System.Object, e As System.EventArgs) Handles mmute.Click
          If player.settings.volume = player.settings.mute() Then


               player.settings.volume = saveVolume


          Else

               saveVolume = player.settings.volume
               player.settings.volume = player.settings.mute()


          End If

     End Sub

     Private Sub FileToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles FileToolStripMenuItem.Click

     End Sub

     Private Sub UpToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles mup2.Click
          player2.settings.volume = player2.settings.volume + 10
     End Sub

     Private Sub DownToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles mdown2.Click
          player2.settings.volume = player2.settings.volume - 10
     End Sub

    
     Private Sub MuteAllToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles mmuteall.Click, mmuteall2.Click
          If player.settings.volume = player.settings.mute() Then


               player.settings.volume = saveVolume


          Else

               saveVolume = player.settings.volume
               player.settings.volume = player.settings.mute()


          End If
          If player2.settings.volume = player2.settings.mute() Then


               player2.settings.volume = saveVolume2


          Else

               saveVolume2 = player2.settings.volume
               player2.settings.volume = player2.settings.mute()


          End If

     End Sub

     Private Sub mmute2_Click(sender As System.Object, e As System.EventArgs) Handles mmute2.Click
          If player2.settings.volume = player2.settings.mute() Then


               player2.settings.volume = saveVolume2


          Else

               saveVolume2 = player2.settings.volume
               player2.settings.volume = player2.settings.mute()


          End If
     End Sub
End Class

Open in new window

0
 
LVL 1

Author Closing Comment

by:harmono
Comment Utility
Well thanks for taking a stab. I'll look into this.
0
 
LVL 38

Expert Comment

by:Insignificant Volunteer
Comment Utility
Thank you harmono.  I wasn't really expecting points for just presenting a possible "concept" to consider, so it's appreciated.  For your info I'm not a programmer, but I can usually get the gist of how program code such as you posted works.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Not everyone is tied to the Microsoft Office suite these days, as more free cloud-based solutions are entering the market. You might be used to creating presentations in PowerPoint, but did you know Google offers Slides  (https://www.google.com/slid…
Technology opened people to different means of presenting information, but PowerPoint remains to be above competition. Know why PPT still works today.
Viewers will get an overview of how to make and use Drum Racks in Ableton Live. Load new Drum Rack into empty MIDI track: Fill rack with audio samples: Re-arrange sample slots as necessary: Adjust parameters of each slot to tailor each sound a…
Viewers will learn the basics of using Ableton Live's advanced sampler instrument, Sampler. Load new Sampler into an empty MIDI track: Select a sample and drop it into sample window in Sampler: Adjust pitch if necessary with Root Key setting: …

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now