Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    stefanha
    @stefanha:matrix.org
    [m]
    GPG signing is used for trust/security but doesn't necessarily have a legal meaning.
    Some open source projects use DCO. Some use signed GPG commits or tags. It depends on the project.
    Signed commits are especially useful if you want to merge commits without being able to trust the communications channel. For example, email is famous for spoofing. I think signing is less useful on GitHub because an attacker would need the ssh private key and/or GitHub credentials of a developer to send a pull request on their behalf.
    stefanha
    @stefanha:matrix.org
    [m]
    Signing still adds extra security on GitHub, but less compared to email. Not many projects on GitHub require signing (I have never seen it).
    tea
    @teamikl:matrix.org
    [m]
    stefanha: thx info it's called DCO. I see those has different roles.
    stefanha
    @stefanha:matrix.org
    [m]
    tea I have implemented minimal local channel support so that audio is uploaded to the server by the Wahjam2 client. Next I need to test it and start working on the QML user interface (mixer, Send button, VU meters, etc).
    Stefan Hajnoczi
    @stefanha
    It still requires some debugging but I think the audio upload is close to working now.
    tea
    @teamikl:matrix.org
    [m]

    stefanha: which code base do you implement
    there are two known issues about audio (not wahjam's. this is a general original ninjam code or JamTaba code topics)

    ninjam: can take stereo input but output (upload?) is mixed as mono
    jamtaba: can stereo output, but buffer size large, so users have to wait the first two intervals.
    reaninjam: resolves both, but not open source as I know.

    stefanha
    @stefanha:matrix.org
    [m]

    tea The new client I'm working on is Wahjam2. It's written from scratch and does not use NINJAM code.

    I still maintain Wahjam and that is based on the NINJAM code.

    Wahjam is mono. It mixes down stereo inputs.

    Wahjam2 it's designed for stereo but will be mono until the first release because it needs to stay compatible with Wahjam until users migrate to Wahjam2.

    I didn't know Jamtaba requires 2 intervals for stereo. That sounds strange. In Wahjam2's stereo code I'm using Ogg Vorbis stereo support and that is designed to take advantage of duplicate information in stereo audio to reduce the compressed size. I expect it will be possible to run stereo without waiting two intervals after connection.

    tea
    @teamikl:matrix.org
    [m]
    @stefanha: stereo and two intervals are independent topics, I might explain it wrong.
    no worry if the new code was written from scratch.
    I understand the migration plan.
    Stefan Hajnoczi
    @stefanha
    @teamikl:matrix.org I have pushed the working audio upload code now. The client can join jam sessions with audio download/upload working now.
    Next I need to work on the user interface and add settings so it's possible to configure soundcards, toggle the Send button, see the chat, etc.
    tea
    @teamikl:matrix.org
    [m]

    stefanha: I was thinking what I can contribute, (1) Translation resource (2) AppVeyor for windows CI/CD (without ASIO/VST for license reason) (3) Plugin frameworks (4) Discord Bot (5) Songbook with metronome component.

    right now, nothing to commit publish. I will start as personal repo
    and make it reusable for another projects. the use scenario are

    • as standalone application, edit chords data.
    • as embed QML component, show chords on metronome
      and the reason is I do not want mess public repo, I need to practice git to get back my experience first.

    I need your advice about the license.
    is MIT Ok ? or Apache license is popular now?

    my basic stance is, I did not care license of code-I-wrote,
    I care when copy other's code. open as possible.
    I worry here is if the license had issue and have to change later.
    I want to select flexible one first.

    stefanha
    @stefanha:matrix.org
    [m]
    tea Great too hear that! I think the Apache License 2.0 is seen as a more modern license. It is similar to the MIT license but includes patent protection. Software patents have become an issue because they are a separate form of intellectual property that older copyright licenses don't cover. Apache and MIT are both as open as possible.
    tea
    @teamikl:matrix.org
    [m]
    Thx for the information, I will select "Apache-2.0". I found many MIT variant when I searched SPDX. I needed to update my old knowledges.
    stefanha
    @stefanha:matrix.org
    [m]
    I'm prototyping the mixer controls using QML.
    This morning I worked out a UI design and I'll begin implementing it in Wahjam2.
    This prototype UI is not part of the client yet. But once the QML controls are working I'll hook it up and it should be possible to start using Wahjam2 for basic jamming.
    Stefan Hajnoczi
    @stefanha
    @teamikl:matrix.org I have pushed the code here in case you want to play around with the QML: wahjam/wahjam2@c281497. It can be run with qml qml/session/Test.qml.
    tea
    @teamikl:matrix.org
    [m]

    The Output fader is for sending to server?

    it's a good idea to separate local channel monitor and sending volume.
    one of big confusion in NINJAM UI, local channel effect to monitor only,
    when users ask to down volume more, they down the local channel fader
    not sending volume. they does not care which "volume"
    Output volume can show the actual volume which others will hear.

    stefanha
    @stefanha:matrix.org
    [m]

    tea "Output" is the master volume for monitoring the whole jam. It doesn't affect the upload volume. Thanks for the suggestion, the current prototype let's the user control the local channel upload volume, but I realized it doesn't let them see a different monitoring volume.

    Personally I monitor myself at the same volume as the upload volume, but I know some people like to hear themselves louder.

    tea
    @teamikl:matrix.org
    [m]
    Oh, monitor volume? I had thought because "Stop sending" then sending volume.
    and "Me" was monitor local channels. it's also one of solutions, everyone share volume balance. it's good. (then no remote channel volume fader ?) other solutions are showing how loud others listen your volume. jammr might detect when transmit sound was clipping?
    tea
    @teamikl:matrix.org
    [m]
    I do not like to change monitor volumes too,
    because volume balance on server side recording.
    everyone share the balance is the best. but sometime need the options for trolls.
    Stefan Hajnoczi
    @stefanha
    I think I'll move the Send/Admin/Leave buttons away. They can be in another part of the UI. They aren't really related to the mixer :).
    @teamikl:matrix.org In the latest prototype each channel has a "..." button that expands a panel where you can adjust the gain and pain. So it's possible to change the volume of both local and remote channels.
    @teamikl:matrix.org Yeah, for years I have tried to explain that it's best not to have remote channel volume so that everyone, including the server, hears the same mix.
    But I think some people just expect to have this, so I will add it.
    1 reply
    I'm thinking about sending user's volume adjustments back to the server so the server can apply an average volume for each channel. That way the recorded jam mix will sound okay.
    tea
    @teamikl:matrix.org
    [m]
    I have a question, how VUmeter will have stereo,
    its split the bar or two slots each channels?
    stefanha
    @stefanha:matrix.org
    [m]
    tea Wahjam2 will support two options: mono channels with a plan control, and stereo channels with a double bar VU meter.
    Stereo channels are necessary when the input audio already had stereo information applied to it (pan).
    Mono channels with pan control are more flexible because the pan position can be adjusted.
    The mixer will have eventually have a button for adding local channels and each local channel will have a input routing listbox so the user can select which sound card channel to send into the local channel.
    tea
    @teamikl:matrix.org
    [m]
    stefanha: sorry for slow response, I wonder the point was how stereo VUmeter is shown. not about add local channel. it's stereo channel Left/Right, in QML VirticalBar ? then stereo will show two VirticalBar components ? because the component have solid property only "value" that does not have left/right info.
    tea
    @teamikl:matrix.org
    [m]
    by reading the QML code, how about that implement those local/remote channels as ModelView, like Sesssion.qml use ListModel. I wish I can explain this by code, just note the idea at this moment.
    tea
    @teamikl:matrix.org
    [m]
    my status was stuck on build pkg-config things.
    today, I researched about eco system for c++ project.
    Qt6 supports package manager Conan,
    but unfortunately other package status were not mature/stable, yet.
    Stefan Hajnoczi
    @stefanha
    @teamikl:matrix.org In the prototype I'm using a custom vertical bar component: https://github.com/wahjam/wahjam2/blob/main/qml/session/VerticalBar.qml. I think that visually it might be nice to integrate both bars into a single UI component. That would be easy to do.
    @teamikl:matrix.org I asked myself the same question about model/view vs event callbacks that add components to the mixer container. At the moment I think it's easiest to use callbacks + add components to the mixer container instead of model view. I'm not sure Qt's model/view approach with a data access method based on roles (https://doc.qt.io/qt-5.14/model-view-programming.html#model-classes) is useful for Local/Remote Channel objects.
    Would we use model->data(index, Qt::UserRole) to get access to the Local/RemoteChannel object and then invoke methods on it directly?
    2 replies
    Or would we define new custom Qt::UserRole values for each field of data associated with a Local/RemoteChannel? That seems like a lot of extra code for not much benefit.
    Stefan Hajnoczi
    @stefanha
    So in the end I decided that Qt's Model/View is most suitable for data models (text, lists, trees), but not for active objects like Local/RemoteChannel that the UI needs to interact with heavily.
    What do you think?
    @teamikl:matrix.org Cool, I'd love to hear what you find about Qt6. If it's possible I would like to use it but I'm not sure if it is easily available and mature enough on all platforms. Qt5 is okay for now but I loved having new Qt features :).
    1 reply
    tea
    @teamikl:matrix.org
    [m]

    The advantage of Model-View is, remove dependency from view.
    I think a module design topic.

    e.g. if js or cpp code had direct access to VirticalBar
    the code assume VirticalBar's properties,
    when you want to change component, then have to modify code together. (in that case, View has dependency)
    Model-View is a flexible that point, ideal situation is change the view-component only and same business logic code works.

    I understand that cost and benefit too, so it's just note at this moment.
    There are several issue for performance, I did not test this yet.
    I had research about VUMeter component,
    that may require some optimization for the animation.

    but not for active objects like Local/RemoteChannel that the UI needs to interact with heavily.

    Yes true, this point is an important.
    an exists Model-View which Qt provide may be the limitation
    for the dynamic use case, like nested-channels etc.
    but I still think benefit of Model-View,
    need new model which fit to our use case.
    (agree: your point, it's the cost and not needed in this stage yet)

    Pros: it's reduce the cost of change view component.
    Cons: it's increase cost when the model did not fit.
    --> can't apply easily for uncertain use cases

    tea
    @teamikl:matrix.org
    [m]
    let me explain a bit, I did not mean the system is mature or not.
    it's a mature as Qt adopt it. but packages we need were not yet.
    stefanha
    @stefanha:matrix.org
    [m]

    tea Cool, I will take a look at Conan.

    The chat box can use model/view. It works well there.

    PortAudio recently moved to GitHub, did some cleanup, and released a new version (after years of silence!). I think the project has a little more momentum now.
    1 reply
    stefanha
    @stefanha:matrix.org
    [m]
    tea Qt6 has raised operating system requirements to Windows 10 and macOS 10.14. Currently Wahjam supports older operating systems (Vista and macOS 10.13). By the time Wahjam2 it's ready for release this should be okay though.
    tea
    @teamikl:matrix.org
    [m]

    There are easier ways to expose C++ objects, however
    it has pros/cons by which model to choose.

    There are 3 different use-cases.

    • Local/Remote channels ... list of QObject in C++
    • SessionList ... custom model
    • chatbox ... list model in QML

    about SessionList I found
    QJsonArray could be pass as the model directly
    I'm not sure which version of qt support this,
    as i know previous version required JsonListModel