C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[42003] Re:사운드 출력때문에 질문 드립니다.
아제나 [azena] 1392 읽음    2005-09-26 10:50
PlaySound 함수는 사운드가 출력중인지 알 수 있는 방법이 없습니다.

1.wav와 2.wav의 시간을 미리 계산해서 프로그램에 집어 넣는 방법 밖에 없지요.

[의사코드]

if ( 플레이시작시간+웨이브파일길이 < 현재시간 )
{
   다음곡플레이
}

만약에 웨이브 파일 길이가 계속 변한다면 DirectSound나 DirectMusic 같은 Direct-X 계열 함수를 이용하세요.


이윤성 님이 쓰신 글 :
: 지금 다이얼 보드로 4채널로 작동하는 프로그램 짜는 중입니다.
:  기존 샘플 코드가 winAPI 로 되어 있어서..
:  winAPi 로 프로그램 짜다가 사운드 출력 부분이 막혀서 질문 드립니다.
:  멀티 쓰레드로 4개의 쓰레드가 돌다가..사용자 입력이 들어오면..
:  어떤 함수를 호출합니다.
:  이 함수에는 데이터 저장하고 사운드 출력 이 있기에 크리티컬 세션으로 보호하고 사용 중인데요..
:  여기서 사운드 출력에 문제가 생깁니다.
:  사운드가 한개만 출력 되면 몰라도 사운드가 한번에 5개씩 출력 되게 세팅 해야 합니다.
:  근데..
:  5개를 동기로 해놓으면....이게 실행 되는 동안 다른 작업이 진행이 안되고 다른 쓰레드에서 사용자 입력은 받지 못하는 사태가 생기네요..
:  그래서 비동기로 세팅하면..제일 마지막 사운드만 출력이 됩니다.
: 만약 2개의 사운드만 출력하게 된다면.
:
: PlaySound("1.wav",NULL,SND_SYNC|SND_NOSTOP);
: PlaySound("2.wav",NULL,SND_SYNC|SND_NOSTOP);
:
:  처음 1번 쓰레드에서 사용자 입력으로 호출한 함수에서 저 두개의 사운드를 재생해야 하는데 재생이 끝나기전에 다른 작업으로 넘어 가야 합니다.
:  그리고 1번 쓰레드에서 호출한 함수에서 사운드 재생중에 다른 쓰레드에서 이 함수를 호출하면..
:  1,2 번 사운드를 재생해야 합니다.
:  즉
:  순차적으로 1,2,1,2 가 재생되어야 하는데...
:  이 4개의 사운드가 재생될동안 다른 작업은 계속 수행 하게 할려면 어떻게 해야 좋을지 조언 부탁 드리겠습니다.
:  설명중에 간단한..예제라도 보여주시면 감사하고요...
: 즐프하시고 주말 잘보네세요..
:  제가 적은 질문이지만 질문이 조금 어렵네요..
:
:  그리고 WinAPi 라서 질문 적을만한곳이 없어서 이곳에 적게 되어서 죄송합니다 ^^;

+ -

관련 글 리스트
41996 사운드 출력때문에 질문 드립니다. 이윤성 1298 2005/09/23
42003     Re:사운드 출력때문에 질문 드립니다. 아제나 1392 2005/09/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.