gleb812 / pch2csd

The Clavia Nord Modular G2 Patch Convertor Project
MIT License
139 stars 11 forks source link

Рефакторинг кода #3

Closed ghost closed 7 years ago

ghost commented 7 years ago

Привет!

Я пофиксил чтение файлов и проблемы с путями: https://github.com/gleb812/pch2csd/tree/cmake_build

Сейчас, правда, есть косяки. Конвертирую файл Gleb2.pch2, но в результат получается следующим:

</CsInstruments>
<CsScore>
i1 0 [60*60*24*7]
i2 0 [60*60*24*7]
</CsScore>
</CsoundSynthesizer>

;******************************
; Initialize the ZAK space
zakinit 2, 2

;******************************
; Opcode Definitions

instr 1
     Out2 0.000, 0.000, -2054565793904463970304.000, 0, 0
     OscD 22.000, 0.000, -2054565793904463970304.000, 0.000, -2054565793904463970304.000, 0.000, 0, 1
endin
instr 2
endin

;******************************
</CsInstruments>
<CsScore>
i1 0 [60*60*24*7]
i2 0 [60*60*24*7]
</CsScore>
</CsoundSynthesizer>

@Aglioni знаешь, в чем проблема может быть?

ghost commented 7 years ago

Лог вот такой:

/Users/ech/workspace/dev/pch2csd/cmake-build-debug/pch2csd ../Patches/Gleb2.pch2 -d ../Data
*** READ ALL TABLES ***
BUT002  ../Data/Tables/BUT002.txt
BUT003  ../Data/Tables/BUT003.txt
BUT004  ../Data/Tables/BUT004.txt
BUT006  ../Data/Tables/BUT006.txt
BUT007  ../Data/Tables/BUT007.txt
CLA000  ../Data/Tables/CLA000.txt
CLAEXP  ../Data/Tables/CLAEXP.txt
DLY100  ../Data/Tables/DLY100.txt
DLY25m  ../Data/Tables/DLY25m.txt
DLY2p7  ../Data/Tables/DLY2p7.txt
DLY500  ../Data/Tables/DLY500.txt
DLY_1s  ../Data/Tables/DLY_1s.txt
DLY_2s  ../Data/Tables/DLY_2s.txt
DLY_5m  ../Data/Tables/DLY_5m.txt
DLYsmp  ../Data/Tables/DLYsmp.txt
LEVatt  ../Data/Tables/LEVatt.txt
LVLamp  ../Data/Tables/LVLamp.txt
LVLatG  ../Data/Tables/LVLatG.txt
LVLlev  ../Data/Tables/LVLlev.txt
LVLpos  ../Data/Tables/LVLpos.txt
LVLreG  ../Data/Tables/LVLreG.txt
LVLrel  ../Data/Tables/LVLrel.txt
LVLthr  ../Data/Tables/LVLthr.txt
MID000  ../Data/Tables/MID000.txt
Pad6dB  ../Data/Tables/Pad6dB.txt
file was created!
*** patch description (PD) ***
PD_position = 82
PD_Length = 15
PD_VoiceCount = 1
PD_HeightFXVABar = 600
PD_Red_cable_visibility on
PD_Blue_cable_visibility on
PD_Yellow_cable_visibility on
PD_Orange_cable_visibility on
PD_Green_cable_visibility on
PD_Purple_cable_visibility on
PD_White_cable_visibility on
PD_Mono/Poly = Mono
PD_Active_Variation = 1
PD_Category - No Cat
*** module list (ML) ***
ML_position = 100
ML_Length = 15
ML_Location = Voice Area
ML_Module_Count = 2
ML_Module_#0
ML_Module_Type = 4
!!!ML_Module_Index_VA = 1
!!!i = 0
ML_Horizontal_position = 1
ML_Vertical_position = 16
ML_Color = 0
ML_Insert = 0

ML_Module_#1
ML_Module_Type = 96
!!!ML_Module_Index_VA = 2
!!!i = 1
ML_Horizontal_position = 1
ML_Vertical_position = 6
ML_Color = 0
ML_Insert = 1
ML_HideParameter = 5

ML_Module_Type_List
4
96
ML_Module_List_VA
4
96
*** module list (ML) ***
ML_position = 118
ML_Length = 2
ML_Location = FX Area
ML_Module_Count = 0
ML_Module_Type_List
4
96
ML_Module_List_FX
*** Mystery Object (MO) ***
MO_position = 123
MO_Length = 6
*** cable list (CL) ***
CL_Location = Voice Area
CL_Cable_Count = 1
CL_Cable_#0
CL_Color = 6 - White
CL_Module_From - 1
CL_Jack_From - 0
Cable[16] - 0
CL_Type = 0 - Input to Input
CL_Module_To - 1
CL_Jack_To - 1
*** cable list (CL) ***
CL_Location = FX Area
CL_Cable_Count = 0
*** Patch Settings (PS) ***
PS_position = 148
PS_Length = 322
*** Module Parameters (MP) ***
MP_Length = 87
MP_Location = Voice Area
MP_Module_Count = 2
MP_Module_Index = 1
MP_imodules = 0
MP_Module_Parameter_Count = 3
MP_Value = 0
MP_Value = 1
MP_Value = 0
MP_Module_Index = 2
MP_imodules = 1
MP_Module_Parameter_Count = 5
MP_Value = 22
MP_Value = 26
MP_Value = 1
MP_Value = 0
MP_Value = 0
*** Module Parameters (MP) ***
MP_Length = 3
MP_Location = FX Area
MP_Module_Count = 0
CableCounter = 1
Patch has floating currents
k-Cables
a-Cables
*** READ ALL K2A RULES ***
*** Modules VA ***
#   Index   Module  eludoM
0   1   4   
1   2   96  
*** Modules FX ***
#   Index   Module  eludoM
*** Checking Library of Modules ***
Table with names of modules not foundNumber Modules in PatchFile    2
--------------- *** ----------------
#   Module  csd Map IO  Name
0   4   Y   Y   Y   
1   96  Y   Y   Y   
k-cables
a-Cables
Generation zakinit
Sound_Cable_Count = 0
Control_Cable_Count = 0
Other_Cable_Count = 1
DANGER - Exotic Colors of Cables
Generating instruments list
Generating instrument 
ModuleCounter 0
index 1
#4
ParameterCountersVA = 3
Number of real parameters = 3
ModuleCounter = 0
ModuleIndex = 1
ModuleType = 4
ParameterCountersVA: 3
ParameterType: d
TableName: MID000; TableID = 24
0 -> 0.000
ParameterType: 0
TableName: ; TableID = 0
1 -> 0.000
ParameterType: 0
TableName: ; TableID = 0
0 -> -2054565793904463970304.000
A-cable
IN
A-cable
IN
ModuleCounter 1
index 2
#96
ParameterCountersVA = 6
Number of real parameters = 6
ModuleCounter = 1
ModuleIndex = 2
ModuleType = 96
ParameterCountersVA: 6
ParameterType: d
TableName: MID000; TableID = 24
22 -> 22.000
ParameterType: 0
TableName: ; TableID = 0
26 -> 0.000
ParameterType: 0
TableName: ; TableID = 0
1 -> -2054565793904463970304.000
ParameterType: 0
TableName: ; TableID = 0
0 -> 0.000
ParameterType: 0
TableName: ; TableID = 0
0 -> -2054565793904463970304.000
ParameterType: 0
TableName: ; TableID = 0
5 -> 0.000
K-cable
IN
A-cable
OUT

Process finished with exit code 0
Aglioni commented 7 years ago

Привет!

Думаю, что беда состоит в следующем:

там, где происходит чтение из таблиц (txt-файлов c числами) готовой функцией, то всё хорошо, но при парсинге параметра для опкода он должен считать из отдельного файла (Maps) тип переменной и идентификатор таблицы, пример: параметр имеет тип напрямую указываемый и ссылается на таблицу с мидишными кодами это выглядит в map-файле так: d MID000. Пример из листинга, где парсится параметр:

ParameterType: d TableName: MID000; TableID = 24 22 -> 22.000

B всё отлично для первого параметра, но следующему параметру он даже тип назначить верно не может

ParameterType: 0 TableName: ; TableID = 0 0 -> -2054565793904463970304.000

или

ParameterType: 0 TableName: ; TableID = 0 26 -> 0.000

Как мне кажется при чтении map-файлов под твоей операционкой не распазнается переход на новую строку в txt-файле и поэтому 2-ой и далее параметры не парсятся

Чтение map-файла происходит в файле GenInstrumentContent.с

С 225 строки:

{

    if((TempFile = fopen(TempModuleMap,"rb")) == NULL)
    {
        printf("Error - ");
        printf(TempModuleMap);
        printf(" not opened!\n");
        return 0;
    }
    else
    {
        printf("Number of real parameters = ");
        printf("%d\n",ParameterCountersVA[ModuleCounter]);
        printf("ModuleCounter = ");
        printf("%d\n",ModuleCounter);
        printf("ModuleIndex = ");
        printf("%d\n",ModuleIndexListVA[ModuleCounter]);
        printf("ModuleType = ");
        printf("%d\n",ModuleListVA[ModuleCounter]);

        fseek(TempFile, 0, SEEK_SET);

        //printf("Direct Parameters\n");

        for(i=0;i<ParameterCountersVA[ModuleCounter];i++)
        {

            fread(&Maptemp,1,1,TempFile);

            ParameterType[i]=Maptemp;

            if(Maptemp==0)
            {
                break;
            }

            if((Maptemp==100)||(Maptemp==104)) // d or h
            {

                fread(&Maptemp,1,1,TempFile); // space or tab

                fread(&Maptemp6,1,6,TempFile);
                for(j=0;j<256;j++)
                {
                    for(k=0;k<6;k++)
                    {
                        Nametemp6[k]=NamesMapTables[k][j];
                    }

                    if(memcmp(Maptemp6,Nametemp6,6)==0)
                    {
                        mapid=j;

                        MapTablesVA[ModuleCounter][i]=mapid;
                        valueINT=ParametersVA[ModuleCounter][i];
                        value[i]=Tables[valueINT][mapid];

                        break;

                    }
                }
            }

            while(true)
            {
                if(fread(&Maptemp,1,1,TempFile)==0)
                {
                    break;
                }
                if(Maptemp==13)
                {
                    fread(&Maptemp,1,1,TempFile);
                    break;
                }

            }

        }

        //printf("Selected Parameters\n");

        fseek(TempFile, 0, SEEK_SET);
        for(i=0;i<ParameterCountersVA[ModuleCounter];i++)
        {
            fread(&Maptemp,1,1,TempFile);

            if(Maptemp==115)
            {
                fread(&Maptemp,1,1,TempFile); // space or tab

                SelectorID=0;
                while(true)
                {
                    fread(&Maptemp,1,1,TempFile);

if((Maptemp==13)||(Maptemp==9)||(Maptemp==32)||(Maptemp==0)) { break; } SelectorID=SelectorID*10+(Maptemp-48); }

                TablesPointer=(unsigned int)(value[SelectorID-1]);

                for(j=0;j<TablesPointer+1;j++)
                {
                    fread(&Maptemp6,1,6,TempFile);
                    fread(&Maptemp,1,1,TempFile);
                }

                for(j=0;j<256;j++)
                {
                    for(k=0;k<6;k++)
                    {
                        Nametemp6[k]=NamesMapTables[k][j];
                    }

                    if(memcmp(Maptemp6,Nametemp6,6)==0)
                    {
                        mapid=j;

                        MapTablesVA[ModuleCounter][i]=mapid;
                        valueINT=ParametersVA[ModuleCounter][i];
                        value[i]=Tables[valueINT][mapid];

                        break;

                    }
                }
            }

            while(true)
            {
                if(fread(&Maptemp,1,1,TempFile)==0)
                {
                    break;
                }
                if(Maptemp==13)
                {
                    fread(&Maptemp,1,1,TempFile);
                    break;
                }

            }

        }

        // And let set the w-map parameters (Section of Delays)
        //

        fseek(TempFile, 0, SEEK_SET);
        for(i=0;i<ParameterCountersVA[ModuleCounter];i++)
        {
            fread(&Maptemp,1,1,TempFile);

            if(Maptemp==119) // if find w-type parameter
            {
                fread(&Maptemp,1,1,TempFile); // space or tab

                SelectorID=0; // first selector. His value most be only

"0" or "1" while(true) { fread(&Maptemp,1,1,TempFile);

if((Maptemp==13)||(Maptemp==9)||(Maptemp==32)||(Maptemp==0)) { break; } SelectorID=SelectorID*10+(Maptemp-48); }

                SelectorIDadd=0; // second selector
                while(true)
                {
                    fread(&Maptemp,1,1,TempFile);

if((Maptemp==13)||(Maptemp==9)||(Maptemp==32)||(Maptemp==0)) { break; } SelectorIDadd=SelectorIDadd*10+(Maptemp-48); }

                TablesPointer=(unsigned

int)(value[SelectorID-1])*(unsigned int)(value[SelectorIDadd-1]);

                for(j=0;j<TablesPointer+1;j++)
                {
                    fread(&Maptemp6,1,6,TempFile);
                    fread(&Maptemp,1,1,TempFile);
                }

                for(j=0;j<256;j++)
                {
                    for(k=0;k<6;k++)
                    {
                        Nametemp6[k]=NamesMapTables[k][j];
                    }

                    if(memcmp(Maptemp6,Nametemp6,6)==0)
                    {
                        mapid=j;

                        MapTablesVA[ModuleCounter][i]=mapid;
                        valueINT=ParametersVA[ModuleCounter][i];
                        value[i]=Tables[valueINT][mapid];

                        break;

                    }
                }
            }

            while(true)
            {
                if(fread(&Maptemp,1,1,TempFile)==0)
                {
                    break;
                }
                if(Maptemp==13)
                {
                    fread(&Maptemp,1,1,TempFile);
                    break;
                }

            }

        }

    }
    //printf("ModuleCounter: ");
    //printf("%d\n",ModuleCounter);

    printf("ParameterCountersVA: ");
    printf("%d\n",ParameterCountersVA[ModuleCounter]);

    for(i=0;i<ParameterCountersVA[ModuleCounter];i++)
    {
        mapid=MapTablesVA[ModuleCounter][i];

        printf("ParameterType: ");
        printf("%c\n",ParameterType[i]);

        for(k=0;k<6;k++)
        {
            Nametemp6[k]=NamesMapTables[k][mapid];
        }

        printf("TableName: ");
        for(k=0;k<6;k++)
        {
            printf("%c",Nametemp6[k]);
        }

        printf("; ");
        printf("TableID = ");
        printf("%d\n",mapid);

        printf("%d",ParametersVA[ModuleCounter][i]);
        printf(" -> ");
        printf("%1.3f\n",value[i]);

        if(ParameterType[i]!=104) // h - we hide parameter in

new.csd-file { fprintf(NewFile,"%1.3f",value[i]); PPflag=true;

if((i!=ParameterCountersVA[ModuleCounter]-1)&&(ParameterType[i+1]!=104)) { fprintf(NewFile,", "); } }

    }

Обычно у меня переход искался по "13" из ASCII кодов - пока ничего точнее сказать не могу.

Мой листинг для того файла:

///////////////////osyyo/////////////////////////////////////////////////////// //////////////+oshmNMMMmNmhyso+//////////////////+++++////////////////////+o/// ///////////+oshydNMMMMMMMMMMMNh++++++++++ossssyysssyshhys+//////////////+hNmhys /////////+oydmmNNNNNNNNNNNMMNNdhyyyyyyyhhddy+++::/ooossyyhs+///////////omMMMNNN ///////+oyyhhhdhhhhhhdmdmmddhyshhyysys++ossys+--+syyyyyysoo++/////////+hmmmmmdy ///+++++++++ooooooosossssoo+++syyyssyyss+-...ydmmddyo+/+++/++++++++++shhhhhyys +++ oooyhyyhyyyhhdso+/:sddyo+//++/////++++++++++ooosssss +++ Clavia Nord Modular G2 sshhhyyyyyys+-+hho/ys+///++/////:+++++++++++++++++++ +++ Patch Converter ooossosyyy+:``.--.//+/+/://+/o+++++++++++++++++++++ +++ oo+oysysso/:-.``.-:/+/-/+syso+++++++++++++++++++ ++oooooooooooooooooooooooooooosssysoosys+-``` ``-:////://oosooooooooo++++++++++ ooooooooooooosssssooosssssssssshyyso+shdh.` `-/:-:-:--/++ooooooooooooooooyso ssssssssyyyyyyyyyyyyyyyyyssssooooso+++yhh- .:/---::-/oooooooooooosyhhdd ossosssssssssssssssssssssssss/++++/--/+hs .-...````-..oooooooosssyssssyyy ooooooosssssssssssssssyysssss/////-sNm .``` /oooosoosyhdhysooyhd oooooosssssssssssssshdyysssym/:::-/.:mmo :sssssyyyyyysoosyyyyy osssssssssssssssyyhdy+++shmNs-.```.Ny`` +ssssyyyhhyyyyyssssoo sssshddhysyssyyyhdds/oyhsdysh-. omm- -. :.+yssssyyyyysyhyyysyh yhhhdhhhhhyyyyyhhhh/.:ysydmNh. .hmmy:-`` yo-ohyyyyyyyyyyyysssss syyyyyyyyyyhddhddmmy..:/++o/ yhhdh. .. `` ohhyyyyyyyyyyyyyyyyyyss hysyyyyhhhyhhhhhyyhhy/` `-:. `/yyhhhyo `.` +yyyyyyyyyyyyysyssssssss hyyhhyyhhdhhhhyyyyyyyyyo+///+syyyyyyyhy- ..:yo` :hhyyyyysyyyssyysssssssss yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyo .-.syy- syyyyyyssssssssssssssssss ssssyyyyyyyyyyyyyyyysssssosssoooooooooos---.-sss. ssssooooooooooooooooooooo sssyyysssssssssssssooooooooossssssssssss+-:-.oysy -yyyyyyyyyyyyyyyyyysyysyyy yyyyyyyyyyyyyhhhhyhhhhhdhhdddddddhdddddd/.:-`yddy :ddddhhdddddddddhhhhhhdhhh hhddddddddddddddddddddddmmmmmmmdddmmdddh/.:.../hd+ .ddddddddddddhhhyhhhhhhhhh hhhhhhhhhhhhdddhdddddddddhhhhhhhhdhhhhhh-.o+/--hy. -osyhhhddddhhhhyyyyyyyyys dddhhhhhhhhhhhhdddhdhhhhhhhhhhyyyssyo//:-hyys:`


hhhyyhhhhhdhddhhhhyyysosoysosooo//:----.`+yysssssossooyyysyhhhhyhhyyyyyyhhyyyyy

Clavia Nord Modular G2 patch converter, v. 1.0.1
(c) Gleb G. Rogozinsky, Michael Chesnokov 2015
Please make a choice of action!
1. Convert new patch-file
2. Convert recent patch-file
3. Exit
2
*** READ ALL TABLES ***
Error - Tables/Active.txt not opened!
Tables/Active.txt
Error - Tables/B.txte.txt not opened!
Tables/B.txte.txt
Tables/BUT002.txt
Tables/BUT002.txt
Tables/BUT003.txt
Tables/BUT003.txt
Tables/BUT004.txt
Tables/BUT004.txt
Tables/BUT006.txt
Tables/BUT006.txt
Tables/BUT007.txt
Tables/BUT007.txt
Tables/CLA000.txt
Tables/CLA000.txt
Tables/CLAEXP.txt
Tables/CLAEXP.txt
Error - Tables/Color..txt not opened!
Tables/Color..txt
Tables/DLY100.txt
Tables/DLY100.txt
Tables/DLY25m.txt
Tables/DLY25m.txt
Tables/DLY2p7.txt
Tables/DLY2p7.txt
Tables/DLY500.txt
Tables/DLY500.txt
Tables/DLYsmp.txt
Tables/DLYsmp.txt
Tables/DLY_1s.txt
Tables/DLY_1s.txt
Tables/DLY_2s.txt
Tables/DLY_2s.txt
Tables/DLY_5m.txt
Tables/DLY_5m.txt
Error - Tables/Fine.t.txt not opened!
Tables/Fine.t.txt
Error - Tables/freque.txt not opened!
Tables/freque.txt
Error - Tables/KBT.tx.txt not opened!
Tables/KBT.tx.txt
Tables/LEVatt.txt
Tables/LEVatt.txt
Error - Tables/level..txt not opened!
Tables/level..txt
Tables/LVLamp.txt
Tables/LVLamp.txt
Tables/LVLatG.txt
Tables/LVLatG.txt
Tables/LVLlev.txt
Tables/LVLlev.txt
Tables/LVLpos.txt
Tables/LVLpos.txt
Tables/LVLreG.txt
Tables/LVLreG.txt
Tables/LVLrel.txt
Tables/LVLrel.txt
Tables/LVLthr.txt
Tables/LVLthr.txt
Tables/MID000.txt
Tables/MID000.txt
Error - Tables/ModID2.txt not opened!
Tables/ModID2.txt
Tables/Pad6dB.txt
Tables/Pad6dB.txt
Error - Tables/SemiFr.txt not opened!
Tables/SemiFr.txt
Error - Tables/Source.txt not opened!
Tables/Source.txt
Error - Tables/═ют√щ .txt not opened!
Tables/═ют√щ .txt
file was created!
file was opened!
*** patch description (PD) ***
PD_position = 82
PD_Length = 15
PD_VoiceCount = 1
PD_HeightFXVABar = 600
PD_Red_cable_visibility on
PD_Blue_cable_visibility on
PD_Yellow_cable_visibility on
PD_Orange_cable_visibility on
PD_Green_cable_visibility on
PD_Purple_cable_visibility on
PD_White_cable_visibility on
PD_Mono/Poly = Mono
PD_Active_Variation = 1
PD_Category - No Cat
*** module list (ML) ***
ML_position = 100
ML_Length = 15
ML_Location = Voice Area
ML_Module_Count = 2
ML_Module_#0
ML_Module_Type = 4
!!!ML_Module_Index_VA = 1
!!!i = 0
ML_Horizontal_position = 1
ML_Vertical_position = 16
ML_Color = 0
ML_Insert = 0

ML_Module_#1
ML_Module_Type = 96
!!!ML_Module_Index_VA = 2
!!!i = 1
ML_Horizontal_position = 1
ML_Vertical_position = 6
ML_Color = 0
ML_Insert = 1
ML_HideParameter = 5

ML_Module_Type_List
4
96
ML_Module_List_VA
4
96
*** module list (ML) ***
ML_position = 118
ML_Length = 2
ML_Location = FX Area
ML_Module_Count = 0
ML_Module_Type_List
4
96
ML_Module_List_FX
*** Mystery Object (MO) ***
MO_position = 123
MO_Length = 6
*** cable list (CL) ***
CL_Location = Voice Area
CL_Cable_Count = 1
CL_Cable_#0
CL_Color = 6 - White
CL_Module_From - 1
CL_Jack_From - 0
Cable[16] - 0
CL_Type = 0 - Input to Input
CL_Module_To - 1
CL_Jack_To - 1
*** cable list (CL) ***
CL_Location = FX Area
CL_Cable_Count = 0
*** Patch Settings (PS) ***
PS_position = 148
PS_Length = 322
*** Module Parameters (MP) ***
MP_Length = 87
MP_Location = Voice Area
MP_Module_Count = 2
MP_Module_Index = 1
MP_imodules = 0
MP_Module_Parameter_Count = 3
MP_Value = 0
MP_Value = 1
MP_Value = 0
MP_Module_Index = 2
MP_imodules = 1
MP_Module_Parameter_Count = 5
MP_Value = 22
MP_Value = 26
MP_Value = 1
MP_Value = 0
MP_Value = 0
*** Module Parameters (MP) ***
MP_Length = 3
MP_Location = FX Area
MP_Module_Count = 0
CableCounter = 1
Patch has floating currents
k-Cables
a-Cables
*** READ ALL K2A RULES ***
*** Modules VA ***
#       Index   Module  eludoM
0       1       4
1       2       96
*** Modules FX ***
#       Index   Module  eludoM
*** Checking Library of Modules ***
Number Modules in PatchFile     2
--------------- *** ----------------
#       Module  csd     Map     IO      Name
0       4       Y       Y       Y       Out2
1       96      Y       Y       Y       OscD
k-cables
a-Cables
Generation zakinit
Sound_Cable_Count = 0
Control_Cable_Count = 0
Other_Cable_Count = 1
DANGER - Exotic Colors of Cables
Generating instruments list
Generating instrument
ModuleCounter 0
index 1
#4
ParameterCountersVA = 3
Number of real parameters = 3
ModuleCounter = 0
ModuleIndex = 1
ModuleType = 4
ParameterCountersVA: 3
ParameterType: d
TableName: MID000; TableID = 31
0 -> 0.000
ParameterType: d
TableName: MID000; TableID = 31
1 -> 1.000
ParameterType: d
TableName: MID000; TableID = 31
0 -> 0.000
A-cable
IN
A-cable
IN
ModuleCounter 1
index 2
#96
ParameterCountersVA = 6
Number of real parameters = 6
ModuleCounter = 1
ModuleIndex = 2
ModuleType = 96
ParameterCountersVA: 6
ParameterType: d
TableName: MID000; TableID = 31
22 -> 22.000
ParameterType: d
TableName: MID000; TableID = 31
26 -> 26.000
ParameterType: d
TableName: MID000; TableID = 31
1 -> 1.000
ParameterType: d
TableName: MID000; TableID = 31
0 -> 0.000
ParameterType: d
TableName: MID000; TableID = 31
0 -> 0.000
ParameterType: d
TableName: MID000; TableID = 31
5 -> 5.000
K-cable
IN
A-cable
OUT

Process returned 0 (0x0)   execution time : 2.539 s
Press any key to continue.

В общем, буду думать тоже над проблемой.

2017-04-11 23:13 GMT+03:00 Eugene Cherny <notifications@github.com>:

> Лог вот такой:
>
> /Users/ech/workspace/dev/pch2csd/cmake-build-debug/pch2csd ../Patches/Gleb2.pch2 -d ../Data
> *** READ ALL TABLES ***
> BUT002  ../Data/Tables/BUT002.txt
> BUT003  ../Data/Tables/BUT003.txt
> BUT004  ../Data/Tables/BUT004.txt
> BUT006  ../Data/Tables/BUT006.txt
> BUT007  ../Data/Tables/BUT007.txt
> CLA000  ../Data/Tables/CLA000.txt
> CLAEXP  ../Data/Tables/CLAEXP.txt
> DLY100  ../Data/Tables/DLY100.txt
> DLY25m  ../Data/Tables/DLY25m.txt
> DLY2p7  ../Data/Tables/DLY2p7.txt
> DLY500  ../Data/Tables/DLY500.txt
> DLY_1s  ../Data/Tables/DLY_1s.txt
> DLY_2s  ../Data/Tables/DLY_2s.txt
> DLY_5m  ../Data/Tables/DLY_5m.txt
> DLYsmp  ../Data/Tables/DLYsmp.txt
> LEVatt  ../Data/Tables/LEVatt.txt
> LVLamp  ../Data/Tables/LVLamp.txt
> LVLatG  ../Data/Tables/LVLatG.txt
> LVLlev  ../Data/Tables/LVLlev.txt
> LVLpos  ../Data/Tables/LVLpos.txt
> LVLreG  ../Data/Tables/LVLreG.txt
> LVLrel  ../Data/Tables/LVLrel.txt
> LVLthr  ../Data/Tables/LVLthr.txt
> MID000  ../Data/Tables/MID000.txt
> Pad6dB  ../Data/Tables/Pad6dB.txt
> file was created!
> *** patch description (PD) ***
> PD_position = 82
> PD_Length = 15
> PD_VoiceCount = 1
> PD_HeightFXVABar = 600
> PD_Red_cable_visibility on
> PD_Blue_cable_visibility on
> PD_Yellow_cable_visibility on
> PD_Orange_cable_visibility on
> PD_Green_cable_visibility on
> PD_Purple_cable_visibility on
> PD_White_cable_visibility on
> PD_Mono/Poly = Mono
> PD_Active_Variation = 1
> PD_Category - No Cat
> *** module list (ML) ***
> ML_position = 100
> ML_Length = 15
> ML_Location = Voice Area
> ML_Module_Count = 2
> ML_Module_#0
> ML_Module_Type = 4
> !!!ML_Module_Index_VA = 1
> !!!i = 0
> ML_Horizontal_position = 1
> ML_Vertical_position = 16
> ML_Color = 0
> ML_Insert = 0
>
> ML_Module_#1
> ML_Module_Type = 96
> !!!ML_Module_Index_VA = 2
> !!!i = 1
> ML_Horizontal_position = 1
> ML_Vertical_position = 6
> ML_Color = 0
> ML_Insert = 1
> ML_HideParameter = 5
>
> ML_Module_Type_List
> 4
> 96
> ML_Module_List_VA
> 4
> 96
> *** module list (ML) ***
> ML_position = 118
> ML_Length = 2
> ML_Location = FX Area
> ML_Module_Count = 0
> ML_Module_Type_List
> 4
> 96
> ML_Module_List_FX
> *** Mystery Object (MO) ***
> MO_position = 123
> MO_Length = 6
> *** cable list (CL) ***
> CL_Location = Voice Area
> CL_Cable_Count = 1
> CL_Cable_#0
> CL_Color = 6 - White
> CL_Module_From - 1
> CL_Jack_From - 0
> Cable[16] - 0
> CL_Type = 0 - Input to Input
> CL_Module_To - 1
> CL_Jack_To - 1
> *** cable list (CL) ***
> CL_Location = FX Area
> CL_Cable_Count = 0
> *** Patch Settings (PS) ***
> PS_position = 148
> PS_Length = 322
> *** Module Parameters (MP) ***
> MP_Length = 87
> MP_Location = Voice Area
> MP_Module_Count = 2
> MP_Module_Index = 1
> MP_imodules = 0
> MP_Module_Parameter_Count = 3
> MP_Value = 0
> MP_Value = 1
> MP_Value = 0
> MP_Module_Index = 2
> MP_imodules = 1
> MP_Module_Parameter_Count = 5
> MP_Value = 22
> MP_Value = 26
> MP_Value = 1
> MP_Value = 0
> MP_Value = 0
> *** Module Parameters (MP) ***
> MP_Length = 3
> MP_Location = FX Area
> MP_Module_Count = 0
> CableCounter = 1
> Patch has floating currents
> k-Cables
> a-Cables
> *** READ ALL K2A RULES ***
> *** Modules VA ***
> # Index   Module  eludoM
> 0 1   4   
> 1 2   96  
> *** Modules FX ***
> # Index   Module  eludoM
> *** Checking Library of Modules ***
> Table with names of modules not foundNumber Modules in PatchFile  2
> --------------- *** ----------------
> # Module  csd Map IO  Name
> 0 4   Y   Y   Y   
> 1 96  Y   Y   Y   
> k-cables
> a-Cables
> Generation zakinit
> Sound_Cable_Count = 0
> Control_Cable_Count = 0
> Other_Cable_Count = 1
> DANGER - Exotic Colors of Cables
> Generating instruments list
> Generating instrument
> ModuleCounter 0
> index 1
> #4
> ParameterCountersVA = 3
> Number of real parameters = 3
> ModuleCounter = 0
> ModuleIndex = 1
> ModuleType = 4
> ParameterCountersVA: 3
> ParameterType: d
> TableName: MID000; TableID = 24
> 0 -> 0.000
> ParameterType: 0
> TableName: ; TableID = 0
> 1 -> 0.000
> ParameterType: 0
> TableName: ; TableID = 0
> 0 -> -2054565793904463970304.000
> A-cable
> IN
> A-cable
> IN
> ModuleCounter 1
> index 2
> #96
> ParameterCountersVA = 6
> Number of real parameters = 6
> ModuleCounter = 1
> ModuleIndex = 2
> ModuleType = 96
> ParameterCountersVA: 6
> ParameterType: d
> TableName: MID000; TableID = 24
> 22 -> 22.000
> ParameterType: 0
> TableName: ; TableID = 0
> 26 -> 0.000
> ParameterType: 0
> TableName: ; TableID = 0
> 1 -> -2054565793904463970304.000
> ParameterType: 0
> TableName: ; TableID = 0
> 0 -> 0.000
> ParameterType: 0
> TableName: ; TableID = 0
> 0 -> -2054565793904463970304.000
> ParameterType: 0
> TableName: ; TableID = 0
> 5 -> 0.000
> K-cable
> IN
> A-cable
> OUT
>
> Process finished with exit code 0
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/gleb812/pch2csd/issues/3#issuecomment-293386529>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/APmO51LhTOtDVZreYgiIvNkM-QlMgo_Fks5ru97ygaJpZM4M6lrE>
> .
>
ghost commented 7 years ago

@Aglioni там в функции переменнаяmapid имеет значение 0. Где-то еще ошибка?

Aglioni commented 7 years ago

не знаю, но почему-то, видимо, он не изменяет переменную для 2-го и далее параметров

2017-04-12 11:20 GMT+03:00 Eugene Cherny notifications@github.com:

@Aglioni https://github.com/Aglioni там в функции переменнаяmapid имеет значение 0. Где-то еще ошибка?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gleb812/pch2csd/issues/3#issuecomment-293507610, or mute the thread https://github.com/notifications/unsubscribe-auth/APmO50ezw6JZo85M9cDeF882DcpJTSjSks5rvIlWgaJpZM4M6lrE .

ghost commented 7 years ago

ОК, отрефакторил чтение из мэп-файлов и т.д. Сейчас генерит вот такое (пролистай до конца, там описываю проблемы):

</CsInstruments>
<CsScore>
i1 0 [60*60*24*7]
i2 0 [60*60*24*7]
</CsScore>
</CsoundSynthesizer>

;******************************
; Initialize the ZAK space
zakinit 2, 2

;******************************
; Opcode Definitions

instr 1
     Out2 0.000, 1.000, 0.000, 0, 0
     OscD 22.000, 26.000, 1.000, 0.000, 0.000, 5.000, 0, 1
endin
instr 2
endin

;******************************
</CsInstruments>
<CsScore>
i1 0 [60*60*24*7]
i2 0 [60*60*24*7]
</CsScore>
</CsoundSynthesizer>

И лог:

*** READ ALL TABLES ***
BUT002  ../Data/Tables/BUT002.txt
BUT003  ../Data/Tables/BUT003.txt
BUT004  ../Data/Tables/BUT004.txt
BUT006  ../Data/Tables/BUT006.txt
BUT007  ../Data/Tables/BUT007.txt
CLA000  ../Data/Tables/CLA000.txt
CLAEXP  ../Data/Tables/CLAEXP.txt
DLY100  ../Data/Tables/DLY100.txt
DLY25m  ../Data/Tables/DLY25m.txt
DLY2p7  ../Data/Tables/DLY2p7.txt
DLY500  ../Data/Tables/DLY500.txt
DLY_1s  ../Data/Tables/DLY_1s.txt
DLY_2s  ../Data/Tables/DLY_2s.txt
DLY_5m  ../Data/Tables/DLY_5m.txt
DLYsmp  ../Data/Tables/DLYsmp.txt
LEVatt  ../Data/Tables/LEVatt.txt
LVLamp  ../Data/Tables/LVLamp.txt
LVLatG  ../Data/Tables/LVLatG.txt
LVLlev  ../Data/Tables/LVLlev.txt
LVLpos  ../Data/Tables/LVLpos.txt
LVLreG  ../Data/Tables/LVLreG.txt
LVLrel  ../Data/Tables/LVLrel.txt
LVLthr  ../Data/Tables/LVLthr.txt
MID000  ../Data/Tables/MID000.txt
Pad6dB  ../Data/Tables/Pad6dB.txt
file was created!
*** patch description (PD) ***
PD_position = 82
PD_Length = 15
PD_VoiceCount = 1
PD_HeightFXVABar = 600
PD_Red_cable_visibility on
PD_Blue_cable_visibility on
PD_Yellow_cable_visibility on
PD_Orange_cable_visibility on
PD_Green_cable_visibility on
PD_Purple_cable_visibility on
PD_White_cable_visibility on
PD_Mono/Poly = Mono
PD_Active_Variation = 1
PD_Category - No Cat
*** module list (ML) ***
ML_position = 100
ML_Length = 15
ML_Location = Voice Area
ML_Module_Count = 2
ML_Module_#0
ML_Module_Type = 4
!!!ML_Module_Index_VA = 1
!!!i = 0
ML_Horizontal_position = 1
ML_Vertical_position = 16
ML_Color = 0
ML_Insert = 0

ML_Module_#1
ML_Module_Type = 96
!!!ML_Module_Index_VA = 2
!!!i = 1
ML_Horizontal_position = 1
ML_Vertical_position = 6
ML_Color = 0
ML_Insert = 1
ML_HideParameter = 5

ML_Module_Type_List
4
96
ML_Module_List_VA
4
96
*** module list (ML) ***
ML_position = 118
ML_Length = 2
ML_Location = FX Area
ML_Module_Count = 0
ML_Module_Type_List
4
96
ML_Module_List_FX
*** Mystery Object (MO) ***
MO_position = 123
MO_Length = 6
*** cable list (CL) ***
CL_Location = Voice Area
CL_Cable_Count = 1
CL_Cable_#0
CL_Color = 6 - White
CL_Module_From - 1
CL_Jack_From - 0
Cable[16] - 0
CL_Type = 0 - Input to Input
CL_Module_To - 1
CL_Jack_To - 1
*** cable list (CL) ***
CL_Location = FX Area
CL_Cable_Count = 0
*** Patch Settings (PS) ***
PS_position = 148
PS_Length = 322
*** Module Parameters (MP) ***
MP_Length = 87
MP_Location = Voice Area
MP_Module_Count = 2
MP_Module_Index = 1
MP_imodules = 0
MP_Module_Parameter_Count = 3
MP_Value = 0
MP_Value = 1
MP_Value = 0
MP_Module_Index = 2
MP_imodules = 1
MP_Module_Parameter_Count = 5
MP_Value = 22
MP_Value = 26
MP_Value = 1
MP_Value = 0
MP_Value = 0
*** Module Parameters (MP) ***
MP_Length = 3
MP_Location = FX Area
MP_Module_Count = 0
CableCounter = 1
Patch has floating currents
k-Cables
a-Cables
*** READ ALL K2A RULES ***
*** Modules VA ***
#   Index   Module  eludoM
0   1   4   
1   2   96  
*** Modules FX ***
#   Index   Module  eludoM
*** Checking Library of Modules ***
Table with names of modules not foundNumber Modules in PatchFile    2
--------------- *** ----------------
#   Module  csd Map IO  Name
0   4   Y   Y   Y   
1   96  Y   Y   Y   
k-cables
a-Cables
Generation zakinit
Sound_Cable_Count = 0
Control_Cable_Count = 0
Other_Cable_Count = 1
DANGER - Exotic Colors of Cables
Generating instruments list
Generating instrument 
ModuleCounter 0
index 1
#4
ParameterCountersVA = 3
Number of real parameters = 3
ModuleCounter = 0
ModuleIndex = 1
ModuleType = 4
ParameterCountersVA: 3
ParameterType: d
TableName: MID000
TableID = 24
0 -> 0.000
ParameterType: d
TableName: MID000
TableID = 24
1 -> 1.000
ParameterType: d
TableName: MID000
TableID = 24
0 -> 0.000
A-cable
IN
A-cable
IN
ModuleCounter 1
index 2
#96
ParameterCountersVA = 6
Number of real parameters = 6
ModuleCounter = 1
ModuleIndex = 2
ModuleType = 96
ParameterCountersVA: 6
ParameterType: d
TableName: MID000
TableID = 24
22 -> 22.000
ParameterType: d
TableName: MID000
TableID = 24
26 -> 26.000
ParameterType: d
TableName: MID000
TableID = 24
1 -> 1.000
ParameterType: d
TableName: MID000
TableID = 24
0 -> 0.000
ParameterType: d
TableName: MID000
TableID = 24
0 -> 0.000
ParameterType: d
TableName: MID000
TableID = 24
5 -> 5.000
K-cable
IN
A-cable
OUT

@Aglioni во время рефакторинга файла GenInstrumentContent.c я не понял предназначение переменной TablesPointer, а она, судя по всему важная. Посмотри вот эту строку: https://github.com/gleb812/pch2csd/blob/master/Sources/GenInstrumentContent.c#L195 — временно я сделал, что берется только первый аргумент. Т.е. в переменной token2 должно находиться то, что у тебя было в Maptemp6. Что происходит там с этим TablePointer?

Ну и в других местах такая же тема:

https://github.com/gleb812/pch2csd/blob/master/Sources/GenInstrumentContent.c#L241 https://github.com/gleb812/pch2csd/blob/master/Sources/GenInstrumentContent.c#L347 https://github.com/gleb812/pch2csd/blob/master/Sources/GenInstrumentContent.c#L347

Надеюсь на твою помощь тут :)

Aglioni commented 7 years ago

Ок!

Когда вечерком вернусь - обязательно гляну и отпишусь.

2017-04-14 18:33 GMT+03:00 Eugene Cherny notifications@github.com:

ОК, отрефакторил чтение из мэп-файлов и т.д. Сейчас генерит вот такое:

i1 0 [60*60*24*7] i2 0 [60*60*24*7]

;** ; Initialize the ZAK space zakinit 2, 2

;** ; Opcode Definitions

instr 1 Out2 0.000, 1.000, 0.000, 0, 0 OscD 22.000, 26.000, 1.000, 0.000, 0.000, 5.000, 0, 1 endin instr 2 endin

;**

i1 0 [60*60*24*7] i2 0 [60*60*24*7]

И лог:

READ ALL TABLES BUT002 ../Data/Tables/BUT002.txt BUT003 ../Data/Tables/BUT003.txt BUT004 ../Data/Tables/BUT004.txt BUT006 ../Data/Tables/BUT006.txt BUT007 ../Data/Tables/BUT007.txt CLA000 ../Data/Tables/CLA000.txt CLAEXP ../Data/Tables/CLAEXP.txt DLY100 ../Data/Tables/DLY100.txt DLY25m ../Data/Tables/DLY25m.txt DLY2p7 ../Data/Tables/DLY2p7.txt DLY500 ../Data/Tables/DLY500.txt DLY_1s ../Data/Tables/DLY_1s.txt DLY_2s ../Data/Tables/DLY_2s.txt DLY_5m ../Data/Tables/DLY_5m.txt DLYsmp ../Data/Tables/DLYsmp.txt LEVatt ../Data/Tables/LEVatt.txt LVLamp ../Data/Tables/LVLamp.txt LVLatG ../Data/Tables/LVLatG.txt LVLlev ../Data/Tables/LVLlev.txt LVLpos ../Data/Tables/LVLpos.txt LVLreG ../Data/Tables/LVLreG.txt LVLrel ../Data/Tables/LVLrel.txt LVLthr ../Data/Tables/LVLthr.txt MID000 ../Data/Tables/MID000.txt Pad6dB ../Data/Tables/Pad6dB.txt file was created! patch description (PD) PD_position = 82 PD_Length = 15 PD_VoiceCount = 1 PD_HeightFXVABar = 600 PD_Red_cable_visibility on PD_Blue_cable_visibility on PD_Yellow_cable_visibility on PD_Orange_cable_visibility on PD_Green_cable_visibility on PD_Purple_cable_visibility on PD_White_cable_visibility on PD_Mono/Poly = Mono PD_Active_Variation = 1 PD_Category - No Cat module list (ML) ML_position = 100 ML_Length = 15 ML_Location = Voice Area ML_Module_Count = 2 MLModule#0 ML_Module_Type = 4 !!!ML_Module_Index_VA = 1 !!!i = 0 ML_Horizontal_position = 1 ML_Vertical_position = 16 ML_Color = 0 ML_Insert = 0

MLModule#1 ML_Module_Type = 96 !!!ML_Module_Index_VA = 2 !!!i = 1 ML_Horizontal_position = 1 ML_Vertical_position = 6 ML_Color = 0 ML_Insert = 1 ML_HideParameter = 5

ML_Module_Type_List 4 96 ML_Module_List_VA 4 96 module list (ML) ML_position = 118 ML_Length = 2 ML_Location = FX Area ML_Module_Count = 0 ML_Module_Type_List 4 96 ML_Module_List_FX Mystery Object (MO) MO_position = 123 MO_Length = 6 cable list (CL) CL_Location = Voice Area CL_Cable_Count = 1 CLCable#0 CL_Color = 6 - White CL_Module_From - 1 CL_Jack_From - 0 Cable[16] - 0 CL_Type = 0 - Input to Input CL_Module_To - 1 CL_Jack_To - 1 cable list (CL) CL_Location = FX Area CL_Cable_Count = 0 Patch Settings (PS) PS_position = 148 PS_Length = 322 Module Parameters (MP) MP_Length = 87 MP_Location = Voice Area MP_Module_Count = 2 MP_Module_Index = 1 MP_imodules = 0 MP_Module_Parameter_Count = 3 MP_Value = 0 MP_Value = 1 MP_Value = 0 MP_Module_Index = 2 MP_imodules = 1 MP_Module_Parameter_Count = 5 MP_Value = 22 MP_Value = 26 MP_Value = 1 MP_Value = 0 MP_Value = 0 Module Parameters (MP) MP_Length = 3 MP_Location = FX Area MP_Module_Count = 0 CableCounter = 1 Patch has floating currents k-Cables a-Cables READ ALL K2A RULES Modules VA

Index Module eludoM

0 1 4
1 2 96
Modules FX

Index Module eludoM

Checking Library of Modules Table with names of modules not foundNumber Modules in PatchFile 2 --------------- *** ----------------

Module csd Map IO Name

0 4 Y Y Y
1 96 Y Y Y
k-cables a-Cables Generation zakinit Sound_Cable_Count = 0 Control_Cable_Count = 0 Other_Cable_Count = 1 DANGER - Exotic Colors of Cables Generating instruments list Generating instrument ModuleCounter 0 index 1

4

ParameterCountersVA = 3 Number of real parameters = 3 ModuleCounter = 0 ModuleIndex = 1 ModuleType = 4 ParameterCountersVA: 3 ParameterType: d TableName: MID000 TableID = 24 0 -> 0.000 ParameterType: d TableName: MID000 TableID = 24 1 -> 1.000 ParameterType: d TableName: MID000 TableID = 24 0 -> 0.000 A-cable IN A-cable IN ModuleCounter 1 index 2

96

ParameterCountersVA = 6 Number of real parameters = 6 ModuleCounter = 1 ModuleIndex = 2 ModuleType = 96 ParameterCountersVA: 6 ParameterType: d TableName: MID000 TableID = 24 22 -> 22.000 ParameterType: d TableName: MID000 TableID = 24 26 -> 26.000 ParameterType: d TableName: MID000 TableID = 24 1 -> 1.000 ParameterType: d TableName: MID000 TableID = 24 0 -> 0.000 ParameterType: d TableName: MID000 TableID = 24 0 -> 0.000 ParameterType: d TableName: MID000 TableID = 24 5 -> 5.000 K-cable IN A-cable OUT

@Aglioni https://github.com/Aglioni во время рефакторинга файла GenInstrumentContent.c я не понял предназначение переменной TablesPointer, а она, судя по всему важная. Посмотри вот эту строку: https://github.com/gleb812/pch2csd/blob/master/Sources/ GenInstrumentContent.c#L195 — временно я сделал, что берется только первый аргумент. Т.е. в переменной token2 должно находиться то, что у тебя было в Maptemp6. Что происходит там с этим TablePointer?

Ну и в других местах такая же тема:

https://github.com/gleb812/pch2csd/blob/master/Sources/ GenInstrumentContent.c#L241 https://github.com/gleb812/pch2csd/blob/master/Sources/ GenInstrumentContent.c#L347 https://github.com/gleb812/pch2csd/blob/master/Sources/ GenInstrumentContent.c#L347

Надеюсь на твою помощь тут :)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gleb812/pch2csd/issues/3#issuecomment-294175117, or mute the thread https://github.com/notifications/unsubscribe-auth/APmO53NNRfYFquBJHUZF1hx2dMUwej6Iks5rv5HHgaJpZM4M6lrE .

Aglioni commented 7 years ago

Привет!

При парсинге параметры модуля можно грубо разбить на два типа:

Прямой: т.е. параметр - 7-и битный код и ему есть точное соответствие из таблицы.

Пример в map-файле:

d MID000

Селективный: т.е. параметр имеет 7-и быитный код, но таблиц по которым можно получить конечное значение несколько, а конкретный выбор той или иной таблицы зависит от другого параметра

Пример в map-файле:

s 3 CLA000 CLAEXP d BUT002 d BUT002 d BUT002

здесь первый параметр селективный и имеет ряд таблиц соответствия и ссылку на третий параметр, как на управляющий. Обычно, в модуле есть изменяемый в широких пределах параметр, например частота, имеющий ряд поддиапазонов, которые переключаются кнопкой.

Для этого класса используется тип "s".

TablesPointer - это указатель для селективного типа параметров, на конкретную таблицу.

Если значение управляющего параметра никакого прочего применения не имеет, то ему может быть назначен тип не "d", а "h" - и он будет скрыт из конечного текчта опкода

Пример в map-файле:

s 5 DLY_5m DLY25m DLY100 DLY500 DLY_1s DLY_2s DLY2p7 d CLA000 s 5 DLY_5m DLY25m DLY100 DLY500 DLY_1s DLY_2s DLY2p7 d CLA000 h BUT007

Ну и наконец, может быть вариант, когда селективный параметр управляется двумя прямыми параметрами, для них служит тип "w". Этот параметр применяется для модулей из семейства delay. Там есть первая кнопка, которая определяет задержку либо каких-то абсолютных значениях или нормированных, поэтому если включены нормированные значения, то переходят ко второму управляющему параметру.

Пример в map-файле:

w 8 9 DLY_5m DLY25m DLY100 DLY500 DLY_1s DLY_2s DLY2p7 d CLA000 d CLA000 d CLA000 d CLA000 d BUT002 d CLA000 d BUT002 d CLA000 d BUT007

Вот как-то так.

2017-04-15 14:02 GMT+03:00 Mihail Chesnokov chesnokov.inc@gmail.com:

Ок!

Когда вечерком вернусь - обязательно гляну и отпишусь.

2017-04-14 18:33 GMT+03:00 Eugene Cherny notifications@github.com:

ОК, отрефакторил чтение из мэп-файлов и т.д. Сейчас генерит вот такое:

i1 0 [60*60*24*7] i2 0 [60*60*24*7]

;** ; Initialize the ZAK space zakinit 2, 2

;** ; Opcode Definitions

instr 1 Out2 0.000, 1.000, 0.000, 0, 0 OscD 22.000, 26.000, 1.000, 0.000, 0.000, 5.000, 0, 1 endin instr 2 endin

;**

i1 0 [60*60*24*7] i2 0 [60*60*24*7]

И лог:

READ ALL TABLES BUT002 ../Data/Tables/BUT002.txt BUT003 ../Data/Tables/BUT003.txt BUT004 ../Data/Tables/BUT004.txt BUT006 ../Data/Tables/BUT006.txt BUT007 ../Data/Tables/BUT007.txt CLA000 ../Data/Tables/CLA000.txt CLAEXP ../Data/Tables/CLAEXP.txt DLY100 ../Data/Tables/DLY100.txt DLY25m ../Data/Tables/DLY25m.txt DLY2p7 ../Data/Tables/DLY2p7.txt DLY500 ../Data/Tables/DLY500.txt DLY_1s ../Data/Tables/DLY_1s.txt DLY_2s ../Data/Tables/DLY_2s.txt DLY_5m ../Data/Tables/DLY_5m.txt DLYsmp ../Data/Tables/DLYsmp.txt LEVatt ../Data/Tables/LEVatt.txt LVLamp ../Data/Tables/LVLamp.txt LVLatG ../Data/Tables/LVLatG.txt LVLlev ../Data/Tables/LVLlev.txt LVLpos ../Data/Tables/LVLpos.txt LVLreG ../Data/Tables/LVLreG.txt LVLrel ../Data/Tables/LVLrel.txt LVLthr ../Data/Tables/LVLthr.txt MID000 ../Data/Tables/MID000.txt Pad6dB ../Data/Tables/Pad6dB.txt file was created! patch description (PD) PD_position = 82 PD_Length = 15 PD_VoiceCount = 1 PD_HeightFXVABar = 600 PD_Red_cable_visibility on PD_Blue_cable_visibility on PD_Yellow_cable_visibility on PD_Orange_cable_visibility on PD_Green_cable_visibility on PD_Purple_cable_visibility on PD_White_cable_visibility on PD_Mono/Poly = Mono PD_Active_Variation = 1 PD_Category - No Cat module list (ML) ML_position = 100 ML_Length = 15 ML_Location = Voice Area ML_Module_Count = 2 MLModule#0 ML_Module_Type = 4 !!!ML_Module_Index_VA = 1 !!!i = 0 ML_Horizontal_position = 1 ML_Vertical_position = 16 ML_Color = 0 ML_Insert = 0

MLModule#1 ML_Module_Type = 96 !!!ML_Module_Index_VA = 2 !!!i = 1 ML_Horizontal_position = 1 ML_Vertical_position = 6 ML_Color = 0 ML_Insert = 1 ML_HideParameter = 5

ML_Module_Type_List 4 96 ML_Module_List_VA 4 96 module list (ML) ML_position = 118 ML_Length = 2 ML_Location = FX Area ML_Module_Count = 0 ML_Module_Type_List 4 96 ML_Module_List_FX Mystery Object (MO) MO_position = 123 MO_Length = 6 cable list (CL) CL_Location = Voice Area CL_Cable_Count = 1 CLCable#0 CL_Color = 6 - White CL_Module_From - 1 CL_Jack_From - 0 Cable[16] - 0 CL_Type = 0 - Input to Input CL_Module_To - 1 CL_Jack_To - 1 cable list (CL) CL_Location = FX Area CL_Cable_Count = 0 Patch Settings (PS) PS_position = 148 PS_Length = 322 Module Parameters (MP) MP_Length = 87 MP_Location = Voice Area MP_Module_Count = 2 MP_Module_Index = 1 MP_imodules = 0 MP_Module_Parameter_Count = 3 MP_Value = 0 MP_Value = 1 MP_Value = 0 MP_Module_Index = 2 MP_imodules = 1 MP_Module_Parameter_Count = 5 MP_Value = 22 MP_Value = 26 MP_Value = 1 MP_Value = 0 MP_Value = 0 Module Parameters (MP) MP_Length = 3 MP_Location = FX Area MP_Module_Count = 0 CableCounter = 1 Patch has floating currents k-Cables a-Cables READ ALL K2A RULES Modules VA

Index Module eludoM

0 1 4
1 2 96
Modules FX

Index Module eludoM

Checking Library of Modules Table with names of modules not foundNumber Modules in PatchFile 2 --------------- *** ----------------

Module csd Map IO Name

0 4 Y Y Y
1 96 Y Y Y
k-cables a-Cables Generation zakinit Sound_Cable_Count = 0 Control_Cable_Count = 0 Other_Cable_Count = 1 DANGER - Exotic Colors of Cables Generating instruments list Generating instrument ModuleCounter 0 index 1

4

ParameterCountersVA = 3 Number of real parameters = 3 ModuleCounter = 0 ModuleIndex = 1 ModuleType = 4 ParameterCountersVA: 3 ParameterType: d TableName: MID000 TableID = 24 0 -> 0.000 ParameterType: d TableName: MID000 TableID = 24 1 -> 1.000 ParameterType: d TableName: MID000 TableID = 24 0 -> 0.000 A-cable IN A-cable IN ModuleCounter 1 index 2

96

ParameterCountersVA = 6 Number of real parameters = 6 ModuleCounter = 1 ModuleIndex = 2 ModuleType = 96 ParameterCountersVA: 6 ParameterType: d TableName: MID000 TableID = 24 22 -> 22.000 ParameterType: d TableName: MID000 TableID = 24 26 -> 26.000 ParameterType: d TableName: MID000 TableID = 24 1 -> 1.000 ParameterType: d TableName: MID000 TableID = 24 0 -> 0.000 ParameterType: d TableName: MID000 TableID = 24 0 -> 0.000 ParameterType: d TableName: MID000 TableID = 24 5 -> 5.000 K-cable IN A-cable OUT

@Aglioni https://github.com/Aglioni во время рефакторинга файла GenInstrumentContent.c я не понял предназначение переменной TablesPointer, а она, судя по всему важная. Посмотри вот эту строку: https://github.com/gleb812/pch2csd/blob/master/Sources/GenIn strumentContent.c#L195 — временно я сделал, что берется только первый аргумент. Т.е. в переменной token2 должно находиться то, что у тебя было в Maptemp6. Что происходит там с этим TablePointer?

Ну и в других местах такая же тема:

https://github.com/gleb812/pch2csd/blob/master/Sources/GenIn strumentContent.c#L241 https://github.com/gleb812/pch2csd/blob/master/Sources/GenIn strumentContent.c#L347 https://github.com/gleb812/pch2csd/blob/master/Sources/GenIn strumentContent.c#L347

Надеюсь на твою помощь тут :)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gleb812/pch2csd/issues/3#issuecomment-294175117, or mute the thread https://github.com/notifications/unsubscribe-auth/APmO53NNRfYFquBJHUZF1hx2dMUwej6Iks5rv5HHgaJpZM4M6lrE .

ghost commented 7 years ago

@Aglioni спасибо, я примерно так и представлял. А если конкретно в коде, то каково значение TablesPointer? Например, если взять вот такой мэппинг:

w 8 9 DLY_5m DLY25m DLY100 DLY500 DLY_1s DLY_2s DLY2p7

Если TablesPointer равен 0, то что будет браться из этого набора мэппингов, w или DLY_5m. Я спрашиваю к тому, что у меня, по сути, данная строка уже разбита на токены, разделенные пробелом, и переведена в массив, и мне надо понять, откуда надо отсчитывать индекс массива, от 0 или от 3.

Aglioni commented 7 years ago

Привет!

Я не забыл, просто, очень мало времени. Там какой-то косячек - надо будет посидеть и чуть подразобраться... Постараюсь по-скорее

16 апреля 2017 г., 17:04 пользователь Eugene Cherny < notifications@github.com> написал:

@Aglioni https://github.com/Aglioni спасибо, я примерно так и представлял. А если конкретно в коде, то каково значение TablesPointer? Например, если взять вот такой мэппинг:

w 8 9 DLY_5m DLY25m DLY100 DLY500 DLY_1s DLY_2s DLY2p7

Если TablesPointer равен 0, то что будет браться из этого набора мэппингов, w или DLY_5m. Я спрашиваю к тому, что у меня, по сути, данная строка уже разбита на токены, разделенные пробелом, и переведена в массив, и мне надо понять, откуда надо отсчитывать индекс массива, от 0 или от 3.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gleb812/pch2csd/issues/3#issuecomment-294353446, or mute the thread https://github.com/notifications/unsubscribe-auth/APmO53uTJzSao1ORfRMWPAXQIw9NtWYFks5rwh_0gaJpZM4M6lrE .