Archived

This topic is now archived and is closed to further replies.

C0UNT Z3R0

Urgent Help Required DirectX & Winsock!

Recommended Posts

Hi all, Im in my last year of uni studying computer science and its not going to well to say the least. All I want to do now is come out with a pass so it all hasnt been a waste of time and money, if you know what i mean. Im useless at programming even after trying my best to learn it, just dont have the mind for it. Anyway, I am stuck on my project and would be very very greatful if someone could help me out. I am trying to create a voice chat program and have to do it using c++. I had a basic (winsock) client server done which could send files. It only sends data to the server though and not back to the relevant clients (thats not the problem). I made a soundboard for the client side using directx. This is just a few buttons which when pressed play the sound. What I wanted to do was when a button is pressed, send a command to the server which would in turn send it to the other connected clients and they would all play the pre-recorded sound. This is my first step towards the voice chat program which I thought would be easy but its not (for me anyway). I integrated the client code into the soundboard I made but for some reason it will not send anything anymore. My next step would have been to record a sound on a client then have it sent and played on the other clients. I know I am not going to get streaming done but that would have been my last step. If someone could help me get this sorted I would be in debtted to you big time. I only have until the 27th of this month to complete it or get something workable. Please someone save me!!! Here is some of the code, if you think you can help please send me an email and ill send you the whole code. EMAIL: slip_stream_7@hotmail.com --I dont have much money but if one person is a kick ass programming and can help me get this dont im willing to send them a film trailer reel or something cool-- #include "DirectSound.h" #include <stdio.h> #include <fstream> #include <iostream> using namespace std; int startupClient(unsigned short port, const char* serverName); void shutdownClient(int clientSocket); #define WINDOW_WIDTH 300 #define WINDOW_HEIGHT 467 #define P_BUTTON1 1 // ID for our play button one #define P_BUTTON2 2 // ID for our second play button #define P_BUTTON3 3 // ID for our third play button #define P_BUTTON4 4 // ID for our forth play button #define P_BUTTON5 5 // ID for our fifth play button #define P_BUTTON6 6 // ID for our sixth play button #define P_BUTTON7 7 // ID for our seventh play button #define P_BUTTON8 8 // ID for our eighth play button #define P_BUTTON9 9 // ID for our ninth play button #define P_BUTTON10 10 // ID for our tenth play button #define P_BUTTON11 11 // ID for our eleventh play button #define P_BUTTON12 12 // ID for our twelth play button #define ClassName "DirectSound_App" int startupClient(unsigned short port, const char* serverName) { int error; WSAData wsaData; if ((error = WSAStartup(MAKEWORD(2, 2), &wsaData)) == SOCKET_ERROR) { printf("Could Not Start Up Winsock!\n"); return -1; } int mySocket = socket(AF_INET, SOCK_STREAM, 0); if (mySocket == SOCKET_ERROR) { printf("Error Opening Socket!\n"); return -1; } struct hostent *host_entry; if ((host_entry = gethostbyname(serverName)) == NULL) { printf("Could not find host!\n"); } struct sockaddr_in server; server.sin_family = AF_INET; server.sin_port = htons(port); server.sin_addr.s_addr = *(unsigned long*) host_entry->h_addr; if (connect(mySocket, (sockaddr*)&server, sizeof(server)) == SOCKET_ERROR) { printf("Error connecting to server!\n"); } printf("Client Started\n"); return mySocket; } void shutdownClient(int clientSocket) { closesocket(clientSocket); WSACleanup(); printf("Client Shutdown\n"); } // Global - DirectSound object DX_SOUND dx_sound = {0}; LRESULT CALLBACK WinProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprev, PSTR cmdline, int ishow) { HWND hwnd; MSG msg; WNDCLASS wndclass = {0}; LOGBRUSH b_ground; // Set up background image b_ground.lbStyle = BS_PATTERN; b_ground.lbColor = DIB_RGB_COLORS; b_ground.lbHatch = (long)LoadImage(NULL,"bkg2.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); // Set the fields we care about wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WinProc; wndclass.hInstance = hinstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.lpszClassName = ClassName; // If LoadImage() cannot open background it will return NULL // We don''t want to try and call CreateBrushIndirect() if we don''t have a valid // logbrush to pass in so we check first if(b_ground.lbHatch) wndclass.hbrBackground = CreateBrushIndirect(&b_ground); RegisterClass(&wndclass); hwnd = CreateWindow(ClassName, "Simpsons Network Soundboard", WS_SYSMENU, // We won''t be able to resize the window CW_USEDEFAULT, CW_USEDEFAULT, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hinstance, NULL); ShowWindow(hwnd, ishow); UpdateWindow(hwnd); // Init our "DX_SOUND" structure -- if(InitDXSound(dx_sound,hwnd) == false) { MessageBox(hwnd,"Couldn''t init DX_SOUND object","Error",MB_OK | MB_ICONERROR); return EXIT_FAILURE; } int mySocket; mySocket = startupClient(7654, "localhost"); if (mySocket == -1) { shutdownClient(mySocket); // return; } //int nBytes; while(1) { // If we get a Window Message -- Handle it appropriately if(PeekMessage(&msg,hwnd,0,0,PM_REMOVE)) { if(msg.message == WM_QUIT) break; TranslateMessage(&msg); DispatchMessage(&msg); } } // Free up memory FreeDXSound(dx_sound); return msg.wParam; } LRESULT CALLBACK WinProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { // Our handles to our play buttons static HWND PlayButton1 = NULL; static HWND PlayButton2 = NULL; static HWND PlayButton3 = NULL; static HWND PlayButton4 = NULL; static HWND PlayButton5 = NULL; static HWND PlayButton6 = NULL; static HWND PlayButton7 = NULL; static HWND PlayButton8 = NULL; static HWND PlayButton9 = NULL; static HWND PlayButton10 = NULL; static HWND PlayButton11 = NULL; static HWND PlayButton12 = NULL; int nBytes; char sendBuffer[2]; int mySocket = socket(AF_INET, SOCK_STREAM, 0); switch(message) { case WM_CREATE: // -- Create necessary buttons -- // PlayButton1 = CreateWindow("Button","Hi",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON1, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton2 = CreateWindow("Button","Howdy",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON2, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton3 = CreateWindow("Button","Okely",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON3, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton4 = CreateWindow("Button","Aye",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON4, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton5 = CreateWindow("Button","Doh",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON5, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton6 = CreateWindow("Button","Haha",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON6, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton7 = CreateWindow("Button","Good",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON7, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton8 = CreateWindow("Button","Bad",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON8, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton9 = CreateWindow("Button","Excellent",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON9, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton10 = CreateWindow("Button","Woohoo",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON10, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton11 = CreateWindow("Button","Why...",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON11, ((LPCREATESTRUCT)lparam)->hInstance, NULL); PlayButton12 = CreateWindow("Button","Any key",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)P_BUTTON12, ((LPCREATESTRUCT)lparam)->hInstance, NULL); return 0; case WM_SIZE: MoveWindow(PlayButton1,45,65,100,40,true); MoveWindow(PlayButton2,150,65,100,40,true); MoveWindow(PlayButton3,45,128,100,40,true); MoveWindow(PlayButton4,150,128,100,40,true); MoveWindow(PlayButton5,45,191,100,40,true); MoveWindow(PlayButton6,150,191,100,40,true); MoveWindow(PlayButton7,45,254,100,40,true); MoveWindow(PlayButton8,150,254,100,40,true); MoveWindow(PlayButton9,45,317,100,40,true); MoveWindow(PlayButton10,150,317,100,40,true); MoveWindow(PlayButton11,45,380,100,40,true); MoveWindow(PlayButton12,150,380,100,40,true); return 0; case WM_COMMAND: // This if statement below will be true every time a button is clicked on if(HIWORD(wparam) == BN_CLICKED) { // If they pushed the first play button if(LOWORD(wparam) == P_BUTTON1) { if(LoadDXSound(dx_sound,"hi.wav") == false) { MessageBox(hwnd,"Couldn''t load hi.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED int sendLength = 2; sendBuffer[0] = 0; sendBuffer[1] = 1; sendLength = htonl(sendLength); if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); } sendLength = ntohl(sendLength); //Sleep 1 if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); } shutdownClient(mySocket); //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the second play button else if(LOWORD(wparam) == P_BUTTON2) { if(LoadDXSound(dx_sound,"howdy.wav") == false) { MessageBox(hwnd,"Couldn''t load okley.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED //int sendLength = 2; //sendBuffer[0] = 0; //sendBuffer[1] = 2; //sendLength = htonl(sendLength); //if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //sendLength = ntohl(sendLength); //Sleep 1; //if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //shutdownClient(mySocket); //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the third play button else if(LOWORD(wparam) == P_BUTTON3) { if(LoadDXSound(dx_sound,"okely.wav") == false) { MessageBox(hwnd,"Couldn''t load howdy.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED //int sendLength = 2; //sendBuffer[0] = 0; //sendBuffer[1] = 3; //sendLength = htonl(sendLength); //if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //sendLength = ntohl(sendLength); //Sleep 1; //if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //shutdownClient(mySocket); //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the forth play button else if(LOWORD(wparam) == P_BUTTON4) { if(LoadDXSound(dx_sound,"aye.wav") == false) { MessageBox(hwnd,"Couldn''t load aye.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED //int sendLength = 2; //sendBuffer[0] = 0; //sendBuffer[1] = 4; //sendLength = htonl(sendLength); //if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //sendLength = ntohl(sendLength); //Sleep 1; //if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //shutdownClient(mySocket); //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the forth play button else if(LOWORD(wparam) == P_BUTTON5) { if(LoadDXSound(dx_sound,"doh.wav") == false) { MessageBox(hwnd,"Couldn''t load doh.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED //int sendLength = 2; //sendBuffer[0] = 0; //sendBuffer[1] = 5; //sendLength = htonl(sendLength); //if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //sendLength = ntohl(sendLength); //Sleep 1; //if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //shutdownClient(mySocket); //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the forth play button else if(LOWORD(wparam) == P_BUTTON6) { if(LoadDXSound(dx_sound,"haha.wav") == false) { MessageBox(hwnd,"Couldn''t load haha.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED //int sendLength = 2; //sendBuffer[0] = 0; //sendBuffer[1] = 6; //sendLength = htonl(sendLength); //if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //sendLength = ntohl(sendLength); //Sleep 1; //if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { // printf("Send Failed!\n"); //} //shutdownClient(mySocket); //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the forth play button else if(LOWORD(wparam) == P_BUTTON7) { if(LoadDXSound(dx_sound,"good.wav") == false) { MessageBox(hwnd,"Couldn''t load good.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED /*int sendLength = 2; sendBuffer[0] = 0; sendBuffer[1] = 7; sendLength = htonl(sendLength); if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } sendLength = ntohl(sendLength); //Sleep 1; if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } shutdownClient(mySocket); */ //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the forth play button else if(LOWORD(wparam) == P_BUTTON8) { if(LoadDXSound(dx_sound,"bad.wav") == false) { MessageBox(hwnd,"Couldn''t load bad.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED /* int sendLength = 2; sendBuffer[0] = 0; sendBuffer[1] = 8; sendLength = htonl(sendLength); if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } sendLength = ntohl(sendLength); //Sleep 1; if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } shutdownClient(mySocket); */ //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the forth play button else if(LOWORD(wparam) == P_BUTTON9) { if(LoadDXSound(dx_sound,"excellent.wav") == false) { MessageBox(hwnd,"Couldn''t load excellent.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED /* int sendLength = 2; sendBuffer[0] = 0; sendBuffer[1] = 9; sendLength = htonl(sendLength); if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } sendLength = ntohl(sendLength); //Sleep 1; if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } shutdownClient(mySocket); */ //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the forth play button else if(LOWORD(wparam) == P_BUTTON10) { if(LoadDXSound(dx_sound,"woohoo.wav") == false) { MessageBox(hwnd,"Couldn''t load woohoo.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED /* int sendLength = 2; sendBuffer[0] = 1; sendBuffer[1] = 0; sendLength = htonl(sendLength); if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } sendLength = ntohl(sendLength); //Sleep 1; if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } shutdownClient(mySocket); */ //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the forth play button else if(LOWORD(wparam) == P_BUTTON11) { if(LoadDXSound(dx_sound,"why.wav") == false) { MessageBox(hwnd,"Couldn''t load why.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED /* int sendLength = 2; sendBuffer[0] = 1; sendBuffer[1] = 1; sendLength = htonl(sendLength); if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } sendLength = ntohl(sendLength); //Sleep 1; if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } shutdownClient(mySocket); */ //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } // If the pushed the forth play button else if(LOWORD(wparam) == P_BUTTON12) { if(LoadDXSound(dx_sound,"anykey.wav") == false) { MessageBox(hwnd,"Couldn''t load anykey.wav","Error",MB_OK | MB_ICONERROR); PostQuitMessage(0); return 0; } //ADDED /* int sendLength = 2; sendBuffer[0] = 1; sendBuffer[1] = 2; sendLength = htonl(sendLength); if ((nBytes = send(mySocket, (char*)&sendLength, sizeof(sendLength), 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } sendLength = ntohl(sendLength); //Sleep 1; if ((nBytes = send(mySocket, sendBuffer, sendLength, 0)) == SOCKET_ERROR) { printf("Send Failed!\n"); } shutdownClient(mySocket); */ //ADDEDEND dx_sound.lpdSoundBuff->Play(0,0,0); // This function will "play" the // the .wav -- The first 2 parameters // must be zero, the last parameter is // a flag for "looping" (we''re NOT looping) } } return 0; case WM_CLOSE: case WM_DESTROY: PostQuitMessage(0); return 0; } // end of switch(message) return DefWindowProc(hwnd, message, wparam, lparam); }

Share this post


Link to post
Share on other sites
why not keep using winsock, just send the file, other person receives it and plays it

directplay is hard enough, and voice is even harder, so its not that u dont have a mind for it , its just crappy microsoft stuff that is hard to learn

Share this post


Link to post
Share on other sites
I dont have a problem with the winsock part thats fine like you said. It is the DirectX im having a problem with. What else can I use to play and record sound easily? I thought about using open gl for the gui as I can do that easily enough. Its just the damn recording and playback im having a problem with.

Thanks

Share this post


Link to post
Share on other sites
No whats that?
Was thinking about using win32 api for the sound but I need some good resources to help me out. Ill have a look for fmod.
Another question, is there a way to get the console working as well as a window like in open gl when using directx? if there is I might be able to find out what the error is and why it wont send data.
Thanks again

Share this post


Link to post
Share on other sites