-
Notifications
You must be signed in to change notification settings - Fork 0
/
extern.h
58 lines (56 loc) · 31.8 KB
/
extern.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef helph
#define helph
#include <stdio.h>
#include <math.h>
#include <string.h>
union intfloat {
float a; int b;
};
const char f2f23[] = "하이온의 미디 플레이어 v5.4rev2\r\n\r\n주요 기능:\r\n1. 검은미디 재생(특화됨)\r\n2. 나이트코어 버전으로 재생(특화됨)\r\n3. 평범한 미디 음원 재생\r\n4. 미디 파일을 웨이브 파일로 바꾸기\r\n5. 리버스 엔지니어링 연습에 적합 (스파게티 코드 포함)\r\n\r\n라이센스:\r\n이 프로그램의 저작자는 이 프로그램에 대해 저작권을 주장하지 않으며,사용자는 이 프로그램을 원하는 만큼 수정,복사,재배포할 수 있음.\r\n이 프로그램을 사용함으로써 생기는 모든 책임은 사용자에게 있으며, 개발자는 일절 책임지지 않음.\r\n만일 사용자가 저작자의 노가다질이 충분히 가치 있는 것이었다고 생각했다면 언젠가 저작자에게 맥주 한 잔을 사 줄 수 있음.\r\n\r\n사용 방법:\r\n1. 미디 파일 열기\r\n방법 1:파일-열기를 누른다\r\n방법 2:파일-최근에 연 파일을 누른다\r\n방법 3:파일을 프로그램의 창에 드래그한다\r\n방법 4:명령줄을 사용해 연다(또는 프로그램의 아이콘에 파일을 드래그한다)\r\n복수의 파일 선택 가능함\r\n\r\n2. 열려진 미디 파일 읽어오기(방법 1,2,3을 통해 연 경우만 해당)\r\n2.1. 미디 출력 장치\r\nhmp5 미디 드라이버를 선택할 경우 미디 파일이 wav 파일로 변환된 뒤 실행됨.\r\n불러오는 속도가 느리지만 미디 이벤트 손실이 없고 랙이 적으며 아마도 일부 미디 드라이버보다 더 좋은 음질을 얻을 수 있음.\r\n반면 그 옆(아마도 컴퓨터마다 다르겠지만 대개 Microsoft GS Wavetable synth)은 컴퓨터의 어딘가에 깔려 있을 미디 드라이버와 연결시켜 재생하는 방식임.\r\n불러오는 속도가 빠르지만 미디 이벤트가 많을 경우 손실이 있고 랙이 생김.\r\nauto를 선택하면 미디 파일의 종류를 자동으로 인식해 적절한 선택지를 자동으로 골라줌.\r\n그 외의 것들은 모두 상식을 따름. hmp5 미디 드라이버를 선택할 경우 사운드폰트를 지정해줘야 하며 지정해주지 않으면 gm.sf2(자동으로 생성됨)으로 자동 설정됨.\r\n외부 미디 드라이버와 연결할 경우 사운드폰트를 바꾸려면 해당 미디 드라이버의 환경설정에 들어가 직접 바꿔야 함.\r\n재생 속도와 음정, 소리 크기 등은 hmp5 미디 드라이버를 선택했을 경우 미디 파일을 읽기 전에만 설정 가능하며 재생 도중 바꿀 수는 없음. 반대로 외부 미디 드라이버를 선택할 경우 미디 파일을 읽기 전에는 설정할 수 없으며 재생 도중에 바꿀 수 있음.\r\nhmp5 미디 드라이버를 선택했을 경우 미디 파일을 불러오는 과정에서 wav 파일과 hmp 파일이 생성되고, 이는 프로그램이 종료되어도 삭제되지 않음. 이는 다음 번에 같은 미디 파일을 불러올 때 불러오는 속도를 빠르게 하기 위함임. 삭제해도 되지만 이 경우 다음 번에 해당 미디 파일을 불러올 경우 처음부터 다시 불러와야 하므로 불러오는 속도가 느려짐. wav 파일을 전용 오디오 편집 프로그램으로 수정하면 이후 실행 시 수정된 소리가 나옴.\r\n외부 미디 드라이버를 선택했을 경우 mev 파일과 hmp 파일이 생성되는데, mev는 mid 파일보다 빠르게 미디 이벤트를 불러올 수 있도록 수정된 확장자임. 이들 파일은 프로그램이 정상적으로 종료되기 직전에 삭제되는데, 외부 미디 드라이버를 사용했을 때는 불러오는 속도가 느리지 않기 때문임.\r\n2.2. 음높이 설정\r\n백분율을 사용하거나 +나 -를 붙인 숫자를 사용하는데 후자의 경우 semitone 단위로 처리됨(예시:80, 100, 150, 200, +5, +0, -5). 음높이 설정을 위한 두 개의 칸 중 왼쪽 칸은 백분율, 오른쪽 칸은 semitone 단위임.\r\n외부 미디 드라이버를 선택했을 경우 채널 10의 음높이는 pitch bend를 사용하지 않으면 바꿀 수 없음. 이는 채널 10이 타악기를 위해 예약되어 있기 때문임.\r\n기본적으로 설정된 음높이가 ±2 semitone 이내라면 pitch bend를 통해, 그렇지 않다면 key 밀기와 pitch bend를 함께 사용해 처리됨. 단 pitch bend의 scale을 바꾸는 부분이 미디 파일 내에 있을 경우 ±2 semitone 이내라도 key 밀기가 수행될 수 있음.\r\nportamento의 구현을 위해 pitch bend가 연속적으로 바뀌는 미디 파일의 경우 pitch bend를 수행하면 재생 시 오류가 날 수 있음. 본 프로그램은 이와 같은 오류 가능성을 사전에 탐지할 수 있는 기능이 있는데, 이에 해당된다면 음높이를 변경할 때 pitch bend를 수행하지 않고 key 밀기만이 수행됨(음높이 설정 밑의 체크 상자). 미디 파일을 불러온 직후부터 체크 상자에 체크 표시가 있다면 portamento가 포함된 미디 파일로써 pitch bend를 수행하지 않을 것이 권장되나, 사용자가 원하면 이를 해제할 수 있음. 다만 hmp5 미디 드라이버를 사용할 경우 상기 체크 상자를 사용할 수 없는데, 이는 hmp5 미디 드라이버가 다른 미디 드라이버와 다른 방식으로 구현되어 있어 상기한 오류가 발생할 가능성이 없기 때문임.\r\nkey 밀기 등의 사유로 미디 표준에서 벗어나는 음높이의 음을 재생해야 할 경우는 다음과 같이 처리됨.\r\nhmp5 미디 드라이버:표준에서 벗어나도 정상적으로 재생됨(초저주파나 초음파도 샘플링 레이트만 맞으면 재생 가능)\r\n외부 미디 드라이버:무시됨(해당 음 재생 안 됨)\r\n2.3. 속도 설정\r\n백분율 사용, 최소 10, 최대 500. 초당 프레임 수는 재생 속도의 영향을 받으며 재생 속도가 떨어지면 초당 프레임 수도 떨어짐.\r\n2.4. 소리 크기 설정\r\n백분율 사용, 미디 드라이버에 note on 이벤트를 보낼 때 velocity 값을 변조함.\r\n2.5. 소리 좌우 비율 설정\r\n-100은 왼쪽으로만, 100은 오른쪽으로만. hmp5 미디 드라이버는 스테레오를 지원하지 않음. 본 설정은 midiOutSetVolume 함수에서 처리되며 지원되지 않는 미디 드라이버가 있음.\r\npan,balance 미디 이벤트는 본 설정의 영향을 받지 않음(hmp5 미디 드라이버에서는 무시됨).\r\n지원되는 드라이버:Microsoft GS Wavetable synth,Timidity++Driver,BASSMIDI driver,...\r\n지원되지 않는 드라이버:CoolSoft VirtualMIDISynth,...\r\n2.6. 전체 소리 크기 설정\r\n백분율 사용, 본 설정은 midiOutSetVolume 함수에서 처리되며 지원되지 않는 미디 드라이버가 있음. 2.4의 소리 크기 조절보다 정밀한 설정이 가능함. 키보드의 윗쪽 화살표 키와 아랫쪽 화살표 키로도 조절할 수 있음.\r\n미디 드라이버가 이를 지원한다면 가급적 2.4의 소리 크기 설정보다 2.6의 소리 크기 설정을 사용하라. 단 hmp5 미디 드라이버를 사용했을 때 생기는 clipping이 문제라면 2.4의 소리 크기 설정을 사용해야 한다.\r\n지원되는 드라이버:Microsoft GS Wavetable synth,Timidity++Driver,BASSMIDI driver,...\r\n지원되지 않는 드라이버:CoolSoft VirtualMIDISynth,...\r\n2.7. 낮은 소리 크기, 중간 소리 크기, 높은 소리 크기 설정\r\n각각의 영역의 소리 크기를 조절함. 2.4와 마찬가지로 note on 이벤트를 보낼 때 velocity 값을 변조하는 방식으로 구현되어 있음. 선형적으로 구현되어 있으며 다음과 같이 반응함.\r\n0번째 note(C-2):낮은소리 1.0, 중간소리 0.0, 높은소리 0.0\r\n31번째 note(G0):낮은소리 0.5, 중간소리 0.5, 높은소리 0.0\r\n63번째 note(D#3):낮은소리 0.0, 중간소리 1.0, 높은소리 0.0\r\n95번째 note(B5):낮은소리 0.0, 중간소리 0.5, 높은소리 0.5\r\n127번째 note(G8):낮은소리 0.0, 중간소리 0.0, 높은소리 1.0\r\n2.8. 뱅크 설정\r\n어떤 사운드폰트의 bank를 불러올지 설정하는 기능임. 일반적으로 0번째 bank가 불러들여지지만 채널 10의 경우 타악기를 위해 예약되어 있으며 127번째 bank가 불러들여짐.\r\n외부 미디 드라이버가 연결되어 있을 경우 default 값(-1)로 설정할 수 없음\r\n일반적으로 채널 10은 127번째 bank로 고정되어 있으며 거의 모든 미디 드라이버가 이를 변경하는 것을 지원하지 않음. 하지만 hmp5 미디 드라이버에서는 이를 변경할 수 있음.\r\n다수의 드라이버가 채널 10의 재생을 지원하지 않음.\r\n지원되는 드라이버:Microsoft GS Wavetable synth,...\r\n지원되지 않는 드라이버:CoolSoft VirtualMIDISynth,Timidity++,BASSMIDI driver,...\r\n2.9. 프로그램 설정\r\n어떤 사운드폰트의 preset을 불러올지 설정하는 기능임. 또는 미디의 프로그램을 설정하는 기능임. 또는 사용할 악기를 설정하는 기능임. \r\n외부 미디 드라이버가 연결되어 있을 경우 default 값(129)로 설정할 수 없음\r\n2.10. 잔향 설정\r\n잔향 값을 설정함. 잔향을 설정하는 미디 이벤트를 가로챈 뒤 상기 값을 더한 값을 원래의 값 대신 보냄. hmp5 미디 드라이버를 사용할 경우 다른 미디 드라이버보다 더 깊이 있는 잔향을 넣을 수 있음.\r\nhmp5 미디 드라이버에서 잔향 구현을 위한 시간 지연은 0.1초이며 리버스 엔지니어링 등의 방법을 통해 이를 변경할 수 있음.\r\n2.11. 코러스 설정\r\n코러스 값을 설정함. 다수의 드라이버가 이를 지원하지 않음. 코러스를 설정하는 미디 이벤트를 가로챈 뒤 상기 값을 더한 값을 원래의 값 대신 보냄.\r\nhmp5 미디 드라이버에서 코러스 구현을 위한 최대 시간 지연은 0.01초이며 LFO의 주파수는 4Hz임. 리버스 엔지니어링 등의 방법을 통해 이를 변경할 수 있음.\r\n지원하는 드라이버:BASSMIDI driver,...\r\n지원하지 않는 드라이버:Microsoft GS Wavetable synth,CoolSoft VirtualMIDISynth,Timidity++Driver,...\r\n2.11. 모듈레이션 설정\r\nmodulation wheel의 값을 설정함. modulation wheel의 값을 설정하는 미디 이벤트를 가로챈 뒤 상기 값을 더한 값을 원래의 값 대신 보냄. \r\nhmp5 미디 드라이버에서 modulation wheel 구현을 위한 LFO의 주파수는 4Hz임. 리버스 엔지니어링 등의 방법을 통해 이를 변경할 수 있음.\r\n2.12. 위치 설정\r\n재생 위치를 설정함. 아래의 슬라이더를 통해서도 설정할 수 있음. 미디 파일이 재생(또는 일시중지) 중이 아닐 경우 이 값을 변경할 수 없음. 키보드의 왼쪽 화살표 키와 오른쪽 화살표 키로도 조절할 수 있음.\r\n2.13. hmp5 미디 드라이버의 지원 범위\r\n모노로 동작하지만, 상기한 모든 기능을 지원함.\r\n2.14. lrc(가사) 파일 불러오기\r\nlrc 파일의 이름을 미디 파일과 같게 하면 미디 파일을 불러올 때 자동으로 읽어들임. 그 외의 방법으로는 불러올 수 없음. \r\n\r\n3. 메인 프레임\r\n3.1. 파일\r\n모든 것이 상식과 같음, 복수의 파일 열기가 가능하며 이 경우 한 개씩 차례대로 재생됨.\r\n3.2. 재생\r\n모든 것이 상식과 같음. '앞으로'와 '뒤로'는 10초 단위로 이동하며 재생이 끝나기 10초 전 이후에는 앞으로 이동할 수 없고 재생한 지 10초 전에는 뒤로 이동할 수 없음.\r\n'초기화'를 누르면 재생 속도와 음높이, 소리 크기가 모두 초기화됨.\r\n'일시정지'를 누르면 임시로 재생이 정지되며 '재생'이나 space를 누르면 다시 재생됨.\r\n'정지'를 누르면 프로그램이 종료되고 다시 실행되는데, '재생'을 누르거나 space를 누르면 자동으로 재생됨.\r\n'재\r\n3.3. 설정\r\n'배경화면 불러오기'를 누르면 배경화면을 불러올 수 있음. 귀찮게 동영상 편집 프로그램 따위로 합성 안 해도 됨\r\n'그래픽'을 누르면 보는 방향과 블록,글씨의 색깔 등을 지정할 수 있음. 글씨의 색깔은 프로그램의 화면에서 마우스 오른쪽 버튼을 클릭하거나 마우스 오른쪽 버튼을 더블클릭해 설정할 수도 있음.\r\n'블록 색깔'에서 '임의로'를 선택하면 프로그램이 실행될 때마다 블록 색깔이 임의로 바뀜.\r\n\r\n4. 오류가 생겼을 때\r\n4.1. 프로그램을 종료할 것\r\n4.2. hmp6.ini를 찾아 삭제할 것\r\n4.3. 다시 실행할 것\r\n4.4. 그래도 안 되면 개발자에게 제보할 것\r\n\r\n그 외:\r\n버그 잡기 외의 업데이트 계획 없음.\r\n이 도움말은 2021년 8월 20일에 마지막으로 업데이트되었음.\r\n\r\n개발자 메일:\r\[email protected]";
const char f2f24[] = "hyon’s midi player v5.4rev2\r\n\r\nmain function:\r\n1. Black MIDI playback (specialized)\r\n2. Play in night core version (specialized)\r\n3. Regular MIDI sound source playback\r\n4. Replace the MIDI file with a wave file\r\n5. Suitable for reverse engineering practice (including spaghetti code)\r\n\r\nlicense:\r\nThe authors of this program do not claim copyright to this program, and you can modify, copy and redistribute the program as you wish. \r\nThe use of this program is at your own risk and the developer is not responsible.\r\nIf the user thought that the nagging quality of the author was sufficiently valuable, one day he could buy a beer for the author.\r\n\r\nHow to use:\r\n1. Open the MIDI file\r\nMethod 1: Click File - Open\r\nMethod 2: File - Click the file you recently opened\r\nMethod 3: Drag the file to the program's window\r\nMethod 4: Open with the command line (or drag the file to the icon of the program)\r\nMultiple files can be selected\r\n\r\n2. Reading open MIDI files (only if opened via methods 1, 2 and 3)\r\n2.1. MIDI output device\r\nIf you select hmp5 MIDI driver, the MIDI file is converted to wav file and executed.\r\nIt has a slower loading speed but no MIDI event loss, fewer racks, and possibly better sound quality than some MIDI drivers.\r\nOn the other hand, the Microsoft GS Wavetable synth, which may be different from computer to computer, is connected to a MIDI driver that is somewhere on the computer.\r\nFast loading speed but lots of MIDI events will cause loss and racking.\r\nSelect auto to automatically recognize the type of MIDI file and automatically select the appropriate option.\r\nEverything else follows common sense. If you select the hmp5 MIDI driver, you need to specify the sound font. If you do not specify it, it will be automatically set to gm.sf2 (automatically generated).\r\nIf you want to change the sound font when connecting to an external MIDI driver, you need to change it directly in the configuration of the MIDI driver.\r\nThe playback speed, pitch, and sound size can only be set before reading the MIDI file when the hmp5 MIDI driver is selected, and can not be changed during playback. Conversely, if you select an external MIDI driver, you can not set the MIDI file before reading it, and you can change it during playback.\r\nIf you select the hmp5 MIDI driver, the wav file and hmp file will be created during the loading of the MIDI file, which will not be deleted even if the program is closed. This is to speed up the loading time the next time you load the same MIDI file. In this case, if you load the MIDI file the next time, you will have to load it again from the beginning, so the loading speed will be slower. If you modify the wav file with a dedicated audio editing program, the modified sound will be output afterwards.\r\nIf an external MIDI driver is selected, a mev file and an hmp file are created. Mee is a modified extension that allows MIDI events to be loaded faster than the mid file. These files will be deleted just before the program terminates normally, because the speed is not slow when using an external MIDI driver.\r\n2.2. Pitch setting\r\nUse percentages or numbers with + or -. In the latter case, they are processed in semitone units (for example: 80, 100, 150, 200, +5, +0, -5). The left column is the percentage and the right column is the semitone unit.\r\nIf you select an external MIDI driver, the pitch of channel 10 can not be changed without using the pitch bend. This is because channel 10 is reserved for percussion.\r\nIf the default pitch is within ± 2 semitones, the pitch bend is used, otherwise key push and pitch bend are used together. However, key pushing can be performed within ± 2 semitones if the part of the pitch bend that changes the scale is in the MIDI file.\r\nFor MIDI files that change pitch bend continuously for portamento implementation, pitch bend may cause playback error. This program has a function to detect the possibility of such errors in advance. If this is the case, only key push is performed without pitch bend when changing the pitch (check box below pitch setting). If there is a check mark in the check box immediately after loading the MIDI file, it is recommended that you do not perform pitch bend as a MIDI file with portamento, but you can disable it if you wish. However, if you use the hmp5 MIDI driver, you will not be able to use the above checkbox because the hmp5 MIDI driver is implemented differently from other MIDI drivers, so the above error is unlikely to occur.\r\nIf you need to play a note at a pitch that deviates from the MIDI standard for reasons such as key pushing, the following processing is performed.\r\nhmp5 MIDI driver: Normal playback even when out of standard (Very low frequency or ultrasound can be played if the sampling rate is correct)\r\nExternal MIDI Driver: Ignored (the corresponding note is not played)\r\n2.3. Speed setting\r\nPercentage used, minimum 10, maximum 500. The number of frames per second is affected by the playback speed, and the frame rate drops per second when the playback speed is low.\r\n2.4. Set sound size\r\nUse percentage to modulate the velocity value when sending the note on event to the MIDI driver.\r\n2.5. Sound left to right ratio setting\r\n-100 is left only, 100 is right only. The hmp5 MIDI driver does not support stereo. This setting is handled by the midiOutSetVolume function and there is an unsupported MIDI driver.\r\npan, balance MIDI events are not affected by this setting (ignored by the hmp5 MIDI driver).\r\nSupported drivers: Microsoft GS Wavetable synth, Timidity ++ Driver, BASSMIDI driver, ...\r\nUnsupported driver: CoolSoft VirtualMIDISynth, ...\r\n2.6. Set overall sound size\r\nPercentage usage, this setting is handled by the midiOutSetVolume function and there are unsupported MIDI drivers. It is possible to set more precise than the sound size of 2.4. You can also adjust with the up and down arrow keys on the keyboard.\r\nIf your MIDI driver supports it, use a sound volume setting of 2.6 rather than the sound volume setting of 2.4. However, if clipping is a problem when using the hmp5 MIDI driver, you should use the 2.4 volume setting.\r\nSupported drivers: Microsoft GS Wavetable synth, Timidity ++ Driver, BASSMIDI driver, ...\r\nUnsupported driver: CoolSoft VirtualMIDISynth, ...\r\n2.7. Low sound size, Medium sound size, High sound size setting\r\nAdjust the volume of each area. As in 2.4, it is implemented by modulating the velocity value when sending a note on event. It is implemented linearly and responds as follows.\r\n0th note (C-2): Low sound 1.0, Medium sound 0.0, High sound 0.0\r\n31st note (G0): Low sound 0.5, Medium sound 0.5, High sound 0.0\r\n63th note (D # 3): Low sound 0.0, Medium sound 1.0, High sound 0.0\r\n95th note (B5): low sound 0.0, medium sound 0.5, high sound 0.5\r\n127th note (G8): Low sound 0.0, Medium sound 0.0, High sound 1.0\r\n2.8. Bank setup\r\nIt is a function to set which sound font bank is loaded. Normally the 0th bank is recalled, but channel 10 is reserved for percussion and the 127th bank is recalled.\r\nCan not set default value (-1) when external MIDI driver is connected\r\nNormally, channel 10 is fixed at the 127th bank and almost all MIDI drivers do not support this change. However, the hmp5 MIDI driver can change this.\r\nMany drivers do not support the playback of channel 10.\r\nSupported Drivers: Microsoft GS Wavetable synth, ...\r\nUnsupported drivers: CoolSoft VirtualMIDISynth, Timidity ++, BASSMIDI driver, ...\r\n2.9. Program settings\r\nIt is a function to set preset of sound font to be loaded. Or the program of the MIDI. Or to set the instrument to be used.\r\nCan not set default value (129) if external MIDI driver is connected\r\n2.10. Reverb setting\r\nSet the reverberation value. Interrupts the MIDI event that sets the reverb, then sends the value plus the original value instead. If you use the hmp5 MIDI driver, you can add more reverberations than other MIDI drivers.\r\nThe time delay for implementing reverberation in the hmp5 MIDI driver is 0.1 second and can be changed through reverse engineering or other methods.\r\n2.11. Chorus settings\r\nSet the chorus value. Many drivers do not support this. Interrupts a MIDI event that sets the chorus, then sends the value plus the previous value instead of the original value.\r\nThe maximum time delay for implementing the chorus in the hmp5 MIDI driver is 0.01 second and the frequency of the LFO is 4 Hz. You can change this through methods such as reverse engineering.\r\nSupported drivers: BASSMIDI driver, ...\r\nUnsupported drivers: Microsoft GS Wavetable synth, CoolSoft VirtualMIDISynth, Timidity ++ Driver, ...\r\n2.11. Modulation settings\r\nSet the value of the modulation wheel. Interrupts a MIDI event that sets the value of the modulation wheel, then sends the value plus the previous value instead of the original value.\r\nThe frequency of the LFO for implementing the modulation wheel in the hmp5 MIDI driver is 4 Hz. You can change this through methods such as reverse engineering.\r\n2.12. Positioning\r\nSet the playback position. It can also be set through the slider below. You can not change this value if the MIDI file is not playing (or pausing). You can also adjust with the left and right arrow keys on the keyboard.\r\n2.13. Support range of hmp5 MIDI driver\r\nWorks in mono, but supports all of the above functions.\r\n2.14. Import lrc (lyrics) file\r\nIf the name of the lrc file is the same as the MIDI file, it will be loaded automatically when you import the MIDI file. It can not be called by other methods.\r\n\r\n3. Mainframe\r\n3.1. file\r\nEverything is the same as common sense, multiple files can be opened, in this case one by one.\r\n3.2. play\r\nEverything is the same as common sense. 'Forward' and 'Back' move in units of 10 seconds, and can not move forward 10 seconds before the end of playback, and can not move back 10 seconds before playback.\r\nPress 'Reset' to initialize both playback speed, pitch and sound volume.\r\nPress 'Pause' to temporarily stop playback. Press 'Play' or space to resume playback.\r\nIf you press 'Stop', the program will be closed and restarted. Press 'Play' or press space to play it automatically.\r\n'ashes\r\n3.3. Set\r\nYou can call up the wallpaper by pressing 'Load wallpaper'. I do not want to bother with video editing programs.\r\nPress 'Graphic' to specify the viewing direction, block, and color of the text. The color of the text can be set by right-clicking on the program screen or by double-clicking the right mouse button.\r\nIf you select 'Random' in 'Block Color', the block color will change randomly whenever the program is run.\r\n\r\n4. When an error occurs\r\n4.1. End the program\r\n4.2. Find and delete hmp6.ini\r\n4.3. Run it again\r\n4.4. If it does not work, report it to the developer\r\n\r\netc:\r\nThere is no update plan other than bug catching.\r\nThis article was last updated on Aug 20, 2021.\r\n\r\n\r\nDeveloper Mail:\r\[email protected]";
const double pyt[12][17] = { { 439.5034092,439.0073789,438.5119084,438.0169971,437.5226444,437.0288496,442.491383,441.9919804,441.4931415,440.9948655,440.4971519,440,439.5034092,439.0073789,438.5119084,438.0169971,437.5226444 },{ 463.0159373,468.8032899,468.2741913,467.7456898,467.2177848,466.6904756,466.1637615,465.6376419,465.1121161,464.5871834,464.0628432,463.5390947,463.0159373,468.8032899,468.2741913,467.7456898,467.2177848 },{ 494.4413354,493.8833013,493.325897,492.7691218,492.2129749,491.6574558,491.1025636,490.5482977,496.6797842,496.1192237,495.5592959,495,494.4413354,493.8833013,493.325897,492.7691218,492.2129749 },{ 520.8929294,520.3050417,519.7178174,526.213901,525.6200079,525.026785,524.4342317,523.8423471,523.2511306,522.6605813,522.0706985,521.4814815,520.8929294,520.3050417,519.7178174,526.213901,525.6200079 },{ 556.2465023,555.6187139,554.9916341,554.365262,553.7395968,553.1146377,552.490384,551.8668349,551.2439894,550.621847,557.5042078,556.875,556.2465023,555.6187139,554.9916341,554.365262,553.7395968 },{ 586.0045456,585.3431719,584.6825445,584.0226628,583.3635258,590.6551332,589.9885107,589.3226405,588.6575219,587.993154,587.3295358,586.6666667,586.0045456,585.3431719,584.6825445,584.0226628,583.3635258 },{ 625.7773151,625.0710532,624.3655883,623.6609197,622.9570464,622.2539674,621.551682,620.8501892,620.1494881,619.4495778,618.7504575,618.0521262,625.7773151,625.0710532,624.3655883,623.6609197,622.9570464 },{ 659.2551138,658.5110683,657.7678626,657.0254956,656.2839665,655.5432743,654.8034181,662.9879706,662.2397122,661.4922982,660.7457278,660,659.2551138,658.5110683,657.7678626,657.0254956,656.2839665 },{ 694.5239059,693.7400555,702.4112869,701.6185347,700.8266772,700.0357134,699.2456423,698.4564629,697.6681741,696.8807751,696.0942647,695.308642,694.5239059,693.7400555,702.4112869,701.6185347,700.8266772 },{ 741.6620031,740.8249519,739.9888454,739.1536826,738.3194624,737.4861836,736.6538454,735.8224465,734.9919859,744.1788355,743.3389438,742.5,741.6620031,740.8249519,739.9888454,739.1536826,738.3194624 },{ 781.3393942,780.4575625,779.576726,778.6968837,788.4300118,787.5401775,786.6513476,785.7635207,784.8766959,783.990872,783.1060478,782.2222222,781.3393942,780.4575625,779.576726,778.6968837,788.4300118 },{ 834.3697534,833.4280709,832.4874511,831.5478929,830.6093952,829.6719566,828.735576,827.8002523,826.8659842,825.9327705,825.00061,835.3125,834.3697534,833.4280709,832.4874511,831.5478929,830.6093952 } };
const double pure[12][17] = { { 439.5034092,444.4949712,443.9933073,443.4922096,442.9916774,437.5223209,437.0285264,436.5352893,436.0426089,440.9948655,440.4971519,440,439.5034092,444.4949712,443.9933073,443.4922096,442.9916774 },{ 463.5387519,463.015595,462.4930284,461.9710517,467.2177848,466.6904756,466.1637615,465.6376419,470.9260176,470.3945232,469.8636287,469.3333334,463.5387519,463.015595,462.4930284,461.9710517,467.2177848 },{ 494.4413354,493.8833013,493.325897,498.9287358,498.3656371,497.803174,497.2413456,491.1022005,490.547935,489.994295,489.4412799,495,494.4413354,493.8833013,493.325897,498.9287358,498.3656371 },{ 527.4040911,526.8088547,520.3046569,519.7174331,519.130872,518.5449729,524.4342317,523.8423471,523.2511306,522.6605813,528.5965823,528,527.4040911,526.8088547,520.3046569,519.7174331,519.130872 },{ 549.3792615,555.6187139,554.9916341,554.365262,553.7395968,560.0285707,559.3965138,558.7651703,558.1345393,551.2435818,550.6214398,550,549.3792615,555.6187139,554.9916341,554.365262,553.7395968 },{ 593.3296024,592.6599615,591.9910763,591.3229461,584.022231,583.3630945,582.7047019,582.0470524,588.6575219,587.993154,587.3295358,586.6666667,593.3296024,592.6599615,591.9910763,591.3229461,584.022231 },{ 618.0516692,617.3541266,616.6573712,623.6609197,622.9570464,622.2539674,621.551682,628.6108166,627.9013567,627.1926976,626.4848382,618.75,618.0516692,617.3541266,616.6573712,623.6609197,622.9570464 },{ 659.2551138,658.5110683,665.9899609,665.2383143,664.4875161,663.7375653,655.5427896,654.8029339,654.0639133,653.3257266,660.7457278,660,659.2551138,658.5110683,665.9899609,665.2383143,664.4875161 },{ 703.2054547,694.5233924,693.7395426,692.9565774,692.174496,700.0357134,699.2456423,698.4564629,697.6681741,705.5917848,704.795443,704,703.2054547,694.5233924,693.7395426,692.9565774,692.174496 },{ 741.6620031,740.8249519,739.9888454,739.1536826,747.5484556,746.7047609,745.8620184,745.0202271,735.8219024,734.9914425,734.1619198,733.3333333,741.6620031,740.8249519,739.9888454,739.1536826,747.5484556 },{ 791.1061366,790.213282,789.3214351,779.5761496,778.696308,777.8174593,776.9396025,785.7635207,784.8766959,783.990872,783.1060478,792,791.1061366,790.213282,789.3214351,779.5761496,778.696308 },{ 824.0688923,823.1388354,832.4874511,831.5478929,830.6093952,829.6719566,839.0947707,838.1477554,837.201809,836.2569301,825.9321598,825,824.0688923,823.1388354,832.4874511,831.5478929,830.6093952 } };
const unsigned char opts[] = { 0x52,0x49,0x46,0x46,0x5a,0x1B,0x4B,0x00,0x57,0x41,0x56,0x45,0x66,0x6D,0x74,0x20,0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x22,0x56,0x00,0x00,0x44,0xAC,0x00,0x00,0x02,0x00,0x10,0x00,0x64,0x61,0x74,0x61 };
const char ekeysigm[2][17][15] = { { "FflatMajor","CflatMajor","GflatMajor","DflatMajor","AflatMajor","EflatMajor","BflatMajor","FMajor","CMajor","GMajor","DMajor","AMajor","EMajor","BMajor","FsharpMajor","CsharpMajor","GsharpMajor" },{ "dflatminor","aflatminor", "eflatminor", "bflatminor", "fminor", "cminor", "gminor", "dminor", "aminor", "eminor", "bminor", "fsharpminor", "csharpminor", "gsharpminor", "dsharpminor", "asharpminor", "esharpminor" } };
const char kkeysigm[2][17][15] = { { "내림바장조","내림다장조","내림사장조","내림라장조","내림가장조","내림마장조","내림나장조","바장조","다장조","사장조","라장조","가장조","마장조","나장조","올림바장조","올림다장조","올림사장조" },{ "내림라단조","내림가단조", "내림마단조", "내림나단조", "바단조", "다단조", "사단조", "라단조", "가단조", "마단조", "나단조", "올림바단조", "올림다단조", "올림사단조", "올림라단조", "올림가단조", "올림마단조" } };
const int sbcolor[] = { 0xFF007F , 0x77B5FE , 0xFFDF00 , 0xBFFF00 , 0x7F00FF , 0x00FFFF , 0xE0B0FF , 0xFFE5B4 , 0xA3C1AD , 0xC0C0C0 , 0xC19A6B , 0xFE4EDA , 0xF0FFF0 , 0x50C878 , 0xFDFF00 , 0xE7FEFF };
const float x1n1 = 2.59, y1n1 = 2.594, ypn1 = -0.012;
extern unsigned int deltatime, playrate;
extern short midipan, pc2[16];
extern long long nplayoffset, playoffset, midifilesize;
extern bool ab, mmp, wjaa, sti3, exbl, bf, quit, sdfsdf, midiout, sq1, tfnm, kj768, ghkj6, j5j58, g3446;
extern char recentfilelist[14][10000], p[100], *midname;
extern float erhwh[16], iyybt[16], trity[16], sadae[16], tr, tg, tb, ta, x, y, h45h7, gasfw, hg4h5, j5jgj, stretchx, stretchy, stretchz, upbl, dwbl, turfreq;
extern unsigned long long playmidin0, playlength;
extern double f346h, playvolume, volume2[16], mdvol2[3][16], mdvol3[128][16], dchorus[16], dreverb[16], rmodulationwheel[16], pitcherr[128][16], chvol[16], pitch[16], spd;
extern long chorus[16], owptr6, reverb[16], modulationwheel[16], fchorus[16], freverb[16], fmodulationwheel[16], delay[16], modulationwheel[16], pbendratio[16];
extern int setmidivol, monce, mode, mpoffset, j5gyj, asfaq, brebe, windx, windy, trand, mirror, reverse, knamei, kfreqi, hortxti, textmode, chn, h54ui, jhj56, j65j8, fsize, fspace, txtmd2, midibank[16], midipreset[16], fmbank[16], fmpreset[16], ombank[16], ompreset[16], ipaused[16], bpaused[16], mpaused[16], cpaused[16], rpaused[16], ro, windv, windh, windowx, windowy, oks, isplay;
extern void putini();
int clock2_save();
inline char* int2charp(int i) {
sprintf(p, "%d", i);
return p;
}
inline char* dbl2charp(double i) {
sprintf(p, "%lf", i);
for (int j = strlen(p) - 1; j > 0; j--) {
if (p[j] == '0') { p[j] = 0; }
else if (p[j] == '.') {
p[j] = 0; break;
}
else break;
}
return p;
}
inline char* flt2charp(float i) {
sprintf(p, "%f", i);
for (int j = strlen(p) - 1; j > 0; j--) {
if (p[j] == '0') { p[j] = 0; }
else if (p[j] == '.') {
p[j] = 0; break;
}
else break;
}
return p;
}
#endif