Looking for feedback for my looper app

Programming applications for making music on Linux.

Moderators: MattKingUSA, khz

Post Reply
mrzapp

Looking for feedback for my looper app

Post by mrzapp »

Hello anyone interested in looping!

I've been working on this JACK-enabled looper app for a few weeks now, my wife and I play with it often and have tons of fun with it. It's quite versatile in its feature set, but keeps things very simple UX-wise. I feel it's ready for some public scrutiny now.

Here's the website: https://mrzapp.gitlab.io/lupa/

If the binary release doesn't work for you, you can try running the source code directly with Python, the dependencies are listed on the website.

What do you guys feel about it? The UX, level of versatility, technical comments, etc. Also, if you have tips on how to improve things in terms of implementation, I'd really appreciate it.

Cheers!

User avatar
Largos
Established Member
Posts: 638
Joined: Mon Oct 05, 2020 12:21 pm
Has thanked: 72 times
Been thanked: 186 times

Re: Looking for feedback for my looper app

Post by Largos »

Tried it on ubuntu 22.04. It loads if JACK isn't running but nothing works. If JACK is running then it crashes JACK and doesn't load, outputting the following error.

Code: Select all

Cannot read socket fd = 30 err = No such file or directory
Could not read result type = 20
Traceback (most recent call last):
  File "__main__.py", line 17, in <module>
  File "src/engine.py", line 37, in start
Cannot read socket fd = 32 err = Success
CheckRes error
  File "jack.py", line 283, in blocksize
JackSocketClientChannel read fail
JACK shutdown!
    Status: <jack.Status 0x21: failure, server_error>
    Reason: JACK server has been closed
Exception ignored from cffi callback <function Client.set_shutdown_callback.<locals>.callback_wrapper at 0x7f5c4f177250>:
Traceback (most recent call last):
  File "jack.py", line 741, in callback_wrapper
  File "jack.py", line 3026, in _check
jack.JackErrorCode: Error setting JACK blocksize (-1)
[13031] Failed to execute script '__main__' due to unhandled exception!
  File "src/engine.py", line 215, in on_shutdown
  File "src/engine.py", line 220, in quit
AttributeError: 'NoneType' object has no attribute 'set'
User avatar
Largos
Established Member
Posts: 638
Joined: Mon Oct 05, 2020 12:21 pm
Has thanked: 72 times
Been thanked: 186 times

Re: Looking for feedback for my looper app

Post by Largos »

Ok, seems like if frame/period is not set at 1024 then it crashes JACK. I set it to 1024, it loaded but the buttons are unresponsive, can't get anything to happen.

mrzapp

Re: Looking for feedback for my looper app

Post by mrzapp »

@Largos Thanks for giving it a go. As several buttons need to be used simultaneously, you need to use the keyboard, not the mouse. I've published a new version that doesn't require a specific block size, so JACK can decide it for the client.

User avatar
Largos
Established Member
Posts: 638
Joined: Mon Oct 05, 2020 12:21 pm
Has thanked: 72 times
Been thanked: 186 times

Re: Looking for feedback for my looper app

Post by Largos »

I've been trying this, found problems with the controls, came to do feedback then found you have done a new version with new controls :D I needed to delete the old configuration file in ~/.config/lupa before I could get the updated version to work.

The new visual feedback with the waveforms and the red lights when the pads are set to record are a good improvement.

I still have a bit of problem with the controls, they don't seem to work as you document. To get a number a record, I hold the record button down, then the number button then tap the record button which makes it hold down red. I can then get it to record. The two modes overdub and overwrite and really difficult to work out what's active, that's the main problem at the moment for me. Also, I can't get the offset to work.

mrzapp

Re: Looking for feedback for my looper app

Post by mrzapp »

Again, thank you for trying it out!

I've been testing this out with a few people, and I ended up changing the hold record+number interaction.

Now you "arm" the record button by tapping it, just like with most DAWs, and then tap a loop, so you don't need to press both at once. If you start a recording before starting the playback, the length of your recording will determine the tempo. I recommend starting the playback first and enabling the metronome, it's just a bit easier to start out with.

I've also implemented a whole new control scheme. The old one still works, but now you can do everything with the mouse or a touchscreen as well.

For example, to change the offset of a loop with numpad, you'd have to hold down a loop and tap the up/down buttons. Now, with the mouse, you can slide a loop left/right.

I've updated the documentation to reflect the new changes in version 0.8.0

Ultimately, when all this is nailed down, I'd probably need to do a demonstration video to explain everything properly :D

Post Reply