Bí ẩn của người không nhìn thấy: Liệu họ có thể sống như thế nào?


b (Giáng) # (Thăng)
x2


Hôm nay, sự kiện “Dẫu Anh Không Nhìn Thấy” đã diễn ra với sự tham gia của nghệ sĩ Châu Khải Phong. Ca khúc này được sáng tác và trình bày bởi Châu Khải Phong với tone gốc là Em, style Pop và tempo là 100. Lời bài hát tình cảm kể về tình yêu đầy bi kịch khi người đàn ông không thấy được người phụ nữ mà anh yêu.

#DẫuAnhKhôngNhìnThấy #ChâuKhảiPhong #Pop #Em #TìnhYêuBiKịch #NhạcViệt #CaKhúcViệt #NgàyHộiÂmNhạc

Sáng tác: Châu Khải Phong | Ca sĩ: Châu Khải Phong | Tone gốc: Em | Style: Pop | Tempo: 100 | Beat: 4/4 | Tone hiện tại: [Em]

1. [Em] Dù chẳng thấy dáng em ngày hạnh phúc
[C] Dù chẳng thấy nét môi khi em [Bm] cười
[Am] Dù cho quanh anh luôn là đêm vây quanh
Dù nỗi [D] nhớ theo anh mỗi [B7] đêm.

2. [Em] Người chẳng biết hay giả vờ không biết
[C] Ừ thì anh là kẻ không chung [Bm] tình
[Am] Ừ do anh sai nên tình ta chia hai
Mọi lầm [D] lỗi anh xin mang.

ĐK:
Dẫu cho [Em] anh không nhìn thấy thế nhưng vẫn [Bm] cười người biết không
Chỉ cần [C] anh có [D] em bên [G] lòng
Đớn [Am] đau của anh là hạnh [Bm] phúc của em
Kệ anh [C] đi em cứ quay mặt [D] đi.

Dẫu cho [Em] anh không nhìn thấy nhưng vẫn theo [Bm] người từng bước đi
Cười đi [C] em ướt [D] mi được [G] gì
Ước [Am] mơ của anh là được [Bm] nhìn em sống vui
Người buồn [C] đau anh có vui được [D] không có vui được [Em] không.

/* Use flexbox for layout */
#beat-container {
display: flex;
position: fixed; /* Fixed position to stay on screen */
bottom: 3px; /* Distance from the bottom */
left: 15%; /* Center horizontally */
align-items: center; /* Center items vertically */
font-size: 2em; /* Double the font size */
z-index: 1000; /* Ensure it’s above other content */

}

#beat-buttons {
display: flex;
justify-content: center; /* Center items horizontally */
margin-bottom: 20px;
}

.beat-button {
width: 1.05em; /* Make the button 30% smaller */
height: 0.7em; /* Make the button 30% smaller */
background-color: grey; /* Inactive button color */
margin: 0.2em;
border-radius: 10%; /* Rounded corners */

}

.beat-button.active {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); /* Shadow for depth */
opacity: 0.5; /* Partial transparency */
transition: opacity 0.3s ease, transform 0.3s ease; /* Smooth transitions */
opacity: 1; /* Full opacity for active button */
background-color: red; /* Active button color */
transform: scale(1.2); /* Scale up when active */
}

/* Styling for the text after the button */
#tempo {
background-color: #25261430;
font-size: 24px;
color: #54ab51;
font-weight: bold;
margin-left: 5px;
margin-right: 5px;
margin-bottom: 16px;
border-radius: 10px;
padding: 2px;
display: inline-block;
cursor: pointer;
}

.tap-tempo-button {
bottom: 2px;
left: 3px;
padding: 0.5px 20px; /* Comfortable padding */
font-size: 15px; /* Readable font size */
color: #fff; /* White text color for contrast */
background-color: #2f9daeab; /* Blue background color */
border: none; /* No border for a modern look */
border-radius: 5px; /* Rounded corners */
cursor: pointer; /* Pointer cursor on hover */
outline: none; /* No outline on focus */
transition: background-color 0.3s ease; /* Smooth background color transition on hover */
}

.tap-tempo-button:hover {
background-color: #0056b3; /* Slightly darker blue on hover */
}

.tap-tempo-button:active {
background-color: #004085; /* Even darker blue to simulate a click effect */
}

100

let beat=”4/4″;
let beatButtons = document.getElementById(‘beat-buttons’);
let tempoElement = document.getElementById(‘tempo’);

///////////////////////////////////TAP/////////////////////
// Add a button for tapping the tempo
let tapTempoButton = document.createElement(‘button’);
tapTempoButton.className=”tap-tempo-button”;
tapTempoButton.textContent=”Tap”;
tapTempoButton.onclick = tapTempo;
document.getElementById(‘beat-container’).appendChild(tapTempoButton);

////////////////////////////////////////////////////////

// Create the beat buttons
let beatCount = parseInt(beat.split(‘/’)[0]);
for (let i = 0; i < beatCount; i++) {
let button = document.createElement('div');
button.className = 'beat-button';
beatButtons.appendChild(button);
}

// Highlight the buttons according to the beat
let currentBeat = 0;
let interval = setInterval(function() {
// Reset all buttons
for (let button of beatButtons.children) {
button.classList.remove('active');
}

// Highlight the current beat
beatButtons.children[currentBeat].classList.add('active');

// Move to the next beat
currentBeat = (currentBeat + 1) % beatCount;
}, (60 / tempoElement.textContent) * 1000);

// Update the interval when the tempo changes
let observer = new MutationObserver(function() {
clearInterval(interval);
interval = setInterval(function() {
// Reset all buttons
for (let button of beatButtons.children) {
button.classList.remove('active');
}

// Highlight the current beat
beatButtons.children[currentBeat].classList.add('active');

// Move to the next beat
currentBeat = (currentBeat + 1) % beatCount;
}, (60 / tempoElement.textContent) * 1000);
});
// Add an event listener to the tempo element
tempoElement.addEventListener('click', function() {
// Check if the browser supports the setSelectionRange method
if (document.body.createTextRange) {
const range = document.body.createTextRange();
range.moveToElementText(this);
range.select();
} else if (window.getSelection) {
const selection = window.getSelection();
const range = document.createRange();
range.selectNodeContents(this);
selection.removeAllRanges();
selection.addRange(range);
}
// Set focus to the tempo element
this.focus();
});

// Add an event listener to the tempo element for the click event
tempoElement.addEventListener('click', function() {
// Select all text inside the element for easy editing
window.getSelection().selectAllChildren(this);
});

// Add an event listener for the keypress event to detect the Enter key
tempoElement.addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
e.preventDefault(); // Prevent the default Enter key behavior
this.blur(); // Remove focus from the tempo element, triggering the blur event
}
});

// Add an event listener for the blur event to set the value when editing is done
tempoElement.addEventListener('blur', function() {
// The new value is now whatever text is inside the tempo element
// You can add any additional logic here if needed
});
// Function to reset the beat to 1
function resetBeat() {
currentBeat = 0; // Reset the current beat to the first beat
lastResetTimestamp = Date.now(); // Update the last reset timestamp
// Update the visual state of the buttons
for (let button of beatButtons.children) {
button.classList.remove('active');
}
beatButtons.children[currentBeat].classList.add('active');
// Restart the interval with the updated beat
startBeatInterval();
}

// Function to start the beat interval
function startBeatInterval() {
clearInterval(interval); // Clear any existing interval
interval = setInterval(function() {
let timeSinceLastReset = Date.now() – lastResetTimestamp;
let beatDuration = (60 / tempoElement.textContent) * 1000;
// Calculate the current beat based on the time since the last reset
currentBeat = Math.floor(timeSinceLastReset / beatDuration) % beatCount;
// Reset all buttons
for (let button of beatButtons.children) {
button.classList.remove('active');
}
// Highlight the current beat
beatButtons.children[currentBeat].classList.add('active');
}, (60 / tempoElement.textContent) * 1000);
}

// Add an event listener to each beat button to reset the beat
for (let button of beatButtons.children) {
button.addEventListener('click', function() {
resetBeat(); // Call the resetBeat function when a button is clicked
});
}

// Initialize the beat interval when the script loads
//startBeatInterval();

// Start observing the target node for configured mutations
observer.observe(tempoElement, {
childList: true, // Observe direct children
subtree: true, // Observe descendants
characterData: true // Observe text changes
});

/////////////////TAP/////////////
// Add this JavaScript function inside your existing tag
let tapTimes = []; // Array to store tap timestamps

function tapTempo() {
let currentTime = Date.now();
tapTimes.push(currentTime); // Store the timestamp of the current tap

// Calculate the tempo only after four or more taps
if (tapTimes.length >= 4) {
// Calculate the average interval between taps
let intervals = [];
for (let i = 1; i a + b, 0) / intervals.length;

// Calculate the new tempo (in beats per minute)
let newTempo = 60000 / averageInterval;
tempoElement.textContent = Math.round(newTempo); // Update the tempo display
startBeatInterval(); // Restart the beat interval with the new tempo
tapTimes = []; // Clear the tapTimes array after calculating the tempo
}

// Reset the beat visualizer
resetBeat();
}

/////////////////END TAP//////////////

[yotuwp type="keyword" id="Bí ẩn của người không nhìn thấy: Liệu họ có thể sống như thế nào?" ]Hợp âm guitar và tư thế bấm trong bài:

Để lại Trả lời

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *