Tab Mapper

The tab mapper is a handy little tool that will render a guitar tab file with graphic chord diagrams displayed alongside. This comes in handy for people who just don't have every single chord shape memorized. Just plug in the web site address of a valid .tab or .crd file and hit "Go". In general, the tab mapper does a better job with printer friendly URLs. If there is more than one way to play a chord, the tab mapper will choose the most common shape. To see other fingerings, click on the chord diagram and you will be taken to the chord calculator.

Original file located @ http://clinfowiki.win.

                    uint ncols, __global float *y)
   size_t i = get_global_id(0);              // Global id, used as the row index
   __global float const *a = &A[i*ncols];    // Pointer to the i'th row
   float sum = 0.f;                          // Accumulator for dot product
   for (size_t j = 0; j < ncols; j++) {
       sum += a[j] * x[j];
   }
   y[i] = sum;
 // This kernel computes FFT of length 1024. The 1024 length FFT is decomposed into
 // calls to a radix 16 function, another radix 16 function and then a radix 4 function
 __kernel void fft1D_1024 (__global float2 *in, __global float2 *out,
                         __local float *sMemx, __local float *sMemy) {
   int tid = get_local_id(0);
   int blockIdx = get_group_id(0) * 1024 + tid;
   float2 data[16];
   // starting index of data to/from global memory
   in = in + blockIdx;  out = out + blockIdx;
   globalLoads(data, in, 64); // coalesced global reads
   fftRadix16Pass(data);      // in-place radix-16 pass
   twiddleFactorMul(data, tid, 1024, 0);
   // local shuffle using local memory
   localShuffle(data, sMemx, sMemy, tid, (((tid & 15) * 65) + (tid >> 4)));
   fftRadix16Pass(data);               // in-place radix-16 pass
   twiddleFactorMul(data, tid, 64, 4); // twiddle factor multiplication
   localShuffle(data, sMemx, sMemy, tid, (((tid >> 4) * 64) + (tid & 15)));
   // four radix-4 function calls
   fftRadix4Pass(data);      // radix-4 function number 1
   fftRadix4Pass(data + 4);  // radix-4 function number 2
   fftRadix4Pass(data + 8);  // radix-4 function number 3
   fftRadix4Pass(data + 12); // radix-4 function number 4
   // coalesced global writes
   globalStores(data, out, 64);
 }
   T m_re; // Real component.
   T m_im; // Imaginary component.
   complex_t(T re, T im): m_re{re}, m_im{im} {};
   // Define operator for complex-number multiplication.
   complex_t operator*(const complex_t &other) const
   {
       return {m_re * other.m_re - m_im * other.m_im, 
               m_re * other.m_im + m_im * other.m_re};
   }
   T get_re() const { return m_re; }
   T get_im() const { return m_im; }
   auto idx = get_global_id(0);    
   // Every work-item uses 4 consecutive items from the input buffer
   // - two for each complex number.
   auto offset = idx * 4;
   auto num1 = complex_t{in[offset], in[offset + 1]};
   auto num2 = complex_t{in[offset + 2], in[offset + 3]};
   // Perform complex-number multiplication.
   auto res = num1 * num2;
   // Every work-item writes 2 consecutive items to the output buffer.
   out[idx * 2] = res.get_re();
   out[idx * 2 + 1] = res.get_im();
   compute_helper(in, out);
   compute_helper(in, out); 
©2025 JGuitar.com