• 목록
  • 아래로
  • 위로

안녕하세요.

개발자밑 프로그래밍 할줄 아시는분들께 궁금한 점이 있습니다.

 

C언어나 자바 같은거 할줄 아시는분이라면 소스코드?를 보면 어떻게 동작하고 어떻게 이루어졌는지 확인이 가능할까요?

 

아니면 각 프로그램마다 소스코드를 전문적으로 만져본 사람만이 소스내용을 알수있을까요?

 

 

제가 사용하는 사운드프로그램(사운드포지) 안에 스크립트를 이용해서 여러가지 기능을 구현할수가 있는데요.

스크립트 파일 확장자가 cs인걸로 봐서는 c언어 인듯 싶습니다.;;

 

프로그래밍을 한번도 해본적이 없는사람이 이런걸 만드는게 많이 어려울지도 궁금합니다.

 

제가 원하던 기능에서 그나마 비슷한 기능을 하는 스크립트 파일인데요.

아래의 소스코드가 정확하게 어떤기능(어떤내용)을 하는지도 궁금합니다.

각줄마다 해석이 가능하신분이 계실까요?ㅠ

 

소스 코드는 아래와같습니다.

=====================================================================================

 

using System;
using System.Windows.Forms;
using SoundForge;

public class EntryPoint {
public void Begin(IScriptableApp app) {
ISfDataWnd wnd = app.ActiveWindow;

   if (wnd == null)

   {
            MessageBox.Show("Open a file before running this script.");
            return;
   }

   ISfFileHost file = wnd.File;
   SfAudioStatistics[] stat = new SfAudioStatistics[file.Channels];

   Int64 ccStart    = file.SecondsToPosition(0.0);
   Int64 ccStep     = file.SecondsToPosition(0.2);
   Int64 ccLength   = file.Length;
   double minus40db = SfHelpers.dBToRatio(-40.0);
   bool LastWasSilent = false;

   SfAudioSelection aSelection = new SfAudioSelection(wnd);
   SfAudioMarker    aRegion    = new SfAudioMarker(ccStart, ccStep);

   int idUndo = file.BeginUndo("Insert Silence");

   // Step through open file 0.2 seconds at a time.
   // If the selected area is RMS < -40db then
   // Create a 0.2 second region centered in the selection

   for (Int64 ccPos = ccLength; ccPos - ccStep > 0; ccPos -= ccStep)
   {

       // Select area (ccPos, ccStep)

       aSelection.Start  = ccPos-ccStep;
       aSelection.Length = ccStep;

       // Update statistics for this selection

       file.UpdateStatistics(aSelection);
       file.WaitForDoneOrCancel();

       if ( ! file.StatisticsAreUpToDate)
       {
     MessageBox.Show("Something went wrong.");
            return;
       }

       for (uint ii = 0; ii < file.Channels; ++ii)
       {
          stat[ii] = file.GetStatistics(ii);
       }

       // If RMS of all channels < -40db then

       if (file.Channels==1 && stat[0].RMSLevel < minus40db)

       {
      // If this is the second or more silent region then
      // Add a second longer

      if (LastWasSilent)
      {
        long secToInsert = app.CurrentFile.SecondsToPosition(1.0);
        app.CurrentFile.InsertSilence(ccPos, secToInsert);
      }

      LastWasSilent = true;
       }

       else
       {
      LastWasSilent = false;
       }
   }

   file.EndUndo(idUndo, false);

}

public void FromSoundForge(IScriptableApp app) {
   ForgeApp = app; //execution begins here
   app.SetStatusText(String.Format("Script '{0}' is running.", Script.Name));
   Begin(app);
   app.SetStatusText(String.Format("Script '{0}' is done.", Script.Name));
}
public static IScriptableApp ForgeApp = null;
public static void DPF(string sz) { ForgeApp.OutputText(sz); }
public static void DPF(string fmt, params object [] args) { ForgeApp.OutputText(String.Format(fmt, args)); }
} //EntryPoint

 

 

=========================================================================================

 

CFDF6CA6AB3146A8B5A32380489A6738.jpg

 

제가 원하는 기능은 위 사진에서 가장 아래부분 

 

silence part - voice parts - silence part  로 나눠진 부분에서

 

voice parts 는 건드리지않고

 

silence part 부분만 일정한 간격으로 무음 시간을 추가하는거거든요.

 

silence part의 시작부분과 젤끝은 marker로  각 파일별로 나눠져 있습니다.

 

이런 기능을 구현하기가 어려울까요?

포함 2명이 추천

추천인 2

작성자
자뻑보이 54 Lv. (55%) 238090/242000EXP

성우녹음실 오투사운드 운영중...


o2sound.com


댓글 4

OAUTH2
+1
C#언어입니다
comment menu
2021.03.19. 10:30

신고

"OAUTH2님의 댓글"

이 댓글을 신고 하시겠습니까?

OAUTH2
+1
아마도 무음 노이즈 구간 ( < -40db)을 완전한 무음으로 변경하는 스크립트 아닐까요?
comment menu
2021.03.19. 10:35

신고

"OAUTH2님의 댓글"

이 댓글을 신고 하시겠습니까?

OAUTH2
+1

A : -40db초과 구간
B : -40db미만 구간
O : 남겨둠
X : 무음 구간 삽입

AABBBABBBAABAA
OOOXXOOXXOOOOO
이런 방식으로 이전구간이 40db미만 구간인 경우만 무음을 삽입하는 듯 합니다.

저도 사운드포지와 C#에 무지해서 정확한 해석은 불가합니다.ㅠㅠ

comment menu
2021.03.19. 10:43

신고

"OAUTH2님의 댓글"

이 댓글을 신고 하시겠습니까?

자뻑보이 작성자 → OAUTH2
profile image
친절한 답변 감사합니다.
역시나 사운드포지와 C#언어를 둘다 알아야지만 해결이 가능한거군요.

그래도 알려주셔서 감사합니다.

말씀해주신 내용으로 봐서는 제가 원하던 기능과는 차이가 있네요.ㅠ

좀더 연구해봐야겠습니다.
comment menu
2021.03.19. 12:06

신고

"자뻑보이님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 739
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 4409
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4475
445 혹시 워드프레스 메인페이지 위젯 출력 어캐하나요? 4 핫슈 17.09.05.04:12 337
444 앱에서의 MIT라이센스 표시 관련하여 질문합니다. 4 title: 에그joyful 19.02.19.15:18 482
443 VPS 플랜 선택과 관련하여 질문 드립니다 ^-^ 4 image 이니스프리 20.02.28.20:52 215
442 다른 기기에서의 사이트 접속 불가 4 image 입체그림 20.02.17.19:03 597
441 어떻게 하면 제 페이지에 들어갈 수 있을까요? 4 image studyHTML 18.10.18.21:43 179
440 우분투에서 NTP 서버와 시간 동기화 관련하여 질문 드립니다. 4 image 이니스프리 18.10.11.01:32 500
개발자밑 프로그래밍 할줄 아시는분들께 궁금한 점이 있습니다. 4 image 자뻑보이 21.03.18.20:21 170
438 접근 가능한 링크가 없는 html 파일의 내용을 불러오는 방법이 있을까요? 4 image title: 크롬NUBE 21.03.23.20:35 196
437 RPS에서 비정상적인 접근은 무엇을 의미하나요 4 Hanam09 17.11.11.11:07 574
436 [파이썬] 웹 페이지 크롤링 시 조건에 따라 보여졌다 안보여지는 class를 조건문으로 사용 하고 싶은데요.. 4 위돈톡애니모 20.02.25.15:19 1333
435 (해결) 4 260578 20.05.18.20:51 142
434 네이비즘에서 측정한 스포어 서버시간의 오차 관련 질문 드립니다 (서버시간 측정 관련) 4 image 이니스프리 18.11.14.20:21 2457
433 [MX 레코드] 다음 스마트워크 MX 레코드 설정에 대해서 문의글 올립니다 4 image 260578 18.04.10.17:22 1607
432 맥북 프로 구매와 관련하여 여쭤봅니다 4 image 이니스프리 20.01.20.13:03 216
431 코딩 컨벤션상 전역변수와 지역변수의 변수명을 동일하게 하는 것이 무방한가요? 4 이니스프리 19.11.17.18:09 306
430 미디어위키 SSH 업데이트 4 wikiowner 21.02.01.13:08 91
429 여기 처음와서 모르는게 많습니다. 4 정찬옥 17.07.01.18:30 291
428 [역방향 프록시] 뭐가 문제인지 도움 부탁 드립니다 ㅠㅠ 4 image xnview 18.06.27.22:35 922
427 호스팅 패널에서 웹사이트를 등록할 때 IPv4 주소가 *으로 나옵니다 4 하이빅스비 22.10.10.15:08 173
426 XE Ace 스킨 사용중인데 이상합니다. 4 image Kongjak 17.10.17.17:37 209