C Sharp MyAudioMixer
This is a nice Audio Mixer I made in C#.NET -
VS8. It uses MCI component to play media files,
-may work with video files too.-
1st of all, this is an "Audio Mixer Console
Simulator", what does an audio mixer do? It mixes
sounds. This kind of consoles are used in
recording studios and live performances for mixing
audio, for example when bands do live
presentations the mixer is what unify the bass,
guitar, drums, vocals and all other instruments,
so signals can go out by the same pair of speakers
with the correct volume level, panning,
equalization, etc..
This project is a Console Simulation, so dont
work like a real mixer console. It only mixes
media files such as mp3, wav, ogg, ..
In this case i made an 10x4 console, that means
10tracks x 4buses (we can mix up-to 10 media files
simultaneously, with 4 different output
settings.)
Ok, lets go to the project.

This is the main window, there are 10 tracks, and
on the right part we have master volume controls
and Bus-Output selection where we can choose which
signal we will be listening.
frmInputs:

Here is where we choose the 10 media files. We
can see how this part of the console would look in
a real mixer (behind the form title), where you
plug-in the cable coming from the
mics/instruments; here we dont have cables, we
have files.
Lets get back into the main form, specificly into
a track. Here ill be explaining each part:

1.track caption: its the title of the track. by
doing double-click you can edit it and put things
like 'bass' so you know what signal does that
track manipulate.
2.input selection: where you select the number of
input signal from the frmInputs.

3.pre-amplification volume level: its the level
of the incoming signal before it is manipulated
(in this case we dont manipulate it but in the
future we can add an equalizer and some other
stuff into the tracks.)
4.buses-exit: here you adjust the level of the
signal that you want to send to each bus. For
example if you leave the green track with 0, when
you change in the Bus-Output selection (at the
right part of the main form) to Aux2 you wont
listen the track.
5.pan level: its the signal position in the
stereo speakers. 0 means that the sound goes to
both speakers by the same level. -100 means that
all the signal will go into the left speaker, and
+100 ito the rightone. So if we put +50, we will
be having more signal in the right speaker than in
the leftone.
6.solo switch: this button activates the
solo-mode. This means that all other tracks
without this button pressed will be muted.
7.mute switch: mutes the track.
8.track main volume level: it works like the
pre-amplification volume level, with the
difference of changing the signal volume after
being manipulated -by equalizer and other
stuff.-
Ok, hope you understand better the idea and how
the console works, I will be explaining in some
days how i use the MCI, but Basically this is the
idea:
There is MCI controls into each track and each
Input-Player-Control (the 10 controls from the
frmInputs). When you click OK button from
frmInputs, each track sincronizes itself with the
position of the Input-Player-Controls. That is the
'magic idea' i had to manipulate with easy the
signals and sincronize them like if them were into
a live mode.
Here i paste the simply code that makes this
feeling of having the signals accesible to all the
tracks like if them were connected with a
cable.
foreach (Track.Track _ArrayTracks in
_Tracks)
{
_ArrayTracks.Paths =
loFrmInputs.Paths;
_ArrayTracks.PlayState =
loFrmInputs.PlayState;
_ArrayTracks.Position =
loFrmInputs.Position;
_ArrayTracks.LoadSongToTrack();
}
This goes for each track and sincronizes the
filename, playstate and position of the file.
_ArrayTracks is an object of the type Track and
_Tracks is an arraylist that has all the tracks
inside.
Ok, thats all for the moment. I love making
interesting audio projects, so decided to share
this with you. I really hope you enjoy it and make
better ones!
For more info or tutorial visit
http://www.lujosoft.net/Forum/viewtopic.php?f=39&t=141&p=175#p175