Giter Club home page Giter Club logo

axoloti's Introduction

Axoloti

by Johannes Taelman

[email protected]

Axoloti is a platform for sketching music-DSP algorithms running on standalone hardware.

Axoloti website

documentation: in the folder doc/

axoloti's People

Contributors

arisona avatar axoloti avatar dkmorb avatar elatomo avatar erikmack avatar geslotencirkel avatar johannestaelman avatar kaosbeat avatar leoc avatar logsol avatar m-rest avatar pascalhuerst avatar pierstitus avatar simonvanderveldt avatar thetechnobear avatar timvets avatar vormplus avatar zrnsm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

axoloti's Issues

GUI: general enhancements

i) don't show about box on startup
ii) open recent patches... (list of 10 last opened patches)
iii) connected status in status bar? (hmm need to consider multiple boards?)
iv) connected dialog, allow window to be closed... like a 'log window'?

uploading firmware, missing flasher.bin

currently unable to flash using SD, (fallback DFU seems to work)

Start uploading file /Users/kaos/Documents/axoloti/firmware/build/axoloti.bin to sdcard : firmware.bin
uploading: /Users/kaos/Documents/axoloti/firmware/build/axoloti.bin
uploading : 6%
uploading : 12%
uploading : 18%
uploading : 24%
uploading : 30%
uploading : 36%
uploading : 43%
uploading : 49%
uploading : 55%
uploading : 61%
uploading : 67%
uploading : 73%
uploading : 80%
uploading : 86%
uploading : 92%
uploading : 98%
uploading : 100%
Done uploading file
Start uploading patch
bin path: /Users/kaos/Documents/axoloti/firmware/flasher/build/flasher.bin
FileNotFoundException

table/save crashes

table save crashes when axoloti triggered:

Axoloti says: exception: soft watchdog
Axoloti says: pc=0x80005A4�
Axoloti says: psr=0x61000000�
Axoloti says: lr=0x80004BB�
Axoloti says: r12=0x20001788�
Axoloti says: cfsr=0x0�

test patch below (note, not sure if it will work by copy/paste, here it seems to not draw the connections at the moment...):












<frac32.s.map name="value" value="-4.0"/>











<bool32.mom name="b" value="0"/>

















<frac32.u.map name="value" value="25.5"/>





<frac32.s.map name="pitch" value="31.0"/>





















<bool32.mom name="b" value="0"/>






































Midi input threading

MIDI input is not correctly multi-threaded. This can show up when receiving midi data from multiple sources simultaneously : USB Host port, DIN port, injected by editor.

request: keystrokes for "Don't save"

The dialog "Axoloti asks: Do you want to save changes to..." can now only be closed by clicking.
It would be nice if the keystrokes "tab tab enter" would do the same as clicking on "Don't save" and "tab enter" == clicking on "Save".

Patch: instance names must be C identifiers

looks like if you rename an object instance it must conform to C rules.
if you don't conform, it will disconnect all your connects next time you load the patch.
(a nasty here, is using spaces, as will be common by users)

probably unreasonable to expect musicians to know/follow this :)

possible solutions:
i) don't allow invalid characters
ii) substitute invalid characters

I think users will accept that special characters cannot be used, so we can use (i) for this.
(we need to use an input mask to stop invalid character entries)

I think 'spaces' will probably be wanted, so perhaps we substitute these with underscore (_),
(and underscore/space are the same), then we just need to do the substitution in the display.

GUI: "rendering" problem, preset area

The toolbar area which says "preset recall edit i 1 2 3 4 5 6 7 8" top right hand side of patcher environment ... the "button" for the both number eights isn't fully rendered on the right hand half of the button. The button still "clicks" but you can't read it.

Linux Mint 17.1, java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
1680x1050, dual monitors using Nvidia 331.113
see screenshot (hopefully attached):
screenshot

Restrict midi-mapped parameters to reproduceable values

When MIDI-mapped 63.5 is the practical maximum. In future, a midi-mapped parameter should be constrained to values that can be transmitted too over midi - so that sequencer-recorder MIDI reproduces the same result. Non midi mapped parameters should be able to reach 63.999...
A trick the Nord Modular did is substituting midi value 127 with 127.99... to reach a more complete range, far closer to "preserving unity" when multiplying with a full scale midi value. It is a dirty trick to remap the midi range of 0-127 to 0.0...64.0 bipolar or -64..64 for bipolar. The alternative is scaling midi with 128.0/127.0 but that deviates from 1 unit/semitone scaling.

File > Open recent : reverse order?

may be just an opinion, but:
imo it would be more intuitive to have the most recently opened patch on top, and the oldest one at the bottom of that list.

midi/in/cc default value not sent

When you set a default value in the midi/in/cc object,
it is not sent to its outlet when going into live mode.
(or is this by design?)

copy of block of objects doesn't include connectors

linux (ubuntu), git pull at 21:52 UTC+01:00 today:
when making a copy of a block of connected objects,
the objects in the newly created copy aren't connected.
(some connections are there, others are not)

install from source on OSX

after install latest JDK, I did not have ant installed.

solution for me was

"brew update"
"brew install ant"

that would require one to have http://brew.sh/ installed of course

after that the GUI built fine

default window size of patches?

When opening e.g. a demo patch for the first time, the window size is quite small.
You have to resize it to see the whole patch, then save it, to get it to open the right size next time.

Show RAM usage on GUI

Perhaps a RAM monitor aside from the CPU monitor so one can see how much RAM on the MCU is left
I want this feature:
to see how much i use real time because of huge reverb lines (for massive leads) i'm making :)

substitute turns object name into long "path/object" name

to test this:
open example>demos>keyboard>poly arp demo>arpeggiator
now try to substitute the stringvoice object (I had made an adapted version, which is what I wanted to replace it with), or just with stringvoice itself...
(click the triangle to the left of the object name 'stringvoice' and select 'substitute')
this results in the stringvoice object (or its replacement) having a very long name, including the whole path, and the object is stretched out to over 5 times its original width.
this is on Ubuntu 14.04.2 LTS (ubuntustudio)

spat/pan m object doesn't compile.

Opened the first mini synth I made, and it doesn't work anymore. I tried recreating it step by step and found out the spat/pan m object is causing the error.

This is the console output:

Generate code complete


Start compiling patch
RM
rm -f xpatch.o xpatch.elf xpatch.bin xpatch.d xpatch.map 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 -I../CMSIS/Include -I../chibios/os/ports/common/ARMCMx/CMSIS/include -I../chibios/os/ports/common/ARMCMx -I../chibios/os/ports/GCC/ARMCMx -I../chibios/os/ports/GCC/ARMCMx/STM32F4xx -I../chibios/os/kernel/include -I../chibios/os/hal/include -I../chibios/os/hal/platforms/STM32F4xx -I../chibios/os/hal/platforms/STM32 -I../chibios/os/hal/platforms/STM32/GPIOv2 -I../chibios/os/hal/platforms/STM32/I2Cv1 -I../chibios/os/hal/platforms/STM32/OTGv1 -I../chibios/os/hal/platforms/STM32/RTCv2 -I../chibios/os/hal/platforms/STM32/SPIv1 -I../chibios/os/hal/platforms/STM32/TIMv1 -I../chibios/os/hal/platforms/STM32/USARTv1 -I../chibios/boards/ST_STM32F4_DISCOVERY -I../chibios/ext/fatfs/src -I../firmware -MD -MP -c xpatch.cpp -o xpatch.o
xpatch.cpp: In member function 'void rootc::instancepanm__1::dsp(const int32_t*, int32_t, int32_t (&)[16], int32_t (&)[16])':
xpatch.cpp:222:47: error: 'c' was not declared in this scope
 outlet_left[buffer_index] = ___SMMUL((1<<29)-(c<<2),inlet_i1[buffer_index])<<2;outlet_right[buffer_index] = ___SMMUL((1<<29)+(inlet_c<<2),inlet_i1[buffer_index])<<2;
                                               ^
make: *** [all] Error 1
shell task failed, exit value: 2
Done compiling patch

stm32F4discovery won't respond when adding too much mod sources?

so, when i add more than 7 analog inputs (10k mono lin pots, all have different mod sources), and i went live on my board, the board hangs, and does not respond until i re-power it, the CPU usage is about 85% (with 7 analog inputs, running stable) so that's not a problem. update interval of each mod source is set to 103ms.
any ideas on this?

Poly Multichannel patch - global channel

I propose that a poly multichannel patch can be made to work for a range of channels
e.g. 2-15, such that a channel can be used for global messages
a common example of this is note events being passed to sub patches whilst something like CC 2 (Breath) is used on the top-level patch e.g. to control reverb amount.

Patch.java:: GenerateAxoObjPolyChannel(), would need to be changed to not send the messages to voices when outside the accepted range.

GUI: Live checkbox, immediate check on click

currently live checkbox only 'ticks' when its gone live, but this is confusing to user... also we already know if we are in live/locked mode as background colour change is a better indicator

converting patches in patches/test to .axh help patches

The object generator code may check for presence of an equally named .axh patch, and
if not present, it could check for presence of an .axh patch named to the category. That patch could be linked as help in the .axo.

Or would it be better to do it at object load-time rather than at object generation time?

GUI: Close Menu Item

Currently, there is no close menu item to close a patch.

Would be handy to be able to close a patch when it's not Live. Especially with a shortcut (Cmd+W on OX X) since trackpads are horrible to aim for that tiny button on the window.

The menu item should be disabled when the patch is Live.

GUI: inconsistent subpatch behaviour

if you open a subpath via the open menu, edit it, and then save it,
a few things become a bit confusing for the user

a) in the new object dialog, a search will reveal multiple copies
b) the new version will not be used in other patches (when made live) unless you explicitly delete and re-add them. (and you need to select full patch, not just the cached copy, see (a)
c) ive seen an example, where regardless of which 'version' i selected of the subpatch, the old behaviour was kept

(im assuming all the above, are due to cached versions of a subpatch being kept in memory, so I suspect all related issues)

workaround: note if you edit via the 'object definition' in the main patch, usually this works.

GUI: odd inlet connection handling

if you attempt to connect an outlet from object B to an inlet of object C , were inlet of object C is already connected. it will not connect correctly
expected behaviour: delete the existing connection to object C inlet, and connect object B.
(this is how it works for Reaktor, and others)

consider the following:
A -> C
you wish to connect to
A->B->C
so you create B, and then connect A to B, then B to C... we don't want to have to first disconnect A-C its should be implicit. (makes refactoring patches much quicker)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.