Click here to Skip to main content
15,894,955 members
Articles / Multimedia / DirectX

Interactive 3D Spectrum Analyzer Visualization for Windows Media Player

Rate me:
Please Sign up or sign in to vote.
5.00/5 (12 votes)
17 May 2009CPOL12 min read 165.3K   6.5K   41  
Interactive 3D Spectrum Analyzer for Windows Media Player using DirectX 9 and some light GPGPU.
///////////////////////////////////////////////////////////////////////////////
//  Copyright (c) 2009 Carlo McWhirter. All Rights Reserved.	
//  Copyright (c) 2009 Hyteq Systems. All Rights Reserved.	
//  
//  http://www.hyteq.com
//
//	Hyteq Systems Educational License
//
//  This file is part of WM3DSpectrum, also known as 3D Spectrum Analyzer for
//  Windows Media Player. This file, the project that this file is part of, and
//  the resulting compiled program files are intended to be used for educational
//  purposes only. Use of this file or this project for any non-educational or
//  non-observatory purpose is strictly prohibited without the express written 
//  consent of all of the copyright holders listed above.
//
//  This file may only be modified and later redistributed by one or more of the
//  copyright holders listed above. Suggestions for bug fixes, enhancements,
//  and other modifications must be sent directly to one of the copyright holders.
//  
//  This file may be modified without being redistributed by any recipient of 
//  this file provided the modifications are NOT intentionaly or unintentionaly 
//  directed toward malicious or illegal purposes, but, instead, toward educational
//  purposes only.
//
//	THIS SOFTWARE IS PROVIDED 'AS-IS', WITHOUT ANY EXPRESS OR IMPLIED
//  WARRANTY. IN NO EVENT WILL THE AUTHORS BE HELD LIABLE FOR ANY DAMAGES
//  ARISING FROM THE USE OF THIS SOFTWARE.
//
//  This notice may not be removed from this file or altered in any manner.
//
///////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "WM3DSpectrum.h"

void CWM3DSpectrum::OpenStateChange( long NewState )
{
    switch (NewState)
    {
    case wmposUndefined:
        break;
	case wmposPlaylistChanging:
        break;
	case wmposPlaylistLocating:
        break;
	case wmposPlaylistConnecting:
        break;
	case wmposPlaylistLoading:
        break;
	case wmposPlaylistOpening:
        break;
	case wmposPlaylistOpenNoMedia:
        break;
	case wmposPlaylistChanged:
        break;
	case wmposMediaChanging:
        break;
	case wmposMediaLocating:
        break;
	case wmposMediaConnecting:
        break;
	case wmposMediaLoading:
        break;
	case wmposMediaOpening:
        break;
	case wmposMediaOpen:
        break;
	case wmposBeginCodecAcquisition:
        break;
	case wmposEndCodecAcquisition:
        break;
	case wmposBeginLicenseAcquisition:
        break;
	case wmposEndLicenseAcquisition:
        break;
	case wmposBeginIndividualization:
        break;
	case wmposEndIndividualization:
        break;
	case wmposMediaWaiting:
        break;
	case wmposOpeningUnknownURL:
        break;
    default:
        break;
    }
}

void CWM3DSpectrum::PlayStateChange( long NewState )
{
    switch (NewState)
    {
    case wmppsUndefined:
        break;
	case wmppsStopped:
        break;
	case wmppsPaused:
        break;
	case wmppsPlaying:
        break;
	case wmppsScanForward:
        break;
	case wmppsScanReverse:
        break;
	case wmppsBuffering:
        break;
	case wmppsWaiting:
        break;
	case wmppsMediaEnded:
        break;
	case wmppsTransitioning:
        break;
	case wmppsReady:
        break;
	case wmppsReconnecting:
        break;
	case wmppsLast:
        break;
    default:
        break;
    }
}

void CWM3DSpectrum::AudioLanguageChange( long LangID )
{
}

void CWM3DSpectrum::StatusChange()
{
}

void CWM3DSpectrum::ScriptCommand( BSTR scType, BSTR Param )
{
}

void CWM3DSpectrum::NewStream()
{
}

void CWM3DSpectrum::Disconnect( long Result )
{
}

void CWM3DSpectrum::Buffering( VARIANT_BOOL Start )
{
}

void CWM3DSpectrum::Error()
{
    CComPtr<IWMPError>      spError;
    CComPtr<IWMPErrorItem>  spErrorItem;
    HRESULT                 dwError = S_OK;
    HRESULT                 hr = S_OK;

    if (m_spCore)
    {
        hr = m_spCore->get_error(&spError);

        if (SUCCEEDED(hr))
        {
            hr = spError->get_item(0, &spErrorItem);
        }

        if (SUCCEEDED(hr))
        {
            hr = spErrorItem->get_errorCode( (long *) &dwError );
        }
    }
}

void CWM3DSpectrum::Warning( long WarningType, long Param, BSTR Description )
{
}

void CWM3DSpectrum::EndOfStream( long Result )
{
}

void CWM3DSpectrum::PositionChange( double oldPosition, double newPosition)
{
}

void CWM3DSpectrum::MarkerHit( long MarkerNum )
{
}

void CWM3DSpectrum::DurationUnitChange( long NewDurationUnit )
{
}

void CWM3DSpectrum::CdromMediaChange( long CdromNum )
{
}

void CWM3DSpectrum::PlaylistChange( IDispatch * Playlist, WMPPlaylistChangeEventType change )
{
    switch (change)
    {
    case wmplcUnknown:
        break;
	case wmplcClear:
        break;
	case wmplcInfoChange:
        break;
	case wmplcMove:
        break;
	case wmplcDelete:
        break;
	case wmplcInsert:
        break;
	case wmplcAppend:
        break;
	case wmplcPrivate:
        break;
	case wmplcNameChange:
        break;
	case wmplcMorph:
        break;
	case wmplcSort:
        break;
	case wmplcLast:
        break;
    default:
        break;
    }
}

void CWM3DSpectrum::CurrentPlaylistChange( WMPPlaylistChangeEventType change )
{
    switch (change)
    {
    case wmplcUnknown:
        break;
	case wmplcClear:
        break;
	case wmplcInfoChange:
        break;
	case wmplcMove:
        break;
	case wmplcDelete:
        break;
	case wmplcInsert:
        break;
	case wmplcAppend:
        break;
	case wmplcPrivate:
        break;
	case wmplcNameChange:
        break;
	case wmplcMorph:
        break;
	case wmplcSort:
        break;
	case wmplcLast:
        break;
    default:
        break;
    }
}

void CWM3DSpectrum::CurrentPlaylistItemAvailable( BSTR bstrItemName )
{
}

void CWM3DSpectrum::MediaChange( IDispatch * Item )
{
}

void CWM3DSpectrum::CurrentMediaItemAvailable( BSTR bstrItemName )
{
}

void CWM3DSpectrum::CurrentItemChange( IDispatch *pdispMedia)
{
}

void CWM3DSpectrum::MediaCollectionChange()
{
}

void CWM3DSpectrum::MediaCollectionAttributeStringAdded( BSTR bstrAttribName,  BSTR bstrAttribVal )
{
}

void CWM3DSpectrum::MediaCollectionAttributeStringRemoved( BSTR bstrAttribName,  BSTR bstrAttribVal )
{
}

void CWM3DSpectrum::MediaCollectionAttributeStringChanged( BSTR bstrAttribName, BSTR bstrOldAttribVal, BSTR bstrNewAttribVal)
{
}

void CWM3DSpectrum::PlaylistCollectionChange()
{
}

void CWM3DSpectrum::PlaylistCollectionPlaylistAdded( BSTR bstrPlaylistName)
{
}

void CWM3DSpectrum::PlaylistCollectionPlaylistRemoved( BSTR bstrPlaylistName)
{
}

void CWM3DSpectrum::PlaylistCollectionPlaylistSetAsDeleted( BSTR bstrPlaylistName, VARIANT_BOOL varfIsDeleted)
{
}

void CWM3DSpectrum::ModeChange( BSTR ModeName, VARIANT_BOOL NewValue)
{
}

void CWM3DSpectrum::MediaError( IDispatch * pMediaObject)
{
}

void CWM3DSpectrum::OpenPlaylistSwitch( IDispatch *pItem )
{
}

void CWM3DSpectrum::DomainChange( BSTR strDomain)
{
}

void CWM3DSpectrum::SwitchedToPlayerApplication()
{
}

void CWM3DSpectrum::SwitchedToControl()
{
}

void CWM3DSpectrum::PlayerDockedStateChange()
{
}

void CWM3DSpectrum::PlayerReconnect()
{
}

void CWM3DSpectrum::Click( short nButton, short nShiftState, long fX, long fY )
{
}

void CWM3DSpectrum::DoubleClick( short nButton, short nShiftState, long fX, long fY )
{
}

void CWM3DSpectrum::KeyDown( short nKeyCode, short nShiftState )
{
}

void CWM3DSpectrum::KeyPress( short nKeyAscii )
{
}

void CWM3DSpectrum::KeyUp( short nKeyCode, short nShiftState )
{
}

void CWM3DSpectrum::MouseDown( short nButton, short nShiftState, long fX, long fY )
{
}

void CWM3DSpectrum::MouseMove( short nButton, short nShiftState, long fX, long fY )
{
}

void CWM3DSpectrum::MouseUp( short nButton, short nShiftState, long fX, long fY )
{
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
United States United States
I'm a Microsoft Certified Professional (MCP) in C++. I'm fluent in C/C++, C# and many other languages.

Comments and Discussions