Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Stefan Hajnoczi
    @stefanha
    @tea There is probably a Matrix GitHub integration we could use instead of the native gitter.im integration. Then the push would be visible in Matrix too.
    If we don't get the notifications working in a useful way I will delete the wahjam/notifications room again. We can set it up properly when it becomes necessary.
    I'm going to go cook dinner now. Have a nice weekend!
    tea
    @teamikl:matrix.org
    [m]
    ok. I will search more info too. you too, here it late time. sleep for now
    Stefan Hajnoczi
    @stefanha
    @tea Remote channel download and playback is working for the first time in Wahjam2! This is just the beginning (no UI, probably still has bugs). Tomorrow I'll start working on local channel recording and upload.
    tea
    @teamikl:matrix.org
    [m]

    stefanha: that's good. do you have a plan to use "milestones" or "project boards" where shows the project progression status? it's basic github features.

    I am now re-studying C++ development, it was new for me. SPDX license header looks smart. replaced traditional fat license header.

    One question, no more signed-off-by in source files ?
    (I confirmed it's used in commit messages)
    I am not familiar with modern open projects. few years blanks.

    stefanha
    @stefanha:matrix.org
    [m]

    tea There is a list of completed/in-progress features in README.md. The readme is displayed on the main page of the repository.

    I'm not adding authorship information into source files since git already tracks it for each line of code. This varies between projects, many still put "Copyright 2021 My Name" at the top of files, which helps when the file is copied to another project but it doesn't capture the true line-by-line authorship information.

    tea
    @teamikl:matrix.org
    [m]

    I see, now I understood it the check list in README.md shown the status.

    about signed commit. commit signature verification can replace ? I setup GPG signed commit.

    stefanha
    @stefanha:matrix.org
    [m]
    Signed-off-by is not related to GPG signed commits. Signed-off-by has a legal meaning (called Developer Certificate of Origin). It declares that you have permission to contribute the code. Here is the full DCO text: https://developercertificate.org/
    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.
    stefanha
    @stefanha:matrix.org
    [m]
    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.
    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.