It's similar to how I messed up my commit last night, hence @thetechnobear's suggestions. Thanks btw, I'm working on some NES APU emulation stuff now
Axoloti TEST release 1.0.10
There appear to be multiple bugs around combo type attributes in the object editor for patch/objects.
I keep getting errors in this form
Error: object "==_1" attribute "chirp", value "TI 0280 PATENT" unmatched
In this case, the value mentioned had actually previously been removed from the MenuEntries list.
There were in fact the correct number of entries in the CEntries field.
Problems began when I tried to edit the text of the MenuEntries items.
I attempted to remove the attribute completely, but when I did so, the values I had previously set for MenuEntries and CEntries remained, even though the attribute was no longer present in the upper pane.
I also found that changes to attributes were not saved unless something was changed in one of the other editor tabs.
a|x
I've managed to get the Clear button to disappear again.
As you can see, the vertical scrollbar also disappears.
I have a suspicion it happens with really long lines, but I'm afraid I didn't spot the exact moment it disappeared first.
However, now it's happened, I can drag the right edge of the window to the left, but after a certain point, the button and scrollbar seem to stop moving, and the window edge goes past scrollbar and button.
Clearing the console doesn't seem to fix the issue.
a|x
Guys, PLEASE can we stop the patch becoming corrupted if you save a patch while it's live..!
It's all very well saying "don't do it", but in reality, everyone IS going to do it, at some point.
It's completely natural to want to save a patch when you're happy with the way it sounds.
I've done quite a lot of work on the attached patch, accidentally saved it while it was live, and now it's completely f*cked. I get 'invalid net' errors, with both the patch/objects I was working on last, and another one it was connected to, and both now no longer work. Since there's no undo (that's another basic that really needs to be sorted), I've effective lost my work...
I've tried
Sorry for the ranty tone of this post, but it's annoying to lose work (as I'm sure everyone understands).
a|x
talkie 3.axh (136.9 KB)
I tried pasting the offending patch/objects to a new, blank patch, and trying to make it live. It didn't make any sound, obviously, since nothing was connected, but I got the following in the log:
Net has no data type!
Net has no data type!
Net has no data type!
Net has no data type!
Net has no data type!
Net has no data type!
Net has no data type!
Net has no data type!
Patch contains invalid net! Talkie Player:gate
Patch contains invalid net! Talkie Player:step
Only inlets connected on net!
Only inlets connected on net!
Only inlets connected on net!
Only inlets connected on net!
Only inlets connected on net!
Only inlets connected on net!
Only inlets connected on net!
Only inlets connected on net!
Generate code complete
Start creating directory on sdcard : /tmp
creating dir: /tmp
Axoloti says: file error: FR_NOT_ENABLED, filename:"/tmp"
Done creating directory
Changing working directory on sdcard : /tmp
Change working directory: /tmp
Axoloti says: file error: FR_NOT_ENABLED, filename:"/tmp"
Done changing working directory
Start compiling patch
Compiling patch... with /Applications/Axoloti.app/Contents/Java/firmware
BDIR = /Users/alx/Documents/axoloti/build
FIRMWARE = .
RM
rm -f /Users/alx/Documents/axoloti/build/xpatch.o /Users/alx/Documents/axoloti/build/xpatch.elf /Users/alx/Documents/axoloti/build/xpatch.bin /Users/alx/Documents/axoloti/build/xpatch.d /Users/alx/Documents/axoloti/build/xpatch.map /Users/alx/Documents/axoloti/build/xpatch.lst
APP
arm-none-eabi-g++ -nostdlib -fno-exceptions -fno-rtti -mcpu=cortex-m4 -O3 -fomit-frame-pointer -falign-functions=16 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -Wunused-parameter -DCORTEX_USE_FPU=TRUE -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB -std=c++11 -DARM_MATH_CM4 -D__FPU_PRESENT -H -I/Applications/Axoloti.app/Contents/Java/CMSIS/Include -I/Applications/Axoloti.app/Contents/Java/chibios/os/ports/common/ARMCMx/CMSIS/include -I/Applications/Axoloti.app/Contents/Java/chibios/os/ports/common/ARMCMx -I/Applications/Axoloti.app/Contents/Java/chibios/os/ports/GCC/ARMCMx -I/Applications/Axoloti.app/Contents/Java/chibios/os/ports/GCC/ARMCMx/STM32F4xx -I/Applications/Axoloti.app/Contents/Java/chibios/os/kernel/include -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/include -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/platforms/STM32F4xx -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/platforms/STM32 -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/platforms/STM32/GPIOv2 -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/platforms/STM32/I2Cv1 -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/platforms/STM32/OTGv1 -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/platforms/STM32/RTCv2 -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/platforms/STM32/SPIv1 -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/platforms/STM32/TIMv1 -I/Applications/Axoloti.app/Contents/Java/chibios/os/hal/platforms/STM32/USARTv1 -I/Applications/Axoloti.app/Contents/Java/chibios/boards/ST_STM32F4_DISCOVERY -I/Applications/Axoloti.app/Contents/Java/chibios/ext/fatfs/src -I. -I/Applications/Axoloti.app/Contents/Java/chibios -Winvalid-pch -MD -MP --include /Users/alx/Documents/axoloti/build/xpatch.h -c /Users/alx/Documents/axoloti/build/xpatch.cpp -o /Users/alx/Documents/axoloti/build/xpatch.o
! /Users/alx/Documents/axoloti/build/xpatch.h.gch
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '33472' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '33664' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '33728' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '33856' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '33984' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '34112' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '34304' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '34688' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '34944' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '35200' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '35520' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '35840' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '36160' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '36608' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '37056' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '37568' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '39168' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '41280' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '43904' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '47168' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '51008' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '55488' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:255:1: warning: narrowing conversion of '60352' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '44544' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '46208' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '48000' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '49984' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '52096' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '54336' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '56768' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '59264' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '61824' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:261:1: warning: narrowing conversion of '64448' from 'int' to 'const int16_t {aka const short int}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:265:1: warning: narrowing conversion of '146' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:265:1: warning: narrowing conversion of '159' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:265:1: warning: narrowing conversion of '173' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:265:1: warning: narrowing conversion of '186' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:265:1: warning: narrowing conversion of '200' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:265:1: warning: narrowing conversion of '213' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:265:1: warning: narrowing conversion of '227' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:265:1: warning: narrowing conversion of '240' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:265:1: warning: narrowing conversion of '254' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:269:1: warning: narrowing conversion of '174' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:269:1: warning: narrowing conversion of '188' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:269:1: warning: narrowing conversion of '202' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:269:1: warning: narrowing conversion of '216' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:269:1: warning: narrowing conversion of '230' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:269:1: warning: narrowing conversion of '244' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:273:1: warning: narrowing conversion of '174' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:273:1: warning: narrowing conversion of '186' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:273:1: warning: narrowing conversion of '197' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:273:1: warning: narrowing conversion of '209' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:273:1: warning: narrowing conversion of '221' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:273:1: warning: narrowing conversion of '232' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:273:1: warning: narrowing conversion of '244' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:273:1: warning: narrowing conversion of '255' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:277:1: warning: narrowing conversion of '192' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:277:1: warning: narrowing conversion of '203' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:277:1: warning: narrowing conversion of '214' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:277:1: warning: narrowing conversion of '225' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:277:1: warning: narrowing conversion of '236' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:277:1: warning: narrowing conversion of '247' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:281:1: warning: narrowing conversion of '179' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:281:1: warning: narrowing conversion of '191' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:281:1: warning: narrowing conversion of '203' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:281:1: warning: narrowing conversion of '215' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:281:1: warning: narrowing conversion of '227' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:281:1: warning: narrowing conversion of '239' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:281:1: warning: narrowing conversion of '251' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:284:1: warning: narrowing conversion of '192' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:284:1: warning: narrowing conversion of '216' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:284:1: warning: narrowing conversion of '240' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:287:1: warning: narrowing conversion of '192' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:287:1: warning: narrowing conversion of '212' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:287:1: warning: narrowing conversion of '232' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:287:1: warning: narrowing conversion of '252' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:290:1: warning: narrowing conversion of '205' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
};
^
/Users/alx/Documents/axoloti/build/xpatch.cpp:290:1: warning: narrowing conversion of '223' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
/Users/alx/Documents/axoloti/build/xpatch.cpp:290:1: warning: narrowing conversion of '241' from 'int' to 'const int8_t {aka const signed char}' inside { } [-Wnarrowing]
LINK
arm-none-eabi-gcc -nostartfiles -Tramlink.ld -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -mno-thumb-interwork /Users/alx/Documents/axoloti/build/xpatch.o -Wl,-Map=/Users/alx/Documents/axoloti/build/xpatch.map,--cref,--just-symbols=./build/axoloti.elf -o /Users/alx/Documents/axoloti/build/xpatch.elf
BIN
arm-none-eabi-objcopy -O binary /Users/alx/Documents/axoloti/build/xpatch.elf /Users/alx/Documents/axoloti/build/xpatch.bin
Done compiling patch
Start uploading patch
bin path: /Users/alx/Documents/axoloti/build/xpatch.bin
block uploaded @ 0x20011000 length 17220
Done uploading patch
Starting patch...
Axoloti says: Initialising toneburst Talkie Synth Controller
Done starting patch
Start locking
Done locking
If I attempt to open the Editor for the left-most of the two objects in the attached, I get the following, even when the patch is NOT live, so something is clearly badly fucked-up (presumably the XML has become corrupted)..
a|x
tmp.axp (110.2 KB)
Looking in the XML for the above file, there seem to be a large number of duplicate entries for each in and outlet of the two objects, i.e.:
<net>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
<dest obj="Talkie Player" inlet="gate"/>
</net>
<net>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
<dest obj="Talkie Player" inlet="step"/>
That strikes me as weird. Is that what's causing the problem, or a symptom of some other issue?
a|x
Here it is, restored, but probably missing a dozen connections
talkie 3.axh (87.1 KB)
I understand the annoyance of losing work, and apologize. I don't think the cause is saving a patch while live, but applying changes to a custom object while live.
Ah, thank you, that was quick!
I think you're right. The same applies though- the application allows you to do a very common task, in a context that will corrupt the patch file.
On this occasion, I found it wasn't possible to remove the offending connections by the usual method of dragging from an outlet into empty space.
I also found that the object net remained corrupted, even if I cut and re-pasted the object and attempted to reconnect the outlets. Wires from the outlets remained dashed, and I got an error when taking the patch live.
a|x
I think I mooted the idea of simply preventing saves in the object editor while the patch is live, rather than requiring the editor window to be closed before going live in another thread.
To me, this makes a lot more sense than the current approach.
On the other hand, just being able to save the patch while it's live, without corrupting the patch XML would be the ideal.
Obviously, in this scenario, the changes to the patch would not be heard until Live mode had been toggled (but I'm sure this will be obvious to most users, especially those competent enough to be digging into object coding).
a|x
A little annoyance but really no show stopper:
When I want to insert, let's say, a new envelope object to a patch I open the object browser (double click in the patch window) and start typing "env...". After the first keystroke the Axoloti console window comes into foreground, complaining that some objects in the library have errors (I think it's objects matching the typed "e" - but that's a lot). The focus from the object browser is lost and I have to re-click into it to continue typing the next letters ("...nv").
Actually, sure, there shouldn't be objects in the library that cause errors. And of course, the console window coming into focus, when errors occur, is really a good thing. So, I don't have any suggestions to solve this, apart from finding the delinquent objects and disabling or correcting them.
That's what's in the console (bold lines are red errors):
Object name env/d lin m x not found
promoting axoloti.object.AxoObjectInstance[,322,14,84x42,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.LineBorder@5bc800df,flags=16777225,maximumSize=,minimumSize=java.awt.Dimension[width=60,height=40],preferredSize=] to math/abs
instance added, type math/abs
no promotion for math/*c
promoting axoloti.object.AxoObjectInstance[,406,98,56x56,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.LineBorder@36e9e6fa,flags=16777225,maximumSize=,minimumSize=java.awt.Dimension[width=60,height=40],preferredSize=] to math/*
instance added, type math/*
promoting axoloti.object.AxoObjectInstance[,406,168,56x56,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.LineBorder@363ae93c,flags=16777225,maximumSize=,minimumSize=java.awt.Dimension[width=60,height=40],preferredSize=] to math/*
instance added, type math/*
Patch contains invalid net! d1:trig
Patch contains invalid net! *_2:b
After a little find and grep session I found the factory/objects/edrum/bd1.axs referencing a non-existing "env/d lin m x" object. And edrum/bd1 also seems to have the "invalid net" problems. And then I found, that @Sputnki already discovered this. So please, don't mind my nagging.
The Axoloti patcher stopped working properly my office iMac yesterday.
Here's the Console window (screenshot taken this morning, the problem first occurred yesterday):
It seems to stick at this point. Though it is possible to create a new document, I'm not able to make the object browser to appear.
I get this when attempting to open a document from disk.
Axoloti version : 1.0.10-0-gf8ed51d build time : 10/05/2016 19:56:36 UTC
Link to firmware CRC 3DB31696
Saving preferences...
preferences path : /Users/adrin009/Documents/axoloti/axoloti.prefs
java.lang.NullPointerException
java.lang.NullPointerException
at axoloti.object.AxoObjectInstanceAbstract.resolveType(AxoObjectInstanceAbstract.java:179)
at axoloti.Patch.PostContructor(Patch.java:313)
at axoloti.PatchGUI.PostContructor(PatchGUI.java:817)
at axoloti.PatchGUI.OpenPatchInvisible(PatchGUI.java:1035)
at axoloti.PatchGUI.OpenPatch(PatchGUI.java:1054)
at axoloti.FileUtils.Open(FileUtils.java:149)
at axoloti.menus.FileMenu.jMenuOpenActionPerformed(FileMenu.java:253)
at axoloti.menus.FileMenu.access$200(FileMenu.java:49)
at axoloti.menus.FileMenu$3.actionPerformed(FileMenu.java:105)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
at javax.swing.plaf.basic.BasicMenuItemUI$Actions.actionPerformed(BasicMenuItemUI.java:802)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1663)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2882)
at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:699)
at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:706)
at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:706)
at javax.swing.JMenuBar.processKeyBinding(JMenuBar.java:677)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:307)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:293)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2974)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2966)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2845)
at java.awt.Component.processEvent(Component.java:6310)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
at java.awt.Component.dispatchEventImpl(Component.java:4760)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
I deleted the prefs file, flushed the OS X plist cache, and restarted the Patcher. Seems to work fine now, so I guess the prefs file must have been corrupted somehow.
I can't attach the prefs file, since it's not of one of the allowed types, but here is the content:
<preferences appVersion="1.0.10">
<CurrentFileDirectory>/Users/adrin009/Documents/axoloti/toneburst.private/objects/toneburst/osc/talkie</CurrentFileDirectory>
<PollInterval>50</PollInterval>
<MouseDialAngular>false</MouseDialAngular>
<ExpertMode>false</ExpertMode>
<recentFiles>
<string>/Users/adrin009/Documents/axoloti/axoloti-factory/objects/seq/lfsrseq.axh</string>
<string>/Users/adrin009/Documents/axoloti/axoloti-factory/objects/math/more_math.axh</string>
<string>/Users/adrin009/Documents/axoloti/axoloti-factory/objects/math/math.axh</string>
<string>/Users/adrin009/Documents/axoloti/toneburst.private/objects/toneburst/osc/canto/canto.axh</string>
<string>/Users/adrin009/Documents/axoloti/axoloti-contrib/patches/jt/grainy-table.axp</string>
<string>/Users/adrin009/Documents/axoloti/axoloti-contrib/patches/jt/devel/cic_oscillator_workbench.axp</string>
<string>/Users/adrin009/Desktop/range-test.axp</string>
<string>/Users/adrin009/Documents/axoloti/toneburst.private/objects/toneburst/osc/canto/canto_demo.axh</string>
<string>/Users/adrin009/Documents/axoloti/toneburst.private/objects/toneburst/osc/canto/canto_demo.axp</string>
<string>/Users/adrin009/Documents/axoloti/toneburst.private/patches/toneburst/osc/canto_demo.axp</string>
<string>/Users/adrin009/Documents/axoloti/axoloti-contrib/patches/jt/devel/float_workbench.axp</string>
<string>/Users/adrin009/Documents/axoloti/toneburst.private/objects/toneburst/osc/talkie/Talkie Synth.axp</string>
<string>/Users/adrin009/Documents/axoloti/toneburst.private/objects/toneburst/osc/talkie/talkie.axh</string>
<string>/Users/adrin009/Documents/axoloti/toneburst.private/objects/toneburst/osc/talkie/Talkie Controller.axp</string>
<string>/Users/adrin009/Documents/axoloti/toneburst.private/objects/toneburst/osc/talkie/talkie 3.axh</string>
<string>/Users/adrin009/Documents/axoloti/axoloti-contrib/patches/jt/devel/updownsampler_x4.axp</string>
</recentFiles>
<RuntimeDir>/Applications/axoloti_runtime</RuntimeDir>
<FirmwareDir>/Applications/Axoloti.app/Contents/Java/firmware</FirmwareDir>
<FavouriteDir></FavouriteDir>
<ControllerObject></ControllerObject>
<ControllerEnabled>false</ControllerEnabled>
<gitlib>
<Id>factory</Id>
<Type>git</Type>
<LocalLocation>/Users/adrin009/Documents/axoloti/axoloti-factory/</LocalLocation>
<Enabled>true</Enabled>
<RemoteLocation>https://github.com/axoloti/axoloti-factory.git</RemoteLocation>
<UserId></UserId>
<Password></Password>
<AutoSync>false</AutoSync>
<Revision></Revision>
<ContributorPrefix></ContributorPrefix>
</gitlib>
<filelib>
<Id>home</Id>
<Type>local</Type>
<LocalLocation>/Users/adrin009/Documents/axoloti/</LocalLocation>
<Enabled>true</Enabled>
<RemoteLocation></RemoteLocation>
<UserId></UserId>
<Password></Password>
<AutoSync>false</AutoSync>
<Revision></Revision>
<ContributorPrefix></ContributorPrefix>
</filelib>
<gitlib>
<Id>community</Id>
<Type>git</Type>
<LocalLocation>/Users/adrin009/Documents/axoloti/axoloti-contrib/</LocalLocation>
<Enabled>true</Enabled>
<RemoteLocation>https://github.com/axoloti/axoloti-contrib.git</RemoteLocation>
<UserId>toneburst</UserId>
<Password>REDACTED</Password>
<AutoSync>false</AutoSync>
<Revision></Revision>
<ContributorPrefix>toneburst</ContributorPrefix>
</gitlib>
<gitlib>
<Id>toneburst.Private</Id>
<Type>git</Type>
<LocalLocation>/Users/adrin009/Documents/axoloti/toneburst.private/</LocalLocation>
<Enabled>true</Enabled>
<RemoteLocation>https://github.com/toneburst/axoloti</RemoteLocation>
<UserId>toneburst</UserId>
<Password>REDACTED</Password>
<AutoSync>true</AutoSync>
<Revision></Revision>
<ContributorPrefix>toneburst</ContributorPrefix>
</gitlib>
</preferences>
Incidentally, I notice the GitHub password for any user repos is stored in plaintext in the prefs file (that's not my actual password, above). Not sure this is a good thing...
a|x
Just noticed the plain password as well today. Filed an issue on github: https://github.com/axoloti/axoloti/issues/322
lol, Im surprised its taken this long for someone to notice and comment on the password, I expected it to happen when it was first released
the reason, is obvious, there is quite a dev effort required for a decent solution, the obvious solutions don't really achieve any more security:
a) ask user for password each time
this is trivial, and could be done optionally... but is pretty tedious for users, and doesn't work when you do a sync on startup.
b) encrypt password
pointless, the source code is open source, it would take 2 minutes to decode the password, regardless of encryption.
c) certificates
don't actually the solve the issue discussed here, they solve a different (albeit valid) issue.
if you have a certificate stored on your computer, this also can be used to gain access to your github account... unless you password protect it, then we are back to, what to do with that password , see a and b.
so I guess we could put these in place, but I think they are half hearted at best, certainly a and b are 'easy' - certificates, need a reasonable amount of development to make them useable by non-techies, which is #1 priority.
there are other more appropriate solution, some of them are specific to a platform (e.g. mac keychains), some are specific to a host (e.g. github application access)
have I missed another possibility? or idea? does anyone want to look into this?
workaround: theoretically, I think any (technical) user can workaround this already. simply establish your credentials with github via certs etc, and then clone the community repo, and don't put in your username and password. the clone establishes your authorisation, so there is no need to use a username/password. (your prefix is still needed)
I have to report a minor issue in midi/out/clock @johannes
In krate code, lines 10 and 11 the attributes MIDI_START and MIDI_CONTINUE should be switched.
This would be the correct code:
if (_pos24ppq) MidiSend1((midi_device_t) attr_device, MIDI_START);
else MidiSend1((midi_device_t) attr_device, MIDI_CONTINUE);
Now the code is not correct: if you stop and reset the clock and then restart a midi continue message is sent, and external devices will continue playing from where they stopped (which is not what you want if you reset the clock)
I cannot compile this in opensuse leap 42.1 I was able to compile 1.0.9 before.
Any ideas? Thank you.
[...]
Making all in src
make[2]: Entering directory '/home/gabriel/axoloti/platform_linux/src/dfu-util-0.8/src'
CC main.o
In file included from main.c:34:0:
portable.h:17:17: fatal error: io.h: No such file or directory
# include
^
compilation terminated.
Makefile:330: recipe for target 'main.o' failed
make[2]: *** [main.o] Error 1
make[2]: Leaving directory '/home/gabriel/axoloti/platform_linux/src/dfu-util-0.8/src'
Makefile:289: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/gabriel/axoloti/platform_linux/src/dfu-util-0.8'
Makefile:229: recipe for target 'all' failed
make: *** [all] Error 2
Most odd. I tried several times to compile it as root and it would fail with the error above. Tried again, as user and it would not do it, but when I tried once more as root it succeeded...
It doesn't sound like excuses at all, and as you say, it's entirely possible the crashes weren't directly related to the Axoloti patcher or Core.
I've heard from other sources that there were changes in USB device support in El Cap.
I will try the tests you suggest, and let you know what I find.
a|x